gnu: Add knavalbattle.
[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>
ed3e7b72 5;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Eric Bavier <bavier@member.fsf.org>
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>
3e7b376e 27;;; Copyright © 2017, 2018, 2019 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>
e8a0696d 33;;; Copyright © 2017, 2018, 2019 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>
19c0cdb9 40;;; Copyright © 2019 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>
fbfc07bd 45;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
aa641984 46;;; Copyright © 2019 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
620b0468
RW
465(define-public cowsay
466 (package
467 (name "cowsay")
46ba5337 468 (version "3.04")
620b0468 469 (source (origin
7afb97fd
EF
470 (method git-fetch)
471 (uri (git-reference
472 (url "https://github.com/tnalpgge/rank-amateur-cowsay.git")
473 (commit (string-append name "-" version))))
474 (file-name (git-file-name name version))
620b0468
RW
475 (sha256
476 (base32
7afb97fd 477 "06455kq37hvq1xb7adyiwrx0djs50arsxvjgixyxks16lm1rlc7n"))))
620b0468
RW
478 (build-system gnu-build-system)
479 (arguments
480 `(#:phases
481 (modify-phases %standard-phases
6c0c1752
TGR
482 (delete 'configure) ; no configure script
483 (delete 'build) ; nothing to be built
484 (replace 'install
620b0468 485 (lambda* (#:key outputs #:allow-other-keys)
482bdf25
RW
486 (invoke "sh" "install.sh"
487 (assoc-ref outputs "out"))))
1ee3079d
EF
488 (delete 'check)
489 (add-after 'install 'check
620b0468 490 (lambda* (#:key outputs #:allow-other-keys)
482bdf25
RW
491 (invoke (string-append (assoc-ref outputs "out")
492 "/bin/cowsay")
493 "We're done!"))))))
620b0468
RW
494 (inputs
495 `(("perl" ,perl)))
496 (home-page (string-append "https://web.archive.org/web/20071026043648/"
46ba5337 497 "http://www.nog.net:80/~tony/warez/cowsay.shtml"))
620b0468
RW
498 (synopsis "Speaking cow text filter")
499 (description "Cowsay is basically a text filter. Send some text into it,
500and you get a cow saying your text. If you think a talking cow isn't enough,
46ba5337
TGR
501cows can think too: all you have to do is run @command{cowthink}. If you're
502tired of cows, a variety of other ASCII-art messengers are available.")
620b0468
RW
503 (license license:gpl3+)))
504
0b5d078f
KK
505(define-public freedoom
506 (package
9303b09a 507 (name "freedoom")
78a3da3d 508 (version "0.12.1")
9303b09a
TGR
509 (source
510 (origin
511 (method git-fetch)
512 (uri (git-reference
513 (url "https://github.com/freedoom/freedoom.git")
514 (commit (string-append "v" version))))
515 (file-name (git-file-name name version))
516 (sha256
78a3da3d 517 (base32 "1mq60lfwaaxmch7hsz8403pwafnlsmsd5z2df2j77ppwndwcrypb"))))
9303b09a
TGR
518 (build-system gnu-build-system)
519 (arguments
520 '(#:make-flags
521 (list (string-append "prefix=" (assoc-ref %outputs "out")))
9303b09a
TGR
522 #:tests? #f ; no check target
523 #:phases
524 (modify-phases %standard-phases
525 (delete 'bootstrap)
526 (replace 'configure
527 (lambda* (#:key inputs outputs #:allow-other-keys)
78a3da3d 528 (let* ((freedoom (assoc-ref outputs "out"))
9303b09a 529 (wad-dir (string-append freedoom "/share/games/doom")))
9303b09a
TGR
530 ;; Make sure that the install scripts know where to find
531 ;; the appropriate WAD files.
532 (substitute* "dist/freedoom"
533 (("IWAD=freedm.wad")
534 (string-append "IWAD=" wad-dir "/freedm.wad"))
535 (("IWAD=freedoom1.wad")
536 (string-append "IWAD=" wad-dir "/freedoom1.wad"))
537 (("IWAD=freedoom2.wad")
538 (string-append "IWAD=" wad-dir "/freedoom2.wad")))
539 #t))))))
540 (native-inputs
541 `(("asciidoc" ,asciidoc)
542 ("deutex" ,deutex)
78a3da3d
KK
543 ("python" ,python)
544 ("python-pillow" ,python-pillow)))
9303b09a
TGR
545 (home-page "https://freedoom.github.io/")
546 (synopsis "Free content game based on the Doom engine")
547 (native-search-paths
548 (list (search-path-specification
549 (variable "DOOMWADDIR")
550 (files '("share/games/doom")))
551 (search-path-specification
552 (variable "DOOMWADPATH")
553 (files '("share/games/doom")))))
554 (description
555 "The Freedoom project aims to create a complete free content first person
0b5d078f
KK
556shooter game. Freedoom by itself is just the raw material for a game: it must
557be paired with a compatible game engine (such as @code{prboom-plus}) to be
558played. Freedoom complements the Doom engine with free levels, artwork, sound
559effects and music to make a completely free game.")
9303b09a 560 (license license:bsd-3)))
0b5d078f 561
18995af2
TGR
562(define-public freedroidrpg
563 (package
564 (name "freedroidrpg")
565 (version "0.16.1")
566 (source
567 (origin
568 (method url-fetch)
569 (uri (string-append "http://ftp.osuosl.org/pub/freedroid/"
570 "freedroidRPG-" (version-major+minor version) "/"
571 "freedroidRPG-" version ".tar.gz"))
572 (sha256
573 (base32 "0n4kn38ncmcy3lrxmq8fjry6c1z50z4q1zcqfig0j4jb0dsz2va2"))))
574 (build-system gnu-build-system)
575 (arguments
576 `(#:configure-flags
577 (list
578 (string-append "CFLAGS="
579 "-I" (assoc-ref %build-inputs "sdl-gfx") "/include/SDL "
580 "-I" (assoc-ref %build-inputs "sdl-image") "/include/SDL "
581 "-I" (assoc-ref %build-inputs "sdl-mixer") "/include/SDL")
582 "--enable-opengl")
583 ;; FIXME: the test suite fails with the following error output:
584 ;; 4586 Segmentation fault env SDL_VIDEODRIVER=dummy \
585 ;; SDL_AUDIODRIVER=dummy ./src/freedroidRPG -nb text
586 #:tests? #f))
587 (native-inputs
588 `(("pkg-config" ,pkg-config)))
589 (inputs
590 `(("glu" ,glu)
591 ("libjpeg" ,libjpeg)
592 ("libogg" ,libogg)
593 ("libpng" ,libpng)
594 ("libvorbis" ,libvorbis)
595 ("mesa" ,mesa)
596 ("python" ,python-wrapper)
597 ("sdl" ,sdl)
598 ("sdl-gfx" ,sdl-gfx)
599 ("sdl-image" ,sdl-image)
600 ("sdl-mixer" ,sdl-mixer)
601 ("zlib" ,zlib)))
602 (home-page "http://www.freedroid.org/")
603 (synopsis "Isometric role-playing game against killer robots")
604 (description
605 "Freedroid RPG is an @dfn{RPG} (Role-Playing Game) with isometric graphics.
606The game tells the story of a world destroyed by a conflict between robots and
607their human masters. To restore peace to humankind, the player must complete
608numerous quests while fighting off rebelling robots---either by taking control
609of them, or by simply blasting them to pieces with melee and ranged weapons in
610real-time combat.")
611 (license (list license:expat ; lua/
612 license:gpl3 ; src/gen_savestruct.py
613 license:gpl2+)))) ; the rest
614
06f5f0b1
KK
615(define-public golly
616 (package
617 (name "golly")
715a44e9 618 (version "3.2")
06f5f0b1
KK
619 (source (origin
620 (method url-fetch)
04e7b1e7 621 (uri (string-append "mirror://sourceforge/golly/golly/golly-"
06f5f0b1
KK
622 version "/golly-" version
623 "-src.tar.gz"))
624 (sha256
625 (base32
715a44e9 626 "0cg9mbwmf4q6qxhqlnzrxh9y047banxdb8pd3hgj3smmja2zf0jd"))))
06f5f0b1
KK
627 (build-system gnu-build-system)
628 (arguments
629 '(#:make-flags (list "CC=gcc"
630 (string-append "GOLLYDIR="
631 (assoc-ref %outputs "out")
632 "/share/golly"))
633 #:tests? #f ; no check target
634 #:phases
635 (modify-phases %standard-phases
636 (replace 'configure
637 (lambda* (#:key inputs #:allow-other-keys)
638 ;; For some reason, setting the PYTHON_SHLIB make flag doesn't
639 ;; properly set the path to the Python shared library. This
640 ;; substitution acheives the same end by different means.
641 (substitute* "gui-wx/wxprefs.cpp"
642 (("pythonlib = wxT\\(STRINGIFY\\(PYTHON_SHLIB\\)\\)")
643 (string-append "pythonlib = \""
644 (assoc-ref inputs "python")
645 "/lib/libpython-2.7.so\"")))
646 #t))
647 (replace 'build
648 (lambda* (#:key make-flags outputs #:allow-other-keys)
649 (with-directory-excursion "gui-wx"
650 (apply invoke `("make" ,@make-flags "-f" "makefile-gtk")))))
651 (replace 'install
652 (lambda* (#:key outputs #:allow-other-keys)
653 (let* ((out (assoc-ref outputs "out"))
654 (bin (string-append out "/bin"))
655 (doc (string-append out "/share/doc/golly"))
656 (pixmaps (string-append out "/share/pixmaps"))
657 (share (string-append out "/share/golly")))
658 (for-each (lambda (binary)
659 (install-file binary bin))
660 '("bgolly" "golly"))
661 (for-each (lambda (document)
662 (install-file
663 (string-append "docs/" document ".html")
664 doc))
665 '("License" "ReadMe" "ToDo"))
666 (install-file "gui-wx/icons/appicon.xpm" pixmaps)
667 (for-each (lambda (folder)
668 (copy-recursively
669 folder
670 (string-append share "/" folder)))
671 '("Help" "Patterns" "Rules" "Scripts")))
672 #t)))))
673 (native-inputs
674 `(("lua" ,lua)))
675 (inputs
676 `(("glu" ,glu)
677 ("mesa" ,mesa)
678 ("python" ,python-2)
679 ("wxwidgets" ,wxwidgets-gtk2)
680 ("zlib" ,zlib)))
681 (home-page "http://golly.sourceforge.net/")
682 (synopsis "Software for exploring cellular automata")
683 (description
684 "Golly simulates Conway's Game of Life and many other types of cellular
685automata. The following features are available:
686@enumerate
687@item Support for bounded and unbounded universes, with cells of up to 256
688 states.
689@item Support for multiple algorithms, including Bill Gosper's Hashlife
690 algorithm.
691@item Loading patterns from BMP, PNG, GIF and TIFF image files.
692@item Reading RLE, macrocell, Life 1.05/1.06, dblife and MCell files.
693@item Scriptable via Lua or Python.
694@item Extracting patterns, rules and scripts from zip files.
695@item Downloading patterns, rules and scripts from online archives.
696@item Pasting patterns from the clipboard.
697@item Unlimited undo/redo.
698@item Configurable keyboard shortcuts.
699@item Auto fit option to keep patterns within the view.
700@end enumerate")
701 (license license:gpl2+)))
702
5145001a
RW
703(define-public meandmyshadow
704 (package
705 (name "meandmyshadow")
b70ff03e 706 (version "0.5a")
5145001a
RW
707 (source (origin
708 (method url-fetch)
709 (uri (string-append "mirror://sourceforge/meandmyshadow/"
710 version "/meandmyshadow-" version
711 "-src.tar.gz"))
712 (sha256
713 (base32
b70ff03e 714 "0i98v6cgmpsxy7mbb0s2y6f6qq6mkwzk2nrv1nz39ncf948aky2h"))))
5145001a
RW
715 (build-system cmake-build-system)
716 (arguments
1d9a9d27 717 `(#:tests? #f)) ; there are no tests
5145001a
RW
718 (native-inputs
719 `(("pkg-config" ,pkg-config)))
720 (inputs
1d9a9d27 721 `(("curl" ,curl)
5145001a 722 ("libarchive" ,libarchive)
1d9a9d27
TGR
723 ("lua" ,lua)
724 ("sdl" ,(sdl-union (list sdl2
725 sdl2-image
726 sdl2-mixer
727 sdl2-ttf)))))
b590951f 728 (home-page "https://acmepjz.github.io/meandmyshadow/")
5145001a
RW
729 (synopsis "Puzzle/platform game")
730 (description "Me and My Shadow is a puzzle/platform game in which you try
731to reach the exit by solving puzzles. Spikes, moving blocks, fragile blocks
732and much more stand between you and the exit. Record your moves and let your
733shadow mimic them to reach blocks you couldn't reach alone.")
734 (license license:gpl3+)))
735
02345c96
RW
736(define-public knights
737 (package
738 (name "knights")
739 (version "025")
740 (source (origin
741 (method url-fetch)
742 (uri (string-append "http://www.knightsgame.org.uk/files/knights_"
743 version "_src.tar.gz"))
744 (sha256
745 (base32
746 "18vp2ygvn0s0jz8rm585jqf6hjqkam1ximq81k0r9hpmfj7wb88f"))))
747 (build-system gnu-build-system)
748 (arguments
749 '(#:make-flags
750 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
751 #:phases
752 (modify-phases %standard-phases
753 ;; No configure script.
754 (delete 'configure))
755 #:tests? #f)) ;; No check target.
756 (inputs
757 `(("boost" ,boost)
758 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
759 ("freetype" ,freetype)
760 ("fontconfig" ,fontconfig)
761 ("curl" ,curl)))
6730d895
RW
762 (native-inputs
763 `(("pkg-config" ,pkg-config)))
02345c96
RW
764 (home-page "http://www.knightsgame.org.uk/")
765 (synopsis "Multiplayer dungeon game involving knights and quests")
766 (description "Knights is a multiplayer game involving several knights who
767must run around a dungeon and complete various quests. Each game revolves
768around a quest – for example, you might have to find some items and carry them
769back to your starting point. This may sound easy, but as there are only
770enough items in the dungeon for one player to win, you may end up having to
771kill your opponents to get their stuff! Other quests involve escaping from
772the dungeon, fighting a duel to the death against the enemy knights, or
773destroying an ancient book using a special wand.")
774 ;; This package includes modified sources of lua (X11), enet (Expat), and
775 ;; guichan (BSD-3). The "Coercri" library is released under the Boost
776 ;; license. The whole package is released under GPLv3+.
777 (license license:gpl3+)))
778
e23f2ff1 779(define-public gnubg
bf0018cd 780 (package
e23f2ff1 781 (name "gnubg")
d5ddb484 782 (version "1.06.002")
bf0018cd
JD
783 (source
784 (origin
785 (method url-fetch)
786 (uri (string-append "http://files.gnubg.org/media/sources/gnubg-release-"
0856e3e9 787 version "-sources." "tar.gz"))
bf0018cd
JD
788 (sha256
789 (base32
d5ddb484 790 "11xwhcli1h12k6rnhhyq4jphzrhfik7i8ah3k32pqw803460n6yf"))))
bf0018cd
JD
791 (build-system gnu-build-system)
792 (inputs `(("glib" ,glib)
793 ("readline" ,readline)
794 ("gtk+" ,gtk+-2)
795 ("mesa" ,mesa)
6a95024c 796 ("glu" ,glu)
bf0018cd
JD
797 ("gtkglext" ,gtkglext)
798 ("sqlite" ,sqlite)
799 ("libcanberra" ,libcanberra)))
800 (native-inputs `(("python-2" ,python-2)
801 ("pkg-config" ,pkg-config)))
07af3e5e 802 (home-page "http://gnubg.org")
bf0018cd 803 (synopsis "Backgammon game")
c97e4d8b
PN
804 (description "The GNU backgammon application (also known as \"gnubg\") can
805be used for playing, analyzing and teaching the game. It has an advanced
806evaluation engine based on artificial neural networks suitable for both
807beginners and advanced players. In addition to a command-line interface, it
808also features an attractive, 3D representation of the playing board.")
024e2c17 809 (license license:gpl3+)))
bf0018cd 810
e23f2ff1
LC
811(define-public gnubackgammon
812 (deprecated-package "gnubackgammon" gnubg))
c97e4d8b 813
490c6528
JD
814(define-public gnubik
815 (package
816 (name "gnubik")
ecc39b3f 817 (version "2.4.3")
490c6528
JD
818 (source
819 (origin
820 (method url-fetch)
821 (uri (string-append "mirror://gnu/gnubik/gnubik-"
822 version ".tar.gz"))
823 (sha256
824 (base32
ecc39b3f 825 "1vlf924mq8hg93bsjj0rzvs0crc6psmlxyc6zn0fr7msnmpx6gib"))))
490c6528
JD
826 (build-system gnu-build-system)
827 (inputs `(("gtk+" ,gtk+-2)
828 ("mesa" ,mesa)
276a8f71 829 ("glu" ,glu)
490c6528
JD
830 ("libx11" ,libx11)
831 ("guile" ,guile-2.0)
832 ("gtkglext" ,gtkglext)))
b94a6ca0 833 (native-inputs `(("gettext" ,gettext-minimal)
490c6528
JD
834 ("pkg-config" ,pkg-config)))
835 (home-page "https://www.gnu.org/software/gnubik/")
e67f5551
LC
836 (synopsis "3d Rubik's cube game")
837 (description
838 "GNUbik is a puzzle game in which you must manipulate a cube to make
490c6528
JD
839each of its faces have a uniform color. The game is customizable, allowing
840you to set the size of the cube (the default is 3x3) or to change the colors.
c5779c93 841You may even apply photos to the faces instead of colors. The game is
490c6528 842scriptable with Guile.")
024e2c17 843 (license license:gpl3+)))
3da5dca3 844
a20b084a
JD
845(define-public gnushogi
846 (package
847 (name "gnushogi")
848 (version "1.4.2")
849 (source
850 (origin
851 (method url-fetch)
852 (uri (string-append "mirror://gnu/gnushogi/gnushogi-"
853 version ".tar.gz"))
854 (sha256
855 (base32
856 "0a9bsl2nbnb138lq0h14jfc5xvz7hpb2bcsj4mjn6g1hcsl4ik0y"))))
857 (arguments `(#:tests? #f)) ;; No check target.
858 (build-system gnu-build-system)
6fd52309 859 (home-page "https://www.gnu.org/software/gnushogi/")
a20b084a
JD
860 (synopsis "The game of Shogi (Japanese chess)")
861 (description "GNU Shogi is a program that plays the game Shogi (Japanese
862Chess). It is similar to standard chess but this variant is far more complicated.")
863 (license license:gpl3+)))
864
e664200c
KK
865(define-public ltris
866 (package
867 (name "ltris")
868 (version "1.0.19")
869 (source
870 (origin
871 (method url-fetch)
872 (uri (string-append "http://prdownloads.sourceforge.net/lgames/"
dd0369f4 873 "ltris-" version ".tar.gz"))
e664200c
KK
874 (sha256
875 (base32
876 "1895wv1fqklrj4apkz47rnkcfhfav7zjknskw6p0886j35vrwslg"))))
877 (build-system gnu-build-system)
878 (arguments
879 '(;; The code in LTris uses traditional GNU semantics for inline functions
880 #:configure-flags '("CFLAGS=-fgnu89-inline")
881 #:phases
882 (modify-phases %standard-phases
883 (add-after 'set-paths 'set-sdl-paths
884 (lambda* (#:key inputs #:allow-other-keys)
885 (setenv "CPATH"
886 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
887 "/include/SDL:"
888 (or (getenv "CPATH") "")))
e664200c
KK
889 #t)))))
890 (inputs
891 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))))
892 (home-page "http://lgames.sourceforge.net/LTris/")
893 (synopsis "Tetris clone based on the SDL library")
894 (description
895 "LTris is a tetris clone: differently shaped blocks are falling down the
896rectangular playing field and can be moved sideways or rotated by 90 degree
897units with the aim of building lines without gaps which then disappear (causing
898any block above the deleted line to fall down). LTris has three game modes: In
899Classic you play until the stack of blocks reaches the top of the playing field
900and no new blocks can enter. In Figures the playing field is reset to a new
901figure each level and later on tiles and lines suddenly appear. In Multiplayer
902up to three players (either human or CPU) compete with each other sending
903removed lines to all opponents. There is also a Demo mode in which you can
904watch your CPU playing while enjoying a cup of tea!")
905 (license license:gpl2+)))
3bd0d186
A
906
907(define-public nethack
908 (package
909 (name "nethack")
ef81faee 910 (version "3.6.2")
3bd0d186
A
911 (source
912 (origin
913 (method url-fetch)
a544817e
TGR
914 (uri
915 (string-append "https://www.nethack.org/download/" version "/nethack-"
916 (string-join (string-split version #\.) "") "-src.tgz"))
3bd0d186 917 (sha256
ef81faee 918 (base32 "07fvkm3v11a4pjrq2f66vjslljsvk6raal53skn4gqsfdbd0ml7v"))))
3bd0d186
A
919 (inputs
920 `(("ncurses" ,ncurses)
921 ("bison" ,bison)
922 ("flex" ,flex)
923 ("less" ,less)))
924 (build-system gnu-build-system)
925 (arguments
926 '(#:make-flags
927 `(,(string-append "PREFIX=" (assoc-ref %outputs "out")))
928 #:phases
929 (modify-phases %standard-phases
930 (add-before 'configure 'patch-paths
931 (lambda _
932 (substitute* "sys/unix/nethack.sh"
933 (("^ *cd .*$") ""))
934 (substitute* "sys/unix/Makefile.utl"
935 (("^YACC *=.*$") "YACC = bison -y\n")
936 (("^LEX *=.*$") "LEX = flex\n")
937 (("^# CC = gcc") "CC = gcc"))
938 (substitute* "sys/unix/hints/linux"
939 (("/bin/gzip") (string-append
940 (assoc-ref %build-inputs "gzip")
941 "/bin/gzip"))
942 (("^WINTTYLIB=.*") "WINTTYLIB=-lncurses"))
943 (substitute* "include/config.h"
df35e715
LC
944 (("^.*define CHDIR.*$") "")
945 (("^/\\* *#*define *REPRODUCIBLE_BUILD *\\*/")
946 ;; Honor SOURCE_DATE_EPOCH.
947 "#define REPRODUCIBLE_BUILD"))
948
949 ;; Note: 'makedefs' rejects and ignores dates that are too old
950 ;; or too new, so we must choose something reasonable here.
951 (setenv "SOURCE_DATE_EPOCH" "1531865062")
952
3bd0d186
A
953 (substitute* "sys/unix/Makefile.src"
954 (("^# CC = gcc") "CC = gcc"))
955 #t))
956 (replace 'configure
957 (lambda _
958 (let ((bash (string-append
959 (assoc-ref %build-inputs "bash")
960 "/bin/bash")))
961 (with-directory-excursion "sys/unix"
962 (substitute* "setup.sh" (("/bin/sh") bash))
963 (invoke bash "setup.sh" "hints/linux"))
964 #t)))
965 (add-after 'install 'fixup-paths
966 (lambda _
967 (let* ((output (assoc-ref %outputs "out"))
968 (nethack-script (string-append output "/bin/nethack")))
969 (mkdir-p (string-append output "/games/lib/nethackuserdir"))
970 (for-each
971 (lambda (file)
972 (rename-file
973 (string-append output "/games/lib/nethackdir/" file)
974 (string-append output "/games/lib/nethackuserdir/"
975 file)))
976 '("xlogfile" "logfile" "perm" "record" "save"))
977 (mkdir-p (string-append output "/bin"))
978 (call-with-output-file nethack-script
979 (lambda (port)
980 (format port "#!~a/bin/sh
981PATH=~a:$PATH
982if [ ! -d ~~/.config/nethack ]; then
983 mkdir -p ~~/.config/nethack
984 cp -r ~a/games/lib/nethackuserdir/* ~~/.config/nethack
985 chmod -R +w ~~/.config/nethack
986fi
987
988RUNDIR=$(mktemp -d)
989
990cleanup() {
991 rm -rf $RUNDIR
992}
993trap cleanup EXIT
994
995cd $RUNDIR
996for i in ~~/.config/nethack/*; do
997 ln -s $i $(basename $i)
998done
999for i in ~a/games/lib/nethackdir/*; do
1000 ln -s $i $(basename $i)
1001done
1002~a/games/nethack"
1003 (assoc-ref %build-inputs "bash")
1004 (list->search-path-as-string
1005 (list
1006 (string-append
1007 (assoc-ref %build-inputs "coreutils") "/bin")
1008 (string-append
1009 (assoc-ref %build-inputs "less") "/bin"))
1010 ":")
1011 output
1012 output
1013 output)))
1014 (chmod nethack-script #o555)
1015 #t)))
1016 (delete 'check))))
1017 (home-page "https://nethack.org")
1018 (synopsis "Classic dungeon crawl game")
1019 (description "NetHack is a single player dungeon exploration game that runs
1020on a wide variety of computer systems, with a variety of graphical and text
1021interfaces all using the same game engine. Unlike many other Dungeons &
1022Dragons-inspired games, the emphasis in NetHack is on discovering the detail of
1023the dungeon and not simply killing everything in sight - in fact, killing
1024everything in sight is a good way to die quickly. Each game presents a
1025different landscape - the random number generator provides an essentially
1026unlimited number of variations of the dungeon and its denizens to be discovered
1027by the player in one of a number of characters: you can pick your race, your
1028role, and your gender.")
1029 (license
1030 (license:fsdg-compatible
1031 "https://nethack.org/common/license.html"))))
e664200c 1032
82943626
TGR
1033(define-public pipewalker
1034 (package
1035 (name "pipewalker")
1036 (version "0.9.4")
1037 (source
1038 (origin
1039 (method url-fetch)
1040 (uri (string-append "http://downloads.sourceforge.net/pipewalker/"
96848ecc 1041 "pipewalker-" version ".tar.gz"))
82943626 1042 (sha256
96848ecc 1043 (base32 "1x46wgk0s55562pd96cxagxkn6wpgglq779f9b64ff1k3xzp3myn"))))
82943626
TGR
1044 (build-system gnu-build-system)
1045 (arguments
1046 `(#:configure-flags
1047 (list (string-append "--docdir=" (assoc-ref %outputs "out")
1048 "/share/doc/" ,name "-" ,version))
1049 #:phases
1050 (modify-phases %standard-phases
1051 (add-after 'configure 'patch-docdir
1052 ;; Makefile.in ignores configure's ‘--docdir=...’ option. Fix that.
1053 (lambda _
1054 (substitute* "Makefile"
1055 (("(pkgdocdatadir = ).*" _ assignment)
1056 (string-append assignment "$(docdir)\n")))
1057 #t)))))
1058 (inputs
1059 `(("libpng" ,libpng)
1060 ("mesa" ,mesa)
1061 ("sdl" ,sdl)))
1062 (home-page "http://pipewalker.sourceforge.net/")
1063 (synopsis "Logical tile puzzle")
1064 (description
1065 "PipeWalker is a simple puzzle game with many diffent themes: connect all
1066computers to one network server, bring water from a source to the taps, etc.
1067The underlying mechanism is always the same: you must turn each tile in the
1068grid in the right direction to combine all components into a single circuit.
1069Every puzzle has a complete solution, although there may be more than one.")
1070 (license license:gpl3+)))
1071
26a657f0
KK
1072(define-public prboom-plus
1073 (package
1074 (name "prboom-plus")
1075 (version "2.5.1.4")
1076 (source (origin
1077 (method url-fetch)
a8a96bbe
TGR
1078 (uri (string-append "mirror://sourceforge/prboom-plus/prboom-plus/"
1079 version "/prboom-plus-" version ".tar.gz"))
26a657f0 1080 (sha256
a8a96bbe 1081 (base32 "151v6nign86m1a2vqz27krsccpc9m4d1jax4y43v2fa82wfj9qp0"))
26a657f0
KK
1082 (modules '((guix build utils)))
1083 (snippet
6cbee49d
MW
1084 '(begin
1085 (substitute* "src/version.c"
1086 (("__DATE__") "")
1087 (("__TIME__") ""))
1088 #t))))
26a657f0
KK
1089 (build-system gnu-build-system)
1090 (arguments
1091 '(#:configure-flags '("--disable-cpu-opt")
1092 #:make-flags `(,(string-append "gamesdir="
1093 (assoc-ref %outputs "out") "/bin"))
1094 #:phases
1095 (modify-phases %standard-phases
1096 (add-after 'set-paths 'set-sdl'paths
1097 (lambda* (#:key inputs #:allow-other-keys)
1098 (setenv "CPATH"
1099 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
1100 "/include/SDL:"
1101 (or (getenv "CPATH") "")))
26a657f0
KK
1102 #t)))))
1103 (inputs
1104 `(("fluidsynth" ,fluidsynth)
1105 ("glu" ,glu)
1106 ("libmad" ,libmad)
1107 ("libpng" ,libpng)
1108 ("libvorbis" ,libvorbis)
1109 ("pcre" ,pcre)
1110 ("portmidi" ,portmidi)
1111 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-net)))))
1112 (home-page "http://prboom-plus.sourceforge.net/")
1113 (synopsis "Version of the classic 3D shoot'em'up game Doom")
1114 (description
1115 "PrBoom+ is a Doom source port developed from the original PrBoom project.")
1116 (license license:gpl2+)))
1117
519bfc65
KK
1118(define-public retux
1119 (package
1120 (name "retux")
b286e3b3 1121 (version "1.3.6")
519bfc65
KK
1122 (source (origin
1123 (method url-fetch)
1124 (uri (string-append "mirror://savannah/retux/"
1125 (version-major+minor version) "/retux-"
1126 version "-src.tar.gz"))
1127 (sha256
1128 (base32
b286e3b3 1129 "01bidh4zisjp3nc436x0g85v60dvwb3ig37i7y01sa71j8fm4fmb"))))
519bfc65
KK
1130 (build-system python-build-system)
1131 (arguments
1132 `(#:tests? #f ; no check target
1133 #:phases
1134 (modify-phases %standard-phases
1135 ;; no setup.py script
1136 (delete 'build)
1137 (replace 'install
1138 (lambda* (#:key outputs #:allow-other-keys)
1139 (let* ((out (assoc-ref outputs "out"))
1140 (bin (string-append out "/bin"))
1141 (data (string-append out "/share/retux"))
1142 (doc (string-append out "/share/doc/retux")))
1143 (mkdir-p bin)
1144
1145 (substitute* "retux.py"
1146 ;; Use the correct data directory.
1147 (("os\\.path\\.join\\(os\\.path\\.dirname\\(__file__\\), \"data\"\\),")
1148 (string-append "\"" data "\","))
1149 ;; Use Python 3 so the patch-shebangs phase works properly.
1150 ((".*python2.*") "#!/usr/bin/python3"))
1151
1152 (copy-file "retux.py" (string-append bin "/retux"))
1153
1154 (copy-recursively "data" data)
1155
fbc3b802
KK
1156 (install-file "COPYING" doc)
1157 #t))))))
519bfc65
KK
1158 (inputs
1159 `(("python-sge-pygame" ,python-sge-pygame)
1160 ("python-six" ,python-six)
1161 ("python-xsge" ,python-xsge)))
1162 (home-page "http://retux.nongnu.org")
1163 (synopsis "Action platformer game")
1164 (description
1165 "ReTux is an action platformer loosely inspired by the Mario games,
1166utilizing the art assets from the @code{SuperTux} project.")
1167 ;; GPL version 3 or later is the license for the code and some art.
1168 ;; The rest of the licenses are for the art exclusively, as listed in
1169 ;; data/LICENSES.
1170 (license (list license:cc0
1171 license:cc-by3.0
1172 license:cc-by-sa3.0
1173 license:cc-by-sa4.0
1174 license:gpl2+
1175 license:gpl3+))))
07f3b379
KK
1176
1177(define-public roguebox-adventures
1697048f
KK
1178 (package
1179 (name "roguebox-adventures")
1180 (version "2.2.1")
1181 (source
1182 (origin
1183 (method url-fetch)
1184 (uri (string-append
1185 "http://download.tuxfamily.org/rba/RogueBoxAdventures_v"
1186 (string-join (string-split version #\.) "_") "_Source.zip"))
1187 (file-name (string-append name "-" version ".zip"))
1188 (sha256
1189 (base32
1190 "0kmzdgnik8fsf3bg55546l77p3mfxn2awkzfzzdn20n82rd2babw"))))
1191 (build-system python-build-system)
1192 (arguments
1193 `(#:tests? #f ; no check target
1194 #:phases
1195 (modify-phases %standard-phases
1196 (replace 'unpack
1197 (lambda* (#:key source #:allow-other-keys)
1198 (and (invoke "unzip" source)
1199 ;; The actual source is buried a few directories deep.
1200 (chdir (string-append "RogueBoxAdventures_v"
1201 (string-join
1202 (string-split ,version #\.) "_")
1203 "_Source")))))
1204 ;; no setup.py script
1205 (replace 'build
1206 (lambda* (#:key outputs #:allow-other-keys)
1207 (let* ((out (assoc-ref outputs "out"))
1208 (data (string-append
1209 out "/share/games/roguebox-adventures")))
1210 ;; Use the correct data directory.
1211 (substitute* '("main.py" "LIB/getch.py" "LIB/getch_gcwz.py")
1212 (("basic_path + os\\.sep + 'DATA'")
1213 (string-append "'" data "'"))
1214 (("^basic_path.*$")
1215 (string-append "basic_path ='" data "'\n")))
1216 (substitute* "LIB/gra_files.py"
1217 (("basic_path = b_path\\.replace\\('/LIB',''\\)")
1218 (string-append "basic_path ='" data "'\n")))
07f3b379 1219
1697048f
KK
1220 ;; The game must save in the user's home directory because
1221 ;; the store is read-only.
1222 (substitute* "main.py"
1223 (("home_save = False") "home_save = True")
1224 (("'icon_small.png'")
1225 (string-append "'" data "/icon_small.png'"))))
1226 #t))
1227 (replace 'install
1228 (lambda* (#:key outputs #:allow-other-keys)
1229 (let* ((out (assoc-ref outputs "out"))
1230 (bin (string-append out "/bin"))
1231 (roguebox-adventures
1232 (string-append bin "/roguebox-adventures"))
1233 (data (string-append
1234 out "/share/games/roguebox-adventures"))
1235 (lib (string-append data "/LIB"))
1236 (doc (string-append
1237 out "/share/doc/roguebox-adventures")))
1238 (mkdir-p bin)
1239 (mkdir-p doc)
07f3b379 1240
1697048f
KK
1241 (for-each (lambda (file)
1242 (copy-recursively file
1243 (string-append data "/" file)))
1244 '("AUDIO" "FONT" "GRAPHIC" "LIB" "LICENSE"
1245 "icon_big.png" "icon_small.png"))
1246 (for-each (lambda (file)
1247 (chmod file #o555)
1248 (install-file file lib))
1249 '("main.py" "run.py"))
07f3b379 1250
1697048f 1251 (copy-recursively "DOC" doc)
07f3b379 1252
1697048f
KK
1253 (call-with-output-file
1254 roguebox-adventures
1255 (lambda (p)
1256 (format p "\
1257#!~a
1258export PYTHONPATH=~a/LIB:~a
1259exec -a \"~a\" ~a \"$@\"\n"
1260 (which "bash") data (getenv "PYTHONPATH")
1261 (which "python3")
1262 (string-append lib "/main.py"))))
1263 (chmod roguebox-adventures #o555))
1264 #t)))))
1265 (native-inputs
1266 `(("unzip" ,unzip)))
1267 (inputs
1268 `(("python-pygame" ,python-pygame)
1269 ("python-tmx" ,python-tmx)))
1270 (home-page "https://rogueboxadventures.tuxfamily.org")
1271 (synopsis "A classical roguelike/sandbox game")
1272 (description
1273 "RogueBox Adventures is a graphical roguelike with strong influences
07f3b379
KK
1274from sandbox games like Minecraft or Terraria. The main idea of RogueBox
1275Adventures is to offer the player a kind of roguelike toy-world. This world
1276can be explored and changed freely.")
1697048f
KK
1277 ;; The GPL3+ is for code, the rest are for art.
1278 (license (list license:cc0
1279 license:cc-by3.0
1280 license:gpl3+
1281 license:silofl1.1))))
519bfc65 1282
a20b084a
JD
1283(define-public xshogi
1284 (package
1285 (name "xshogi")
1286 (version "1.4.2")
1287 (source
1288 (origin
1289 (method url-fetch)
1290 (uri (string-append "mirror://gnu/gnushogi/xshogi-"
1291 version ".tar.gz"))
1292 (sha256
1293 (base32
1294 "1dns0nhymak44by18sv48m4xb2skiwbi2i3nb9hl6w9iwd2i2brf"))))
1295 (build-system gnu-build-system)
1296 (inputs
1297 `(("libxaw" ,libxaw)
1298 ("libxt" ,libxt)))
6fd52309 1299 (home-page "https://www.gnu.org/software/gnushogi/")
2f1d20a8 1300 (synopsis "User interface for gnushogi")
a20b084a
JD
1301 (description "A graphical user interface for the package @code{gnushogi}.")
1302 ;; Contains a copy of GPLv3 but the licence notices simply
1303 ;; state "GNU General Public Licence" without specifying a version.
1304 (license license:gpl1+)))
1305
649220ad 1306(define-public abbaye
3da5dca3 1307 (package
649220ad 1308 (name "abbaye")
efc12a81 1309 (version "2.0.1")
3da5dca3
DT
1310 (source
1311 (origin
feb50ac6
TGR
1312 (method git-fetch)
1313 (uri (git-reference
1314 (url "https://github.com/nevat/abbayedesmorts-gpl.git")
1315 (commit (string-append "v" version))))
1316 (file-name (git-file-name name version))
3da5dca3 1317 (sha256
feb50ac6 1318 (base32 "1pwqf7r9bqb2p3xrw9i7y8pgr1401fy3mnnqpb1qkhmdl3gqi9hb"))
efc12a81
AFN
1319 (modules '((guix build utils)))
1320 (snippet
1321 ;; Unbundle fonts.
6cbee49d
MW
1322 '(begin
1323 (delete-file-recursively "fonts")
1324 #t))))
3da5dca3
DT
1325 (build-system gnu-build-system)
1326 (arguments
efc12a81 1327 '(#:make-flags '("CC=gcc")
aec05972
AK
1328 #:phases (modify-phases %standard-phases
1329 (add-after 'set-paths 'set-sdl-paths
61599438
AK
1330 (lambda* (#:key inputs #:allow-other-keys)
1331 (setenv "CPATH"
1332 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
1333 "/include/SDL:"
1334 (or (getenv "CPATH") "")))))
aec05972
AK
1335 (add-after 'patch-source-shebangs 'patch-makefile
1336 (lambda* (#:key outputs #:allow-other-keys)
1337 ;; Replace /usr with package output directory.
efc12a81
AFN
1338 (substitute* "Makefile"
1339 (("/usr") (assoc-ref outputs "out")))))
aec05972
AK
1340 (add-before 'install 'make-install-dirs
1341 (lambda* (#:key outputs #:allow-other-keys)
1342 (let ((prefix (assoc-ref outputs "out")))
1343 ;; Create directories that the makefile assumes exist.
1344 (mkdir-p (string-append prefix "/bin"))
1345 (mkdir-p (string-append prefix "/share/applications"))
1346 (mkdir-p (string-append prefix "/share/pixmaps")))))
1347 ;; No configure script.
1348 (delete 'configure))
3da5dca3
DT
1349 #:tests? #f)) ;; No check target.
1350 (native-inputs `(("pkg-config" ,pkg-config)))
efc12a81
AFN
1351 (inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer)))))
1352 (home-page "https://github.com/nevat/abbayedesmorts-gpl")
3da5dca3
DT
1353 (synopsis "GNU/Linux port of the indie game \"l'Abbaye des Morts\"")
1354 (description "L'Abbaye des Morts is a 2D platform game set in 13th century
1355France. The Cathars, who preach about good Christian beliefs, were being
1356expelled by the Catholic Church out of the Languedoc region in France. One of
1357them, called Jean Raymond, found an old church in which to hide, not knowing
1358that beneath its ruins lay buried an ancient evil.")
efc12a81 1359 (license license:gpl3)))
a83c6a64 1360
649220ad
NG
1361(define-public l-abbaye-des-morts
1362 (deprecated-package "l-abbaye-des-morts" abbaye))
c91ed484 1363
b76c94e6
CAW
1364(define-public angband
1365 (package
1366 (name "angband")
e5e24819 1367 (version "4.2.0")
b76c94e6
CAW
1368 (source
1369 (origin
1370 (method url-fetch)
9a0d324a
EF
1371 (uri (string-append "http://rephial.org/downloads/"
1372 (version-major+minor version)
1373 "/angband-" version ".tar.gz"))
b76c94e6
CAW
1374 (sha256
1375 (base32
e5e24819 1376 "0vdm1ymm28wawp94nl1p5q3lhc0k7cnn2kkvvrkfx962gif4kqfk"))
b76c94e6
CAW
1377 (modules '((guix build utils)))
1378 (snippet
1379 ;; So, some of the sounds/graphics/tilesets are under different
1380 ;; licenses... some of them even nonfree! This is a console-only
1381 ;; version of this package so we just remove them.
1382 ;; In the future, if someone tries to make a graphical variant of
1383 ;; this package, they can deal with that mess themselves. :)
1384 '(begin
6cbee49d
MW
1385 (for-each (lambda (subdir)
1386 (let ((lib-subdir (string-append "lib/" subdir)))
1387 (delete-file-recursively lib-subdir)))
1388 '("fonts" "icons" "sounds" "tiles"))
b76c94e6 1389 (substitute* "lib/Makefile"
e5e24819 1390 ;; And don't try to invoke makefiles in the directories we removed.
b76c94e6 1391 (("gamedata customize help screens fonts tiles sounds icons user")
6cbee49d
MW
1392 "gamedata customize help screens user"))
1393 #t))))
b76c94e6
CAW
1394 (build-system gnu-build-system)
1395 (arguments
aeb6d9a6 1396 `(#:tests? #f ; no check target
b76c94e6
CAW
1397 #:configure-flags (list (string-append "--bindir=" %output "/bin"))
1398 #:phases
1399 (modify-phases %standard-phases
9a0d324a 1400 (replace 'bootstrap
b76c94e6
CAW
1401 (lambda _
1402 (substitute* "acinclude.m4"
1403 (("ncursesw5-config") "ncursesw6-config"))
9a0d324a 1404 (invoke "sh" "autogen.sh"))))))
b76c94e6
CAW
1405 (native-inputs
1406 `(("autoconf" ,autoconf)
1407 ("automake" ,automake)))
1408 (inputs `(("ncurses" ,ncurses)))
1409 (home-page "http://rephial.org/")
1410 (synopsis "Dungeon exploration roguelike")
1411 (description "Angband is a Classic dungeon exploration roguelike. Explore
1412the depths below Angband, seeking riches, fighting monsters, and preparing to
1413fight Morgoth, the Lord of Darkness.")
1414 (license license:gpl2)))
1415
a83c6a64
EB
1416(define-public pingus
1417 (package
1418 (name "pingus")
1419 (version "0.7.6")
1420 (source
1421 (origin
472c36bd
EF
1422 (method git-fetch)
1423 (uri (git-reference
4b889d3a 1424 (url "https://gitlab.com/pingus/pingus.git")
472c36bd
EF
1425 (commit (string-append "v" version))))
1426 (file-name (git-file-name name version))
a83c6a64
EB
1427 (sha256
1428 (base32
472c36bd
EF
1429 "0wp06kcmknsnxz7bjnsndb8x062z7r23fb3yrnbfnj68qhz18y74"))
1430 (patches (search-patches "pingus-boost-headers.patch"
2ed626bf
MB
1431 "pingus-sdl-libs-config.patch"))
1432 (modules '((guix build utils)))
1433 (snippet
1434 '(begin
1435 (substitute* "src/pingus/screens/demo_session.cpp"
1436 (("#include <iostream>")
1437 ;; std::function moved to <functional> with C++ 11.
1438 ;; Remove this for versions newer than 0.7.6.
1439 "#include <iostream>\n#include <functional>"))
1440 #t))))
a83c6a64
EB
1441 (build-system gnu-build-system)
1442 (native-inputs `(("pkg-config" ,pkg-config)
3f3f8f49 1443 ("scons-python2" ,scons-python2)))
a83c6a64
EB
1444 (inputs `(("sdl" ,sdl)
1445 ("sdl-image" ,sdl-image)
1446 ("sdl-mixer" ,sdl-mixer)
1447 ("mesa" ,mesa)
00c09300 1448 ("glu" ,glu)
a83c6a64
EB
1449 ("libpng" ,libpng)
1450 ("boost" ,boost)))
1451 (arguments
3f3f8f49
AI
1452 '(#:make-flags (list (string-append "PREFIX=" %output))
1453 #:tests? #f ; no check target
a83c6a64 1454 #:phases
3f127147 1455 (modify-phases %standard-phases
3f3f8f49 1456 (delete 'configure)))) ; no configure script
5f578231 1457 (home-page "https://pingus.seul.org/")
a83c6a64
EB
1458 (synopsis "Lemmings clone")
1459 (description
1460 "Pingus is a free Lemmings-like puzzle game in which the player takes
1461command of a bunch of small animals and has to guide them through levels.
1462Since the animals walk on their own, the player can only influence them by
1463giving them commands, like build a bridge, dig a hole, or redirect all animals
1464in the other direction. Multiple such commands are necessary to reach the
1465level's exit. The game is presented in a 2D side view.")
1466 ;; Some source files are under bsd-3 and gpl2+ licenses.
024e2c17 1467 (license license:gpl3+)))
dff62423
JD
1468
1469(define-public talkfilters
1470 (package
1471 (name "talkfilters")
1472 (version "2.3.8")
1473 (source
1474 (origin
1475 (method url-fetch)
1476 (uri (string-append "http://www.hyperrealm.com/" name "/"
10903356 1477 name "-" version ".tar.gz"))
dff62423
JD
1478 (sha256
1479 (base32 "19nc5vq4bnkjvhk8srqddzhcs93jyvpm9r6lzjzwc1mgf08yg0a6"))))
1480 (build-system gnu-build-system)
6fd52309 1481 (home-page "https://www.gnu.org/software/talkfilters/")
dff62423
JD
1482 (synopsis "Convert English text to humorous dialects")
1483 (description "The GNU Talk Filters are programs that convert English text
1484into stereotyped or otherwise humorous dialects. The filters are provided as
1485a C library, so they can easily be integrated into other programs.")
024e2c17
DT
1486 (license license:gpl2+)))
1487
3cf118a1
CS
1488(define-public cmatrix
1489 (package
1490 (name "cmatrix")
1491 (version "1.2a")
1492 (source
1493 (origin
1494 (method url-fetch)
1495 (uri (string-append "http://www.asty.org/cmatrix/dist/cmatrix-" version
1496 ".tar.gz"))
1497 (sha256
1498 (base32
1499 "0k06fw2n8nzp1pcdynhajp5prba03gfgsbj91bknyjr5xb5fd9hz"))))
1500 (build-system gnu-build-system)
1501 (arguments
1502 '(#:phases
3f127147
TGR
1503 (modify-phases %standard-phases
1504 (replace 'configure
1505 (lambda* (#:key outputs #:allow-other-keys)
1506 ;; This old ‘configure’ script doesn't support
1507 ;; variables passed as arguments.
1508 (let ((out (assoc-ref outputs "out")))
1509 (setenv "CONFIG_SHELL" (which "bash"))
a4aca0b8
RW
1510 (invoke "./configure"
1511 (string-append "--prefix=" out))))))))
3cf118a1 1512 (inputs `(("ncurses" ,ncurses)))
07af3e5e 1513 (home-page "http://www.asty.org/cmatrix")
3cf118a1
CS
1514 (synopsis "Simulate the display from \"The Matrix\"")
1515 (description "CMatrix simulates the display from \"The Matrix\" and is
1516based on the screensaver from the movie's website. It works with terminal
1517settings up to 132x300 and can scroll lines all at the same rate or
1518asynchronously and at a user-defined speed.")
024e2c17 1519 (license license:gpl2+)))
ae9cb418
JD
1520
1521(define-public chess
1522 (package
1523 (name "chess")
16fb1e79 1524 (version "6.2.5")
ae9cb418
JD
1525 (source
1526 (origin
1527 (method url-fetch)
1528 (uri (string-append "mirror://gnu/chess/gnuchess-" version
1529 ".tar.gz"))
1530 (sha256
1531 (base32
16fb1e79 1532 "00j8s0npgfdi41a0mr5w9qbdxagdk2v41lcr42rwl1jp6miyk6cs"))))
ae9cb418 1533 (build-system gnu-build-system)
6fd52309 1534 (home-page "https://www.gnu.org/software/chess/")
ae9cb418
JD
1535 (synopsis "Full chess implementation")
1536 (description "GNU Chess is a chess engine. It allows you to compete
1537against the computer in a game of chess, either through the default terminal
1538interface or via an external visual interface such as GNU XBoard.")
024e2c17 1539 (license license:gpl3+)))
ae9cb418 1540
a6b55314 1541(define freedink-engine
bb3b71ce
SB
1542 (package
1543 (name "freedink-engine")
2ee05bb9 1544 (version "109.6")
bb3b71ce
SB
1545 (source (origin
1546 (method url-fetch)
1547 (uri (string-append "mirror://gnu/freedink/freedink-" version
1548 ".tar.gz"))
1549 (sha256
1550 (base32
2ee05bb9 1551 "00hhk1bjdrc1np2qz44sa5n1mb62qzwxbvsnws3vpms6iyn3a2sy"))))
bb3b71ce 1552 (build-system gnu-build-system)
a9249f58
KK
1553 (arguments
1554 `(#:configure-flags '("--disable-embedded-resources")
1555 #:phases
1556 (modify-phases %standard-phases
1557 (add-after 'unpack 'disable-graphical-tests
1558 (lambda _
1559 ;; These tests require a graphical interface.
1560 (substitute* "src/Makefile.am"
1561 (("test_gfx_fonts TestIOGfxDisplay") ""))
1562 #t)))))
1563 (native-inputs `(("autoconf" ,autoconf)
1564 ("automake" ,automake)
1565 ("cxxtest" ,cxxtest)
1566 ("gettext" ,gettext-minimal)
1567 ("help2man" ,help2man)
bb3b71ce 1568 ("pkg-config" ,pkg-config)))
a9249f58
KK
1569 (inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer
1570 sdl2-ttf sdl2-gfx)))
bb3b71ce 1571 ("fontconfig" ,fontconfig)
a9249f58 1572 ("glm" ,glm)))
f9eab0be
EF
1573 (properties '((ftp-directory . "/freedink")
1574 (upstream-name . "freedink")))
6fd52309 1575 (home-page "https://www.gnu.org/software/freedink/")
bb3b71ce
SB
1576 (synopsis "Twisted adventures of young pig farmer Dink Smallwood")
1577 (description
1578 "GNU FreeDink is a free and portable re-implementation of the engine
1579for the role-playing game Dink Smallwood. It supports not only the original
1580game data files but it also supports user-produced game mods or \"D-Mods\".
1581To that extent, it also includes a front-end for managing all of your D-Mods.")
024e2c17 1582 (license license:gpl3+)))
bb3b71ce 1583
a6b55314 1584(define freedink-data
bb3b71ce
SB
1585 (package
1586 (name "freedink-data")
32d92d2c 1587 (version "1.08.20190120")
bb3b71ce
SB
1588 (source (origin
1589 (method url-fetch)
1590 (uri (string-append "mirror://gnu/freedink/freedink-data-"
32d92d2c 1591 version ".tar.gz"))
bb3b71ce
SB
1592 (sha256
1593 (base32
32d92d2c 1594 "17gvryadlxk172mblbsil7hina1z5wahwaxnr6g3mdq57dvl8pvi"))))
bb3b71ce
SB
1595 (build-system gnu-build-system)
1596 (arguments
3f127147
TGR
1597 `(#:phases
1598 (modify-phases %standard-phases
1599 (delete 'configure) ; no configure script
1600 (delete 'check)) ; no tests
bb3b71ce 1601 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))))
151fa926 1602 (properties '((ftp-directory . "/freedink")))
6fd52309 1603 (home-page "https://www.gnu.org/software/freedink/")
bb3b71ce
SB
1604 (synopsis "Game data for GNU Freedink")
1605 (description
1606 "This package contains the game data of GNU Freedink.")
024e2c17 1607 (license license:gpl3+)))
bb3b71ce 1608
2926e950
KK
1609(define-public freedink-dfarc
1610 (package
1611 (name "freedink-dfarc")
1612 (version "3.14")
1613 (source (origin
1614 (method url-fetch)
1615 (uri (string-append "mirror://gnu/freedink/dfarc-"
1616 version ".tar.gz"))
1617 (sha256
1618 (base32
1619 "1yp8n3w426xnlp10xk06vfi2y3k9xrcfyck7s7qs1v0ys7n284d5"))))
1620 (build-system gnu-build-system)
1621 (native-inputs
1622 `(("intltool" ,intltool)))
1623 (inputs
1624 `(("bzip2" ,bzip2)
1625 ("wxwidgets" ,wxwidgets)))
8ca06df5
EF
1626 (properties '((ftp-directory . "/freedink")
1627 (upstream-name . "dfarc")))
2926e950
KK
1628 (home-page "https://www.gnu.org/software/freedink/")
1629 (synopsis "Front-end for managing and playing Dink Modules")
1630 (description "DFArc makes it easy to play and manage the GNU FreeDink game
1631and its numerous D-Mods.")
1632 (license license:gpl3+)))
bb3b71ce 1633
a6b55314
LC
1634(define-public freedink
1635 ;; This is a wrapper that tells the engine where to find the data.
1636 (package (inherit freedink-engine)
1637 (name "freedink")
1638 (build-system trivial-build-system)
1639 (arguments
1640 '(#:builder (begin
1641 (use-modules (guix build utils))
1642
1643 (let* ((output (assoc-ref %outputs "out"))
1644 (bin (string-append output "/bin"))
1645 (executable (string-append bin "/freedink")))
1646 (mkdir-p bin)
1647 (call-with-output-file executable
1648 (lambda (port)
1649 (format port "#!~a/bin/sh
1650exec ~a/bin/freedink -refdir ~a/share/dink\n"
1651 (assoc-ref %build-inputs "bash")
1652 (assoc-ref %build-inputs "engine")
1653 (assoc-ref %build-inputs "data"))
e3cfef22
MW
1654 (chmod port #o777)))
1655 #t))
a6b55314
LC
1656 #:modules ((guix build utils))))
1657 (inputs `(("engine" ,freedink-engine)
1658 ("data" ,freedink-data)
1659 ("bash" ,bash)))
1660 (native-inputs '())))
1661
ae9cb418
JD
1662(define-public xboard
1663 (package
1664 (name "xboard")
9835458f 1665 (version "4.9.1")
ae9cb418
JD
1666 (source
1667 (origin
1668 (method url-fetch)
1669 (uri (string-append "mirror://gnu/xboard/xboard-" version
1670 ".tar.gz"))
1671 (sha256
1672 (base32
9835458f 1673 "1mkh36xnnacnz9r00b5f9ld9309k32jv6mcavklbdnca8bl56bib"))))
ae9cb418 1674 (build-system gnu-build-system)
4e530049
SB
1675 (inputs
1676 `(("gtk+" ,gtk+-2)
1677 ("librsvg" ,librsvg)))
9835458f
EF
1678 (native-inputs
1679 `(("texinfo" ,texinfo)
1680 ("pkg-config" ,pkg-config)))
6fd52309 1681 (home-page "https://www.gnu.org/software/xboard/")
ae9cb418
JD
1682 (synopsis "Graphical user interface for chess programs")
1683 (description "GNU XBoard is a graphical board for all varieties of chess,
1684including international chess, xiangqi (Chinese chess), shogi (Japanese chess)
1685and Makruk. Several lesser-known variants are also supported. It presents a
1686fully interactive graphical interface and it can load and save games in the
1687Portable Game Notation.")
024e2c17 1688 (license license:gpl3+)))
11c38cbe 1689
a21b42e2
SB
1690(define-public gtypist
1691 (package
1692 (name "gtypist")
1693 (version "2.9.5")
1694 (source (origin
1695 (method url-fetch)
1696 (uri (string-append "mirror://gnu/gtypist/gtypist-"
1697 version ".tar.xz"))
1698 (sha256
1699 (base32
1700 "0xzrkkmj0b1dw3yr0m9hml2y634cc4h61im6zwcq57s7285z8fn1"))
1701 (modules '((guix build utils)))
1702 (snippet
1703 ;; We do not provide `ncurses.h' within an `ncursesw'
1704 ;; sub-directory, so patch the source accordingly. See
1705 ;; <http://bugs.gnu.org/19018>.
6cbee49d
MW
1706 '(begin
1707 (for-each (lambda (file)
1708 (substitute* file
1709 (("ncursesw/ncurses.h")
1710 "ncurses.h")))
1711 (find-files "." "configure$|\\.c$"))
1712 #t))))
a21b42e2
SB
1713 (build-system gnu-build-system)
1714 (inputs `(("ncurses" ,ncurses)
1715 ("perl" ,perl)))
6fd52309 1716 (home-page "https://www.gnu.org/software/gtypist/")
a21b42e2
SB
1717 (synopsis "Typing tutor")
1718 (description
1719 "GNU Typist is a universal typing tutor. It can be used to learn and
1720practice touch-typing. Several tutorials are included; in addition to
1721tutorials for the standard QWERTY layout, there are also tutorials for the
1722alternative layouts Dvorak and Colemak, as well as for the numpad. Tutorials
1723are primarily in English, however some in other languages are provided.")
024e2c17 1724 (license license:gpl3+)))
13d18626 1725
024e2c17
DT
1726(define-public irrlicht
1727 (package
1728 (name "irrlicht")
f90b2dbd 1729 (version "1.8.4")
024e2c17
DT
1730 (source (origin
1731 (method url-fetch)
1732 (uri (string-append
1733 "mirror://sourceforge/irrlicht/Irrlicht%20SDK/"
1734 (version-major+minor version)
1735 "/" version "/irrlicht-" version ".zip"))
1736 (sha256
1737 (base32
7b8a7536
EF
1738 "0cz4z4dwrv5ypl19ll67wl6jjpy5k6ly4vr042w4br88qq5jhazl"))
1739 (patches (search-patches "irrlicht-use-system-libs.patch"))
1740 (modules '((guix build utils)))
1741 (snippet
1742 '(begin
1743 (for-each delete-file-recursively
1744 '("bin" ; bundled compiled Windows binaries"
1745 "source/Irrlicht/MacOSX"
1746 "source/Irrlicht/bzip2"
1747 "source/Irrlicht/jpeglib"
1748 "source/Irrlicht/libpng"
1749 "source/Irrlicht/lzma"
1750 "source/Irrlicht/zlib"))
1751 (delete-file "source/Irrlicht/glext.h")
1752 (delete-file "source/Irrlicht/glxext.h")
1753 (delete-file "source/Irrlicht/wglext.h")
1754 #t))))
024e2c17
DT
1755 (build-system gnu-build-system)
1756 (arguments
3f127147
TGR
1757 `(#:phases
1758 (modify-phases %standard-phases
7b8a7536
EF
1759 (add-after 'unpack 'chdir-to-source
1760 (lambda _
1761 ;; The actual source is buried a few directories deep.
1762 (chdir "source/Irrlicht/")
1763 #t))
1764 (add-after 'chdir-to-source 'fix-build-env
3f127147
TGR
1765 (lambda* (#:key outputs #:allow-other-keys)
1766 (let ((out (assoc-ref outputs "out")))
1767 (substitute* "Makefile"
1768 (("INSTALL_DIR = /usr/local/lib")
7b8a7536
EF
1769 (string-append "INSTALL_DIR = " out "/lib"))
1770 ;; Add '-fpermissive' to the CXXFLAGS
1771 (("-Wall") "-Wall -fpermissive")) ; CImageLoaderJPG.cpp
3f127147
TGR
1772 ;; The Makefile assumes these directories exist.
1773 (mkdir-p (string-append out "/lib"))
1774 (mkdir-p (string-append out "/include")))))
3f127147
TGR
1775 (delete 'configure)) ; no configure script
1776 #:tests? #f ; no check target
024e2c17 1777 #:make-flags '("CC=gcc" "sharedlib")))
024e2c17 1778 (inputs
7b8a7536
EF
1779 `(("bzip2" ,bzip2)
1780 ("libjpeg" ,libjpeg)
1781 ("libpng" ,libpng)
1782 ("libx11" ,libx11)
1783 ("libxxf86vm" ,libxxf86vm)
1784 ("mesa" ,mesa)))
024e2c17
DT
1785 (synopsis "3D game engine written in C++")
1786 (description
1787 "The Irrlicht Engine is a high performance realtime 3D engine written in
1788C++. Features include an OpenGL renderer, extensible materials, scene graph
1789management, character animation, particle and other special effects, support
1790for common mesh file formats, and collision detection.")
1791 (home-page "http://irrlicht.sourceforge.net/")
1792 (license license:zlib)))
7e51e5bc 1793
c23c50c7
RW
1794(define-public mars
1795 ;; The latest release on SourceForge relies on an unreleased version of SFML
1796 ;; with a different API, so we take the latest version from the official
1797 ;; repository on Github.
698bd297 1798 (let ((commit "c855d044094a1d92317e38935d81ba938946132e")
c23c50c7
RW
1799 (revision "1"))
1800 (package
1801 (name "mars")
698bd297 1802 (version (string-append "0.7.5." revision "." (string-take commit 7) ))
c23c50c7
RW
1803 (source (origin
1804 (method git-fetch)
1805 (uri (git-reference
1806 (url "https://github.com/thelaui/M.A.R.S..git")
1807 (commit commit)))
00a82e83 1808 (file-name (git-file-name name version))
c23c50c7
RW
1809 (sha256
1810 (base32
1811 "1r4c5gap1z2zsv4yjd34qriqkxaq4lb4rykapyzkkdf4g36lc3nh"))
fc1adab1
AK
1812 (patches (search-patches "mars-sfml-2.3.patch"
1813 "mars-install.patch"))))
c23c50c7
RW
1814 (build-system cmake-build-system)
1815 (arguments
1816 `(#:tests? #f ; There are no tests
1817 #:phases
1818 (modify-phases %standard-phases
1819 (add-after 'unpack 'fix-install-path
1820 (lambda _
1821 (substitute* "src/CMakeLists.txt"
1822 (("\\$\\{CMAKE_INSTALL_PREFIX\\}/games")
1823 "${CMAKE_INSTALL_PREFIX}/bin"))
1824 #t))
1825 (add-after 'unpack 'fix-data-path
1826 (lambda* (#:key outputs #:allow-other-keys)
1827 (substitute* "src/System/settings.cpp"
1828 (("C_dataPath = \"./data/\";")
1829 (string-append "C_dataPath = \""
1830 (assoc-ref outputs "out")
1831 "/share/games/marsshooter/\";")))
1832 #t)))))
1833 (inputs
1834 `(("mesa" ,mesa)
1835 ("fribidi" ,fribidi)
1836 ("taglib" ,taglib)
1837 ("sfml" ,sfml)))
1838 (home-page "http://marsshooter.org")
1839 (synopsis "2D space shooter")
1840 (description
1841 "M.A.R.S. is a 2D space shooter with pretty visual effects and
1842attractive physics. Players can battle each other or computer controlled
1843enemies in different game modes such as space ball, death match, team death
1844match, cannon keep, and grave-itation pit.")
1845 (license license:gpl3+))))
1846
7e51e5bc
DT
1847(define minetest-data
1848 (package
1849 (name "minetest-data")
2557d366 1850 (version "5.1.0")
7e51e5bc 1851 (source (origin
7217d337
EF
1852 (method git-fetch)
1853 (uri (git-reference
1854 (url "https://github.com/minetest/minetest_game")
1855 (commit version)))
1856 (file-name (git-file-name name version))
7e51e5bc
DT
1857 (sha256
1858 (base32
2557d366 1859 "1r9fxz2j24q74a9injvbxbf2xk67fzabv616i676zw2cvgv9hn39"))))
7e51e5bc
DT
1860 (build-system trivial-build-system)
1861 (native-inputs
7217d337 1862 `(("source" ,source)))
7e51e5bc
DT
1863 (arguments
1864 `(#:modules ((guix build utils))
1865 #:builder (begin
1866 (use-modules (guix build utils))
7217d337 1867 (let ((install-dir (string-append
7e51e5bc 1868 %output
7217d337 1869 "/share/minetest/games/minetest_game")))
7e51e5bc 1870 (mkdir-p install-dir)
7217d337
EF
1871 (copy-recursively
1872 (assoc-ref %build-inputs "source")
1873 install-dir)
e3cfef22 1874 #t))))
7e51e5bc
DT
1875 (synopsis "Main game data for the Minetest game engine")
1876 (description
ab0c796b 1877 "Game data for the Minetest infinite-world block sandbox game.")
7e51e5bc
DT
1878 (home-page "http://minetest.net")
1879 (license license:lgpl2.1+)))
6e206ac7
DT
1880
1881(define-public minetest
1882 (package
1883 (name "minetest")
2557d366 1884 (version "5.1.0")
6e206ac7 1885 (source (origin
e8d8b485
EF
1886 (method git-fetch)
1887 (uri (git-reference
1fbd7c7f
MB
1888 (url "https://github.com/minetest/minetest")
1889 (commit version)))
e8d8b485 1890 (file-name (git-file-name name version))
6e206ac7
DT
1891 (sha256
1892 (base32
2557d366 1893 "184n9gxfa7yr0j85z2x736maaymsnppd5jzm326wlqri3c0qqy3z"))
7fc90282
EF
1894 (modules '((guix build utils)))
1895 (snippet
1fbd7c7f 1896 '(begin
d9580a26
MB
1897 ;; Mimic upstream commit 706b6aad06, for compatibility with
1898 ;; newer jsoncpp. Remove this for > 5.1.0.
1899 (substitute* "cmake/Modules/FindJson.cmake"
1900 (("features\\.h")
1901 "allocator.h"))
1902
1903 ;; Delete bundled libraries.
1904 (delete-file-recursively "lib")
1905 #t))))
6e206ac7
DT
1906 (build-system cmake-build-system)
1907 (arguments
10903356 1908 '(#:configure-flags
1fbd7c7f
MB
1909 (list "-DRUN_IN_PLACE=0"
1910 "-DENABLE_FREETYPE=1"
1911 "-DENABLE_GETTEXT=1"
1912 "-DENABLE_SYSTEM_JSONCPP=TRUE"
1913 (string-append "-DIRRLICHT_INCLUDE_DIR="
1914 (assoc-ref %build-inputs "irrlicht")
1915 "/include/irrlicht")
1916 (string-append "-DCURL_INCLUDE_DIR="
1917 (assoc-ref %build-inputs "curl")
1918 "/include/curl"))
1919 #:tests? #f)) ;no check target
6e206ac7
DT
1920 (native-search-paths
1921 (list (search-path-specification
1922 (variable "MINETEST_SUBGAME_PATH")
af070955 1923 (files '("share/minetest/games")))))
6e206ac7
DT
1924 (native-inputs
1925 `(("pkg-config" ,pkg-config)))
1926 (inputs
7fc90282 1927 `(("curl" ,curl)
8c064d01 1928 ("freetype" ,freetype)
7fc90282
EF
1929 ("gettext" ,gettext-minimal)
1930 ("gmp" ,gmp)
1931 ("irrlicht" ,irrlicht)
1932 ("jsoncpp" ,jsoncpp)
c463dd47 1933 ("libjpeg" ,libjpeg)
7fc90282 1934 ("libpng" ,libpng)
6e206ac7
DT
1935 ("libogg" ,libogg)
1936 ("libvorbis" ,libvorbis)
7fc90282 1937 ("libxxf86vm" ,libxxf86vm)
6e206ac7 1938 ("luajit" ,luajit)
7fc90282 1939 ("mesa" ,mesa)
165dc8bd 1940 ("ncurses" ,ncurses)
7fc90282 1941 ("openal" ,openal)
6e206ac7
DT
1942 ("sqlite" ,sqlite)))
1943 (propagated-inputs
1944 `(("minetest-data" ,minetest-data)))
1945 (synopsis "Infinite-world block sandbox game")
1946 (description
1947 "Minetest is a sandbox construction game. Players can create and destroy
1948various types of blocks in a three-dimensional open world. This allows
1949forming structures in every possible creation, on multiplayer servers or as a
1950single player. Mods and texture packs allow players to personalize the game
1951in different ways.")
1952 (home-page "http://minetest.net")
1953 (license license:lgpl2.1+)))
77264d15
SB
1954
1955(define glkterm
1956 (package
1957 (name "glkterm")
1958 (version "1.0.4")
1959 (source
1960 (origin
1961 (method url-fetch)
1962 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
1963 "glk/implementations/glkterm-104.tar.gz"))
1964 (sha256
1965 (base32
1966 "0zlj9nlnkdlvgbiliczinirqygiq8ikg5hzh5vgcmnpg9pvnwga7"))))
1967 (build-system gnu-build-system)
1968 (propagated-inputs `(("ncurses" ,ncurses))) ; required by Make.glkterm
1969 (arguments
1970 '(#:tests? #f ; no check target
1971 #:phases
3f127147
TGR
1972 (modify-phases %standard-phases
1973 (replace 'install
1974 (lambda* (#:key outputs #:allow-other-keys)
1975 (let* ((out (assoc-ref outputs "out"))
1976 (inc (string-append out "/include"))
1977 (lib (string-append out "/lib")))
3f127147
TGR
1978 (for-each
1979 (lambda (file)
1980 (install-file file inc))
1981 '("glk.h" "glkstart.h" "gi_blorb.h" "gi_dispa.h" "Make.glkterm"))
3f127147
TGR
1982 (install-file "libglkterm.a" lib))
1983 #t))
1984 (delete 'configure)))) ; no configure script
77264d15
SB
1985 (home-page "http://www.eblong.com/zarf/glk/")
1986 (synopsis "Curses Implementation of the Glk API")
1987 (description
1988 "Glk defines a portable API for applications with text UIs. It was
1989primarily designed for interactive fiction, but it should be suitable for many
1990interactive text utilities, particularly those based on a command line.
1991This is an implementation of the Glk library which runs in a terminal window,
dbe7095b 1992using the @code{curses.h} library for screen control.")
77264d15
SB
1993 (license (license:fsf-free "file://README"))))
1994
1995(define-public glulxe
1996 (package
1997 (name "glulxe")
b2e3d59c 1998 (version "0.5.4")
77264d15
SB
1999 (source
2000 (origin
2001 (method url-fetch)
2002 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
b2e3d59c 2003 "glulx/interpreters/glulxe/glulxe-054.tar.gz"))
77264d15
SB
2004 (sha256
2005 (base32
b2e3d59c 2006 "0vipydg6ra90yf9b3ipgppwxyb2xdhcxwvirgjy0v20wlf56zhhz"))))
77264d15
SB
2007 (build-system gnu-build-system)
2008 (inputs `(("glk" ,glkterm)))
2009 (arguments
3f127147 2010 '(#:tests? #f ; no check target
77264d15
SB
2011 #:make-flags
2012 (let* ((glk (assoc-ref %build-inputs "glk")))
2013 (list (string-append "GLKINCLUDEDIR=" glk "/include")
2014 (string-append "GLKLIBDIR=" glk "/lib")
2015 (string-append "GLKMAKEFILE=" "Make.glkterm")))
2016 #:phases
3f127147
TGR
2017 (modify-phases %standard-phases
2018 (replace 'install
2019 (lambda* (#:key outputs #:allow-other-keys)
2020 (let* ((out (assoc-ref outputs "out"))
2021 (bin (string-append out "/bin")))
3f127147
TGR
2022 (install-file "glulxe" bin))
2023 #t))
2024 (delete 'configure)))) ; no configure script
77264d15
SB
2025 (home-page "http://www.eblong.com/zarf/glulx/")
2026 (synopsis "Interpreter for Glulx VM")
2027 (description
2028 "Glulx is a 32-bit portable virtual machine intended for writing and
2029playing interactive fiction. It was designed by Andrew Plotkin to relieve
2030some of the restrictions in the venerable Z-machine format. This is the
92bdf777 2031reference interpreter, using the Glk API.")
b2e3d59c 2032 (license license:expat)))
72b703cd 2033
ce94fcfd
CB
2034(define-public fifechan
2035 (package
2036 (name "fifechan")
2037 (version "0.1.5")
2038 (source (origin
2039 (method url-fetch)
2040 (uri (string-append "https://codeload.github.com/fifengine/"
2041 "fifechan/tar.gz/" version))
2042 (file-name (string-append name "-" version ".tar.gz"))
2043 (sha256
2044 (base32
2045 "0wxs9vz5x9y8chghd8vp7vfk089lfb0qnzggi17zrqkrngs5zgi9"))))
2046 (build-system cmake-build-system)
2047 (inputs
2048 `(("sdl2" ,sdl2)
2049 ("sdl2-image" ,sdl2-image)
2050 ("mesa" ,mesa)))
2051 (arguments
2052 '(#:tests? #f)) ; No included tests
2053 (home-page "https://fifengine.github.io/fifechan/")
2054 (synopsis "Cross platform GUI library specifically for games")
2055 (description
2056 "Fifechan is a lightweight cross platform GUI library written in C++
2057specifically designed for games. It has a built in set of extendable GUI
2058Widgets, and allows users to create more.")
2059 (license license:lgpl2.1+)))
2060
2372a5f9
CB
2061(define-public fifengine
2062 (package
2063 (name "fifengine")
2064 (version "0.4.2")
2065 (source (origin
2066 (method url-fetch)
2067 (uri (string-append "https://codeload.github.com/fifengine/"
2068 "fifengine/tar.gz/" version))
2069 (file-name (string-append name "-" version ".tar.gz"))
2070 (sha256
2071 (base32
2072 "1y4grw25cq5iqlg05rnbyxw1njl11ypidnlsm3qy4sm3xxdvb0p8"))))
2073 (build-system cmake-build-system)
2074 (arguments
2075 `(#:tests? #f ; TODO The test running fails to run some tests.
2076 #:modules ((srfi srfi-1)
2077 (guix build cmake-build-system)
2078 (guix build utils))
2079 #:configure-flags
2080 (list
2081 (string-append "-DOPENALSOFT_INCLUDE_DIR="
2082 (assoc-ref %build-inputs "openal")
2083 "/include/AL")
2084 (string-append "-DPYTHON_SITE_PACKAGES="
2085 (assoc-ref %outputs "out")
2086 "/lib/python3.7/site-packages"))
2087 #:phases
2088 (modify-phases %standard-phases
2089 (add-after 'unpack 'patch-run_tests.py
2090 (lambda _
2091 ;; Patch the test runner to exit with a status of 1 if any test
2092 ;; fails, to allow detecting failures.
2093 (substitute* "run_tests.py"
2094 (("ERROR\\. One or more tests failed!'\\)")
2095 "ERROR. One or more tests failed!')
2096\t\texit(1)"))
2097 #t))
2098 ;; Run tests after installation so that we can make use of the built
2099 ;; python modules.
2100 (delete 'check)
2101 (add-after 'install 'check
2102 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
2103 (define python-version
2104 (let* ((version (last (string-split
2105 (assoc-ref inputs "python")
2106 #\-)))
2107 (components (string-split version #\.))
2108 (major+minor (take components 2)))
2109 (string-join major+minor ".")))
2110
2111 (when tests?
2112 ;; Set PYTHONPATH so that python finds the installed modules.
2113 (setenv "PYTHONPATH"
2114 (string-append (getenv "PYTHONPATH") ":"
2115 (assoc-ref outputs "out")
2116 "/lib/python"
2117 python-version
2118 "/site-packages"))
2119 ;; The tests require an X server.
2120 (system "Xvfb :1 &")
2121 (setenv "DISPLAY" ":1")
2122 (setenv "XDG_RUNTIME_DIR" "/tmp")
2123 ;; Run tests
2124 (chdir ,(string-append "../" name "-" version))
2125 (invoke "python3" "run_tests.py" "-a"))
2126 #t)))))
2127 (inputs
2128 `(("sdl2" ,sdl2)
2129 ("sdl2-image" ,sdl2-image)
2130 ("sdl2-ttf" ,sdl2-ttf)
2131 ("tinyxml" ,tinyxml)
2132 ("openal" ,openal)
2133 ("libogg" ,libogg)
2134 ("glew" ,glew)
2135 ("libvorbis" ,libvorbis)
2136 ("boost" ,boost)
2137 ("fifechan" ,fifechan)
2138 ("swig" ,swig)
2139 ("python" ,python)))
2140 (native-inputs
2141 `(("python" ,python)
2142 ("swig" ,swig)
2143 ("xvfb" ,xorg-server)))
2144 (propagated-inputs
2145 `(("python-future" ,python-future)))
2146 (home-page "https://www.fifengine.net/")
2147 (synopsis "FIFE is a multi-platform isometric game engine written in C++")
2148 (description
2149 "@acronym{FIFE, Flexible Isometric Free Engine} is a multi-platform
2150isometric game engine. Python bindings are included allowing users to create
2151games using Python as well as C++.")
2152 (license license:lgpl2.1+)))
2153
35481e8b
SB
2154(define-public fizmo
2155 (package
2156 (name "fizmo")
50e1d36c 2157 (version "0.8.5")
35481e8b
SB
2158 (source (origin
2159 (method url-fetch)
6ad191ba 2160 (uri (string-append "https://fizmo.spellbreaker.org/source/"
07178276 2161 "fizmo-" version ".tar.gz"))
35481e8b
SB
2162 (sha256
2163 (base32
50e1d36c 2164 "1amyc4n41jf08kxmdgkk30bzzx54miaxa97w28f417qwn8lrl98w"))))
35481e8b
SB
2165 (build-system gnu-build-system)
2166 (arguments
2167 '(#:configure-flags
2168 (let ((libjpeg (assoc-ref %build-inputs "libjpeg"))
2169 (ncurses (assoc-ref %build-inputs "ncurses")))
50e1d36c 2170 (list (string-append "--with-jpeg-includedir=" libjpeg "/include")))))
35481e8b
SB
2171 (native-inputs
2172 `(("pkg-config" ,pkg-config)))
2173 (inputs
32199e9a
KK
2174 `(("freetype" ,freetype)
2175 ("libjpeg" ,libjpeg)
35481e8b
SB
2176 ("libpng" ,libpng)
2177 ("libsndfile" ,libsndfile)
2178 ("libxml2" ,libxml2)
2179 ("ncurses" ,ncurses)
32199e9a 2180 ("sdl2" ,sdl2)))
6ad191ba 2181 (home-page "https://fizmo.spellbreaker.org/")
35481e8b
SB
2182 (synopsis "Z-machine interpreter")
2183 (description
2184 "Fizmo is a console-based Z-machine interpreter. It is used to play
e881752c 2185interactive fiction, also known as text adventures, which were implemented
35481e8b
SB
2186either by Infocom or created using the Inform compiler.")
2187 (license license:bsd-3)))
2188
fc936b65
DH
2189(define-public gnugo
2190 (package
2191 (name "gnugo")
2192 (version "3.8")
2193 (source (origin
2194 (method url-fetch)
2195 (uri (string-append "mirror://gnu/gnugo/gnugo-" version
2196 ".tar.gz"))
2197 (sha256
2198 (base32
2199 "0wkahvqpzq6lzl5r49a4sd4p52frdmphnqsfdv7gdp24bykdfs6s"))))
2200 (build-system gnu-build-system)
2201 (inputs `(("readline" ,readline)))
4cc78cb3 2202 (synopsis "Play the game of Go")
7c125ce0
AK
2203 (description
2204 "GNU Go is a program that plays the game of Go, in which players
2205place stones on a grid to form territory or capture other stones. While
2206it can be played directly from the terminal, rendered in ASCII characters,
2207it is also possible to play GNU Go with 3rd party graphical interfaces or
2208even in Emacs. It supports the standard game storage format (SGF, Smart
2209Game Format) and inter-process communication format (GMP, Go Modem
2210Protocol).")
6fd52309 2211 (home-page "https://www.gnu.org/software/gnugo/")
fc936b65 2212 (license license:gpl3+)))
67fa7a27
CAW
2213
2214(define-public extremetuxracer
2215 (package
2216 (name "extremetuxracer")
101460d4 2217 (version "0.7.5")
67fa7a27
CAW
2218 (source (origin
2219 (method url-fetch)
2220 (uri (string-append
966a543b 2221 "mirror://sourceforge/extremetuxracer/releases/"
67fa7a27
CAW
2222 version "/etr-" version ".tar.xz"))
2223 (sha256
2224 (base32
101460d4 2225 "1ly63316c07i0gyqqmyzsyvygsvygn0fpk3bnbg25fi6li99rlsg"))))
67fa7a27
CAW
2226 (build-system gnu-build-system)
2227 (native-inputs
2228 `(("pkg-config" ,pkg-config)))
2229 (inputs
b8a35cce
RW
2230 `(("glu" ,glu)
2231 ("sfml" ,sfml)))
5bc0ac96
TGR
2232 (synopsis "High-speed arctic racing game based on Tux Racer")
2233 ;; Snarfed straight from Debian.
67fa7a27
CAW
2234 (description "Extreme Tux Racer, or etracer as it is called for short, is
2235a simple OpenGL racing game featuring Tux, the Linux mascot. The goal of the
2236game is to slide down a snow- and ice-covered mountain as quickly as possible,
2237avoiding the trees and rocks that will slow you down.
2238
2239Collect herrings and other goodies while sliding down the hill, but avoid fish
2240bones.
2241
2242This game is based on the GPL version of the famous game TuxRacer.")
3b3b60d0 2243 (home-page "https://sourceforge.net/projects/extremetuxracer/")
67fa7a27 2244 (license license:gpl2+)))
7a4d0509 2245
1a0633e7
RW
2246(define-public supertuxkart
2247 (package
2248 (name "supertuxkart")
60af1822 2249 (version "1.0")
1a0633e7
RW
2250 (source
2251 (origin
2252 (method url-fetch)
2253 (uri (string-append "mirror://sourceforge/supertuxkart/SuperTuxKart/"
2254 version "/supertuxkart-" version "-src.tar.xz"))
2255 (sha256
2256 (base32
60af1822 2257 "106rlp99hq18b4q1kdri3pl06cc4v7iqfp1hp9k2f8751lzz923d"))
1a0633e7
RW
2258 (modules '((guix build utils)))
2259 (snippet
2260 ;; Delete bundled library sources
2261 '(begin
56a48582
PL
2262 ;; Supertuxkart uses modified versions of the Irrlicht engine
2263 ;; and the bullet library. The developers gave an explanation
2264 ;; here: http://forum.freegamedev.net/viewtopic.php?f=17&t=3906
2265 ;; FIXME: try to unbundle angelscript
1a0633e7
RW
2266 (for-each delete-file-recursively
2267 '("lib/zlib"
2268 "lib/libpng"
2269 "lib/jpeglib"
2270 "lib/glew"
56a48582
PL
2271 "lib/wiiuse"
2272 "lib/enet"))
1a0633e7
RW
2273 #t))))
2274 (build-system cmake-build-system)
2275 (arguments
2276 `(#:tests? #f ; no check target
2277 #:configure-flags
2278 (list "-DUSE_WIIUSE=0"
56a48582 2279 ;; Do not use the bundled zlib, glew and enet.
1a0633e7 2280 "-DNO_IRR_COMPILE_WITH_ZLIB_=TRUE"
56a48582
PL
2281 "-DUSE_SYSTEM_GLEW=TRUE"
2282 "-DUSE_SYSTEM_ENET=TRUE"
17c3f776
RH
2283 ;; FIXME: needs libopenglrecorder
2284 "-DBUILD_RECORDER=0"
1a0633e7 2285 ;; Irrlicht returns an integer instead of a boolean
56a48582 2286 "-DCMAKE_C_FLAGS=-fpermissive")))
1a0633e7
RW
2287 (inputs
2288 `(("glew" ,glew)
2289 ("zlib" ,zlib)
2290 ("openal" ,openal)
2291 ("libvorbis" ,libvorbis)
2292 ("freetype" ,freetype)
2293 ("fribidi" ,fribidi)
2294 ("mesa" ,mesa)
2295 ("libx11" ,libx11)
2296 ("libxrandr" ,libxrandr)
2297 ("curl" ,curl)
2298 ;; The following input is needed to build the bundled and modified
2299 ;; version of irrlicht.
60af1822 2300 ("libjpeg" ,libjpeg)
56a48582
PL
2301 ("openssl" ,openssl)
2302 ("enet" ,enet)))
1a0633e7
RW
2303 (native-inputs
2304 `(("pkg-config" ,pkg-config)))
5e9670bc 2305 (home-page "https://supertuxkart.net/")
1a0633e7
RW
2306 (synopsis "3D kart racing game")
2307 (description "SuperTuxKart is a 3D kart racing game, with a focus on
2308having fun over realism. You can play with up to 4 friends on one PC, racing
2309against each other or just trying to beat the computer; single-player mode is
2310also available.")
2311 (license license:gpl3+)))
2312
a1c1943b
CB
2313(define-public unknown-horizons
2314 (package
2315 (name "unknown-horizons")
2316 (version "2019.1")
2317 (source (origin
2318 (method url-fetch)
2319 (uri (string-append "https://codeload.github.com/unknown-horizons/"
2320 "unknown-horizons/tar.gz/" version))
2321 (file-name (string-append name "-" version ".tar.gz"))
2322 (sha256
2323 (base32
2324 "1n747p7h0qp48szgp262swg0xh8kxy1bw8ag1qczs4i26hyzs5x4"))))
2325 (build-system python-build-system)
2326 (arguments
2327 '(#:phases
2328 (modify-phases %standard-phases
2329 (add-before 'build 'set-HOME
2330 (lambda _
2331 (setenv "HOME" "/tmp")))
2332 (add-after 'build 'build-extra
2333 (lambda _
2334 (invoke "python3" "./setup.py" "build_i18n")
2335 (invoke "python3" "horizons/engine/generate_atlases.py" "2048")
2336 #t))
2337 (add-after 'install 'patch
2338 (lambda* (#:key outputs #:allow-other-keys)
2339 (let ((out (assoc-ref outputs "out")))
2340 (substitute* (string-append out "/bin/unknown-horizons")
2341 (("os\\.chdir\\(get\\_content\\_dir\\_parent_path\\(\\)\\)")
2342 (string-append "os.chdir(\""
2343 (assoc-ref outputs "out")
2344 "/share/unknown-horizons\")"))))
2345 #t))
2346 ;; TODO: Run GUI tests as well
2347 (replace 'check
2348 (lambda _
2349 (substitute* "horizons/constants.py"
2350 (("IS_DEV_VERSION = False")
2351 "IS_DEV_VERSION = True"))
2352 (invoke "pytest" "tests")
2353 (substitute* "horizons/constants.py"
2354 (("IS_DEV_VERSION = True")
2355 "IS_DEV_VERSION = False"))
2356 #t)))))
2357 (inputs
2358 `(("fifengine" ,fifengine)
2359 ("python:tk" ,python "tk")
2360 ("python-pillow" ,python-pillow)
2361 ("python-pyyaml" ,python-pyyaml)))
2362 (native-inputs
2363 `(("intltool" ,intltool)
2364
2365 ;; Required for tests
2366 ("python-greenlet" ,python-greenlet)
2367 ("python-polib" ,python-polib)
2368 ("python-pytest" ,python-pytest)
2369 ("python-pytest-mock" ,python-pytest-mock)))
2370 (home-page "http://unknown-horizons.org/")
2371 (synopsis "Isometric realtime strategy, economy and city building simulation")
2372 (description
2373 "Unknown Horizons is a 2D realtime strategy simulation with an emphasis
2374on economy and city building. Expand your small settlement to a strong and
2375wealthy colony, collect taxes and supply your inhabitants with valuable
2376goods. Increase your power with a well balanced economy and with strategic
2377trade and diplomacy.")
2378 (license (list
2379 license:gpl2+ ; Covers code
2380 license:expat ; tests/dummy.py, ext/polib.py
2381 license:cc-by-sa3.0 ; Covers some media content
2382 license:cc-by3.0 ; Covers some media content
2383 license:bsd-3)))) ; horizons/ext/speaklater.py
2384
7a4d0509
SB
2385(define-public gnujump
2386 (package
2387 (name "gnujump")
2388 (version "1.0.8")
2389 (source (origin
2390 (method url-fetch)
2391 (uri (string-append "mirror://gnu/gnujump/gnujump-"
2392 version ".tar.gz"))
2393 (sha256
2394 (base32
2395 "05syy9mzbyqcfnm0hrswlmhwlwx54f0l6zhcaq8c1c0f8dgzxhqk"))))
2396 (build-system gnu-build-system)
2397 (arguments
2398 '(#:phases
2399 (modify-phases %standard-phases
2400 (add-before
2401 'configure 'link-libm
18a613fb
EF
2402 (lambda _ (setenv "LIBS" "-lm")))
2403 (add-after 'install 'create-desktop-entry
2404 (lambda* (#:key outputs #:allow-other-keys)
2405 (let* ((out (assoc-ref outputs "out"))
2406 (apps (string-append out "/share/applications")))
2407 (mkdir-p apps)
2408 (with-output-to-file
2409 (string-append apps "/gnujump.desktop")
2410 (lambda _
2411 (format #t
2412 "[Desktop Entry]~@
2413 Name=GNUjump~@
2414 Comment=Jump up the tower to survive~@
2415 Exec=~a/bin/gnujump~@
2416 Terminal=false~@
2417 Type=Application~@
2418 Categories=Game;ArcadeGame~%"
2419 out)))))))))
7a4d0509
SB
2420 (inputs
2421 `(("glu" ,glu)
b3546174 2422 ("mesa" ,mesa)
7a4d0509
SB
2423 ("sdl" ,sdl)
2424 ("sdl-image" ,sdl-image)
2425 ("sdl-mixer" ,sdl-mixer)))
2426 (home-page "http://gnujump.es.gnu.org/")
2427 (synopsis
2428 "Game of jumping to the next floor, trying not to fall")
2429 (description
2430 "GNUjump is a simple, yet addictive game in which you must jump from
2431platform to platform to avoid falling, while the platforms drop at faster rates
2432the higher you go. The game features multiplayer, unlimited FPS, smooth floor
2433falling, themeable graphics and sounds, and replays.")
2434 (license license:gpl3+)))
159093a7 2435
649220ad 2436(define-public wesnoth
159093a7 2437 (package
649220ad 2438 (name "wesnoth")
03f0b5e2 2439 (version "1.14.9")
159093a7
SB
2440 (source (origin
2441 (method url-fetch)
de67e922 2442 (uri (string-append "mirror://sourceforge/wesnoth/wesnoth-"
0c2e055e
TGR
2443 (version-major+minor version)
2444 "/wesnoth-" version "/"
2445 "wesnoth-" version ".tar.bz2"))
159093a7
SB
2446 (sha256
2447 (base32
03f0b5e2 2448 "1mhdrlflxxyknf54lwdbvs7fazlc1scf7z6vxxa3j746fks533ga"))))
159093a7
SB
2449 (build-system cmake-build-system)
2450 (arguments
03f0b5e2
MB
2451 `(#:tests? #f ;no check target
2452 #:phases (modify-phases %standard-phases
2453 (add-before 'configure 'treat-boost-as-system-header
2454 (lambda* (#:key inputs #:allow-other-keys)
2455 (let ((boost (assoc-ref inputs "boost")))
2456 ;; Ensure Boost is treated as "system headers" to
2457 ;; pacify compiler warnings induced by Boost headers.
2458 (for-each (lambda (variable)
2459 (setenv variable
2460 (string-append boost "/include:"
2461 (or (getenv variable)
2462 ""))))
2463 '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"))
2464 #t))))))
159093a7 2465 (native-inputs
b94a6ca0 2466 `(("gettext" ,gettext-minimal)
159093a7
SB
2467 ("pkg-config" ,pkg-config)))
2468 (inputs
2469 `(("boost" ,boost)
2470 ("dbus" ,dbus)
2471 ("fribidi" ,fribidi)
2472 ("libvorbis" ,libvorbis)
e554d43d 2473 ("openssl" ,openssl)
159093a7 2474 ("pango" ,pango)
e554d43d
AI
2475 ("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
2476 (home-page "https://www.wesnoth.org/")
159093a7
SB
2477 (synopsis "Turn-based strategy game")
2478 (description
2479 "The Battle for Wesnoth is a fantasy, turn based tactical strategy game,
2480with several single player campaigns, and multiplayer games (both networked and
2481local).
2482
2483Battle for control on a range of maps, using variety of units which have
2484advantages and disadvantages against different types of attacks. Units gain
2485experience and advance levels, and are carried over from one scenario to the
2486next campaign.")
2487 (license license:gpl2+)))
c449a076 2488
649220ad
NG
2489(define-public the-battle-for-wesnoth
2490 (deprecated-package "the-battle-for-wesnoth" wesnoth))
375cb941 2491
649220ad 2492(define-public wesnoth-server
75abd864 2493 (package
649220ad
NG
2494 (inherit wesnoth)
2495 (name "wesnoth-server")
75abd864
AI
2496 (inputs
2497 `(("boost" ,boost)
e554d43d
AI
2498 ("icu4c" ,icu4c)
2499 ("openssl" ,openssl)
2500 ("sdl2" ,sdl2)))
75abd864 2501 (arguments
e554d43d
AI
2502 `(#:configure-flags '("-DENABLE_GAME=OFF")
2503 ,@(package-arguments wesnoth)))
75abd864
AI
2504 (synopsis "Dedicated @emph{Battle for Wesnoth} server")
2505 (description "This package contains a dedicated server for @emph{The
2506Battle for Wesnoth}.")))
2507
649220ad
NG
2508(define-public the-battle-for-wesnoth-server
2509 (deprecated-package "the-battle-for-wesnoth-server" wesnoth-server))
ecdb1348 2510
c449a076
EB
2511(define-public gamine
2512 (package
2513 (name "gamine")
87683add 2514 (version "1.6")
c449a076
EB
2515 (source (origin
2516 (method url-fetch)
2517 (uri (string-append "mirror://sourceforge/gamine-game/"
2518 "gamine-" version ".tar.gz"))
2519 (sha256
2520 (base32
87683add 2521 "1sc6f4445ciigd6yw0ri92746k4hk6ps0bvj9fm1gbp3c3fslk5n"))))
c449a076
EB
2522 (build-system gnu-build-system)
2523 (native-inputs
2524 `(("pkg-config" ,pkg-config)
2525 ("intltool" ,intltool)))
2526 (inputs
2527 `(("gstreamer" ,gstreamer)
87683add
TGR
2528 ("gst-plugins-base" ,gst-plugins-base) ; playbin plugin
2529 ("gst-plugins-good" ,gst-plugins-good) ; for wav playback
c449a076
EB
2530 ("gtk+" ,gtk+)))
2531 (arguments
2532 `(#:tests? #f
2533 #:make-flags
2534 (let ((out (assoc-ref %outputs "out")))
2535 (list (string-append "PREFIX=" out)
2536 (string-append "SYSCONFDIR=" out "/etc")))
2537 #:phases
2538 (modify-phases %standard-phases
2539 (delete 'configure)
2540 (add-after
2541 'install 'wrap-gamine
2542 (lambda* (#:key outputs #:allow-other-keys)
2543 (let ((out (assoc-ref outputs "out"))
2544 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
2545 (wrap-program (string-append out "/bin/gamine")
2546 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))))
2547 #t)))))
2548 (home-page "http://gamine-game.sourceforge.net/")
2549 (synopsis "Mouse and keyboard discovery for children")
2550 (description
2551 "Gamine is a game designed for young children who are learning to use the
2552mouse and keyboard. The child uses the mouse to draw colored dots and lines
2553on the screen and keyboard to display letters.")
2554 ;; Most files under gpl2+ or gpl3+, but eat.wav under gpl3
2555 (license license:gpl3)))
2556
2e2ed3cb
AK
2557(define-public manaplus
2558 (package
2559 (name "manaplus")
2b744c21 2560 (version "1.9.3.23")
2e2ed3cb
AK
2561 (source (origin
2562 (method url-fetch)
2563 (uri (string-append
074dd909 2564 "https://repo.manaplus.org/manaplus/download/"
2e2ed3cb
AK
2565 version "/manaplus-" version ".tar.xz"))
2566 (sha256
2567 (base32
2b744c21 2568 "1ky182p4svwdqm6cf7jbns85hidkhkhq4s17cs2p381f0klapfjz"))))
2e2ed3cb
AK
2569 (build-system gnu-build-system)
2570 (arguments
2571 '(#:configure-flags
2572 (list (string-append "CPPFLAGS=-I"
2573 (assoc-ref %build-inputs "sdl-union")
2574 "/include/SDL"))))
2575 (native-inputs
2576 `(("pkg-config" ,pkg-config)))
2577 (inputs
2578 `(("glu" ,glu)
2579 ("curl" ,curl)
2580 ("libxml2" ,libxml2)
2581 ("mesa" ,mesa)
2e2ed3cb 2582 ("sdl-union" ,(sdl-union))))
074dd909 2583 (home-page "https://manaplus.org")
2e2ed3cb
AK
2584 (synopsis "Client for 'The Mana World' and similar games")
2585 (description
2586 "ManaPlus is a 2D MMORPG client for game servers. It is the only
2587fully supported client for @uref{http://www.themanaworld.org, The mana
2588world}, @uref{http://evolonline.org, Evol Online} and
2589@uref{http://landoffire.org, Land of fire}.")
2590 ;; "src/debug/*" and "src/sdl2gfx/*" are under Zlib.
2591 ;; "data/themes/{golden-delicious,jewelry}/*" are under CC-BY-SA.
2592 ;; The rest is under GPL2+.
2593 (license (list license:gpl2+ license:zlib license:cc-by-sa4.0))))
03d521f9 2594
e9687748
AS
2595(define openttd-engine
2596 (package
2597 (name "openttd-engine")
532dba49 2598 (version "1.9.3")
e9687748
AS
2599 (source
2600 (origin (method url-fetch)
532dba49 2601 (uri (string-append "https://proxy.binaries.openttd.org/openttd-releases/"
e9687748
AS
2602 version "/openttd-" version "-source.tar.xz"))
2603 (sha256
2604 (base32
532dba49 2605 "0ijq72kgx997ggw40i5f4a3nf7y2g72z37l47i18yjvgbdzy320r"))
e9687748
AS
2606 (modules '((guix build utils)))
2607 (snippet
2608 ;; The DOS port contains proprietary software.
6cbee49d
MW
2609 '(begin
2610 (delete-file-recursively "os/dos")
2611 #t))))
e9687748
AS
2612 (build-system gnu-build-system)
2613 (arguments
2614 `(#:tests? #f ; no "check" target
2615 #:phases
2616 (modify-phases %standard-phases
2617 ;; The build process fails if the configure script is passed the
2618 ;; option "--enable-fast-install".
2619 (replace 'configure
857b2f53
AI
2620 (lambda* (#:key inputs outputs (configure-flags '())
2621 #:allow-other-keys)
e9687748
AS
2622 (let ((out (assoc-ref outputs "out"))
2623 (lzo (assoc-ref inputs "lzo")))
369a91d9
RW
2624 (apply invoke "./configure"
2625 (string-append "--prefix=" out)
2626 ;; Provide the "lzo" path.
2627 (string-append "--with-liblzo2="
2628 lzo "/lib/liblzo2.a")
2629 ;; Put the binary in 'bin' instead of 'games'.
2630 "--binary-dir=bin"
2631 configure-flags)))))))
e9687748
AS
2632 (native-inputs `(("pkg-config" ,pkg-config)))
2633 (inputs
3a48d055 2634 `(("allegro" ,allegro)
e9687748
AS
2635 ("fontconfig" ,fontconfig)
2636 ("freetype" ,freetype)
2637 ("icu4c" ,icu4c)
2638 ("libpng" ,libpng)
2639 ("lzo" ,lzo)
2640 ("sdl" ,sdl)
2641 ("xz" ,xz)
2642 ("zlib" ,zlib)))
4cb0b5bf 2643 (synopsis "Transportation economics simulator game")
e9687748
AS
2644 (description "OpenTTD is a game in which you transport goods and
2645passengers by land, water and air. It is a re-implementation of Transport
2646Tycoon Deluxe with many enhancements including multiplayer mode,
2647internationalization support, conditional orders and the ability to clone,
b81b8943
KK
2648autoreplace and autoupdate vehicles. This package only includes the game
2649engine. When you start it you will be prompted to download a graphics set.")
532dba49 2650 (home-page "https://www.openttd.org/")
e9687748
AS
2651 ;; This package is GPLv2, except for a few files located in
2652 ;; "src/3rdparty/" which are under the 3-clause BSD, LGPLv2.1+ and Zlib
2653 ;; licenses. In addition, this software contains an in-game downloader
2654 ;; from which the user may find non-functional data licensed under
2655 ;; different terms.
2656 (license (list license:bsd-3 license:gpl2 license:lgpl2.1+ license:zlib))))
2657
4df9495e
KK
2658(define openttd-opengfx
2659 (package
2660 (name "openttd-opengfx")
894fbb33 2661 (version "0.5.5")
4df9495e
KK
2662 (source
2663 (origin
2664 (method url-fetch)
2665 (uri (string-append "http://binaries.openttd.org/extra/opengfx/"
2666 version "/opengfx-" version "-source.tar.xz"))
2667 (sha256
2668 (base32
894fbb33 2669 "009fa1bdin1bk0ynzhzc30hzkmmwzmwkk6j591ax3f6w75l28n49"))))
4df9495e
KK
2670 (build-system gnu-build-system)
2671 (arguments
2672 '(#:make-flags (list "CC=gcc"
2673 (string-append "INSTALL_DIR="
2674 (assoc-ref %outputs "out")
857b2f53 2675 "/share/games/openttd/baseset/opengfx"))
4df9495e
KK
2676 #:phases
2677 (modify-phases %standard-phases
2678 (replace 'configure
2679 (lambda _
2680 ;; Make sure HOME is writable for GIMP.
2681 (setenv "HOME" (getcwd))
2682
2683 ;; Redirect stdout, not stderr, to /dev/null. This prevents
2684 ;; dos2unix from receiving its version information as a flag.
2685 (substitute* "Makefile"
2686 (("\\$\\(UNIX2DOS\\) -q --version 2>/dev/null")
2687 "$(UNIX2DOS) -q --version 1>/dev/null")))))
2688 ;; The check phase for this package only checks the md5sums of the built
2689 ;; GRF files against the md5sums of the release versions. Because we use
2690 ;; different software versions than upstream does, some of the md5sums
2691 ;; are different. However, the package is still reproducible, it's safe
2692 ;; to disable this test.
c0959cc9
AI
2693 #:tests? #f
2694 #:parallel-build? #f))
4df9495e
KK
2695 (native-inputs `(("dos2unix" ,dos2unix)
2696 ("gimp" ,gimp)
2697 ("grfcodec" ,grfcodec)
2698 ("nml" ,nml)
2699 ("python" ,python-2)))
2700 (home-page "http://dev.openttdcoop.org/projects/opengfx")
2701 (synopsis "Base graphics set for OpenTTD")
2702 (description
2703 "The OpenGFX projects is an implementation of the OpenTTD base grahics
2704set that aims to ensure the best possible out-of-the-box experience.
2705
2706OpenGFX provides you with...
2707@enumerate
2708@item All graphics you need to enjoy OpenTTD.
2709@item Uniquely drawn rail vehicles for every climate.
2710@item Completely snow-aware rivers.
2711@item Different river and sea water.
2712@item Snow-aware buoys.
2713@end enumerate")
2714 (license license:gpl2)))
2715
c17b0790
AI
2716(define openttd-opensfx
2717 (package
2718 (name "openttd-opensfx")
2719 (version "0.2.3")
2720 (source
2721 (origin
2722 (method url-fetch)
2723 (uri (string-append
2724 "https://binaries.openttd.org/extra/opensfx/"
2725 version "/opensfx-" version "-source.tar.gz"))
2726 (sha256
2727 (base32
2728 "03jxgp02ks31hmsdh4xh0xcpkb70ds8jakc9pfc1y9vdrdavh4p5"))))
2729 (build-system gnu-build-system)
2730 (native-inputs
2731 `(("catcodec" ,catcodec)
61506fe5 2732 ("python" ,python-2)))
c17b0790
AI
2733 (arguments
2734 `(#:make-flags
2735 (list (string-append "INSTALL_DIR=" %output
2736 "/share/games/openttd/baseset/opensfx"))
2737 #:phases
2738 (modify-phases %standard-phases
2739 (add-after 'unpack 'make-reproducible
2740 (lambda _
2741 ;; Remove the time dependency of the installed tarball by setting
2742 ;; the modification times if its members to 0.
2743 (substitute* "scripts/Makefile.def"
2744 (("-cf") " --mtime=@0 -cf"))
2745 #t))
2746 (delete 'configure))))
2747 (home-page "http://dev.openttdcoop.org/projects/opensfx")
2748 (synopsis "Base sounds for OpenTTD")
2749 (description "OpenSFX is a set of free base sounds for OpenTTD which make
2750it possible to play OpenTTD without requiring the proprietary sound files from
2751the original Transport Tycoon Deluxe.")
2752 (license license:cc-sampling-plus-1.0)))
2753
823e1218
AI
2754(define openttd-openmsx
2755 (package
2756 (name "openttd-openmsx")
2757 (version "0.3.1")
2758 (source
2759 (origin
2760 (method url-fetch)
2761 (uri (string-append
2762 "https://binaries.openttd.org/extra/openmsx/"
2763 version "/openmsx-" version "-source.tar.gz"))
2764 (sha256
2765 (base32
2766 "0nskq97a6fsv1v6d62zf3yb8whzhqnlh3lap3va3nzvj7csjgf7c"))))
2767 (build-system gnu-build-system)
2768 (native-inputs
61506fe5 2769 `(("python" ,python-2)))
823e1218
AI
2770 (arguments
2771 `(#:make-flags
2772 (list (string-append "INSTALL_DIR=" %output
2773 "/share/games/openttd/baseset"))
2774 #:phases
2775 (modify-phases %standard-phases
2776 (delete 'configure)
2777 (add-after 'install 'post-install
2778 ;; Rename openmsx-version to openmsx
2779 (lambda* (#:key outputs #:allow-other-keys)
2780 (let ((install-directory (string-append (assoc-ref outputs "out")
2781 "/share/games/openttd/baseset")))
2782 (rename-file (string-append install-directory "/openmsx-" ,version)
2783 (string-append install-directory "/openmsx"))
2784 #t))))))
2785 (home-page "http://dev.openttdcoop.org/projects/openmsx")
2786 (synopsis "Music set for OpenTTD")
2787 (description "OpenMSX is a music set for OpenTTD which makes it possible
2788to play OpenTTD without requiring the proprietary music from the original
2789Transport Tycoon Deluxe.")
2790 (license license:gpl2)))
2791
e9687748
AS
2792(define-public openttd
2793 (package
2794 (inherit openttd-engine)
ca508f1c
KK
2795 (name "openttd")
2796 (arguments
857b2f53
AI
2797 `(#:configure-flags
2798 (list (string-append "--with-midi=" (assoc-ref %build-inputs "timidity++")
2799 "/bin/timidity"))
2800 ,@(substitute-keyword-arguments (package-arguments openttd-engine)
2801 ((#:phases phases)
2802 `(modify-phases ,phases
2803 (add-after 'install 'install-data
2804 (lambda* (#:key inputs outputs #:allow-other-keys)
2805 (for-each
2806 (lambda (input)
2807 (copy-recursively (assoc-ref inputs input)
2808 (assoc-ref outputs "out")))
2809 (list "opengfx" "openmsx" "opensfx"))
2810 #t)))))))
2811 (inputs
2812 `(("timidity++" ,timidity++)
2813 ,@(package-inputs openttd-engine)))
ca508f1c
KK
2814 (native-inputs
2815 `(("opengfx" ,openttd-opengfx)
857b2f53
AI
2816 ("openmsx" ,openttd-openmsx)
2817 ("opensfx" ,openttd-opensfx)
ca508f1c 2818 ,@(package-native-inputs openttd-engine)))))
e9687748 2819
0c6ade0b
RH
2820(define openrct2-title-sequences
2821 (package
2822 (name "openrct2-title-sequences")
2823 (version "0.1.2")
2824 (source
2825 (origin
2826 (method url-fetch)
2827 (uri (string-append "https://github.com/OpenRCT2/title-sequences/releases/download/v"
2828 version "/title-sequence-v" version ".zip"))
2829 (file-name (string-append name "-" version ".zip"))
2830 (sha256
2831 (base32
2832 "0qbyxrsw8hlgaq0r5d7lx7an3idy4qbfv7yiw9byhldk763n9cfw"))))
2833 (build-system trivial-build-system)
2834 (native-inputs
2835 `(("bash" ,bash)
2836 ("coreutils" ,coreutils)
2837 ("unzip" ,unzip)))
2838 (arguments
2839 `(#:modules ((guix build utils))
2840 #:builder
2841 (begin
2842 (use-modules (guix build utils))
2843 (let* ((out (assoc-ref %outputs "out"))
2844 (openrct2-title-sequences (string-append out
2845 "/share/openrct2/title-sequences"))
2846 (source (assoc-ref %build-inputs "source"))
2847 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
2848 (copy-file source (string-append ,name "-" ,version ".zip"))
2849 (invoke unzip (string-append ,name "-" ,version ".zip"))
2850 (delete-file (string-append ,name "-" ,version ".zip"))
2851 (mkdir-p openrct2-title-sequences)
2852 (copy-recursively "."
2853 openrct2-title-sequences)
2854 #t))))
2855 (home-page "https://github.com/OpenRCT2/OpenRCT2")
2856 (synopsis "Title sequences for OpenRCT2")
2857 (description
2858 "openrct2-title-sequences is a set of title sequences for OpenRCT2.")
2859 (license license:gpl3+)))
2860
2861(define openrct2-objects
2862 (package
2863 (name "openrct2-objects")
924e6993 2864 (version "1.0.9")
0c6ade0b
RH
2865 (source
2866 (origin
2867 (method url-fetch)
2868 (uri (string-append "https://github.com/OpenRCT2/objects/releases/download/v"
2869 version "/objects.zip"))
2870 (file-name (string-append name "-" version ".zip"))
2871 (sha256
924e6993 2872 (base32 "02apb8h553m7d6jvysgb1zahvxc1yzyygfca2iclb21b3fhpsas4"))))
0c6ade0b
RH
2873 (build-system trivial-build-system)
2874 (native-inputs
2875 `(("bash" ,bash)
2876 ("coreutils" ,coreutils)
2877 ("unzip" ,unzip)))
2878 (arguments
2879 `(#:modules ((guix build utils))
2880 #:builder
2881 (begin
2882 (use-modules (guix build utils))
2883 (let* ((out (assoc-ref %outputs "out"))
2884 (openrct2-objects (string-append out
2885 "/share/openrct2/objects"))
2886 (source (assoc-ref %build-inputs "source"))
2887 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
2888 (copy-file source (string-append ,name "-" ,version ".zip"))
2889 (invoke unzip (string-append ,name "-" ,version ".zip"))
2890 (delete-file (string-append ,name "-" ,version ".zip"))
2891 (mkdir-p openrct2-objects)
2892 (copy-recursively "."
2893 openrct2-objects)
2894 #t))))
2895 (home-page "https://github.com/OpenRCT2/OpenRCT2")
2896 (synopsis "Objects for OpenRCT2")
2897 (description
2898 "openrct2-objects is a set of objects for OpenRCT2.")
2899 (license license:gpl3+)))
2900
7aafb3b3
RH
2901(define-public openrct2
2902 (package
2903 (name "openrct2")
b6909d47 2904 (version "0.2.4")
7aafb3b3
RH
2905 (source
2906 (origin
2e5a0690
TGR
2907 (method git-fetch)
2908 (uri (git-reference
2909 (url "https://github.com/OpenRCT2/OpenRCT2.git")
2910 (commit (string-append "v" version))))
2911 (file-name (git-file-name name version))
7aafb3b3 2912 (sha256
b6909d47 2913 (base32 "1rlw3w20llg36sj3bk50g661qw766ng8ma3p42sdkj8br9dw800h"))))
7aafb3b3
RH
2914 (build-system cmake-build-system)
2915 (arguments
940c2c5c
RH
2916 `(#:configure-flags (list "-DDOWNLOAD_OBJECTS=OFF"
2917 "-DDOWNLOAD_TITLE_SEQUENCES=OFF")
6457509c 2918 #:tests? #f ; tests require network access
7aafb3b3 2919 #:phases
6457509c
TGR
2920 (modify-phases %standard-phases
2921 (add-after 'unpack 'fix-usr-share-paths&add-data
2922 (lambda* (#:key inputs outputs #:allow-other-keys)
2923 (let ((titles (assoc-ref inputs "openrct2-title-sequences"))
2924 (objects (assoc-ref inputs "openrct2-objects")))
2925 ;; Fix some references to /usr/share.
2926 (substitute* "src/openrct2/platform/Platform.Linux.cpp"
2927 (("/usr/share")
2928 (string-append (assoc-ref %outputs "out") "/share")))
2929 (copy-recursively
2930 (string-append titles "/share/openrct2/title-sequences")
2931 "data/title")
2932 (copy-recursively
2933 (string-append objects "/share/openrct2/objects")
2934 "data/object"))))
8c14f7f8 2935 (add-before 'configure 'get-rid-of-errors
6457509c
TGR
2936 (lambda _
2937 ;; Don't treat warnings as errors.
2938 (substitute* "CMakeLists.txt"
8c14f7f8
MB
2939 (("-Werror") ""))
2940 #t)))))
c695fb76
TGR
2941 (inputs `(("curl" ,curl)
2942 ("fontconfig" ,fontconfig)
2943 ("freetype" ,freetype)
0c6ade0b 2944 ("icu4c" ,icu4c)
c695fb76
TGR
2945 ("jansson" ,jansson)
2946 ("libpng" ,libpng)
2947 ("libzip" ,libzip)
2948 ("mesa" ,mesa)
0c6ade0b
RH
2949 ("openrct2-objects" ,openrct2-objects)
2950 ("openrct2-title-sequences" ,openrct2-title-sequences)
c695fb76
TGR
2951 ("openssl" ,openssl)
2952 ("sdl2" ,sdl2)
2953 ("speexdsp" ,speexdsp)
2954 ("zlib" ,zlib)))
7aafb3b3 2955 (native-inputs
63d4ef52 2956 `(("pkg-config" ,pkg-config)))
7aafb3b3
RH
2957 (home-page "https://github.com/OpenRCT2/OpenRCT2")
2958 (synopsis "Free software re-implementation of RollerCoaster Tycoon 2")
2959 (description "OpenRCT2 is a free software re-implementation of
2960RollerCoaster Tycoon 2 (RCT2). The gameplay revolves around building and
2961maintaining an amusement park containing attractions, shops and facilities.
2962
2963Note that this package does @emph{not} provide the game assets (sounds,
2964images, etc.)")
2965 ;; See <https://github.com/OpenRCT2/OpenRCT2/wiki/Required-RCT2-files>
2966 ;; regarding assets.
2967 (license license:gpl3+)))
2968
e3f755f4
EB
2969(define-public pinball
2970 (package
2971 (name "pinball")
2972 (version "0.3.1")
2973 (source
2974 (origin (method url-fetch)
2975 (uri (string-append "mirror://sourceforge/pinball/pinball/"
2976 "pinball-" version "/"
2977 "pinball-" version ".tar.gz"))
2978 (sha256
2979 (base32
2980 "1f2whlrfidwfh8lvr8cspcyirc6840r5d1ajm7x99qmngygrhixs"))
fc1adab1
AK
2981 (patches (search-patches "pinball-const-fix.patch"
2982 "pinball-cstddef.patch"
2983 "pinball-missing-separators.patch"
2984 "pinball-src-deps.patch"
2985 "pinball-system-ltdl.patch"))))
e3f755f4
EB
2986 (build-system gnu-build-system)
2987 (inputs
2988 `(("glu" ,glu)
2989 ("mesa" ,mesa)
2990 ("sdl" ,sdl)
2991 ("sdl-image" ,sdl-image)
2992 ("sdl-mixer" ,sdl-mixer)))
2993 (arguments
2994 '(#:configure-flags
2995 (list (string-append "CPPFLAGS=-I"
2996 (assoc-ref %build-inputs "sdl-image")
2997 "/include/SDL -I"
2998 (assoc-ref %build-inputs "sdl-mixer")
2999 "/include/SDL"))))
3000 (home-page "http://pinball.sourceforge.net")
3001 (synopsis "Pinball simulator")
3002 (description "The Emilia Pinball Project is a pinball simulator. There
3003are only two levels to play with, but they are very addictive.")
3004 (license license:gpl2)))
7e2e1155
RF
3005
3006(define-public pioneers
3007 (package
3008 (name "pioneers")
59e8a57d 3009 (version "15.5")
7e2e1155
RF
3010 (source (origin
3011 (method url-fetch)
3012 (uri (string-append "http://downloads.sourceforge.net/pio/"
3013 "pioneers-" version ".tar.gz"))
3014 (sha256
3015 (base32
59e8a57d 3016 "037gdiiw690jw3wd1s9lxmkqx0caxyk0b4drpm7i9p28gig43q9y"))))
7e2e1155 3017 (build-system gnu-build-system)
59e8a57d
TGR
3018 (inputs `(("avahi" ,avahi)
3019 ("gtk+" ,gtk+)
3020 ("librsvg" ,librsvg)))
7e2e1155 3021 (native-inputs `(("intltool" ,intltool)
59e8a57d
TGR
3022 ("itstool" ,itstool)
3023 ("libxml2" ,libxml2)
7e2e1155
RF
3024 ("pkg-config" ,pkg-config)))
3025 (synopsis "Board game inspired by The Settlers of Catan")
3026 (description "Pioneers is an emulation of the board game The Settlers of
3027Catan. It can be played on a local network, on the internet, and with AI
3028players.")
3029 (home-page "http://pio.sourceforge.net/")
8763fdf8 3030 (license license:gpl2+)))
fea1f275 3031
d7c4619b
AE
3032(define-public einstein
3033 (package
3034 (name "einstein")
3035 (version "2.0")
3036 (source (origin
3037 (method url-fetch)
d4cf5b01 3038 (uri (string-append "mirror://debian/pool/main/e/"
d7c4619b
AE
3039 "einstein/einstein_2.0.dfsg.2.orig.tar.gz"))
3040 (sha256
3041 (base32
3042 "1hxrlv6n8py48j487i6wbb4n4vd55w0na69r7ccmmr9vmrsw5mlk"))
fc1adab1 3043 (patches (search-patches "einstein-build.patch"))))
d7c4619b
AE
3044 (build-system gnu-build-system)
3045 (inputs
3046 `(("freetype" ,freetype)
3047 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf)))
3048 ("zlib" ,zlib)))
3049 (native-inputs
3050 `(("font-dejavu" ,font-dejavu)))
3051 (arguments
3052 `(#:tests? #f ; no check target
3053 #:phases
3054 (modify-phases %standard-phases
3055 (replace 'configure
3056 (lambda* (#:key outputs inputs #:allow-other-keys)
3057 (let ((out (assoc-ref outputs "out"))
3058 (dejavu (string-append (assoc-ref inputs "font-dejavu")
3059 "/share/fonts/truetype/DejaVuSans.ttf")))
3060 (substitute* "Makefile"
3061 (("PREFIX=/usr/local") (string-append "PREFIX=" out)))
3062 ;; The patch above registers a free font for use by the binary,
3063 ;; but the font is copied during the compile phase into a
3064 ;; resources file, so we need to make the ttf file available.
3065 (symlink dejavu "res/DejaVuSans.ttf")
3066 #t))))))
3067 (synopsis "Logic puzzle game")
3068 (description "The goal of this logic game is to open all cards in a 6x6
3069grid, using a number of hints as to their relative position. The game idea
3070is attributed to Albert Einstein.")
3071 ;; The original home page has disappeared.
3072 (home-page (string-append "http://web.archive.org/web/20120521062745/"
3073 "http://games.flowix.com/en/index.html"))
3074 ;; License according to
3075 ;; http://web.archive.org/web/20150222180355/http://www.babichev.info/en/projects/index.html
3076 ;; The source code is a DFSG-sanitized tarball and does not contain any
3077 ;; license information.
3078 (license license:gpl3+)))
3079
d381962f 3080(define-public powwow
3081 (package
3082 (name "powwow")
90d37add 3083 (version "1.2.19")
d381962f 3084 (source (origin
3085 (method url-fetch)
3086 (uri (string-append
cc30a472 3087 "https://www.hoopajoo.net/static/projects/powwow-"
d381962f 3088 version ".tar.gz"))
d381962f 3089 (sha256
3090 (base32
90d37add 3091 "10rjl63hmf62qslyhzqrbw3i2zf09dgxv65avhj0iiz0m4pbc9wy"))))
d381962f 3092 (inputs
3093 `(("ncurses" ,ncurses)))
3094 (build-system gnu-build-system)
36aff81a 3095 (home-page "https://www.hoopajoo.net/projects/powwow.html")
d381962f 3096 (synopsis "MUD and telnet client")
3097 (description
3098 "POWWOW is a client software which can be used for telnet as well as for
3099@dfn{Multi-User Dungeon} (MUD). Additionally it can serve as a nice client for
3100the chat server psyced with the specific config located at
3101http://lavachat.symlynx.com/unix/")
3102 (license license:gpl2+)))
158f5734 3103
5ef819cc 3104(define-public red-eclipse
49c97ea4
KK
3105 (let ((release "1.6.0")
3106 (revision 0)
42abb842 3107 (data-sources
631b20f9
TGR
3108 '(("acerspyro" "12b0bngl7hlxw4iwdbn99jp081yl6z1ic0s788nm349drbr2pck8")
3109 ("actors" "0x7qqx67679q6ark9zz02skwhzgabid69kwi6zmhfpfgicn4927r")
3110 ("appleflap" "08xslwqfqz3j4m03pv5ry2gdzj5k2ns51z8n6sln3sa94i9x8qkm")
3111 ("blendbrush" "18zf5i2ax4p14x4c9nhk9fq6l1xgbxw62gm72vx59vbfdpjrw3cg")
3112 ("caustics" "172fxwx7kbz5nmbjq98kr52ips505wb99fibgnpg8cj02syrya8k")
3113 ("crosshairs" "14w8ysqzdsx9bzpfbl700jzngbh14rdghhjdf6zd6jlkvrl6754r")
3114 ("dziq" "056imqszvp90j7cgz52ly0f31px64gsrmvm9k2c78ldbx87jnhc3")
3115 ("elyvisions" "1bsgr0gr7njydj8fqclh0a27lrsyic3xfd5a4vwggw7g54azpgk2")
3116 ("fonts" "00ibisza1qci0ghf2rynyf28l6r3nqhfzjf80k6gg76q4v7p1myx")
3117 ("freezurbern" "07l9ldk9b82f12c13wcg5xxdf15bw0yjxk3vvk8v3ygrl2mwksyr")
3118 ("john" "1jdmwkrdi5b9pivkm22rxhmkk1db9dx6l54wzcc23cvdz04ij93k")
3119 ("jojo" "0f7kjy43fbk9kw8fip6bbw4gn3pryh0fndlahjfkaysrx98krdj3")
3120 ("jwin" "0nc8dndnpqk2ad6316a8k6kgzsrkpwvk8s4gyh7aqfi4axfclril")
3121 ("luckystrike" "04jiipqahphmvz5cd74dygr62dlvv6l4iglb8hzh4pp8frhls8bq")
3122 ("maps" "0an46ipjvw4h0nxvb6qvnzp1cdkzlkiinqz4zh9lmxy1ds0gclim")
3123 ("mayhem" "15k10imm2wr6c6fq35n4r99k7kz7n9zdnjlw6dmdq6fba67i6sbc")
3124 ("mikeplus64" "0v4wiiivm3829j4phlavy22n4c6k6ib9ixxpdz7r6ysg5cdkaw33")
3125 ("misc" "13rfgwrlfhflz6inbkg3fypyf8im0m49sw112b17qrw2zgp8i1rz")
3126 ("nieb" "0z0h9jdn2gkkjil3vsvwidb1p2k09pi5n3wjxza12hhvqmcs7q8f")
3127 ("nobiax" "08bfp4q6gbfis18bp1h4d0hqssk79jc4fhyjxnv21dbam4v4mnkn")
3128 ("particles" "1vsx3fgg19xggxfhz3vlrh6nqhmw7kl9kmxrvb2j84blp00vd6z2")
3129 ("philipk" "14irscg80607i5k5l2ci0n9nwibvda2f3xsykgv96d0vldrp5n5a")
3130 ("projectiles" "09bnfsrywirwgjm6d7ff5nicx6w6b7w9568x9pb5q0ncaps3l85s")
3131 ("props" "1dlabbprlkif8af3daf9nbgcwgxiymvj0yiphqhlri8ylfy2vpz4")
3132 ("skyboxes" "14bi3md5y47cvb9ybipdvksz40gqsqw2r0lh3zzqb4acq367w18y")
3133 ("snipergoth" "0m8rvvy5n8n9pm0b5cqvzsxsw51mqk8m7s1h3qc849b38isliwq2")
3134 ("sounds" "0ivf3w5bphz5pzzx6kwcb67vbly1l19cgv3s0cyp8n87afiqj5rd")
3135 ("textures" "0qdmgx7zbcqnb9rrga2izr93p5inirczhddfxs504rsnv0v8vyxm")
3136 ("torley" "05ppyhghq859cbbxzj3dnl9fcx3ghy04ds1pylypwg2hsxzbjwcd")
3137 ("trak" "0g3vq86q91a3syli38lwc8ca4ychfwsmmqf85kqzfzyd627ybclm")
3138 ("ulukai" "0asa5fz400impklcg6dy2f7jiaqfc1sn1c36fpg8jd01gw66lw93")
3139 ("unnamed" "0rz5683j7sfwkcycfypbv4b0ihp0qwn9rzskfsabwc1s5g324917")
3140 ("vanities" "13f18783rc8cjf22p61zr8m5g1migzlx05fzl8xnbjdkqq4cdyix")
3141 ("vegetation" "1y5d97nfmvax7y4fr0y5v0c8zb1ajkqwx76kjd4qc9n4spdsi5sc")
3142 ("weapons" "103g1dhxv5ffz4ddg2xcbshbgv9606chsbas3pzk6h9ybqsyjrqh")
3143 ("wicked" "1884rk34a2dj83gz82rc4zh3ch0dyj5221hvsr0a5h60578i7yj6"))))
158f5734 3144 (package
5b8a8543 3145 (name "red-eclipse")
42abb842
AFN
3146 (version (if (zero? revision)
3147 release
3148 (string-append release "-"
3149 (number->string revision))))
bb7c071b
TGR
3150 (source
3151 (origin
3152 (method git-fetch)
3153 (uri (git-reference
3154 (url "https://github.com/red-eclipse/base.git")
3155 (commit (string-append "v" release))))
3156 (file-name (git-file-name name version))
3157 (sha256
3158 (base32 "0qy9kmq21wc4bdhwifasxc5dv1y5c53sn7dfmyc5y3zyz8wjyij4"))
3159 (patches
3160 (search-patches "red-eclipse-remove-gamma-name-hack.patch"))))
158f5734
KY
3161 (build-system gnu-build-system)
3162 (arguments
3163 `(#:tests? #f ; no check target
3164 #:make-flags (list "CC=gcc" "-Csrc"
3165 (string-append "INSTDIR="
42abb842
AFN
3166 (assoc-ref %outputs "out") "/bin")
3167 (string-append "prefix="
3168 (assoc-ref %outputs "out")))
158f5734
KY
3169 #:phases
3170 (modify-phases %standard-phases
3171 (add-after 'unpack 'unpack-data
3172 (lambda* (#:key inputs #:allow-other-keys)
3173 (delete-file-recursively "data")
3174 (mkdir "data")
631b20f9
TGR
3175 (with-directory-excursion "data"
3176 (for-each (lambda (name)
3177 (copy-recursively (assoc-ref inputs name) name))
3178 (list ,@(map car data-sources))))
158f5734 3179 #t))
49c97ea4 3180 (add-after 'unpack-data 'add-store-data-package-path-as-default
42abb842
AFN
3181 (lambda* (#:key outputs #:allow-other-keys)
3182 (substitute* "src/engine/server.cpp"
49c97ea4
KK
3183 (("(else[[:space:]]*)((addpackagedir\\()\"data\"(\\);))"
3184 _
3185 else_part
3186 addpackagedir_original
3187 addpackagedir_open
3188 addpackagedir_close)
42abb842
AFN
3189 (string-append else_part
3190 "{ "
3191 addpackagedir_open
3192 "\""
3193 (assoc-ref outputs "out")
3194 "/share/redeclipse/data\""
3195 addpackagedir_close
3196 " "
3197 addpackagedir_original
3198 " }")))
3199 #t))
158f5734
KY
3200 (delete 'configure) ; no configure script
3201 (add-after 'set-paths 'set-sdl-paths
3202 (lambda* (#:key inputs #:allow-other-keys)
3203 (setenv "CPATH"
3204 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
3205 "/include/SDL2:"
3206 (or (getenv "CPATH") "")))
158f5734
KY
3207 #t))
3208 (add-after 'install 'copy-data
3209 (lambda* (#:key outputs #:allow-other-keys)
3210 (let ((out (assoc-ref outputs "out")))
3211 (copy-recursively "config"
3212 (string-append out "/config"))
66c65aaf
KK
3213 (copy-file "doc/examples/servinit.cfg"
3214 (string-append out "/config/servinit.cfg"))
158f5734 3215 (copy-recursively "data"
42abb842
AFN
3216 (string-append out "/share/redeclipse/data"))
3217 (mkdir-p (string-append out "/lib/redeclipse"))
49c97ea4
KK
3218 (symlink (string-append out "/share/redeclipse/data")
3219 (string-append out "/lib/redeclipse/data")))
158f5734
KY
3220 #t))
3221 (add-after 'copy-data 'wrap-program
3222 (lambda* (#:key inputs outputs #:allow-other-keys)
3223 (let* ((out (assoc-ref outputs "out"))
3224 (bin (string-append out "/bin")))
3225 (with-directory-excursion bin
3226 (rename-file "redeclipse_linux"
3227 ".redeclipse_linux-real")
3228 (rename-file "redeclipse_server_linux"
3229 ".redeclipse_server_linux-real")
3230 (call-with-output-file "redeclipse_linux"
3231 (lambda (port)
3232 (format port "#!~a/bin/sh
3233# Run the thing from its home, otherwise it just bails out.
3234cd \"~a\"
3235exec -a \"$0\" ~a/.redeclipse_linux-real~%"
3236 (assoc-ref inputs "bash") ;implicit input
3237 (string-append out)
3238 (string-append bin))))
3239 (call-with-output-file "redeclipse_server_linux"
3240 (lambda (port)
3241 (format port "#!~a/bin/sh
3242# Run the thing from its home, otherwise it just bails out.
3243cd \"~a\"
3244exec -a \"$0\" ~a/.redeclipse_server_linux-real~%"
3245 (assoc-ref inputs "bash") ;implicit input
3246 (string-append out)
3247 (string-append bin))))
3248 (chmod "redeclipse_linux" #o555)
3249 (chmod "redeclipse_server_linux" #o555)))
3250 #t)))))
631b20f9
TGR
3251 (native-inputs
3252 `(("pkg-config" ,pkg-config)))
158f5734
KY
3253 (inputs
3254 `(("curl" ,curl)
3255 ("glu" ,glu)
14b865dc
KK
3256 ("sdl-union" ,(sdl-union (list sdl2
3257 sdl2-image
3258 sdl2-mixer)))
158f5734
KY
3259 ;; Create origin records for the many separate data packages.
3260 ,@(map (match-lambda
3261 ((name hash)
3262 (list name
3263 (origin
631b20f9
TGR
3264 (method git-fetch)
3265 (uri
3266 (git-reference
3267 (url (string-append "https://github.com/"
3268 "red-eclipse/" name ".git"))
3269 (commit (string-append "v" release))))
158f5734 3270 (sha256 (base32 hash))
631b20f9 3271 (file-name (git-file-name name version))))))
158f5734
KY
3272 data-sources)))
3273 (home-page "http://redeclipse.net/")
3274 (synopsis "Arena shooter derived from the Cube 2 engine")
3275 (description
3276 "Red Eclipse is an arena shooter, created from the Cube2 engine.
3277Offering an innovative parkour system and distinct but all potent weapons,
3278Red Eclipse provides fast paced and accessible gameplay.")
3279 ;; The engine is under Zlib; data files are covered by the other
3280 ;; licenses. More details at <http://redeclipse.net/wiki/License>.
3281 (license (list license:expat
3282 license:zlib
3283 license:cc-by-sa3.0
3284 license:cc-by3.0
3285 license:cc0)))))
bcd2982f 3286
0fb9a15b
LC
3287(define-public grue-hunter
3288 (package
3289 (name "grue-hunter")
3290 (version "1.0")
3291 (source (origin
3292 (method url-fetch)
c41b2ffb 3293 (uri (string-append "https://jxself.org/grue-hunter.tar.gz"))
0fb9a15b
LC
3294 (sha256
3295 (base32
3296 "1hjcpy5439qs3v2zykis7hsi0i17zjs62gks3zd8mnfw9ni4i2h3"))))
3297 (build-system trivial-build-system) ; no Makefile.PL
3298 (arguments `(#:modules ((guix build utils))
3299 #:builder
3300 (begin
3301 (use-modules (guix build utils))
3302 (use-modules (srfi srfi-1))
3303
3304 (let* ((tarball (assoc-ref %build-inputs "tarball"))
3305 (perl (string-append (assoc-ref %build-inputs
3306 "perl")
3307 "/bin"))
5edf2f05 3308 (gzip (string-append (assoc-ref %build-inputs
0fb9a15b 3309 "gzip")
5edf2f05 3310 "/bin/gzip"))
0fb9a15b
LC
3311 (tar (string-append (assoc-ref %build-inputs
3312 "tar")
3313 "/bin/tar"))
3314 (out (assoc-ref %outputs "out"))
3315 (bin (string-append out "/bin"))
6d57723a
TGR
3316 (doc (string-append out
3317 "/share/doc/grue-hunter")))
e3cfef22
MW
3318 (copy-file tarball "grue-hunter.tar.gz")
3319 (invoke gzip "-d" "grue-hunter.tar.gz")
3320 (invoke tar "xvf" "grue-hunter.tar")
0fb9a15b 3321
e3cfef22
MW
3322 (mkdir-p bin)
3323 (copy-file "grue-hunter/gh.pl"
3324 (string-append bin "/grue-hunter"))
3325 (patch-shebang (string-append bin "/grue-hunter")
3326 (list perl))
3327
3328 (install-file "grue-hunter/AGPLv3.txt" doc)
0fb9a15b 3329
e3cfef22 3330 #t))))
0fb9a15b
LC
3331 (inputs `(("perl" ,perl)
3332 ("tar" ,tar)
3333 ("gzip" ,gzip)
3334 ("tarball" ,source)))
3335 (home-page "http://jxself.org/grue-hunter.shtml")
3336 (synopsis "Text adventure game")
3337 (description
3338 "Grue Hunter is a text adventure game written in Perl. You must make
3339your way through an underground cave system in search of the Grue. Can you
3340capture it and get out alive?")
3341 (license license:agpl3+)))
f317aeb4 3342
ffed9eab
MB
3343(define-public lierolibre
3344 (package
3345 (name "lierolibre")
3346 (version "0.5")
3347 (source (origin
3348 (method url-fetch)
3349 (uri (string-append "https://launchpad.net/lierolibre/trunk/"
3350 version "/+download/lierolibre-"
3351 version ".tar.xz"))
3352 (sha256
3353 (base32
3354 "1cf1gvsn4qq190lrf9k5bpjnqwlcfw7pajvdnh7z5r4jqw0rsbl9"))
3355 (patches
3356 (search-patches "lierolibre-check-unaligned-access.patch"
3357 "lierolibre-try-building-other-arch.patch"
3358 "lierolibre-remove-arch-warning.patch"
3359 "lierolibre-newer-libconfig.patch"
3360 "lierolibre-is-free-software.patch"))
3361 (modules '((guix build utils)))
3362 (snippet
3363 '(begin
3364 ;; Delete pre-compiled files.
3365 (delete-file "data/LIERO.CHR")
3366 (delete-file "data/LIERO.SND")
3367 #t))))
3368 (build-system gnu-build-system)
3369 (native-inputs
3370 `(("imagemagick" ,imagemagick)
3371 ("pkg-config" ,pkg-config)
3372 ("util-linux" ,util-linux)
3373 ("sox" ,sox)))
3374 (inputs
3375 `(("boost" ,boost)
3376 ("libconfig" ,libconfig)
3377 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
3378 ("zlib" ,zlib)))
3379 (home-page "https://gitlab.com/lierolibre/lierolibre")
3380 (synopsis "Old-school earthworm action game")
3381 (description
3382 "lierolibre is an earthworm action game where you fight another player
3383(or the computer) underground using a wide array of weapons.
3384
3385Features:
3386@itemize
3387@item 2 worms, 40 weapons, great playability, two game modes: Kill'em All
3388and Game of Tag, plus AI-players without true intelligence!
3389@item Dat nostalgia.
3390@item Extensions via a hidden F1 menu:
3391@itemize
3392@item Replays
3393@item Game controller support
3394@item Powerlevel palettes
3395@end itemize
3396@item Ability to write game variables to plain text files.
3397@item Ability to load game variables from both EXE and plain text files.
3398@item Scripts to extract and repack graphics, sounds and levels.
3399@end itemize
3400
3401To switch between different window sizes, use F6, F7 and F8, to switch to
3402fullscreen, use F5 or Alt+Enter.")
3403 ;; Code mainly BSD-2, some parts under Boost 1.0. All assets are WTFPL2.
3404 (license (list license:bsd-2 license:boost1.0 license:wtfpl2))))
3405
f317aeb4
KK
3406(define-public warzone2100
3407 (package
3408 (name "warzone2100")
f475b90c 3409 (version "3.2.3")
d8f4aefe
TGR
3410 (source
3411 (origin
3412 (method url-fetch)
3413 (uri (string-append "mirror://sourceforge/warzone2100/archives/"
3414 "unsupported/Warzone2100-"
3415 (version-major+minor version) "/" version
3416 "/warzone2100-" version ".tar.xz"))
3417 (sha256
3418 (base32 "10kmpr4cby95zwqsl1zwx95d9achli6khq7flv6xmrq30a39xazw"))))
f317aeb4
KK
3419 (build-system gnu-build-system)
3420 (arguments
f475b90c
KK
3421 `(#:configure-flags '("--with-distributor=Guix")
3422 #:phases
c5d17d50
RW
3423 (modify-phases %standard-phases
3424 (add-after 'unpack 'link-tests-with-qt
3425 (lambda _
3426 (substitute* "tests/Makefile.in"
3427 (("(framework_linktest_LDADD|maptest_LDADD) = " prefix)
3428 (string-append prefix "$(QT5_LIBS) ")))
3429 #t))
f475b90c 3430 (add-after 'unpack 'fix-ivis-linktest
77c729ba 3431 (lambda _
f475b90c
KK
3432 (substitute* "tests/ivis_linktest.cpp"
3433 (("iV_DrawTextRotated.*;")
3434 (string-append "iV_DrawTextRotated(\"Press ESC to exit.\", "
3435 "100, 100, 0.0f, font_regular);")))
c5d17d50 3436 #t)))))
f475b90c
KK
3437 (native-inputs `(("gettext" ,gettext-minimal)
3438 ("pkg-config" ,pkg-config)
f317aeb4
KK
3439 ("unzip" ,unzip)
3440 ("zip" ,zip)))
3441 (inputs `(("fontconfig" ,fontconfig)
3442 ("freetype" ,freetype)
3443 ("fribidi" ,fribidi)
3444 ("glew" ,glew)
f475b90c 3445 ("harfbuzz" ,harfbuzz)
f317aeb4
KK
3446 ("libtheora" ,libtheora)
3447 ("libvorbis" ,libvorbis)
3448 ("libxrandr" ,libxrandr)
3449 ("openal" ,openal)
3450 ("physfs" ,physfs)
77c729ba
RW
3451 ("qtbase" ,qtbase)
3452 ("qtscript" ,qtscript)
c5d17d50 3453 ("openssl" ,openssl)
c5d17d50 3454 ("sdl2" ,sdl2)))
f317aeb4
KK
3455 (home-page "http://wz2100.net")
3456 (synopsis "3D Real-time strategy and real-time tactics game")
3457 (description
3458 "Warzone 2100 offers campaign, multi-player, and single-player skirmish
3459modes. An extensive tech tree with over 400 different technologies, combined
3460with the unit design system, allows for a wide variety of possible units and
3461tactics.")
3462 ; Everything is GPLv2+ unless otherwise specified in COPYING.NONGPL
3463 (license (list license:bsd-3
3464 license:cc0
3465 license:cc-by-sa3.0
3466 license:expat
3467 license:gpl2+
3468 license:lgpl2.1+))))
4b670539 3469
649220ad 3470(define-public starfighter
4b670539 3471 (package
649220ad 3472 (name "starfighter")
8172ab2d 3473 (version "2.0.0.3")
4b670539 3474 (source (origin
8172ab2d
KK
3475 (method url-fetch)
3476 (uri (string-append
3477 "https://github.com/pr-starfighter/starfighter/releases"
3478 "/download/v" version "/starfighter-"
3479 (version-major+minor version) "-src.tar.gz"))
4b670539
SB
3480 (sha256
3481 (base32
8172ab2d 3482 "13vi5kh9ahws4f52421cbyw0jn7pmbnld358lqfmr6flql7ilj3b"))))
4b670539 3483 (build-system gnu-build-system)
4b670539 3484 (native-inputs
8172ab2d 3485 `(("pkg-config" ,pkg-config)))
4b670539 3486 (inputs
1fe84f5d
KK
3487 `(("pango" ,pango)
3488 ("sdl2" ,sdl2)
4b670539 3489 ("sdl2-image" ,sdl2-image)
1fe84f5d
KK
3490 ("sdl2-mixer" ,sdl2-mixer)
3491 ("sdl2-ttf" ,sdl2-ttf)))
3492 (home-page "https://pr-starfighter.github.io/")
4b670539
SB
3493 (synopsis "2D scrolling shooter game")
3494 (description
3495 "In the year 2579, the intergalactic weapons corporation, WEAPCO, has
3496dominated the galaxy. Guide Chris Bainfield and his friend Sid Wilson on
3497their quest to liberate the galaxy from the clutches of WEAPCO. Along the
3498way, you will encounter new foes, make new allies, and assist local rebels
3499in strikes against the evil corporation.")
3500 ;; gfx and music are under CC-BY 3.0, CC-BY-SA 3.0, CC0 or Public Domain.
3501 (license (list license:gpl3+
3502 license:cc-by3.0
3503 license:cc-by-sa3.0
3504 license:cc0
3505 license:public-domain))))
35e2e495 3506
649220ad
NG
3507(define-public project-starfighter
3508 (deprecated-package "project-starfighter" starfighter))
184f5c8d 3509
35e2e495
KK
3510(define-public chromium-bsu
3511 (package
3512 (name "chromium-bsu")
08722837 3513 (version "0.9.16.1")
35e2e495
KK
3514 (source (origin
3515 (method url-fetch)
e464bd60 3516 (uri (string-append "mirror://sourceforge/chromium-bsu"
35e2e495 3517 "/Chromium B.S.U. source code/"
e464bd60 3518 "chromium-bsu-" version ".tar.gz"))
35e2e495
KK
3519 (sha256
3520 (base32
08722837 3521 "0jk2w5b6s6nkzri585bbz16cif2fhqcnl5l1mq3rd98r9nil3hd1"))))
35e2e495 3522 (build-system gnu-build-system)
35e2e495 3523 (native-inputs `(("pkg-config" ,pkg-config)))
7c90d0f4 3524 (inputs `(("gettext" ,gettext-minimal)
08722837 3525 ("glu" ,glu)
35e2e495
KK
3526 ("quesoglc" ,quesoglc)
3527 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))))
3528 (home-page "http://chromium-bsu.sourceforge.net/")
3529 (synopsis "Fast-paced, arcade-style, top-scrolling space shooter")
3530 (description
3531 "In this game you are the captain of the cargo ship Chromium B.S.U. and
3532are responsible for delivering supplies to the troops on the front line. Your
3533ship has a small fleet of robotic fighters which you control from the relative
3534safety of the Chromium vessel.")
3535 ;; Clarified Artistic License for everything but sound, which is covered
3536 ;; by the Expat License.
3537 (license (list license:clarified-artistic license:expat))))
9b1ada4e
EB
3538
3539(define-public tuxpaint
3540 (package
3541 (name "tuxpaint")
c6aa2ee2 3542 (version "0.9.23") ;keep VER_DATE below in sync
9b1ada4e
EB
3543 (source
3544 (origin
3545 (method url-fetch)
3546 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint/"
3547 version "/tuxpaint-" version ".tar.gz"))
3548 (sha256
3549 (base32
c6aa2ee2 3550 "09k9pxi88r3dx6dyjwf9h85d4qpva4i29qz63dc558hg9v21k69l"))
9b1ada4e
EB
3551 (modules '((guix build utils)))
3552 (snippet
3553 '(begin
3554 ;; Remove win32 directory which contains binary dll's and the
3555 ;; deprecated visualc directory.
3556 (for-each delete-file-recursively '("win32" "visualc"))
3557 (substitute* "Makefile"
3558 ;; Do not rely on $(GPERF) being an absolute file name
3559 (("\\[ -x \\$\\(GPERF\\) \\]")
6cbee49d
MW
3560 "$(GPERF) --version >/dev/null 2>&1"))
3561 #t))
9b1ada4e
EB
3562 (patches (search-patches "tuxpaint-stamps-path.patch"))))
3563 (build-system gnu-build-system)
3564 (native-inputs
3565 `(("gperf" ,gperf)
3566 ("pkg-config" ,pkg-config)))
3567 (inputs
3568 `(("cairo" ,cairo)
3569 ("fribidi" ,fribidi)
b94a6ca0 3570 ("gettext" ,gettext-minimal)
9b1ada4e
EB
3571 ("libpng" ,libpng)
3572 ("librsvg" ,librsvg)
3573 ("libpaper" ,libpaper)
3574 ("netpbm" ,netpbm)
3575 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf sdl-image)))))
3576 ;; TODO: Use system fonts rather than those in data/fonts
3577 (arguments
c6aa2ee2 3578 `(#:make-flags `("VER_DATE=2018-09-02"
9b1ada4e
EB
3579 "GPERF=gperf" "CC=gcc"
3580 "SDL_PCNAME=sdl SDL_image SDL_mixer SDL_ttf"
3581 ,(string-append "PREFIX=" %output)
f88c0ab8
EB
3582 "KDE_PREFIX=$(PREFIX)/share/applications"
3583 "KDE_ICON_PREFIX=$(PREFIX)/share/icons/"
9b1ada4e 3584 "COMPLETIONDIR=$(PREFIX)/etc/bash_completion.d")
72529642 3585 #:parallel-build? #f ;fails on some systems
9b1ada4e
EB
3586 #:tests? #f ;No tests
3587 #:phases (modify-phases %standard-phases
3588 (delete 'configure) ;no configure phase
f88c0ab8
EB
3589 (add-before 'install 'no-sys-cache
3590 (lambda _ ;do not rebuild system conf cache
3591 (substitute* "Makefile"
3592 (("kbuildsycoca4") ""))
3593 #t))
9b1ada4e
EB
3594 (add-after 'install 'fix-import
3595 (lambda* (#:key inputs outputs #:allow-other-keys)
3596 (let* ((out (assoc-ref outputs "out"))
3597 (net (assoc-ref inputs "netpbm"))
3598 (tpi (string-append out "/bin/tuxpaint-import")))
3599 (substitute* tpi
3600 ;; Point to installation prefix so that the default
3601 ;; configure file is found.
3602 (("/usr/local") out))
3603 ;; tuxpaint-import uses a bunch of programs from
3604 ;; netpbm, so make sure it knows where those are
3605 (wrap-program tpi
3606 `("PATH" ":" prefix
3607 (,(string-append net "/bin"))))))))))
3608 (native-search-paths
3609 (list (search-path-specification
3610 (variable "TUXPAINT_STAMPS_PATH")
3611 (files '("share/tuxpaint/stamps")))))
3612 (home-page "http://www.tuxpaint.org")
3613 (synopsis "Drawing software for children")
3614 (description
3615 "Tux Paint is a free drawing program designed for young children (kids
3616ages 3 and up). It has a simple, easy-to-use interface; fun sound effects;
3617and an encouraging cartoon mascot who helps guide children as they use the
3618program. It provides a blank canvas and a variety of drawing tools to help
3619your child be creative.")
3620 (license license:gpl2+)))
c3d850f2
EB
3621
3622(define-public tuxpaint-stamps
3623 (package
3624 (name "tuxpaint-stamps")
6ade82c2 3625 (version "2018.09.01")
c3d850f2
EB
3626 (source
3627 (origin
3628 (method url-fetch)
3629 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-stamps/"
3630 (string-map (λ (x) (if (eq? x #\.) #\- x)) version)
3631 "/tuxpaint-stamps-" version ".tar.gz"))
3632 (sha256
3633 (base32
6ade82c2 3634 "1skr23k27yj3vgwfazpzxp90lb2a278gxrkr3bxw7az6zpkmb3yp"))))
c3d850f2
EB
3635 (build-system trivial-build-system)
3636 (native-inputs
3637 `(("tar" ,tar)
3638 ("gzip" ,gzip)))
3639 (arguments
3640 `(#:modules ((guix build utils))
3641 #:builder (begin
3642 (use-modules (guix build utils))
3643 (setenv "PATH"
3644 (string-append
3645 (assoc-ref %build-inputs "tar") "/bin" ":"
3646 (assoc-ref %build-inputs "gzip") "/bin"))
e3cfef22 3647 (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
c3d850f2
EB
3648 (chdir (string-append ,name "-" ,version))
3649 (let ((dir (string-append %output "/share/tuxpaint/stamps")))
3650 (mkdir-p dir)
e3cfef22
MW
3651 (copy-recursively "stamps" dir))
3652 #t)))
c3d850f2
EB
3653 (home-page (package-home-page tuxpaint))
3654 (synopsis "Stamp images for Tux Paint")
3655 (description
3656 "This package contains a set of \"Rubber Stamp\" images which can be used
3657with the \"Stamp\" tool within Tux Paint.")
3658 (license license:gpl2+)))
d2563973
EB
3659
3660(define-public tuxpaint-config
3661 (package
3662 (name "tuxpaint-config")
7b05e957 3663 (version "0.0.14") ;keep VER_DATE below in sync
d2563973
EB
3664 (source
3665 (origin
3666 (method url-fetch)
3667 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-config/"
3668 version "/tuxpaint-config-" version ".tar.gz"))
3669 (sha256
3670 (base32
7b05e957 3671 "0zkgxk436nqcp43zghkfmh397c7dvh5bwn2as7gwvv208bzyij6g"))))
d2563973
EB
3672 (build-system gnu-build-system)
3673 (native-inputs
b94a6ca0 3674 `(("gettext" ,gettext-minimal)))
d2563973
EB
3675 (inputs
3676 `(("fltk" ,fltk)
3677 ("libpaper" ,libpaper)
3678 ;; TODO: Should the following be propagated by fltk?
3679 ("libx11" ,libx11)
3680 ("libxft" ,libxft)
3681 ("mesa" ,mesa)))
3682 (arguments
7b05e957 3683 `(#:make-flags `("VER_DATE=2018-09-01"
d2563973
EB
3684 "CONFDIR=/etc/tuxpaint" ;don't write to store
3685 ,(string-append "PREFIX=" %output)
3686 "GNOME_PREFIX=$(PREFIX)")
5895ca7b 3687 #:parallel-build? #f ;race conditions
d2563973
EB
3688 #:tests? #f ;no tests
3689 #:phases (modify-phases %standard-phases
3690 (delete 'configure) ;no configure phase
3691 (add-before 'install 'gzip-no-name
3692 (lambda* _
3693 (substitute* "Makefile"
3694 ;; tuxpaint-config compresses its own documentation;
3695 ;; make sure it uses flags for reproducibility.
3696 (("gzip") "gzip --no-name"))))
3697 (add-before 'install 'make-install-dirs
3698 (lambda* (#:key outputs #:allow-other-keys)
3699 (let ((out (assoc-ref outputs "out")))
3700 (mkdir-p (string-append out "/bin"))
3701 #t))))))
3702 (home-page (package-home-page tuxpaint))
3703 (synopsis "Configure Tux Paint")
3704 (description
3705 "Tux Paint Config is a graphical configuration editor for Tux Paint.")
3706 (license license:gpl2))) ;no "or later" present
826a3ca2 3707
3708(define-public supertux
3709 (package
3710 (name "supertux")
8698d986 3711 (version "0.6.0")
826a3ca2 3712 (source (origin
3713 (method url-fetch)
d910d584
RW
3714 (uri (string-append "https://github.com/SuperTux/supertux/"
3715 "releases/download/v" version "/SuperTux-v"
3716 version "-Source.tar.gz"))
8698d986 3717 (file-name (string-append name "-" version ".tar.gz"))
826a3ca2 3718 (sha256
3719 (base32
8698d986
KK
3720 "1h1s4abirkdv4ag22zvyk6zkk64skqbjmcnnba67ps4hdzxfbhy4"))
3721 (patches
57d87f43 3722 (search-patches "supertux-unbundle-squirrel.patch"))))
d910d584
RW
3723 (arguments
3724 '(#:tests? #f
3725 #:configure-flags '("-DINSTALL_SUBDIR_BIN=bin"
8698d986
KK
3726 "-DUSE_SYSTEM_PHYSFS=ON")
3727 #:phases
3728 (modify-phases %standard-phases
3729 (add-after 'unpack 'patch-squirrel-path
3730 (lambda* (#:key inputs #:allow-other-keys)
3731 (let ((squirrel (assoc-ref inputs "squirrel")))
3732 (substitute* "CMakeLists.txt"
3733 (("set\\(SQUIRREL_PREFIX.*")
3734 (string-append "set(SQUIRREL_PREFIX " squirrel ")"))
3735 (("add_dependencies\\(supertux2_lib squirrel\\)") "")
3736 (("\\$\\{SQUIRREL_PREFIX\\}/include")
3737 (string-append "${SQUIRREL_PREFIX}/include/squirrel"))))
3738 #t)))))
826a3ca2 3739 (build-system cmake-build-system)
3740 (inputs `(("sdl2" ,sdl2)
3741 ("sdl2-image" ,sdl2-image)
3742 ("sdl2-mixer" ,sdl2-mixer)
3743 ("openal" ,openal)
3744 ("mesa" ,mesa)
3745 ("glew" ,glew)
3746 ("libvorbis" ,libvorbis)
3747 ("libogg" ,libogg)
3748 ("physfs" ,physfs)
3749 ("curl" ,curl)
8698d986
KK
3750 ("boost" ,boost)
3751 ("freetype" ,freetype)
3752 ("squirrel" ,squirrel)))
826a3ca2 3753 (native-inputs `(("pkg-config" ,pkg-config)))
3754 (synopsis "2D platformer game")
3755 (description "SuperTux is a free classic 2D jump'n run sidescroller game
3756in a style similar to the original Super Mario games covered under
3757the GNU GPL.")
cac6c3ba 3758 (home-page "https://supertux.org/")
826a3ca2 3759 (license license:gpl3+)))
b3de5ff2 3760
751c7040 3761(define-public tintin++
3762 (package
3763 (name "tintin++")
fffe4870
TGR
3764 (version "2.01.7")
3765 (source
3766 (origin
3767 (method url-fetch)
3768 (uri (string-append "mirror://sourceforge/tintin/TinTin++ Source Code/"
3769 (version-major+minor version)
3770 "/tintin-" version ".tar.gz"))
3771 (sha256
3772 (base32
3773 "033n84pyxml3n3gd4dq0497n9w331bnrr1gppwipz9ashmq8jz7v"))))
751c7040 3774 (inputs
3775 `(("gnutls" ,gnutls)
3776 ("pcre" ,pcre)
3777 ("readline" ,readline)
3778 ("zlib" ,zlib)))
3779 (arguments
fffe4870 3780 '(#:tests? #f ; no test suite
751c7040 3781 #:phases
3782 (modify-phases %standard-phases
3783 ;; The source is in tt/src.
3784 (add-before 'configure 'chdir
3785 (lambda _
3786 (chdir "src")
3787 #t)))))
3788 (build-system gnu-build-system)
3789 (home-page "http://tintin.sourceforge.net/")
3790 (synopsis "MUD client")
3791 (description
5b9c2690
KK
3792 "TinTin++ is a MUD client which supports MCCP (Mud Client Compression
3793Protocol), MMCP (Mud Master Chat Protocol), xterm 256 colors, most TELNET
3794options used by MUDs, as well as those required to login via telnet on
3795Linux / Mac OS X servers, and an auto mapper with a VT100 map display.")
751c7040 3796 (license license:gpl2+)))
3797
b3de5ff2
JN
3798(define-public laby
3799 (package
3800 (name "laby")
3801 (version "0.6.4")
3802 (source
6484b091
EF
3803 (origin (method git-fetch)
3804 (uri (git-reference
3805 (url "https://github.com/sgimenez/laby.git")
3806 (commit (string-append name "-" version))))
3807 (file-name (git-file-name name version))
b3de5ff2
JN
3808 (sha256
3809 (base32
6484b091 3810 "12fq9hhrxpzgfinmj9ra9ckss9yficwdlrmgjvvsq7agvh3sgyl1"))
b3de5ff2
JN
3811 (patches (search-patches "laby-make-install.patch"))))
3812 (build-system gnu-build-system)
3813 (inputs
3814 `(("lablgtk" ,lablgtk)
3815 ("ocaml" ,ocaml)
a8f52ad7
TGR
3816 ("ocaml-findlib" ,ocaml-findlib)
3817 ("ocamlbuild" ,ocamlbuild)))
b3de5ff2
JN
3818 (arguments
3819 '(#:phases
3820 (modify-phases %standard-phases
3821 (delete 'configure)
a8f52ad7
TGR
3822 (add-before 'build 'allow-unsafe-strings
3823 ;; Fix a build failure with ocaml >=4.06.0.
3824 ;; See <https://github.com/sgimenez/laby/issues/53>.
3825 (lambda _
3826 (setenv "OCAMLPARAM" "safe-string=0,_")
3827 #t))
3828 (add-before 'build 'set-library-path
b3de5ff2
JN
3829 (lambda* (#:key inputs #:allow-other-keys)
3830 (let ((lablgtk (assoc-ref inputs "lablgtk")))
3831 (setenv "LD_LIBRARY_PATH"
3832 (string-append lablgtk "/lib/ocaml/stublibs"))))))
3833 #:tests? #f ; no 'check' target
3834 #:make-flags
3835 (list (string-append "PREFIX=" (assoc-ref %outputs "out")) "all")))
3836 (home-page "https://sgimenez.github.io/laby/")
3837 (synopsis "Programming game")
3838 (description "Learn programming, playing with ants and spider webs ;-)
3839Your robot ant can be programmed in many languages: OCaml, Python, C, C++,
3840Java, Ruby, Lua, JavaScript, Pascal, Perl, Scheme, Vala, Prolog. Experienced
3841programmers may also add their own favorite language.")
3842 (license license:gpl3+)))
b0488fe5
EF
3843
3844(define-public bambam
3845 (package
3846 (name "bambam")
8e77da0d 3847 (version "1.0.0")
b0488fe5
EF
3848 (source
3849 (origin
63e708f4
TGR
3850 (method git-fetch)
3851 (uri (git-reference
3852 (url "https://github.com/porridge/bambam")
8e77da0d 3853 (commit (string-append "v" version))))
63e708f4 3854 (file-name (git-file-name name version))
b0488fe5 3855 (sha256
8e77da0d 3856 (base32 "18cwd1wpyyx8y61cags9bkdhx9x858xicc4y1c9c2s0xjmgzhl3i"))))
b0488fe5
EF
3857 (build-system python-build-system)
3858 (arguments
8e77da0d 3859 `(#:tests? #f ; no tests
b0488fe5
EF
3860 #:phases
3861 (modify-phases %standard-phases
8e77da0d 3862 (delete 'build) ; nothing to build
b0488fe5
EF
3863 (replace 'install
3864 (lambda* (#:key outputs #:allow-other-keys)
3865 (let* ((out (assoc-ref outputs "out"))
3866 (bin (string-append out "/bin"))
3867 (share (string-append out "/share")))
3868 (mkdir-p bin)
3869 (copy-file "bambam.py" (string-append bin "/bambam"))
3870 (install-file "bambam.6" (string-append share "/man/man6"))
3871 (copy-recursively "data" (string-append share "/bambam/data")))
b0488fe5
EF
3872 #t)))))
3873 (inputs
3874 `(("python-pygame" ,python-pygame)))
3875 (home-page "https://github.com/porridge/bambam")
46a06224 3876 (synopsis "Keyboard mashing and doodling game for babies")
b0488fe5
EF
3877 (description "Bambam is a simple baby keyboard (and gamepad) masher
3878application that locks the keyboard and mouse and instead displays bright
3879colors, pictures, and sounds.")
3880 (license license:gpl3+)))
6b87c10f 3881
3110c74b
TGR
3882(define-public mrrescue
3883 (package
3884 (name "mrrescue")
3885 (version "1.02e")
3886 (source (origin
3887 (method url-fetch)
3888 (uri (string-append
3889 "https://github.com/SimonLarsen/mrrescue/releases/"
ed9bcf50 3890 "download/" version "/mrrescue" version ".love"))
3110c74b
TGR
3891 (file-name (string-append name "-" version ".love"))
3892 (sha256
3893 (base32
3894 "0jwzbwkgp1l5ia6c7s760gmdirbsncp6nfqp7vqdqsfb63la9gl2"))))
3895 (build-system trivial-build-system)
3896 (arguments
8893218a 3897 `(#:modules ((guix build utils))
3110c74b
TGR
3898 #:builder
3899 (begin
3900 (use-modules (guix build utils))
8893218a
TGR
3901 (let* ((out (assoc-ref %outputs "out"))
3902 (script (string-append out "/bin/" ,name))
3903 (data (string-append out "/share/" ,name))
3904 (source (assoc-ref %build-inputs "source"))
3905 (unzip (string-append (assoc-ref %build-inputs "unzip")
3906 "/bin/unzip"))
3907 (patch (string-append (assoc-ref %build-inputs "patch")
3908 "/bin/patch"))
3909 (bash (string-append (assoc-ref %build-inputs "bash")
3910 "/bin/bash"))
3911 (love (string-append (assoc-ref %build-inputs "love")
3912 "/bin/love")))
3913
3914 (mkdir-p (dirname script))
3915 (with-output-to-file script
3110c74b
TGR
3916 (lambda ()
3917 (format #t "#!~a~%" bash)
8893218a
TGR
3918 (format #t "exec -a ~a \"~a\" \"~a\"~%" ,name love data)))
3919 (chmod script #o755)
3920
3921 ;; The better way to package this game would be to install *only* the
3922 ;; script above, pointing to the unextracted .love file in the store.
3923 ;; However, mrrescue 1.02e needs to be patched to work with Love 11.
3924 ;; Instead of extracting the .love file, patching it, and re-zipping
3925 ;; it to the store, simply point the script to the extracted patched
3926 ;; data directory directly.
3927 (mkdir-p data)
3928 (with-directory-excursion data
3929 (invoke unzip source)
3930 (invoke patch "-p1" "-i"
3931 (assoc-ref %build-inputs "love-11.patch")))
3110c74b 3932 #t))))
8893218a
TGR
3933 (native-inputs
3934 `(("unzip" ,unzip)
3935 ("patch" ,patch)
3936 ("love-11.patch" ,(search-patch "mrrescue-support-love-11.patch"))))
3110c74b
TGR
3937 (inputs
3938 `(("bash" ,bash)
3939 ("love" ,love)))
3940 (home-page "http://tangramgames.dk/games/mrrescue")
3941 (synopsis "Arcade-style fire fighting game")
3942 (description
3943 "Mr. Rescue is an arcade styled 2d action game centered around evacuating
d6331fca
TGR
3944civilians from burning buildings. The game features fast-paced fire
3945extinguishing action, intense boss battles, a catchy soundtrack, and lots of
3110c74b
TGR
3946throwing people around in pseudo-randomly generated buildings.")
3947 (license (list license:zlib ; for source code
3948 license:cc-by-sa3.0)))) ; for graphics and music assets
3949
cd1869cd
KK
3950(define-public hyperrogue
3951 (package
3952 (name "hyperrogue")
81d7cd59 3953 (version "11.2d")
f8279ba4
KK
3954 ;; When updating this package, be sure to update the "hyperrogue-data"
3955 ;; origin in native-inputs.
cd1869cd
KK
3956 (source (origin
3957 (method url-fetch)
3958 (uri (string-append
a01aea7d
TGR
3959 "https://www.roguetemple.com/z/hyper/hyperrogue"
3960 (string-join (string-split version #\.) "")
f8279ba4 3961 "-src.tgz"))
cd1869cd
KK
3962 (sha256
3963 (base32
81d7cd59 3964 "1b532s94zv1jsni7bvh848m42arxcclsr0x3n7c689iamwqzrxmn"))))
cd1869cd
KK
3965 (build-system gnu-build-system)
3966 (arguments
f8279ba4 3967 `(#:tests? #f ; no check target
82402f76
KK
3968 #:make-flags '("HYPERROGUE_USE_GLEW=1"
3969 "HYPERROGUE_USE_PNG=1")
cd1869cd
KK
3970 #:phases
3971 (modify-phases %standard-phases
3972 (add-after 'set-paths 'set-sdl-paths
3973 (lambda* (#:key inputs #:allow-other-keys)
3974 (setenv "CPATH"
b6c2805c
MB
3975 (string-append (getenv "CPATH") ":"
3976 (assoc-ref inputs "sdl-union")
cd1869cd 3977 "/include/SDL"))))
cd1869cd
KK
3978 (replace 'configure
3979 (lambda* (#:key inputs outputs #:allow-other-keys)
f8279ba4
KK
3980 (let* ((out (assoc-ref outputs "out"))
3981 (share-dir (string-append out "/share/hyperrogue"))
3982 (dejavu-dir (string-append
3983 (assoc-ref inputs "font-dejavu")
3984 "/share/fonts/truetype"))
3985 (dejavu-font "DejaVuSans-Bold.ttf")
3986 (music-file "hyperrogue-music.txt"))
1bb962b4 3987 ;; Fix font and music paths.
89c9445a 3988 (substitute* "basegraph.cpp"
f8279ba4
KK
3989 ((dejavu-font)
3990 (string-append dejavu-dir "/" dejavu-font)))
f8279ba4
KK
3991 (substitute* music-file
3992 (("\\*/")
82402f76
KK
3993 (string-append share-dir "/sounds/")))
3994 (substitute* "sound.cpp"
3995 (("musicfile = \"\"")
3996 (string-append "musicfile = \""
3997 share-dir "/" music-file "\"")))
3998 ;; Disable build machine CPU optimizations and warnings treated
3999 ;; as errors.
4000 (substitute* "Makefile"
4001 (("-march=native") "")
4002 (("-Werror") "")))
cd1869cd
KK
4003 #t))
4004 (replace 'install
4005 (lambda* (#:key inputs outputs #:allow-other-keys)
4006 (let* ((out (assoc-ref outputs "out"))
4007 (bin (string-append out "/bin"))
4008 (share-dir (string-append out "/share/hyperrogue")))
4009 (mkdir-p bin)
82402f76 4010 (install-file "hyperrogue" bin)
f8279ba4
KK
4011 (install-file "hyperrogue-music.txt" share-dir))
4012 #t))
4013 (add-after 'install 'install-data
4014 (lambda* (#:key inputs outputs #:allow-other-keys)
4015 (let* ((data (assoc-ref inputs "hyperrogue-data"))
4016 (out (assoc-ref outputs "out"))
4017 (sounds (string-append out "/share/hyperrogue/sounds"))
4018 (unzip (string-append (assoc-ref inputs "unzip") "/bin/unzip")))
1bb962b4
KK
4019 ;; Extract media license information into sounds directory.
4020 (invoke unzip "-j" data
4021 (string-append
4022 "hyperrogue"
4023 (string-join (string-split ,version #\.) "")
4024 "/sounds/credits.txt") "-d" sounds)
4025 ;; Extract sounds and music into sounds directory.
4026 (invoke "unzip" "-j" data
4027 (string-append
4028 "hyperrogue"
4029 (string-join (string-split ,version #\.) "")
4030 "/*.ogg") "-d" sounds)))))))
f8279ba4
KK
4031 (native-inputs
4032 `(("hyperrogue-data"
4033 ,(origin
4034 (method url-fetch)
4035 (uri
4036 (string-append
07de94d6 4037 "https://www.roguetemple.com/z/hyper/hyperrogue"
f8279ba4
KK
4038 (string-join (string-split version #\.) "")
4039 "-win.zip"))
4040 (sha256
4041 (base32
81d7cd59 4042 "0vq4l1xaqpjj3hmxn1vn2b3bbkn1hrag42ck9f30blinv347bwhf"))))
f8279ba4 4043 ("unzip" ,unzip)))
cd1869cd
KK
4044 (inputs
4045 `(("font-dejavu" ,font-dejavu)
4046 ("glew" ,glew)
4047 ("libpng" ,libpng)
4048 ("sdl-union" ,(sdl-union (list sdl
4049 sdl-gfx
4050 sdl-mixer
4051 sdl-ttf)))))
4cae7e67 4052 (home-page "https://www.roguetemple.com/z/hyper/")
cd1869cd
KK
4053 (synopsis "Non-euclidean graphical rogue-like game")
4054 (description
4055 "HyperRogue is a game in which the player collects treasures and fights
4056monsters -- rogue-like but for the fact that it is played on the hyperbolic
4057plane and not in euclidean space.
4058
4059In HyperRogue, the player can move through different parts of the world, which
a53a6b6f
TGR
4060are home to particular creatures and may be subject to their own rules of
4061\"physics\".
cd1869cd 4062
a53a6b6f
TGR
4063While the game can use ASCII characters to display the the classical rogue
4064symbols, it still needs graphics to render the non-euclidean world.")
f8279ba4
KK
4065 (license (list license:bsd-3 ; glew.c, mtrand.*
4066 license:cc-by-sa3.0 ; music
4067 license:cc-by-sa4.0 ; sounds
4068 license:cc0
4069 license:public-domain ; direntx.*, some sounds
4070 license:zlib ; savepng.*
cd1869cd 4071 license:gpl2+)))) ; remaining files
a56145e1
SW
4072
4073(define-public kobodeluxe
4074 (package
4075 (name "kobodeluxe")
4076 (version "0.5.1")
4077 (source (origin
4078 (method url-fetch)
4079 (uri (string-append "http://olofson.net/kobodl/download/KoboDeluxe-"
4080 version ".tar.bz2"))
4081 (sha256
4082 (base32
4083 "0b2wvdpnmaibsy419c16dfwj5kvd3pccby2aaqvm964x74592yqg"))
4084 (patches (search-patches
4085 "kobodeluxe-const-charp-conversion.patch"
4086 "kobodeluxe-enemies-pipe-decl.patch"
4087 "kobodeluxe-graphics-window-signed-char.patch"
4088 "kobodeluxe-manpage-minus-not-hyphen.patch"
4089 "kobodeluxe-midicon-segmentation-fault.patch"
4090 "kobodeluxe-paths.patch"))))
4091 (build-system gnu-build-system)
4092 (arguments
4093 '(#:configure-flags
4094 (list (string-append "CPPFLAGS=-I"
4095 (assoc-ref %build-inputs "sdl-union")
4096 "/include/SDL"))))
4097 (inputs `(("sdl-union" ,(sdl-union (list sdl sdl-image)))))
4098 (synopsis "Shooter with space station destruction")
4099 (description
4100 "Kobo Deluxe is an enhanced version of Akira Higuchi's XKobo graphical game
4101for Un*x systems with X11.")
4102 (home-page "http://olofson.net/kobodl/")
4103 (license license:gpl2+)))
5430dbd9
AI
4104
4105(define-public freeciv
4106 (package
4107 (name "freeciv")
d36b98ad 4108 (version "2.6.0")
5430dbd9
AI
4109 (source
4110 (origin
4111 (method url-fetch)
b92e8da0
EF
4112 (uri (list (string-append
4113 "http://files.freeciv.org/stable/freeciv-"
4114 version ".tar.bz2")
4115 (string-append
4116 "mirror://sourceforge/freeciv/Freeciv%20"
4117 (version-major+minor version) "/" version
4118 "/freeciv-" version ".tar.bz2")))
5430dbd9
AI
4119 (sha256
4120 (base32
d36b98ad 4121 "16f9wsnn7073s6chzbm3819swd0iw019p9nrzr3diiynk28kj83w"))))
5430dbd9
AI
4122 (build-system gnu-build-system)
4123 (inputs
4124 `(("curl" ,curl)
4125 ("cyrus-sasl" ,cyrus-sasl)
4126 ("gtk+" ,gtk+)
4127 ("sdl-mixer" ,sdl-mixer)
4128 ("zlib" ,zlib)))
4129 (native-inputs
4130 `(("pkg-config" ,pkg-config)))
4131 (home-page "http://www.freeciv.org/")
4132 (synopsis "Turn based empire building strategy game")
4133 (description "Freeciv is a turn based empire building strategy game
4134inspired by the history of human civilization. The game commences in
4135prehistory and your mission is to lead your tribe from the Stone Age
4136to the Space Age.")
4137 (license license:gpl2+)))
345504c7 4138
4139(define-public no-more-secrets
4140 (package
4141 (name "no-more-secrets")
4c4f1871 4142 (version "0.3.3")
345504c7 4143 (source
4144 (origin
146a4459
TGR
4145 (method git-fetch)
4146 (uri (git-reference
4147 (url "https://github.com/bartobri/no-more-secrets.git")
4148 (commit (string-append "v" version))))
4149 (file-name (git-file-name name version))
345504c7 4150 (sha256
146a4459 4151 (base32 "1zfv4qabikf8w9winsr4brxrdvs3f0d7xvydksyx8bydadsm2v2h"))))
345504c7 4152 (build-system gnu-build-system)
4153 (arguments
4154 `(#:tests? #f
4155 #:make-flags (list "CC=gcc" "all-ncurses"
4156 (string-append "prefix="
4157 (assoc-ref %outputs "out")))
4158 #:phases
4159 (modify-phases %standard-phases
4160 (delete 'configure))))
4161 (inputs
4162 `(("ncurses" ,ncurses)))
4163 (home-page "https://github.com/bartobri/no-more-secrets")
4164 (synopsis "Recreation of data decryption effect in \"Sneakers\"")
4165 (description
4166 "@code{No More Secrets} provides a command line tool called \"nms\"
4167that recreates the famous data decryption effect seen on screen in the 1992
4168movie \"Sneakers\".
4169
4170This command works on piped data. Pipe any ASCII or UTF-8 text to nms, and
4171it will apply the hollywood effect, initially showing encrypted data, then
4172starting a decryption sequence to reveal the original plaintext characters.")
4173 (license license:expat)))
fb731c92
AI
4174
4175(define-public megaglest-data
4176 (package
4177 (name "megaglest-data")
4178 (version "3.13.0")
4179 (source
4180 (origin
4181 (method url-fetch)
4182 (uri (string-append
4183 "https://github.com/MegaGlest/megaglest-data"
4184 "/releases/download/" version "/megaglest-data-"
4185 version ".tar.xz"))
4186 (sha256
4187 (base32
4188 "0ipgza33z89fw3si32iafm981f3fvm0zldvbxj29whghd2k3rpj3"))))
4189 (build-system cmake-build-system)
4190 (arguments
4191 `(#:tests? #f))
4192 (home-page "https://megaglest.org/")
4193 (synopsis "Data files for MegaGlest")
4194 (description "This package contains the data files required for MegaGlest.")
4195 (license license:cc-by-sa3.0)))
0b608ec4
AI
4196
4197(define-public megaglest
4198 (package
4199 (name "megaglest")
4200 (version "3.13.0")
4201 (source
4202 (origin
4203 (method url-fetch)
4204 (uri (string-append
4205 "https://github.com/MegaGlest/megaglest-source"
4206 "/releases/download/" version "/megaglest-source-"
4207 version ".tar.xz"))
4208 (sha256
4209 (base32
4210 "1ffck3ii1wp5k3nn5p0ga06jgp7pzk4zw0xln3xim2w7qrxzdzh9"))))
4211 (build-system cmake-build-system)
4212 (inputs
4213 `(("curl" ,curl)
4214 ("fontconfig" ,fontconfig)
4215 ("ftgl" ,ftgl)
4216 ("glew" ,glew)
4217 ("libjpeg-turbo" ,libjpeg-turbo)
4218 ("megaglest-data" ,megaglest-data)
4219 ("mesa" ,mesa)
4220 ("miniupnpc" ,miniupnpc)
4221 ("openal" ,openal)
4222 ("libircclient" ,libircclient)
4223 ("libpng" ,libpng)
4224 ("libvorbis" ,libvorbis)
4225 ("lua" ,lua)
4226 ("sdl2" ,sdl2)
4227 ("wxwidgets" ,wxwidgets)))
4228 (native-inputs
4229 `(("cppunit" ,cppunit)
4230 ("pkg-config" ,pkg-config)))
4231 (arguments
4232 `(#:configure-flags
4233 (list (string-append "-DCUSTOM_DATA_INSTALL_PATH="
4234 (assoc-ref %build-inputs "megaglest-data")
4235 "/share/megaglest")
4236 "-DBUILD_MEGAGLEST_TESTS=ON")
4237 #:phases
4238 (modify-phases %standard-phases
4239 (add-after 'unpack 'fix-ini-search-path
4240 (lambda* (#:key outputs #:allow-other-keys)
4241 (substitute* "source/glest_game/global/config.cpp"
4242 (("/usr/share/megaglest/")
4243 (string-append (assoc-ref outputs "out")
4244 "/share/megaglest/"))))))
4245 #:test-target "megaglest_tests"))
4246 (home-page "https://megaglest.org/")
4247 (synopsis "3D real-time strategy (RTS) game")
4248 (description "MegaGlest is a cross-platform 3D real-time strategy (RTS)
4249game, where you control the armies of one of seven different factions: Tech,
4250Magic, Egypt, Indians, Norsemen, Persian or Romans.")
4251 (license license:gpl2+)))
6bb9c854
RW
4252
4253(define-public freegish
4254 (let ((commit "8795cd7adc95957883f2d3465eb9036a774667a7")
4255 (revision "1"))
4256 (package
4257 (name "freegish")
4258 (version (string-append "0-" revision "." (string-take commit 9)))
4259 (source (origin
4260 (method git-fetch)
4261 (uri (git-reference
4262 (url "https://github.com/freegish/freegish.git")
4263 (commit commit)))
661ad6f0 4264 (file-name (git-file-name name version))
6bb9c854
RW
4265 (sha256
4266 (base32
4267 "1p1zf5qqagmcpi1db2bs02cnalpy3qiymp6yzan7k1bhmv859gsx"))
4268 (modules '((guix build utils)))
4269 ;; The audio files in the "music" directory are licensed under
4270 ;; CC-BY-NC, so we delete them.
4271 (snippet
4272 '(begin
4273 (delete-file-recursively "music")
4274 #t))))
4275 (build-system cmake-build-system)
4276 (arguments
4277 `(#:tests? #f ; no tests included
4278 #:configure-flags
4279 (list "-DCMAKE_INSTALL_FHS=ON")
4280 #:phases
4281 (modify-phases %standard-phases
4282 (add-after 'unpack 'set-DATAPATH
4283 (lambda* (#:key outputs #:allow-other-keys)
4284 (substitute* "CMakeLists.txt"
4285 (("^option\\(INSTALL_FHS" line)
4286 (string-append "add_definitions(-DDATAPATH=\""
4287 (assoc-ref outputs "out") "/share/freegish\")\n"
4288 line)))
4289 #t)))))
4290 (inputs
4291 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))
4292 ("openal" ,openal)
4293 ("libvorbis" ,libvorbis)
4294 ("libogg" ,libogg)
4295 ("mesa" ,mesa)
4296 ("libpng" ,libpng)
4297 ("zlib" ,zlib)))
4298 (home-page "https://github.com/freegish/freegish")
4299 (synopsis "Side-scrolling physics platformer with a ball of tar")
4300 (description "In FreeGish you control Gish, a ball of tar who lives
4301happily with his girlfriend Brea, until one day a mysterious dark creature
4302emerges from a sewer hole and pulls her below ground.")
4303 ;; The textures are available under the Expat license. All other assets
4304 ;; (including levels) are covered under CC-BY-SA or public domain. The
4305 ;; source code is under GPLv2+.
4306 (license (list license:gpl2+
4307 license:expat
4308 license:public-domain
4309 license:cc-by-sa3.0)))))
f0f7bf95
RW
4310
4311(define-public cdogs-sdl
6e65eb3c
TGR
4312 (package
4313 (name "cdogs-sdl")
acfb7357 4314 (version "0.6.9")
6e65eb3c
TGR
4315 (source (origin
4316 (method git-fetch)
4317 (uri (git-reference
4318 (url "https://github.com/cxong/cdogs-sdl.git")
4319 (commit version)))
4320 (file-name (git-file-name name version))
4321 (sha256
4322 (base32
acfb7357 4323 "13gyv2hzk43za1n3lsjnd5v64xlzfzq7n10scd1rcbsnk1n007zr"))))
6e65eb3c
TGR
4324 (build-system cmake-build-system)
4325 (arguments
4326 `(#:configure-flags
4327 (list (string-append "-DCDOGS_DATA_DIR="
4328 (assoc-ref %outputs "out")
4329 "/share/cdogs-sdl/"))))
4330 (inputs
4331 `(("mesa" ,mesa)
4332 ("sdl2" ,sdl2)
4333 ("sdl2-image" ,sdl2-image)
4334 ("sdl2-mixer" ,sdl2-mixer)))
4335 (home-page "https://cxong.github.io/cdogs-sdl/")
4336 (synopsis "Classic overhead run-and-gun game")
4337 (description "C-Dogs SDL is a classic overhead run-and-gun game,
f0f7bf95
RW
4338supporting up to 4 players in co-op and deathmatch modes. Customize your
4339player, choose from many weapons, and blast, slide and slash your way through
4340over 100 user-created campaigns.")
6e65eb3c
TGR
4341 ;; GPLv2+ for code (includes files under BSD-2 and BSD-3),
4342 ;; CC0/CC-BY/CC-BY-SA for assets.
4343 (license (list license:gpl2+
4344 license:bsd-2
4345 license:bsd-3
4346 license:cc0
4347 license:cc-by3.0
4348 license:cc-by-sa3.0))))
bd71525b 4349
649220ad 4350(define-public kiki
bd71525b 4351 (package
649220ad 4352 (name "kiki")
bd71525b
RW
4353 (version "1.0.2")
4354 (source (origin
4355 (method url-fetch)
4356 (uri (string-append "mirror://sourceforge/kiki/kiki-src/"
4357 version "/kiki-" version "-src.tgz"))
4358 (sha256
4359 (base32
4360 "0ihjdsxbn8z3cz0gpcprafiipcqaiskgdnh1rhmw4qff8dszalbn"))
4361 (modules '((guix build utils)))
4362 (snippet
4363 '(begin
4364 (for-each delete-file (find-files "." "\\.dll$"))
4365 #t))
4366 (patches
4367 (search-patches "kiki-level-selection-crash.patch"
4368 "kiki-makefile.patch"
4369 "kiki-missing-includes.patch"
4370 "kiki-portability-64bit.patch"))))
4371 (build-system gnu-build-system)
4372 (arguments
4373 `(#:tests? #f ; there are no tests
4374 #:make-flags '("CXX=g++")
4375 #:phases
4376 (modify-phases %standard-phases
4377 (replace 'configure
4378 (lambda* (#:key inputs outputs #:allow-other-keys)
4379 (setenv "CPLUS_INCLUDE_PATH"
4380 (string-append (assoc-ref inputs "sdl-union")
4381 "/include/SDL:"
4382 (assoc-ref inputs "python")
97149c57 4383 "/include/python2.7"))
bd71525b
RW
4384 (substitute* "src/main/main.cpp"
4385 (("#include <SDL.h>" line)
4386 (string-append line "
4387#define K_INCLUDE_GLUT
4388#include \"KIncludeTools.h\""))
4389 (("// initialize SDL" line)
4390 (string-append "glutInit(&argc,argv);\n" line)))
4391 (substitute* "src/main/KikiController.cpp"
4392 (("getenv\\(\"KIKI_HOME\"\\)")
4393 (string-append "\"" (assoc-ref outputs "out") "/share/kiki/\"")))
4394 (substitute* "linux/Makefile"
4395 (("CXXOPTS =" line)
4396 (string-append line " -fpermissive"))
4397 (("PYTHON_VERSION=.*") "PYTHON_VERSION=2.7")
4398 (("PYTHONHOME =.*")
4399 (string-append "PYTHONHOME = "
4400 (assoc-ref inputs "python")
4401 "/lib/python2.7/"))
4402 (("\\$\\(GLLIBS\\)" line)
4403 (string-append line " -lm -lpython2.7")))
4404 (substitute* "src/main/KikiPythonWidget.h"
4405 (("#define __KikiPythonWidget" line)
4406 (string-append line "\n#include \"KikiPython.h\"")))
4407 #t))
4408 (add-before 'build 'build-kodilib
4409 (lambda* (#:key make-flags #:allow-other-keys)
4410 (with-directory-excursion "kodilib/linux"
ff61aee8 4411 (apply invoke "make" make-flags))))
bd71525b
RW
4412 (add-after 'build-kodilib 'chdir
4413 (lambda _ (chdir "linux") #t))
4414 (replace 'install
4415 (lambda* (#:key outputs #:allow-other-keys)
4416 (let* ((out (assoc-ref outputs "out"))
4417 (bin (string-append out "/bin"))
4418 (share (string-append out "/share/kiki")))
4419 (mkdir-p bin)
4420 (mkdir-p share)
4421 (install-file "kiki" bin)
4422 (copy-recursively "../py" (string-append share "/py"))
4423 (copy-recursively "../sound" (string-append share "/sound"))
4424 #t))))))
4425 (inputs
4426 `(("glu" ,glu)
4427 ;; Kiki builds fine with freeglut 3.0.0 but segfaults on start.
4428 ("freeglut" ,freeglut-2.8)
4429 ("sdl-union" ,(sdl-union (list sdl
4430 sdl-mixer
4431 sdl-image)))
4432 ("python" ,python-2)))
4433 (native-inputs
4434 `(("swig" ,swig)))
4435 (home-page "http://kiki.sourceforge.net/")
4436 (synopsis "3D puzzle game")
4437 (description "Kiki the nano bot is a 3D puzzle game. It is basically a
4438mixture of the games Sokoban and Kula-World. Your task is to help Kiki, a
4439small robot living in the nano world, repair its maker.")
4440 ;; See <http://metadata.ftp-master.debian.org/changelogs/main/k/
4441 ;; kiki-the-nano-bot/kiki-the-nano-bot_1.0.2+dfsg1-4_copyright>
4442 ;; for a statement from the author.
4443 (license license:public-domain)))
b77e3a1c 4444
649220ad
NG
4445(define-public kiki-the-nano-bot
4446 (deprecated-package "kiki-the-nano-bot" kiki))
6639295f 4447
b77e3a1c
RW
4448(define-public teeworlds
4449 (package
4450 (name "teeworlds")
7aed8b8a 4451 (version "0.7.2")
b77e3a1c 4452 (source (origin
f9e5caf9
AV
4453 (method git-fetch)
4454 (uri (git-reference
4455 (url "https://github.com/teeworlds/teeworlds.git")
4456 (commit version)))
4457 (file-name (git-file-name name version))
b77e3a1c
RW
4458 (sha256
4459 (base32
7aed8b8a 4460 "15l988qcsqgb6rjais0qd5sd2rjanm2708jmzvkariqzz0d6pb93"))
f9e5caf9
AV
4461 (modules '((guix build utils)
4462 (ice-9 ftw)
4463 (ice-9 regex)
4464 (srfi srfi-1)
4465 (srfi srfi-26)))
4466 (snippet ; remove bundled libraries except md5
4467 '(let ((base-dir "src/engine/external/"))
4468 (for-each (compose (cut delete-file-recursively <>)
4469 (cut string-append base-dir <>))
4470 (remove (cut string-match "(^.)|(^md5$)" <>)
4471 (scandir base-dir)))
b77e3a1c
RW
4472 #t))
4473 (patches
4474 (search-patches "teeworlds-use-latest-wavpack.patch"))))
4475 (build-system gnu-build-system)
4476 (arguments
7aed8b8a 4477 `(#:tests? #f ; no tests included
f9e5caf9
AV
4478 #:modules ((guix build gnu-build-system)
4479 (guix build utils)
4480 (srfi srfi-26))
b77e3a1c
RW
4481 #:phases
4482 (modify-phases %standard-phases
4483 (replace 'configure
4484 (lambda* (#:key outputs #:allow-other-keys)
f9e5caf9
AV
4485 ;; The bundled json-parser uses an old API.
4486 ;; To use the latest non-bundled version, we need to pass the
4487 ;; length of the data in all 'json_parse_ex' calls.
4488 (define (use-latest-json-parser file)
4489 (substitute* file
4490 (("engine/external/json-parser/json\\.h")
4491 "json-parser/json.h")
4492 (("json_parse_ex\\(&JsonSettings, pFileData, aError\\);")
4493 "json_parse_ex(&JsonSettings,
4494 pFileData,
4495 strlen(pFileData),
4496 aError);")))
4497
b77e3a1c
RW
4498 ;; Embed path to assets.
4499 (substitute* "src/engine/shared/storage.cpp"
4500 (("#define DATA_DIR.*")
4501 (string-append "#define DATA_DIR \""
4502 (assoc-ref outputs "out")
4503 "/share/teeworlds/data"
4504 "\"")))
4505
4506 ;; Bam expects all files to have a recent time stamp.
f9e5caf9 4507 (for-each (cut utime <> 1 1)
b77e3a1c
RW
4508 (find-files "."))
4509
4510 ;; Do not use bundled libraries.
4511 (substitute* "bam.lua"
f9e5caf9
AV
4512 (("local json = Compile.+$")
4513 "local json = nil
4514settings.link.libs:Add(\"jsonparser\")")
4515 (("local png = Compile.+$")
4516 "local png = nil
4517settings.link.libs:Add(\"pnglite\")")
4518 (("local wavpack = Compile.+$")
4519 "local wavpack = nil
4520settings.link.libs:Add(\"wavpack\")")
4521 (("if config\\.zlib\\.value == 1")
4522 "if config.zlib.value"))
4523 (substitute* "src/engine/client/graphics_threaded.cpp"
4524 (("engine/external/pnglite/pnglite\\.h")
4525 "pnglite.h"))
b77e3a1c 4526 (substitute* "src/engine/client/sound.cpp"
f9e5caf9
AV
4527 (("engine/external/wavpack/wavpack\\.h")
4528 "wavpack/wavpack.h"))
4529 (for-each use-latest-json-parser
4530 '("src/game/client/components/countryflags.cpp"
4531 "src/game/client/components/menus_settings.cpp"
4532 "src/game/client/components/skins.cpp"
4533 "src/game/client/localization.cpp"
4534 "src/game/editor/auto_map.h"
4535 "src/game/editor/editor.cpp"))
b77e3a1c
RW
4536 #t))
4537 (replace 'build
4538 (lambda _
f9e5caf9 4539 (invoke "bam" "-a" "-v" "conf=release")))
b77e3a1c
RW
4540 (replace 'install
4541 (lambda* (#:key outputs #:allow-other-keys)
f9e5caf9
AV
4542 (let* ((arch ,(system->linux-architecture
4543 (or (%current-target-system)
4544 (%current-system))))
4545 (build (string-append "build/" arch "/release/"))
4546 (data-built (string-append build "data/"))
4547 (out (assoc-ref outputs "out"))
4548 (bin (string-append out "/bin/"))
4549 (data (string-append out "/share/teeworlds/data/")))
4550 (for-each (cut install-file <> bin)
4551 (map (cut string-append build <>)
4552 '("teeworlds" "teeworlds_srv")))
4553 (copy-recursively data-built data)
b77e3a1c 4554 #t))))))
b77e3a1c
RW
4555 (inputs
4556 `(("freetype" ,freetype)
4557 ("glu" ,glu)
f9e5caf9 4558 ("json-parser" ,json-parser)
b77e3a1c 4559 ("mesa" ,mesa)
f9e5caf9
AV
4560 ("pnglite" ,pnglite)
4561 ("sdl2" ,sdl2)
4562 ("sdl2-image" ,sdl2-image)
4563 ("sdl2-mixer" ,sdl2-mixer)
b77e3a1c
RW
4564 ("wavpack" ,wavpack)
4565 ("zlib" ,zlib)))
4566 (native-inputs
4567 `(("bam" ,bam)
f9e5caf9 4568 ("python" ,python-wrapper)
e402a66b 4569 ("pkg-config" ,pkg-config)))
b77e3a1c
RW
4570 (home-page "https://www.teeworlds.com")
4571 (synopsis "2D retro multiplayer shooter game")
4572 (description "Teeworlds is an online multiplayer game. Battle with up to
457316 players in a variety of game modes, including Team Deathmatch and Capture
4574The Flag. You can even design your own maps!")
4575 (license license:bsd-3)))
e02f1663 4576
162a4a03
RW
4577(define-public enigma
4578 (package
4579 (name "enigma")
4580 (version "1.21")
4581 (source (origin
4582 (method url-fetch)
4583 (uri (string-append "mirror://sourceforge/enigma-game/"
4584 "Release%20" version "/enigma-"
4585 version ".tar.gz"))
4586 (sha256
4587 (base32
4588 "00ffh9pypj1948pg3q9sjp1nmiabh52p5c8wpg9n1dcfgl3cywnq"))))
4589 (build-system gnu-build-system)
4590 (arguments
4591 `(#:configure-flags
4592 (list "--with-system-enet")
4593 #:phases
4594 (modify-phases %standard-phases
4595 (add-after 'unpack 'find-sdl
4596 (lambda _
4597 (substitute* "configure"
4598 (("SDL_ttf.h") "SDL/SDL_ttf.h"))
4599 (substitute* '("tools/ttf2bmf.cc"
4600 "lib-src/enigma-core/ecl_font.cc"
4601 "lib-src/enigma-core/ecl_video.cc"
4602 "lib-src/enigma-core/ecl_buffer.hh"
4603 "src/SoundEngine.cc"
4604 "src/SoundEngine.hh"
4605 "src/MusicManager.cc"
4606 "src/MusicManager.hh"
4607 "src/d_models.cc"
4608 "src/main.cc"
4609 "src/network.cc")
4610 (("#include \"SDL_(image|ttf|mixer|types|syswm|mutex).h\"" line header)
4611 (string-append "#include \"SDL/SDL_" header ".h\"")))
4612 (substitute* "src/main.cc"
4613 (("#include <SDL_(image|ttf|mixer).h>" line header)
4614 (string-append "#include \"SDL/SDL_" header ".h\"")))
4615 #t)))))
4616 (inputs
4617 `(("xerces-c" ,xerces-c)
4618 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
4619 ("curl" ,curl)
4620 ("enet" ,enet)))
4621 (native-inputs
4622 `(("pkg-config" ,pkg-config)
4623 ("imagemagick" ,imagemagick)))
340978d7 4624 (home-page "https://www.nongnu.org/enigma")
162a4a03
RW
4625 (synopsis "Puzzle game with a dexterity component")
4626 (description "Enigma is a puzzle game with 550 unique levels. The object
4627of the game is to find and uncover pairs of identically colored ‘Oxyd’ stones.
4628Simple? Yes. Easy? Certainly not! Hidden traps, vast mazes, laser beams,
4629and most of all, countless hairy puzzles usually block your direct way to the
4630Oxyd stones. Enigma’s game objects (and there are hundreds of them, lest you
4631get bored) interact in many unexpected ways, and since many of them follow the
4632laws of physics (Enigma’s special laws of physics, that is), controlling them
4633with the mouse isn’t always trivial.")
4634 (license license:gpl2+)))
4635
10d53153
CLW
4636(define-public chroma
4637 (package
4638 (name "chroma")
9cf65f05 4639 (version "1.17")
10d53153
CLW
4640 (source (origin
4641 (method url-fetch)
4642 (uri (string-append "http://level7.org.uk/chroma/download/chroma-"
4643 version ".tar.bz2"))
4644 (sha256
4645 (base32
9cf65f05 4646 "047sf00x71xbmi8bqrhfbmr9bk89l2gbykkqsfpw4wz6yfjscs6y"))))
10d53153
CLW
4647 (build-system gnu-build-system)
4648 (arguments
5479dbf9 4649 `(#:tests? #f)) ; no tests included
10d53153
CLW
4650 (inputs
4651 `(("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
4652 ("freetype" ,freetype)
4653 ("ncurses" ,ncurses)
4654 ("fontconfig" ,fontconfig)
4655 ("libxft" ,libxft)))
4656 (native-inputs
4657 `(("pkg-config" ,pkg-config)))
4658 (home-page "http://level7.org.uk/chroma/")
4659 (synopsis "Abstract puzzle game")
4660 (description "Chroma is an abstract puzzle game. A variety of colourful
4661shapes are arranged in a series of increasingly complex patterns, forming
4662 fiendish traps that must be disarmed and mysterious puzzles that must be
4663 manipulated in order to give up their subtle secrets. Initially so
4664 straightforward that anyone can pick it up and begin to play, yet gradually
4665 becoming difficult enough to tax even the brightest of minds.")
4666 (license license:gpl2+)))
4667
649220ad 4668(define-public fillets-ng
e02f1663 4669 (package
649220ad 4670 (name "fillets-ng")
e02f1663
RW
4671 (version "1.0.1")
4672 (source (origin
4673 (method url-fetch)
4674 (uri (string-append "mirror://sourceforge/fillets/"
4675 "Fish%20Fillets%20-%20Next%20Generation/"
4676 version "/fillets-ng-" version ".tar.gz"))
4677 (sha256
4678 (base32
4679 "1nljp75aqqb35qq3x7abhs2kp69vjcj0h1vxcpdyn2yn2nalv6ij"))))
4680 (build-system gnu-build-system)
4681 (arguments
4682 `(#:configure-flags
4683 (list (string-append "--with-lua="
4684 (assoc-ref %build-inputs "lua")))
4685 #:make-flags
4686 (list (string-append "CFLAGS=-I"
4687 (assoc-ref %build-inputs "sdl-union")
4688 "/include/SDL")
4689 (string-append "CXXFLAGS=-I"
4690 (assoc-ref %build-inputs "sdl-union")
4691 "/include/SDL"))
4692 #:phases
4693 (modify-phases %standard-phases
4694 ;; Lua 5.1 does not provide it.
4695 (add-after 'unpack 'do-not-link-with-lualib
4696 (lambda _
4697 (substitute* "configure"
4698 (("-llualib") ""))
4699 #t))
4700 (add-after 'install 'install-data
4701 (lambda* (#:key inputs outputs #:allow-other-keys)
4702 (let ((data (string-append (assoc-ref outputs "out")
4703 "/share/games/fillets-ng")))
4704 (mkdir-p data)
f08d34a0
RW
4705 (invoke "tar" "-xvf"
4706 (assoc-ref inputs "fillets-ng-data")
4707 "--strip-components=1"
4708 "-C" data)))))))
e02f1663
RW
4709 (inputs
4710 `(("sdl-union" ,(sdl-union (list sdl
4711 sdl-mixer
4712 sdl-image
4713 sdl-ttf)))
4714 ("fribidi" ,fribidi)
4715 ("libx11" ,libx11)
4716 ("lua" ,lua-5.1)))
4717 (native-inputs
4718 `(("pkg-config" ,pkg-config)
4719 ("fillets-ng-data"
4720 ,(origin
4721 (method url-fetch)
4722 (uri (string-append "mirror://sourceforge/fillets/"
4723 "Fish%20Fillets%20-%20Next%20Generation/"
4724 version "/fillets-ng-data-" version ".tar.gz"))
4725 (sha256
4726 (base32
4727 "169p0yqh2gxvhdilvjc2ld8aap7lv2nhkhkg4i1hlmgc6pxpkjgh"))))))
4728 (home-page "http://fillets.sourceforge.net/")
4729 (synopsis "Puzzle game")
4730 (description "Fish Fillets NG is strictly a puzzle game. The goal in
4731every of the seventy levels is always the same: find a safe way out. The fish
4732utter witty remarks about their surroundings, the various inhabitants of their
4733underwater realm quarrel among themselves or comment on the efforts of your
4734fish. The whole game is accompanied by quiet, comforting music.")
4735 (license license:gpl2+)))
dd37a545 4736
649220ad
NG
4737(define-public fish-fillets-ng
4738 (deprecated-package "fish-fillets-ng" fillets-ng))
8b6e2bc1 4739
649220ad 4740(define-public crawl
dd37a545 4741 (package
649220ad 4742 (name "crawl")
af48a200 4743 (version "0.24.0")
dd37a545 4744 (source
4745 (origin
4746 (method url-fetch)
4747 (uri (list
4748 ;; Older releases get moved into a versioned directory
4749 (string-append "http://crawl.develz.org/release/"
4750 (version-major+minor version) "/stone_soup-"
4751 version "-nodeps.tar.xz")
4752 ;; Only the latest release is in this directory
4753 (string-append "http://crawl.develz.org/release/stone_soup-"
4754 version "-nodeps.tar.xz")))
4755 (sha256
af48a200 4756 (base32 "0kdq6s12myxfdg75ma9x3ys2nd0xwb3xm2ynlmhg4628va0pnixr"))
1243aaac 4757 (patches (search-patches "crawl-upgrade-saves.patch"))))
dd37a545 4758 (build-system gnu-build-system)
4759 (inputs
4760 `(("lua51" ,lua-5.1)
4761 ("ncurses" ,ncurses)
4762 ("sqlite" ,sqlite)
4763 ("zlib" ,zlib)))
4764 (native-inputs
4765 `(("bison" ,bison)
4766 ("flex" ,flex)
4767 ("perl" ,perl)
fc7d6bc6 4768 ("python" ,python-wrapper)
e366521a 4769 ("python-pyyaml" ,python-pyyaml)
dd37a545 4770 ("pkg-config" ,pkg-config)))
4771 (arguments
a5c8460a 4772 `(#:make-flags
dd37a545 4773 (let* ((sqlite (assoc-ref %build-inputs "sqlite"))
4774 (out (assoc-ref %outputs "out")))
4775 (list (string-append "SQLITE_INCLUDE_DIR=" sqlite "/include")
4776 (string-append "prefix=" out)
4777 "SAVEDIR=~/.crawl"
564df7e5 4778 ;; Don't compile with SSE on systems which don't have it.
a5c8460a
EF
4779 ,@(match (%current-system)
4780 ((or "i686-linux" "x86_64-linux")
4781 '())
4782 (_ '("NOSSE=TRUE")))
dd37a545 4783 ;; don't build any bundled dependencies
4784 "BUILD_LUA="
4785 "BUILD_SQLITE="
4786 "BUILD_ZLIB="
4787 "-Csource"))
4788 #:phases
4789 (modify-phases %standard-phases
606c1987
EF
4790 (add-after 'unpack 'find-SDL-image
4791 (lambda _
4792 (substitute* "source/windowmanager-sdl.cc"
4793 (("SDL_image.h") "SDL2/SDL_image.h"))
4794 #t))
dd37a545 4795 (delete 'configure)
e366521a 4796 (replace 'check
dd37a545 4797 (lambda* (#:key inputs outputs make-flags #:allow-other-keys)
4798 (setenv "HOME" (getcwd))
4799 ;; Fake a terminal for the test cases.
4800 (setenv "TERM" "xterm-256color")
e366521a
KK
4801 ;; Run the tests that don't require a debug build.
4802 (apply invoke "make" "nondebugtest"
d59a8ac6
RW
4803 (format #f "-j~d" (parallel-job-count))
4804 ;; Force command line build for test cases.
4805 (append make-flags '("GAME=crawl" "TILES="))))))))
dd37a545 4806 (synopsis "Roguelike dungeon crawler game")
36a0b5b4
PN
4807 (description "Dungeon Crawl Stone Soup (also known as \"Crawl\" or DCSS
4808for short) is a roguelike adventure through dungeons filled with dangerous
4809monsters in a quest to find the mystifyingly fabulous Orb of Zot.")
dd37a545 4810 (home-page "https://crawl.develz.org")
4811 (license (list license:gpl2+
4812 license:bsd-2
4813 license:bsd-3
4814 license:cc0
4815 license:expat
4816 license:zlib
4817 license:asl2.0))))
cae491ab 4818
649220ad
NG
4819(define-public dungeon-crawl-stone-soup
4820 (deprecated-package "dungeon-crawl-stone-soup" crawl))
36a0b5b4 4821
1243aaac 4822;; The linter here claims that patch file names should start with the package
4823;; name. But, in this case, the patches are inherited from crawl with the
4824;; "crawl-" prefix instead of "crawl-tiles-".
649220ad 4825(define-public crawl-tiles
ae548434 4826 (package
649220ad
NG
4827 (inherit crawl)
4828 (name "crawl-tiles")
ae548434 4829 (arguments
4830 (substitute-keyword-arguments
4831 (package-arguments crawl)
4832 ((#:make-flags flags)
4833 `(let ((dejavu (assoc-ref %build-inputs "font-dejavu")))
4834 (cons*
4835 (string-append "PROPORTIONAL_FONT=" dejavu
4836 "/share/fonts/truetype/DejaVuSans.ttf")
4837 (string-append "MONOSPACED_FONT=" dejavu
4838 "/share/fonts/truetype/DejaVuSansMono.ttf")
4839 "TILES=y"
4840 ;; Rename the executable to allow parallel installation with crawl.
4841 "GAME=crawl-tiles"
4842 ,flags)))))
4843 (inputs
4844 `(,@(package-inputs crawl)
4845 ("font-dejavu" ,font-dejavu)
4846 ("freetype6" ,freetype)
4847 ("glu" ,glu)
4848 ("libpng" ,libpng)
4849 ("sdl2" ,sdl2)
4850 ("sdl2-image" ,sdl2-image)
4851 ("sdl2-mixer" ,sdl2-mixer)))
4852 (native-inputs
4853 `(,@(package-native-inputs crawl)
6438a468 4854 ("pngcrush" ,pngcrush)
ae548434 4855 ("which" ,which)))
4856 (synopsis "Graphical roguelike dungeon crawler game")))
4857
649220ad
NG
4858(define-public dungeon-crawl-stone-soup-tiles
4859 (deprecated-package "dungeon-crawl-stone-soup-tiles" crawl-tiles))
24a67aef 4860
cae491ab
JL
4861(define-public lugaru
4862 (package
4863 (name "lugaru")
4864 (version "1.2")
4865 (source (origin
4866 (method url-fetch)
4867 (uri (string-append "https://bitbucket.org/osslugaru/lugaru/downloads/"
30b8b201 4868 "lugaru-" version ".tar.xz"))
cae491ab
JL
4869 (sha256
4870 (base32
4871 "15zgcshy22q51rm72zi6y9z7qlgnz5iw3gczjdlir4bqmxy4gspk"))))
4872 (build-system cmake-build-system)
4873 (arguments
4874 `(#:configure-flags
4875 (list "-DSYSTEM_INSTALL=ON")
4876 ;; no test target
4877 #:tests? #f))
4878 (native-inputs
4879 `(("pkg-config" ,pkg-config)))
4880 (inputs
4881 `(("sdl2" ,sdl2)
4882 ("glu" ,glu)
4883 ("libjpeg" ,libjpeg-turbo)
4884 ("libpng" ,libpng)
4885 ("openal" ,openal)
4886 ("vorbis" ,libvorbis)
4887 ("zlib" ,zlib)))
4888 (home-page "https://osslugaru.gitlab.io")
4889 (synopsis "Cross-platform third-person action game")
4890 (description "Lugaru is a third-person action game. The main character,
4891Turner, is an anthropomorphic rebel bunny rabbit with impressive combat skills.
4892In his quest to find those responsible for slaughtering his village, he uncovers
4893a far-reaching conspiracy involving the corrupt leaders of the rabbit republic
4894and the starving wolves from a nearby den. Turner takes it upon himself to
4895fight against their plot and save his fellow rabbits from slavery.")
4896 (license (list license:gpl2+ ; code
4897 ;; assets:
4898 license:cc-by-sa3.0
4899 license:cc-by-sa4.0))))
bff33e6c
CL
4900
4901(define-public 0ad-data
4902 (package
4903 (name "0ad-data")
8c00379c 4904 (version "0.0.23b-alpha")
bff33e6c
CL
4905 (source
4906 (origin
4907 (method url-fetch)
706d6190 4908 (uri (string-append "https://releases.wildfiregames.com/0ad-"
bff33e6c
CL
4909 version "-unix-data.tar.xz"))
4910 (file-name (string-append name "-" version ".tar.xz"))
4911 (sha256
4912 (base32
8c00379c 4913 "04x7729hk6zw1xj3n4s4lvaviijsnbjf5rhzvjxlr5fygvg4l6z1"))
bff33e6c
CL
4914 (modules '((guix build utils)))
4915 (snippet
4916 #~(begin
6cbee49d
MW
4917 (for-each (lambda (name)
4918 (let* ((dir (string-append "binaries/data/mods/" name))
4919 (file (string-append dir "/" name ".zip"))
4920 (unzip #$(file-append unzip "/bin/unzip")))
6715e1c2 4921 (invoke unzip "-d" dir file)
6cbee49d
MW
4922 (delete-file file)))
4923 '("mod" "public"))
bff33e6c
CL
4924 #t))))
4925 (build-system trivial-build-system)
4926 (native-inputs `(("tar" ,tar)
4927 ("xz" ,xz)))
4928 (arguments
4929 `(#:modules ((guix build utils))
4930 #:builder
4931 (begin
4932 (use-modules (guix build utils))
4933 (let ((out (assoc-ref %outputs "out"))
4934 (source (assoc-ref %build-inputs "source"))
4935 (tar (string-append (assoc-ref %build-inputs "tar") "/bin/tar"))
4936 (xz-path (string-append (assoc-ref %build-inputs "xz") "/bin")))
4937 (setenv "PATH" xz-path)
4938 (mkdir out)
e3cfef22 4939 (invoke tar "xvf" source "-C" out "--strip=3")))))
bff33e6c
CL
4940 (synopsis "Data files for 0ad")
4941 (description "0ad-data provides the data files required by the game 0ad.")
4942 (home-page "https://play0ad.com")
4943 (license (list (license:fsdg-compatible
4944 "http://tavmjong.free.fr/FONTS/ArevCopyright.txt"
88042154
LC
4945 "Similar to the license of the Bitstream Vera fonts.")
4946 (license:fsdg-compatible
4947 "https://www.gnome.org/fonts/#Final_Bitstream_Vera_Fonts")
bff33e6c
CL
4948 license:cc-by-sa3.0
4949 license:expat
4950 license:gfl1.0
4951 license:gpl2+
4952 license:gpl3+))))
4953
4954(define-public 0ad
4955 (package
4956 (name "0ad")
8c00379c 4957 (version "0.0.23b-alpha")
bff33e6c
CL
4958 (source
4959 (origin
4960 (method url-fetch)
706d6190 4961 (uri (string-append "https://releases.wildfiregames.com/0ad-"
bff33e6c
CL
4962 version "-unix-build.tar.xz"))
4963 (file-name (string-append name "-" version ".tar.xz"))
4964 (sha256
4965 (base32
8c00379c 4966 "0draa53xg69i5qhqym85658m45xhwkbiimaldj4sr3703rjgggq1"))))
bff33e6c
CL
4967 ;; A snippet here would cause a build failure because of timestamps
4968 ;; reset. See https://bugs.gnu.org/26734.
bff33e6c
CL
4969 (inputs
4970 `(("0ad-data" ,0ad-data)
4971 ("curl" ,curl)
4972 ("enet" ,enet)
4973 ("gloox" ,gloox)
4974 ("icu4c" ,icu4c)
4975 ("libpng" ,libpng)
706d6190 4976 ("libsodium" ,libsodium)
bff33e6c
CL
4977 ("libvorbis" ,libvorbis)
4978 ("libxcursor" ,libxcursor)
4979 ("libxml2" ,libxml2)
4980 ("miniupnpc" ,miniupnpc)
4981 ("mozjs-38" ,mozjs-38)
4982 ("openal" ,openal)
4983 ("sdl2" ,sdl2)
4984 ("wxwidgets" ,wxwidgets)
4985 ("zlib" ,zlib)))
4986 (native-inputs
4987 `(("boost" ,boost)
c69959f0 4988 ("cmake" ,cmake-minimal)
bff33e6c
CL
4989 ("mesa" ,mesa)
4990 ("pkg-config" ,pkg-config)
4991 ("python-2" ,python-2)))
4992 (build-system gnu-build-system)
4993 (arguments
809b8842
CB
4994 `(#:make-flags '("config=release" "verbose=1" "-C" "build/workspaces/gcc")
4995 #:phases
bff33e6c
CL
4996 (modify-phases %standard-phases
4997 (add-after 'unpack 'delete-bundles
4998 (lambda _
4999 (delete-file-recursively "libraries/source/spidermonkey")
5000 #t))
5001 (add-after 'unpack 'fix-x11-includes
5002 (lambda _
5003 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5004 (("<Xlib.h>") "<X11/Xlib.h>"))
5005 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5006 (("<Xatom.h>") "<X11/Xatom.h>"))
5007 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5008 (("<Xcursor/Xcursor.h>") "<X11/Xcursor/Xcursor.h>"))
5009 #t))
5010 (replace 'configure
5011 (lambda* (#:key inputs outputs #:allow-other-keys)
5012 (let* ((jobs (number->string (parallel-job-count)))
5013 (out (assoc-ref outputs "out"))
5014 (lib (string-append out "/lib"))
5015 (data (string-append out "/share/0ad")))
5016 (setenv "JOBS" (string-append "-j" jobs))
5017 (setenv "CC" "gcc")
5018 (with-directory-excursion "build/workspaces"
7b67bb1f
RW
5019 (invoke "./update-workspaces.sh"
5020 (string-append "--libdir=" lib)
5021 (string-append "--datadir=" data)
5022 ;; TODO: "--with-system-nvtt"
5023 "--with-system-mozjs38")))))
bff33e6c
CL
5024 (delete 'check)
5025 (replace 'install
5026 (lambda* (#:key inputs outputs #:allow-other-keys)
809b8842 5027 (chdir "binaries")
bff33e6c
CL
5028 (let* ((out (assoc-ref outputs "out"))
5029 (bin (string-append out "/bin"))
5030 (lib (string-append out "/lib"))
5031 (data (string-append out "/share/0ad"))
5032 (applications (string-append out "/share/applications"))
5033 (pixmaps (string-append out "/share/pixmaps"))
5034 (0ad-data (assoc-ref inputs "0ad-data")))
5035 ;; data
5036 (copy-recursively "data" data)
5037 (for-each (lambda (file)
5038 (symlink (string-append 0ad-data "/" file)
5039 (string-append data "/" file)))
5040 '("config" "mods/mod" "mods/public" "tools"))
5041 ;; libraries
5042 (for-each (lambda (file)
5043 (install-file file lib))
5044 (find-files "system" "\\.so$"))
5045 ;; binaries
5046 (install-file "system/pyrogenesis" bin)
5047 (with-directory-excursion bin
5048 (symlink "pyrogenesis" "0ad"))
5049 ;; resources
5050 (with-directory-excursion "../build/resources"
5051 (install-file "0ad.desktop" applications)
5052 (install-file "0ad.png" pixmaps))
5053 #t)))
5054 (add-after 'install 'check
5055 (lambda _
5056 (with-directory-excursion "system"
7b67bb1f 5057 (invoke "./test")))))))
bff33e6c
CL
5058 (home-page "https://play0ad.com")
5059 (synopsis "3D real-time strategy game of ancient warfare")
5060 (description "0 A.D. is a real-time strategy (RTS) game of ancient
5061warfare. It's a historically-based war/economy game that allows players to
5062relive or rewrite the history of twelve ancient civilizations, each depicted
5063at their peak of economic growth and military prowess.
5064
50650ad needs a window manager that supports 'Extended Window Manager Hints'.")
5066 (license (list license:bsd-2
5067 license:bsd-3
5068 license:expat
5069 license:gpl2+
5070 license:ibmpl1.0
5071 license:isc
5072 license:lgpl2.1
5073 license:lgpl3
5074 license:mpl2.0
5075 license:zlib))))
dec63df4 5076
5077;; There have been no official releases.
5078(define-public open-adventure
be6e2c30 5079 (let* ((commit "d43854f0f6bb8e9eea7fbce80348150e7e7fc34d")
5080 (revision "2"))
dec63df4 5081 (package
5082 (name "open-adventure")
5083 (version (string-append "2.5-" revision "." (string-take commit 7)))
5084 (source (origin
5085 (method git-fetch)
5086 (uri (git-reference
5087 (url "https://gitlab.com/esr/open-adventure")
5088 (commit commit)))
5089 (file-name (string-append name "-" version "-checkout"))
5090 (sha256
5091 (base32
be6e2c30 5092 "08bwrvf4axb1rsfd6ia1fddsky9pc1p350vjskhaakg2czc6dsk0"))))
dec63df4 5093 (build-system gnu-build-system)
5094 (arguments
5095 `(#:make-flags (list "CC=gcc")
5096 #:parallel-build? #f ; not supported
5097 #:phases
5098 (modify-phases %standard-phases
be6e2c30 5099 (replace 'configure
5100 (lambda* (#:key inputs outputs #:allow-other-keys)
6b1c3efa 5101 ;; Linenoise is meant to be included, so we have to
5102 ;; copy it into the working directory.
be6e2c30 5103 (let* ((linenoise (assoc-ref inputs "linenoise"))
5104 (noisepath (string-append linenoise "/include/linenoise"))
5105 (out (assoc-ref outputs "out")))
5106 (copy-recursively noisepath "linenoise"))
5107 #t))
dec63df4 5108 (add-before 'build 'use-echo
5109 (lambda _
5110 (substitute* "tests/Makefile"
5111 (("/bin/echo") (which "echo")))
5112 #t))
5113 (add-after 'build 'build-manpage
5114 (lambda _
5115 ;; This target is missing a dependency
5116 (substitute* "Makefile"
be6e2c30 5117 ((".adoc.6:" line)
5118 (string-append line " advent.adoc")))
27cd31e6 5119 (invoke "make" ".adoc.6")))
dec63df4 5120 ;; There is no install target
5121 (replace 'install
5122 (lambda* (#:key outputs #:allow-other-keys)
5123 (let* ((out (assoc-ref outputs "out"))
5124 (bin (string-append out "/bin"))
5125 (man (string-append out "/share/man/man6")))
5126 (install-file "advent" bin)
5127 (install-file "advent.6" man))
5128 #t)))))
5129 (native-inputs
be6e2c30 5130 `(("asciidoc" ,asciidoc)
5131 ("linenoise" ,linenoise)
5132 ("python" ,python)
5133 ("python-pyyaml" ,python-pyyaml)))
dec63df4 5134 (home-page "https://gitlab.com/esr/open-adventure")
5135 (synopsis "Colossal Cave Adventure")
5136 (description "The original Colossal Cave Adventure from 1976 was the
5137origin of all text adventures, dungeon-crawl (computer) games, and
5138computer-hosted roleplaying games. This is the last version released by
5139Crowther & Woods, its original authors, in 1995. It has been known as
5140\"adventure 2.5\" and \"430-point adventure\".")
5141 (license license:bsd-2))))
1f88f189 5142
649220ad 5143(define-public tome4
1f88f189 5144 (package
649220ad 5145 (name "tome4")
37515553 5146 (version "1.6.4")
1f88f189
OP
5147 (synopsis "Single-player, RPG roguelike game set in the world of Eyal")
5148 (source
5149 (origin
5150 (method url-fetch)
5151 (uri (string-append "https://te4.org/dl/t-engine/t-engine4-src-"
5152 version ".tar.bz2"))
5153 (sha256
5154 (base32
37515553 5155 "1hrh79aqmvwwd7idlr3lzpdpc9dgm1k5p7w2462chcjvd8vhfhb7"))
1f88f189
OP
5156 (modules '((guix build utils)))
5157 (snippet
6cbee49d
MW
5158 '(begin
5159 (substitute* '("src/music.h" "src/tSDL.h")
5160 (("#elif defined(__FreeBSD__)" line)
5161 (string-append
5162 line " || defined(__GNUC__)")))
19c0cdb9
OP
5163 (substitute* '("src/tgl.h")
5164 (("#include <GL/glext.h>") ""))
6cbee49d 5165 #t))))
1f88f189
OP
5166 (build-system gnu-build-system)
5167 (native-inputs
5168 `(("unzip" ,unzip)))
5169 (inputs
5170 `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
5171 ("glu" ,glu)
5172 ("premake4" ,premake4)
5173 ("openal" ,openal)
5174 ("vorbis" ,libvorbis)
5175 ("luajit" ,luajit)))
5176 (arguments
5177 `(#:make-flags '("CC=gcc" "config=release")
ba73c434
MB
5178 ;; XXX: Building in parallel occasionally causes this build failure:
5179 ;; ../src/luajit2/src/host/buildvm.c:73:10: fatal error: buildvm_arch.h:
5180 ;; No such file or directory
5181 #:parallel-build? #f
1f88f189 5182 #:phases (modify-phases %standard-phases
972b87b1 5183 (delete 'bootstrap)
1f88f189
OP
5184 (replace 'configure
5185 (lambda _
13a504af 5186 (invoke "premake4" "gmake")
1f88f189
OP
5187 #t))
5188 (add-after 'set-paths 'set-sdl-paths
5189 (lambda* (#:key inputs #:allow-other-keys)
5190 (setenv "CPATH"
5191 (string-append (assoc-ref inputs "sdl-union")
fa0d5854
MB
5192 "/include/SDL2:"
5193 (getenv "CPATH")))
1f88f189
OP
5194 #t))
5195 (delete 'check)
5196 ;; premake doesn't provide install target
5197 (replace 'install
5198 (lambda* (#:key inputs outputs #:allow-other-keys)
5199 (let* ((out (assoc-ref outputs "out"))
5200 (usr (string-append out "/usr"))
5201 (bin (string-append out "/bin"))
5202 (licenses (string-append out "/share/licenses"))
5203 (documents (string-append out "/share/doc"))
5204 (pixmaps (string-append out "/share/pixmaps"))
5205 (icon "te4-icon.png")
5206 (data (string-append out "/share/" ,name))
5207 (applications (string-append
5208 out "/share/applications"))
5209 (unzip (string-append
5210 (assoc-ref inputs "unzip") "/bin/unzip"))
5211 (wrapper (string-append bin "/" ,name)))
5212 ;; icon
5213 (mkdir-p pixmaps)
5214 (system* unzip "-j"
5215 (string-append
5216 "game/engines/te4-" ,version ".teae")
5217 (string-append
5218 "data/gfx/" icon) "-d" pixmaps)
5219 ;; game executable
5220 (install-file "t-engine" data)
5221 (mkdir-p bin)
5222 (with-output-to-file wrapper
5223 (lambda ()
5224 (display
5225 (string-append
5226 "#!/bin/sh\n"
5227 ;; No bootstrap code found,
5228 ;; defaulting to working directory
5229 ;; for engine code!
5230 "cd " data "\n"
5231 "exec -a tome4 ./t-engine \"$@\"\n"))))
5232 (chmod wrapper #o555)
5233 ;; licenses
5234 (for-each (lambda (file)
5235 (install-file file licenses))
5236 '("COPYING" "COPYING-MEDIA"))
5237 ;; documents
5238 (for-each (lambda (file)
5239 (install-file file documents))
5240 '("CONTRIBUTING" "CREDITS"))
5241 ;; data
5242 (copy-recursively "bootstrap" (string-append
5243 data "/bootstrap"))
5244 (copy-recursively "game" (string-append data "/game"))
5245 ;; launcher
5246 (mkdir-p applications)
5247 (with-output-to-file (string-append applications "/"
5248 ,name ".desktop")
5249 (lambda ()
5250 (display
5251 (string-append
5252 "[Desktop Entry]
5253Name=ToME4
5254Comment=" ,synopsis "\n"
5255"Exec=" ,name "\n"
5256"Icon=" icon "\n"
5257"Terminal=false
5258Type=Application
5259Categories=Game;RolePlaying;\n")))))
5260 #t)))))
5261 (home-page "https://te4.org")
5262 (description "Tales of Maj’Eyal (ToME) RPG, featuring tactical turn-based
5263combat and advanced character building. Play as one of many unique races and
5264classes in the lore-filled world of Eyal, exploring random dungeons, facing
5265challenging battles, and developing characters with your own tailored mix of
5266abilities and powers. With a modern graphical and customisable interface,
5267intuitive mouse control, streamlined mechanics and deep, challenging combat,
5268Tales of Maj’Eyal offers engaging roguelike gameplay for the 21st century.")
5269 (license license:gpl3+)))
7a070f02 5270
649220ad
NG
5271(define-public tales-of-maj-eyal
5272 (deprecated-package "tales-of-maj-eyal" tome4))
f6a21d61 5273
7a070f02 5274(define-public quakespasm
5275 (package
5276 (name "quakespasm")
1b915698 5277 (version "0.93.1")
7a070f02 5278 (source
5279 (origin
5280 (method url-fetch)
5281 (uri (string-append "mirror://sourceforge/quakespasm/Source/quakespasm-"
5282 version ".tgz"))
5283 (sha256
5284 (base32
1b915698 5285 "1bimv18f6rzhyjz78yvw2vqr5n0kdqbcqmq7cb3m951xgsxfcgpd"))))
7a070f02 5286 (arguments
5287 `(#:tests? #f
5288 #:make-flags '("CC=gcc"
5289 "MP3LIB=mpg123"
5290 "USE_CODEC_FLAC=1"
5291 "USE_CODEC_MIKMOD=1"
5292 "USE_SDL2=1"
5293 "-CQuake")
5294 #:phases (modify-phases %standard-phases
5295 (delete 'configure)
5296 (add-after 'unpack 'fix-makefile-paths
5297 (lambda* (#:key outputs #:allow-other-keys)
5298 (let ((out (assoc-ref outputs "out")))
5299 (mkdir-p (string-append out "/bin"))
5300 (substitute* "Quake/Makefile"
5301 (("/usr/local/games")
5302 (string-append out "/bin")))
5303 #t))))))
5304 (build-system gnu-build-system)
5305 (inputs `(("libmikmod" ,libmikmod)
5306 ("libvorbis" ,libvorbis)
5307 ("flac" ,flac)
5308 ("mesa" ,mesa)
5309 ("mpg123" ,mpg123)
5310 ("sdl2" ,sdl2)))
5311 (synopsis "First person shooter engine for Quake 1")
5312 (description "Quakespasm is a modern engine for id software's Quake 1.
5313It includes support for 64 bit CPUs, custom music playback, a new sound driver,
5314some graphical niceities, and numerous bug-fixes and other improvements.")
5315 (home-page "http://quakespasm.sourceforge.net/")
5316 (license license:gpl2+)))
916bb947 5317
7a6be5b9
RH
5318(define-public vkquake
5319 (package
5320 (inherit quakespasm)
5321 (name "vkquake")
3e7b376e 5322 (version "1.01.0")
7a6be5b9
RH
5323 (source
5324 (origin
f5e1a0e5
TGR
5325 (method git-fetch)
5326 (uri (git-reference
5327 (url "https://github.com/Novum/vkQuake.git")
5328 (commit version)))
5329 (file-name (git-file-name name version))
7a6be5b9 5330 (sha256
f5e1a0e5 5331 (base32 "1iwin8j5kbyrknbkhjgpy8nmm7pxqzr0daa9gn7p38qhg2mh0a39"))))
7a6be5b9
RH
5332 (arguments
5333 `(#:make-flags
5334 (let ((vulkanlib (string-append (assoc-ref %build-inputs
e6fcf903 5335 "vulkan-loader") "/lib")))
7a6be5b9
RH
5336 (list "CC=gcc"
5337 "MP3LIB=mpg123"
5338 "USE_CODEC_FLAC=1"
5339 "USE_CODEC_MIKMOD=1"
5340 "USE_SDL2=1"
5341 (string-append "LDFLAGS=-Wl,-rpath=" vulkanlib)
5342 "-CQuake"))
5343 #:phases (modify-phases %standard-phases
5344 (delete 'configure)
5345 (add-after 'unpack 'fix-makefile-paths
5346 (lambda* (#:key outputs #:allow-other-keys)
5347 (let ((vulkan (assoc-ref %build-inputs
e6fcf903 5348 "vulkan-loader"))
7a6be5b9
RH
5349 (out (assoc-ref outputs "out")))
5350 (mkdir-p (string-append out "/bin"))
5351 (substitute* "Quake/Makefile" ((" /usr")
5352 (string-append " " out)))
5353 (substitute* "Quake/Makefile" (("/games")
5354 (string-append "/bin")))
5355 (substitute* "Quake/Makefile" (("..VULKAN_SDK.") vulkan))
5356 #t))))
5357 ,@(strip-keyword-arguments '(#:make-flags #:phases)
5358 (package-arguments quakespasm))))
4108886b
RH
5359 (inputs `(("vulkan-headers" ,vulkan-headers)
5360 ("vulkan-loader" ,vulkan-loader)
7a6be5b9
RH
5361 ,@(package-inputs quakespasm)))
5362 (description "vkquake is a modern engine for id software's Quake 1.
5363It includes support for 64 bit CPUs, custom music playback, a new sound driver,
5364some graphical niceities, and numerous bug-fixes and other improvements.")
5365 (home-page "https://github.com/Novum/vkQuake")))
5366
916bb947 5367(define-public yamagi-quake2
5368 (package
5369 (name "yamagi-quake2")
5370 (version "7.10")
5371 (source
5372 (origin
5373 (method url-fetch)
5374 (uri (string-append "https://deponie.yamagi.org/quake2/quake2-"
5375 version ".tar.xz"))
5376 (sha256
5377 (base32
5378 "0psinbg25mysd58k99s1n34w31w5hj1vppb39gdjb0zqi6sl6cps"))))
5379 (build-system gnu-build-system)
5380 (arguments
5381 `(#:tests? #f
5382 #:make-flags
5383 (list "CC=gcc"
5384 ;; link openAL instead of using dlopen at runtime
5385 "DLOPEN_OPENAL=\"no\""
5386 ;; an optional directory where it will look for quake2 data files
5387 ;; in addition to the current working directory
5388 "WITH_SYSTEMWIDE=yes"
5389 "WITH_SYSTEMDIR=\"/opt/quake2\"")
5390 #:phases
5391 (modify-phases %standard-phases
5392 (delete 'configure)
5393 (replace 'install
5394 (lambda* (#:key outputs #:allow-other-keys)
5395 (let ((out (assoc-ref outputs "out")))
5396 (mkdir-p (string-append out "/lib"))
5397 (mkdir-p (string-append out "/bin"))
5398 ;; The yamagi-quake2 binary must be in the same directory
5399 ;; as it's engine libraries, but symlinking it to /bin is okay
5400 ;; https://github.com/yquake2/yquake2/blob/master/stuff/packaging.md
5401 (copy-recursively "release"
5402 (string-append out "/lib/yamagi-quake2"))
5403 (symlink (string-append out "/lib/yamagi-quake2/quake2")
5404 (string-append out "/bin/yamagi-quake2"))
5405 (symlink (string-append out "/lib/yamagi-quake2/q2ded")
5406 (string-append out "/bin/yamagi-q2ded"))))))))
5407 (inputs `(("sdl2" ,sdl2)
5408 ("mesa" ,mesa)
5409 ("libvorbis" ,libvorbis)
5410 ("zlib" ,zlib)
5411 ("openal" ,openal)))
5412 (native-inputs `(("pkg-config" ,pkg-config)))
5413 (synopsis "First person shooter engine based on quake2")
5414 (description "Yamagi Quake II is an enhanced client for id Software's Quake II.
5415The main focus is an unchanged single player experience like back in 1997,
5416thus the gameplay and the graphics are unaltered. However the user may use one
5417of the unofficial retexturing packs. In comparison with the official client,
5418over 1000 bugs were fixed and an extensive code audit done,
5419making Yamagi Quake II one of the most solid Quake II implementations available.")
5420 (home-page "https://www.yamagi.org/quake2/")
5421 (license (list license:gpl2+ ; game and server
5422 (license:non-copyleft ; info-zip
5423 "file://LICENSE"
5424 "See Info-Zip section.")
5425 license:public-domain)))) ; stb
c1228231 5426
e7448859
MIP
5427(define-public nudoku
5428 (package
5429 (name "nudoku")
5430 (version "1.0.0")
5431 (source (origin
5432 (method url-fetch)
5433 (uri (string-append "https://github.com/jubalh/nudoku/"
5434 "releases/download/" version
5435 "/nudoku-" version ".tar.xz"))
5436 (sha256
5437 (base32
5438 "0nr2j2z07nxk70s8xnmmpzccxicf7kn5mbwby2kg6aq8paarjm8k"))))
5439 (build-system gnu-build-system)
5440 (inputs `(("ncurses" ,ncurses)))
5441 (home-page "https://jubalh.github.io/nudoku/")
5442 (synopsis "Sudoku for your terminal")
5443 (description "Nudoku is a ncurses-based Sudoku game for your terminal.")
5444 (license license:gpl3+)))
5445
c1228231
NG
5446(define-public the-butterfly-effect
5447 (package
5448 (name "the-butterfly-effect")
5449 (version "0.9.3.1")
5450 (source
5451 (origin
089c6b00
EF
5452 (method git-fetch)
5453 (uri (git-reference
5454 (url "https://github.com/the-butterfly-effect/tbe.git")
5455 (commit (string-append "v" version))))
5456 (file-name (git-file-name name version))
c1228231
NG
5457 (sha256
5458 (base32
089c6b00 5459 "1ag2cp346f9bz9qy6za6q54id44d2ypvkyhvnjha14qzzapwaysj"))))
c1228231
NG
5460 (build-system gnu-build-system)
5461 (arguments
5462 `(#:phases
5463 (modify-phases %standard-phases
5464 (delete 'configure)
5465 ;; There is no "install" phase. By default, tbe is installed
5466 ;; in the build directory. Provide our own installation.
5467 (replace 'install
5468 (lambda* (#:key outputs #:allow-other-keys)
5469 (let* ((out (assoc-ref outputs "out"))
5470 (bin (string-append out "/bin"))
5471 (share (string-append out "/share")))
5472 (install-file "usr/games/tbe" bin)
5473 (mkdir-p share)
5474 (copy-recursively "usr/share" share)
5475 #t))))
5476 ;; Test suite requires a running Xorg server. Even when
5477 ;; provided, it fails with "D-Bus library appears to be
5478 ;; incorrectly set up; failed to read machine uuid: Failed to
5479 ;; open "/etc/machine-id": No such file or directory" along
5480 ;; with multiple "QPainter:: ... Painter not active" warnings.
5481 #:tests? #f))
5482 (inputs
5483 `(("qtbase" ,qtbase)
5484 ("qtsvg" ,qtsvg)))
5485 (native-inputs
c69959f0 5486 `(("cmake" ,cmake-minimal)
c1228231
NG
5487 ("gettext-minimal" ,gettext-minimal)
5488 ("qttools" ,qttools)))
5489 (synopsis "Realistic physics puzzle game")
5490 (description "The Butterfly Effect (tbe) is a game that uses
5491realistic physics simulations to combine lots of simple mechanical
5492elements to achieve a simple goal in the most complex way possible.")
5493 (home-page "http://the-butterfly-effect.org/")
5494 ;; Main license is GPL2-only. However, artwork is distributed
5495 ;; under various licenses, listed here.
5496 (license (list license:gpl2 license:public-domain license:expat
5497 license:cc-by-sa3.0 license:gpl3+ license:wtfpl2))))
aac1aa75
EB
5498
5499(define-public pioneer
5500 (package
5501 (name "pioneer")
ed3e7b72 5502 (version "20190203")
aac1aa75 5503 (source (origin
6a03ccf4
EB
5504 (method git-fetch)
5505 (uri (git-reference
5506 (url "https://github.com/pioneerspacesim/pioneer.git")
5507 (commit version)))
5508 (file-name (git-file-name name version))
aac1aa75
EB
5509 (sha256
5510 (base32
ed3e7b72
EB
5511 "1g34wvgyvz793dhm1k64kl82ib0cavkbg0f2p3fp05b457ycljff"))))
5512 (build-system cmake-build-system)
aac1aa75 5513 (native-inputs
ed3e7b72 5514 `(("pkg-config" ,pkg-config)))
aac1aa75
EB
5515 (inputs
5516 `(("assimp" ,assimp)
5517 ("curl" ,curl)
5518 ("freetype" ,freetype)
ed3e7b72 5519 ("glew" ,glew)
aac1aa75
EB
5520 ("glu" ,glu)
5521 ("libpng" ,libpng)
5522 ("libsigc++" ,libsigc++)
5523 ("libvorbis" ,libvorbis)
5524 ("lua" ,lua-5.2) ;not compatible with 5.3
5525 ("mesa" ,mesa)
5526 ("sdl" ,(sdl-union (list sdl2 sdl2-image)))))
5527 (arguments
5528 `(#:tests? #f ;tests are broken
ed3e7b72
EB
5529 #:configure-flags (list "-DUSE_SYSTEM_LIBLUA:BOOL=YES"
5530 (string-append "-DPIONEER_DATA_DIR="
5531 %output "/share/games/pioneer"))))
aac1aa75
EB
5532 (home-page "http://pioneerspacesim.net")
5533 (synopsis "Game of lonely space adventure")
5534 (description
5535 "Pioneer is a space adventure game set in our galaxy at the turn of the
553631st century. The game is open-ended, and you are free to eke out whatever
5537kind of space-faring existence you can think of. Look for fame or fortune by
5538exploring the millions of star systems. Turn to a life of crime as a pirate,
5539smuggler or bounty hunter. Forge and break alliances with the various
5540factions fighting for power, freedom or self-determination. The universe is
5541whatever you make of it.")
5542 (license license:gpl3)))
57f9671d 5543
5544(define-public badass
5545 (let ((commit "3c3cd669b4fc8f73a102e3702788f7b28dc47dbb")
5546 (revision "0"))
5547 (package
5548 (name "badass")
5549 (version (git-version "0.0" revision commit))
5550 (source (origin
5551 (method git-fetch)
5552 (uri (git-reference
5553 (url "https://github.com/umayr/badass.git")
5554 (commit commit)))
5555 (file-name (git-file-name name version))
5556 (sha256
5557 (base32
5558 "05c9vdcb5ym3z0n5ll3v39mw4yl9jcjnlydmn0yl89ai9pv71zb6"))))
5559 (build-system go-build-system)
5560 (arguments
5561 '(#:import-path "github.com/umayr/badass"))
5562 (synopsis "Hacking contribution graphs in git")
5563 (description
5564 "Badass generates false commits for a range of dates, essentially
5565hacking the gamification of contribution graphs on platforms such as
5566Github or Gitlab.")
5567 (home-page "https://github.com/umayr/badass")
5568 (license license:expat))))
fa7d8ea1
NG
5569
5570(define-public colobot
5571 (package
5572 (name "colobot")
2dad4c91 5573 (version "0.1.12-alpha")
fa7d8ea1
NG
5574 (source
5575 (origin
2dad4c91
NG
5576 (method git-fetch)
5577 (uri (git-reference
5578 (url "https://github.com/colobot/colobot.git")
5579 (commit (string-append "colobot-gold-" version))
5580 (recursive? #t))) ;for "data/" subdir
5581 (file-name (git-file-name name version))
fa7d8ea1
NG
5582 (sha256
5583 (base32
2dad4c91 5584 "1c181cclkrnspgs07lvndg2c81cjq3smkv7qim8c470cj88rcrp2"))))
fa7d8ea1
NG
5585 (build-system cmake-build-system)
5586 (arguments
5587 `(#:tests? #f ;no test
5588 #:phases
5589 (modify-phases %standard-phases
2dad4c91
NG
5590 (add-after 'unpack 'make-git-checkout-writable
5591 (lambda _
5592 (for-each make-file-writable (find-files "."))
5593 #t))
5594 (add-after 'unpack 'fix-directories
5595 (lambda _
5596 (substitute* "CMakeLists.txt"
5597 (("(\\$\\{CMAKE_INSTALL_PREFIX\\})/games" _ prefix)
5598 (string-append prefix "/bin"))
5599 (("(\\$\\{CMAKE_INSTALL_PREFIX\\}/share)/games/colobot" _ prefix)
5600 (string-append prefix "/colobot")))
5601 #t))
5602 (add-after 'fix-directories 'install-music
5603 ;; Retrieve and install music files.
fa7d8ea1
NG
5604 (lambda* (#:key inputs #:allow-other-keys)
5605 ;; Installation process tries to download music files using
2dad4c91
NG
5606 ;; "wget" if not already present. Since we are going another
5607 ;; route, skip "wget" command check.
fa7d8ea1
NG
5608 (substitute* "data/music/CMakeLists.txt"
5609 (("find_program\\(WGET wget\\)") ""))
2dad4c91 5610 ;; Populate "music/" directory.
fa7d8ea1 5611 (let ((data (assoc-ref inputs "colobot-music")))
2dad4c91
NG
5612 (invoke "tar" "-xvf" data "-Cdata/music"))
5613 #t)))))
fa7d8ea1 5614 (native-inputs
2dad4c91 5615 `(("colobot-music"
fa7d8ea1
NG
5616 ,(origin
5617 (method url-fetch)
5618 (uri (string-append "https://colobot.info/files/music/"
5619 "colobot-music_ogg_" version ".tar.gz"))
5620 (sha256
5621 (base32
5622 "1s86cd36rwkff329mb1ay1wi5qqyi35564ppgr3f4qqz9wj9vs2m"))))
5623 ("gettext" ,gettext-minimal)
5624 ("librsvg" ,librsvg)
5625 ("po4a" ,po4a)
5626 ("python" ,python-wrapper)))
5627 (inputs
5628 `(("boost" ,boost)
5629 ("glew" ,glew)
5630 ("libogg" ,libogg)
5631 ("libpng" ,libpng)
5632 ("libsndfile" ,libsndfile)
5633 ("libvorbis" ,libvorbis)
5634 ("openal" ,openal)
5635 ("physfs" ,physfs)
5636 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-ttf)))))
5637 (synopsis "Educational programming strategy game")
5638 (description "Colobot: Gold Edition is a real-time strategy game, where
5639you can program your units (bots) in a language called CBOT, which is similar
5640to C++ and Java. Your mission is to find a new planet to live and survive.
5641You can save humanity and get programming skills!")
5642 (home-page "https://colobot.info")
5643 (license license:gpl3+)))
2922852e 5644
5645(define-public gzdoom
5646 (package
5647 (name "gzdoom")
6c177f61 5648 (version "3.7.2")
2922852e 5649 (source (origin
5650 (method url-fetch)
5651 (uri
6c177f61 5652 (string-append "https://zdoom.org/files/gzdoom/src/gzdoom-src-g"
2922852e 5653 version ".zip"))
5654 (sha256
5655 (base32
6c177f61 5656 "0182f160m8d0c3nywjw3dxvnz93xjs4cn8akx7137cha4s05wdq7"))
2922852e 5657 (patches (search-patches "gzdoom-search-in-installed-share.patch"))
5658 (modules '((guix build utils)))
5659 (snippet
5660 '(begin
5661 (delete-file-recursively "bzip2")
5662 (delete-file-recursively "game-music-emu")
6c177f61 5663 (delete-file-recursively "jpeg")
6cbee49d
MW
5664 (delete-file-recursively "zlib")
5665 #t))))
2922852e 5666 (arguments
5667 '(#:tests? #f
5668 #:configure-flags
5669 (let ((out (assoc-ref %outputs "out")))
5670 (list
5671 (string-append
5672 "-DCMAKE_CXX_FLAGS:="
5673 "-DSHARE_DIR=\\\"" out "/share/\\\" "
5674 "-DGUIX_OUT_PK3=\\\"" out "/share/games/doom\\\"")
5675 ;; look for libraries at buildtime instead of
5676 ;; dynamically finding them at runtime
5677 "-DDYN_OPENAL=OFF"
5678 "-DDYN_FLUIDSYNTH=OFF"
5679 "-DDYN_GTK=OFF"
5680 "-DDYN_MPG123=OFF"
5681 "-DDYN_SNDFILE=OFF"))
5682 #:phases
5683 (modify-phases %standard-phases
5684 (add-before 'configure 'fix-referenced-paths
5685 (lambda* (#:key inputs outputs #:allow-other-keys)
5686 (let ((fluid-3 (assoc-ref inputs "fluid-3"))
5687 (timidity++ (assoc-ref inputs "timidity++"))
5688 (out (assoc-ref outputs "out")))
5689
5690 (substitute*
5691 "src/CMakeLists.txt"
5692 (("COMMAND /bin/sh")
5693 (string-append "COMMAND " (which "sh"))))
5694
5695 (substitute*
5696 "src/sound/mididevices/music_fluidsynth_mididevice.cpp"
5697 (("/usr/share/sounds/sf2/FluidR3_GM.sf2")
5698 (string-append fluid-3 "/share/soundfonts/FluidR3Mono_GM.sf3")))
5699
5700 (substitute*
5701 "src/sound/mididevices/music_timiditypp_mididevice.cpp"
5702 (("exename = \"timidity\"")
5703 (string-append "exename = \"" timidity++ "/bin/timidity\"")))
5704 #t))))))
5705 (build-system cmake-build-system)
5706 (inputs `(("bzip2" ,bzip2)
5707 ("fluid-3" ,fluid-3)
9b6dc31b 5708 ("fluidsynth" ,fluidsynth-1) ;XXX: try using 2.x when updating
2922852e 5709 ("gtk+3" ,gtk+)
5710 ("libgme" ,libgme)
5711 ("libjpeg" ,libjpeg)
5712 ("libsndfile" ,libsndfile)
5713 ("mesa" ,mesa)
5714 ("mpg123" ,mpg123)
5715 ("openal" ,openal)
5716 ("sdl2" ,sdl2)
5717 ("timidity++" ,timidity++)
5718 ("zlib" ,zlib)))
5719 (native-inputs `(("pkg-config" ,pkg-config)
5720 ("unzip" ,unzip)))
5721 (synopsis "Modern Doom 2 source port")
5722 (description "GZdoom is a port of the Doom 2 game engine, with a modern
5723renderer. It improves modding support with ZDoom's advanced mapping features
5724and the new ZScript language. In addition to Doom, it supports Heretic, Hexen,
5725Strife, Chex Quest, and fan-created games like Harmony, Hacx and Freedoom.")
5726 (home-page "https://zdoom.org/index")
642b195a
EF
5727 ;; The source uses x86 assembly
5728 (supported-systems '("x86_64-linux" "i686-linux"))
2922852e 5729 (license (list license:gpl3+ ; gzdoom game
5730 license:lgpl3+ ; gzdoom renderer
5731 license:expat ; gdtoa
5732 (license:non-copyleft ; modified dumb
5733 "file://dumb/licence.txt"
5734 "Dumb license, explicitly GPL compatible.")))))
b1642338 5735
6f565d6c
P
5736(define-public odamex
5737 (package
5738 (name "odamex")
5739 (version "0.8.0")
5740 (source
5741 (origin
5742 (method url-fetch)
5743 (uri (string-append
5744 "mirror://sourceforge/odamex/Odamex/" version "/"
5745 "odamex-src-" version ".tar.gz"))
5746 (sha256
5747 (base32
5748 "1sh6lqj7vsdmnqz17hw0b6vy7xx6dp41k2sdw99ympsfa2xd1d2j"))))
5749 (build-system cmake-build-system)
5750 (arguments `(#:tests? #f)) ; no tests.
5751 (inputs
5752 `(("sdl" ,sdl)
5753 ("sdl-mixer" ,sdl-mixer)
5754 ("zlib" ,zlib)
5755 ("libpng" ,libpng)
5756 ("alsa-lib" ,alsa-lib)))
5757 (home-page "https://odamex.net/")
5758 (synopsis "Multiplayer Doom port")
5759 (description "Odamex is a modification of the Doom engine that
5760allows players to easily join servers dedicated to playing Doom
5761online.")
5762 (license license:gpl2+)))
5763
fc16bbb7
JK
5764(define-public chocolate-doom
5765 (package
5766 (name "chocolate-doom")
5767 (version "3.0.0")
5768 (source (origin
5769 (method url-fetch)
5770 (uri (string-append "https://www.chocolate-doom.org/downloads/"
5771 version
5772 "/chocolate-doom-"
5773 version
5774 ".tar.gz"))
5775 (sha256
5776 (base32
5777 "1f6sw6qa9z0a70dsjh5cs45fkyyxw68s7vkqlykihz8cjcisdbkk"))))
5778 (build-system gnu-build-system)
5779 (inputs `(("sdl2-net" ,sdl2-net)
5780 ("sdl2-mixer" , sdl2-mixer)
5781 ("sdl2" ,sdl2)))
5782 (native-inputs
5783 `(("pkg-config" ,pkg-config)))
5784 (synopsis "Doom source port preserving the look, feel, and bugs of vanilla
5785Doom")
5786 (description
5787 "Chocolate Doom takes a different approach to other source ports. Its
5788aim is to accurately reproduce the experience of playing Vanilla Doom. It is
5789a conservative, historically accurate Doom source port, which is compatible
5790with the thousands of mods and levels that were made before the Doom source
5791code was released. Rather than flashy new graphics, Chocolate Doom's main
5792features are its accurate reproduction of the game as it was played in the
57931990s. The project is developed around a carefully-considered philosophy that
5794intentionally restricts which features may be added (and rejects any that
5795affect gameplay).")
5796 (home-page "https://www.chocolate-doom.org/wiki/index.php/Chocolate_Doom")
5797 (license license:gpl2)))
5798
3f9a027c
DF
5799(define-public crispy-doom
5800 (package
5801 (inherit chocolate-doom)
5802 (name "crispy-doom")
fbdc87a7 5803 (version "5.6.3")
3f9a027c
DF
5804 (source (origin
5805 (method git-fetch)
5806 (uri (git-reference
5807 (url "https://github.com/fabiangreffrath/crispy-doom.git")
5808 (commit (string-append "crispy-doom-" version))))
5809 (file-name (git-file-name name version))
5810 (sha256
fbdc87a7 5811 (base32 "0f319979wqfgm4pvsa6y5clg30p55l441kmrr8db0p5smyv3x2s4"))))
3f9a027c
DF
5812 (native-inputs
5813 (append
5814 (package-native-inputs chocolate-doom)
5815 `(("automake" ,automake)
5816 ("autoreconf" ,autoconf))))
5817 (arguments
5818 `(#:phases
5819 (modify-phases %standard-phases
5820 (replace 'bootstrap
5821 ;; the autogen.sh script in the source tree doesn't work
5822 (lambda _ (invoke "autoreconf" "-vif"))))))
5823 (synopsis "Limit-removing enhanced-resolution Doom source port based on
5824Chocolate Doom")
5825 (description
5826 "Crispy Doom is a friendly fork of Chocolate Doom that provides a higher
5827display resolution, removes the static limits of the Doom engine and offers
5828further optional visual, tactical and physical enhancements while remaining
5829entirely config file, savegame, netplay and demo compatible with the
5830original.")
5831 (home-page "https://www.chocolate-doom.org/wiki/index.php/Crispy_Doom")))
5832
b1642338
PN
5833(define-public fortune-mod
5834 (package
5835 (name "fortune-mod")
81e6ece6 5836 (version "2.6.2")
7e1d376d
TGR
5837 (source
5838 (origin
5839 (method git-fetch)
5840 (uri (git-reference
5841 (url "https://github.com/shlomif/fortune-mod")
a6ac8e0b 5842 (commit (string-append "fortune-mod-" version))))
7e1d376d
TGR
5843 (file-name (git-file-name name version))
5844 (sha256
5845 (base32
81e6ece6 5846 "11xff87s8ifw2dqs90n0rjq0psv4i7ykybygmibsqjj7id3xxw4c"))))
b1642338
PN
5847 (build-system cmake-build-system)
5848 (arguments
5849 `(#:test-target "check"
5850 #:phases
5851 (modify-phases %standard-phases
5852 (add-after 'unpack 'fix-build-env
5853 (lambda* (#:key inputs #:allow-other-keys)
5854 (use-modules (guix build utils))
5855 (let* ((cmake-rules (assoc-ref inputs "cmake-rules")))
5856 (copy-file cmake-rules
5857 (string-append "fortune-mod/cmake/"
5858 (strip-store-file-name cmake-rules)))
abf06df2 5859 (chdir "fortune-mod")
61857323
PN
5860 ;; TODO: Valgrind tests fail for some reason.
5861 ;; Similar issue: https://github.com/shlomif/fortune-mod/issues/21 (?)
5862 (delete-file "tests/t/valgrind.t")
abf06df2 5863 #t)))
b1642338 5864 (add-after 'install 'fix-install-directory
b1642338 5865 (lambda* (#:key outputs #:allow-other-keys)
e08474d6
TGR
5866 ;; Move binary from "games/" to "bin/" and remove the latter. This
5867 ;; is easier than patching CMakeLists.txt since the tests hard-code
5868 ;; the location as well.
5869 (let* ((out (assoc-ref outputs "out"))
5870 (bin (string-append out "/bin"))
5871 (games (string-append out "/games")))
5872 (rename-file (string-append games "/fortune")
5873 (string-append bin "/fortune"))
5874 (rmdir games)
b1642338
PN
5875 #t))))))
5876 (inputs `(("recode" ,recode)))
5877 (native-inputs
5878 `(("perl" ,perl)
5879 ;; The following is only needed for tests.
5880 ("perl-file-find-object" ,perl-file-find-object)
5881 ("perl-test-differences" ,perl-test-differences)
5882 ("perl-class-xsaccessor" ,perl-class-xsaccessor)
5883 ("perl-io-all" ,perl-io-all)
5884 ("perl-test-runvalgrind" ,perl-test-runvalgrind)
5885 ("cmake-rules"
5886 ,(origin
5887 (method url-fetch)
5888 (uri (string-append "https://bitbucket.org/shlomif/shlomif-cmake-modules/"
d5a48184
LC
5889 "raw/c505713d7a7cda608f97f01577e5868a711b883e/"
5890 "shlomif-cmake-modules/Shlomif_Common.cmake"))
b1642338
PN
5891 (sha256
5892 (base32 "0kx9s1qqhhzprp1w3b67xmsns0n0v506bg5hgrshxaxpy6lqiwb2"))))))
5893 (home-page "http://www.shlomifish.org/open-source/projects/fortune-mod/")
5894 (synopsis "The Fortune Cookie program from BSD games")
5895 (description "Fortune is a command-line utility which displays a random
5896quotation from a collection of quotes.")
5897 (license license:bsd-4)))
dc70ff2a 5898
5899(define xonotic-data
5900 (package
5901 (name "xonotic-data")
5902 (version "0.8.2")
5903 (source
5904 (origin
5905 (method url-fetch)
5906 (uri (string-append "http://dl.xonotic.org/xonotic-"
5907 version ".zip"))
5908 (file-name (string-append name "-" version ".zip"))
5909 (sha256
5910 (base32
5911 "1mcs6l4clvn7ibfq3q69k2p0z6ww75rxvnngamdq5ic6yhq74bx2"))))
5912 (build-system trivial-build-system)
5913 (native-inputs
5914 `(("unzip" ,unzip)))
5915 (arguments
5916 `(#:modules ((guix build utils))
5917 #:builder
5918 (begin
5919 (use-modules (guix build utils))
5920 (let* ((out (assoc-ref %outputs "out"))
5921 (xonotic (string-append out "/share/xonotic"))
5922 (source (assoc-ref %build-inputs "source"))
5923 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
5924 (copy-file source (string-append ,name "-" ,version ".zip"))
5925 (invoke unzip (string-append ,name "-" ,version ".zip"))
5926 (mkdir-p out)
5927 (mkdir-p xonotic)
5928 (chdir "Xonotic")
5929 (copy-recursively "data"
5930 (string-append xonotic "/data"))
5931 (copy-recursively "server"
5932 (string-append xonotic "/server"))
5933 (install-file "key_0.d0pk" xonotic)))))
5934 (home-page "http://xonotic.org")
5935 (synopsis "Data files for Xonotic")
5936 (description
5937 "Xonotic-data provides the data files required by the game Xonotic.")
5938 (license (list license:gpl2+
9b9db6c4 5939 (license:x11-style "file://server/rcon.pl")))))
dc70ff2a 5940
5941(define-public xonotic
5942 (package
5943 (name "xonotic")
5944 (version "0.8.2")
5945 (source
5946 (origin
5947 (method url-fetch)
5948 (uri (string-append "http://dl.xonotic.org/xonotic-"
5949 version "-source.zip"))
5950 (file-name (string-append name "-" version ".zip"))
5951 (sha256
5952 (base32
5953 "0axxw04fyz6jlfqd0kp7hdrqa0li31sx1pbipf2j5qp9wvqicsay"))))
5954 (build-system gnu-build-system)
5955 (arguments
5956 `(#:configure-flags (list (string-append "--prefix="
5957 (assoc-ref %outputs "out"))
5958 "--disable-rijndael")
5959 #:phases
5960 (modify-phases %standard-phases
5961 (add-before 'configure 'make-darkplaces
5962 (lambda* (#:key outputs #:allow-other-keys)
5963 (let* ((out (assoc-ref outputs "out"))
5964 (sharedir (string-append out "/share/xonotic/")))
5965 (invoke "make" "-C" "source/darkplaces"
5966 (string-append "DP_FS_BASEDIR="
5967 sharedir)
5968 "DP_LINK_TO_LIBJPEG=1"
5969 "DP_SOUND_API=ALSA"
5970 "CC=gcc"
5971 "-f" "makefile"
5972 "cl-release")
5973 (invoke "make" "-C" "source/darkplaces"
5974 (string-append "DP_FS_BASEDIR="
5975 sharedir)
5976 "DP_LINK_TO_LIBJPEG=1"
5977 "DP_SOUND_API=ALSA"
5978 "CC=gcc"
5979 "-f" "makefile"
5980 "sdl-release")
5981 (invoke "make" "-C" "source/darkplaces"
5982 (string-append "DP_FS_BASEDIR="
5983 sharedir)
5984 "DP_LINK_TO_LIBJPEG=1"
5985 "DP_SOUND_API=ALSA"
5986 "CC=gcc"
5987 "-f" "makefile"
5988 "sv-release"))))
5989 (add-before 'configure 'bootstrap
5990 (lambda _
5991 (chdir "source/d0_blind_id")
5992 (invoke "sh" "autogen.sh")))
5993 (add-after 'build 'install-desktop-entry
5994 (lambda* (#:key outputs #:allow-other-keys)
5995 ;; Add .desktop files for the 2 variants and the symlink
5996 (let* ((output (assoc-ref outputs "out"))
5997 (apps (string-append output "/share/applications")))
5998 (mkdir-p apps)
5999 (with-output-to-file
6000 (string-append apps "/xonotic-glx.desktop")
6001 (lambda _
6002 (format #t
6003 "[Desktop Entry]~@
6004 Name=xonotic-glx~@
6005 Comment=Xonotic glx~@
6006 Exec=~a/bin/xonotic-glx~@
6007 TryExec=~@*~a/bin/xonotic-glx~@
c834bd3b
P
6008 Icon=xonotic~@
6009 Categories=Game~@
dc70ff2a 6010 Type=Application~%"
6011 output)))
6012 (with-output-to-file
6013 (string-append apps "/xonotic-sdl.desktop")
6014 (lambda _
6015 (format #t
6016 "[Desktop Entry]~@
6017 Name=xonotic-sdl~@
6018 Comment=Xonotic sdl~@
6019 Exec=~a/bin/xonotic-sdl~@
6020 TryExec=~@*~a/bin/xonotic-sdl~@
c834bd3b
P
6021 Icon=xonotic~@
6022 Categories=Game~@
dc70ff2a 6023 Type=Application~%"
6024 output)))
6025 (with-output-to-file
6026 (string-append apps "/xonotic.desktop")
6027 (lambda _
6028 (format #t
6029 "[Desktop Entry]~@
6030 Name=xonotic~@
6031 Comment=Xonotic~@
6032 Exec=~a/bin/xonotic-glx~@
6033 TryExec=~@*~a/bin/xonotic~@
c834bd3b
P
6034 Icon=xonotic~@
6035 Categories=Game~@
dc70ff2a 6036 Type=Application~%"
6037 output)))
6038 #t)))
6039 (add-after 'install-desktop-entry 'install-icons
6040 (lambda* (#:key outputs #:allow-other-keys)
6041 (let ((out (assoc-ref outputs "out")))
6042 (with-directory-excursion "../../misc/logos/icons_png/"
6043 (for-each
6044 (lambda (file)
6045 (let* ((size (string-filter char-numeric? file))
6046 (icons (string-append out "/share/icons/hicolor/"
6047 size "x" size "/apps")))
6048 (mkdir-p icons)
6049 (copy-file file (string-append icons "/xonotic.png"))))
6050 '("xonotic_16.png" "xonotic_22.png" "xonotic_24.png"
6051 "xonotic_32.png" "xonotic_48.png" "xonotic_64.png"
6052 "xonotic_128.png" "xonotic_256.png" "xonotic_512.png"))))))
6053 (add-after 'install-icons 'install-binaries
6054 (lambda* (#:key outputs #:allow-other-keys)
6055 (let ((out (assoc-ref outputs "out")))
6056 (define (install src dst)
6057 (let ((dst (string-append out dst)))
6058 (mkdir-p (dirname dst))
6059 (copy-file src dst)))
6060 (mkdir-p (string-append out "/bin"))
6061 (install "../darkplaces/darkplaces-dedicated"
6062 "/bin/xonotic-dedicated")
6063 (install "../darkplaces/darkplaces-glx"
6064 "/bin/xonotic-glx")
6065 (install "../darkplaces/darkplaces-sdl"
6066 "/bin/xonotic-sdl")
6067 ;; Provide a default xonotic executable, defaulting to SDL.
6068 (symlink (string-append out "/bin/xonotic-sdl")
6069 (string-append out "/bin/xonotic"))
6070 #t)))
6071 (add-after 'install-binaries 'install-data
6072 (lambda* (#:key outputs inputs #:allow-other-keys)
6073 (let* ((out (assoc-ref outputs "out"))
6074 (data (assoc-ref inputs "xonotic-data")))
cc661cb3
P
6075 (symlink (string-append data "/share/xonotic")
6076 (string-append out "/share/xonotic"))
dc70ff2a 6077 #t)))
6078 (add-after 'install-binaries 'wrap-binaries
6079 (lambda* (#:key outputs inputs #:allow-other-keys)
6080 ;; Curl and libvorbis need to be wrapped so that we get
6081 ;; sound and networking.
6082 (let* ((out (assoc-ref outputs "out"))
6083 (bin (string-append out "/bin/xonotic"))
6084 (bin-sdl (string-append out "/bin/xonotic-sdl"))
6085 (bin-glx (string-append out "/bin/xonotic-glx"))
6086 (bin-dedicated (string-append out "/bin/xonotic-dedicated"))
6087 (curl (assoc-ref inputs "curl"))
6088 (vorbis (assoc-ref inputs "libvorbis")))
6089 (wrap-program bin
6090 `("LD_LIBRARY_PATH" ":" prefix
6091 (,(string-append curl "/lib:" vorbis "/lib"))))
6092 (wrap-program bin-sdl
6093 `("LD_LIBRARY_PATH" ":" prefix
6094 (,(string-append curl "/lib:" vorbis "/lib"))))
6095 (wrap-program bin-glx
6096 `("LD_LIBRARY_PATH" ":" prefix
6097 (,(string-append curl "/lib:" vorbis "/lib"))))
6098 (wrap-program bin-dedicated
6099 `("LD_LIBRARY_PATH" ":" prefix
6100 (,(string-append curl "/lib:" vorbis "/lib"))))
6101 #t))))))
6102 (inputs
6103 `(("xonotic-data" ,xonotic-data)
6104 ("alsa-lib" ,alsa-lib)
6105 ("curl" ,curl)
6106 ("libjpeg" ,libjpeg)
6107 ("libmodplug" ,libmodplug)
6108 ("libvorbis" ,libvorbis)
6109 ("libogg" ,libogg)
6110 ("libxpm" ,libxpm)
6111 ("libxxf86dga" ,libxxf86dga)
6112 ("libxxf86vm" ,libxxf86vm)
6113 ("libx11" ,libx11)
6114 ("libxext" ,libxext)
6115 ("libxau" ,libxau)
6116 ("libxdmcp" ,libxdmcp)
6117 ("mesa" ,mesa)
6118 ("glu" ,glu)
6119 ("freetype" ,freetype)
6120 ("sdl2" ,sdl2)
6121 ("libpng" ,libpng)
6122 ("hicolor-icon-theme" ,hicolor-icon-theme)))
6123 (native-inputs
6124 `(("unzip" ,unzip)
6125 ("autoconf" ,autoconf)
6126 ("automake" ,automake)
6127 ("pkg-config" ,pkg-config)
6128 ("libtool" ,libtool)
6129 ("gmp" ,gmp)))
6130 (home-page "http://xonotic.org")
6131 (synopsis "Fast-paced first-person shooter game")
6132 (description
6133 "Xonotic is a free, fast-paced first-person shooter.
6134The project is geared towards providing addictive arena shooter
6135gameplay which is all spawned and driven by the community itself.
6136Xonotic is a direct successor of the Nexuiz project with years of
6137development between them, and it aims to become the best possible
6138open-source FPS of its kind.")
6139 (license (list license:gpl2+
6140 license:bsd-3 ; /source/d0_blind_id folder and others
9b9db6c4 6141 (license:x11-style "" "See file rcon.pl.")))))
39b5d8fd
BS
6142
6143(define-public frotz
6144 (package
6145 (name "frotz")
6146 (version "2.44")
6147 (source (origin
6148 (method url-fetch)
6149 (uri (list (string-append
6150 "http://www.ifarchive.org/if-archive/infocom/interpreters/"
e2c9f9de 6151 "frotz/frotz-" version ".tar.gz")
39b5d8fd
BS
6152 (string-append
6153 "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
e2c9f9de 6154 "frotz/frotz-" version ".tar.gz")))
39b5d8fd
BS
6155 (sha256
6156 (base32
6157 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
6158 (build-system gnu-build-system)
6159 (arguments
6160 `(#:tests? #f ; there are no tests
6161 #:phases
6162 (modify-phases %standard-phases
6163 (delete 'configure)
6164 (add-before 'build 'curses
6165 (lambda _
6166 (substitute* "Makefile"
6167 (("lcurses") "lncurses"))
6168 #t))
6169 (replace 'install
6170 (lambda* (#:key outputs #:allow-other-keys)
6171 (let* ((out (assoc-ref outputs "out"))
6172 (bin (string-append out "/bin"))
6173 (man (string-append out "/share/man/man6")))
6174 (install-file "frotz" bin)
6175 (mkdir-p man)
6176 (install-file "doc/frotz.6" man)
6177 #t))))))
6178 (inputs `(("libmodplug" ,libmodplug)
6179 ("libsamplerate" ,libsamplerate)
6180 ("libsndfile" ,libsndfile)
6181 ("libvorbis" ,libvorbis)
6182 ("ncurses" ,ncurses)))
6183 (synopsis "Portable Z-machine interpreter (ncurses version) for text adventure games")
6184 (description "Frotz is an interpreter for Infocom games and other Z-machine
6185games in the text adventure/interactive fiction genre. This version of Frotz
6186complies with standard 1.0 of Graham Nelson's specification. It plays all
6187Z-code games V1-V8, including V6, with sound support through libao, and uses
6188ncurses for text display.")
6189 (home-page "http://frotz.sourceforge.net")
6190 (license license:gpl2+)))
6191
6192(define-public frotz-dumb-terminal
6193 (package
6194 (name "frotz-dumb-terminal")
6195 (version "2.44")
6196 (source (origin
6197 (method url-fetch)
6198 (uri (list (string-append
6199 "http://www.ifarchive.org/if-archive/infocom/interpreters/"
98e27db5 6200 "frotz/frotz-" version ".tar.gz")
39b5d8fd
BS
6201 (string-append
6202 "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
98e27db5 6203 "frotz/frotz-" version ".tar.gz")))
39b5d8fd
BS
6204 (sha256
6205 (base32
6206 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
6207 (build-system gnu-build-system)
6208 (arguments
6209 `(#:tests? #f ; there are no tests
6210 #:phases
6211 (modify-phases %standard-phases
6212 (delete 'configure)
6213 (replace 'build
6214 (lambda _
6215 (invoke "make" "dumb")))
6216 (replace 'install
6217 (lambda* (#:key outputs #:allow-other-keys)
6218 (let* ((out (assoc-ref outputs "out"))
6219 (bin (string-append out "/bin"))
6220 (man (string-append out "/share/man/man6")))
6221 (install-file "dfrotz" bin)
6222 (mkdir-p man)
6223 (install-file "doc/dfrotz.6" man)
6224 #t))))))
6225 (synopsis "Portable Z-machine dumb interpreter for text adventure games")
6226 (description "Frotz is an interpreter for Infocom games and
6227other Z-machine games in the text adventure/interactive fiction genre.
6228dfrotz is the dumb interface version. You get no screen control; everything
6229is just printed to the terminal line by line. The terminal handles all the
6230scrolling. Maybe you'd like to experience what it's like to play Adventure on
6231a teletype. A much cooler use for compiling Frotz with the dumb interface is
6232that it can be wrapped in CGI scripting, PHP, and the like to allow people
6233to play games on webpages. It can also be made into a chat bot.")
6234 (home-page "http://frotz.sourceforge.net")
6235 (license license:gpl2+)))
6236
6237(define-public frotz-sdl
6238 (let* ((commit "4de8c34f2116fff554af6216c30ec9d41bf50b24"))
6239 (package
6240 (name "frotz-sdl")
6241 (version "2.45pre")
6242 (source (origin
6243 (method git-fetch)
6244 (uri (git-reference
6245 (url "https://gitlab.com/DavidGriffith/frotz")
6246 (commit commit)))
6247 (sha256
6248 (base32
6249 "18ms21pcrl7ipcnyqnf8janamkryzx78frsgd9kfk67jvbj0z2k8"))
6250 (file-name (git-file-name name version))))
6251 (build-system gnu-build-system)
6252 (arguments
6253 `(#:tests? #f ; there are no tests
6254 #:phases
6255 (modify-phases %standard-phases
6256 (delete 'configure)
6257 (add-before 'build 'patch-makefile
6258 (lambda _
6259 (substitute* "Makefile"
6260 (("lcurses") "lncurses")
6261 (("^BUILD_DATE_TIME =.*$")
6262 "BUILD_DATE_TIME = \"2.45pre-20180907.00000\"\n"))
6263 #t))
6264 (replace 'build
6265 (lambda _
6266 (invoke "make" "sdl")))
6267 (replace 'install
6268 (lambda* (#:key outputs #:allow-other-keys)
6269 (let* ((out (assoc-ref outputs "out"))
6270 (bin (string-append out "/bin"))
6271 (man (string-append out "/share/man/man6")))
6272 (install-file "sfrotz" bin)
6273 (mkdir-p man)
6274 (install-file "doc/sfrotz.6" man)
6275 #t))))))
6276 (native-inputs
6277 `(("pkg-config" ,pkg-config)
6278 ("which" ,which)
6279 ("perl" ,perl)))
6280 (inputs `(("sdl2" ,sdl2)
6281 ("sdl2-mixer" ,sdl2-mixer)
6282 ("libmodplug" ,libmodplug)
6283 ("libsamplerate" ,libsamplerate)
6284 ("libsndfile" ,libsndfile)
6285 ("libvorbis" ,libvorbis)
6286 ("ncurses" ,ncurses)
6287 ("freetype" ,freetype)
6288 ("libjpeg-turbo" ,libjpeg-turbo)))
6289 (synopsis "Portable Z-machine interpreter (SDL port) for text adventure games")
6290 (description "Frotz is an interpreter for Infocom games and other Z-machine
6291games in the text adventure/interactive fiction genre. This version of Frotz
6292using SDL fully supports all these versions of the Z-Machine including the
6293graphical version 6. Graphics and sound are created through the use of the SDL
6294libraries. AIFF sound effects and music in MOD and OGG formats are supported
6295when packaged in Blorb container files or optionally from individual files.")
6296 (home-page "http://frotz.sourceforge.net")
6297 (license license:gpl2+))))
18ebaa9e
EB
6298
6299(define-public libmanette
6300 (package
6301 (name "libmanette")
737e32a4 6302 (version "0.2.3")
18ebaa9e
EB
6303 (source (origin
6304 (method url-fetch)
5b35bdaa 6305 (uri (string-append "mirror://gnome/sources/libmanette/"
18ebaa9e 6306 (version-major+minor version) "/"
5b35bdaa 6307 "libmanette-" version ".tar.xz"))
18ebaa9e
EB
6308 (sha256
6309 (base32
737e32a4 6310 "1zxh7jn2zg7hivmal5zxam6fxvjsd1w6hlw0m2kysk76b8anbw60"))))
18ebaa9e
EB
6311 (build-system meson-build-system)
6312 (native-inputs
6313 `(("glib" ,glib "bin") ; for glib-compile-resources
6314 ("gobject-introspection" ,gobject-introspection)
6315 ("pkg-config" ,pkg-config)
6316 ("vala" ,vala)))
6317 (inputs
6318 `(("libevdev" ,libevdev)
6319 ("libgudev" ,libgudev)))
6320 (home-page "https://wiki.gnome.org/Apps/Games")
6321 (synopsis "Game controller library")
6322 (description "Libmanette is a small GObject library giving you simple
6323access to game controllers. It supports the de-facto standard gamepads as
6324defined by the W3C standard Gamepad specification or as implemented by the SDL
6325GameController.")
6326 (license license:lgpl2.1+)))
39c676c4
EB
6327
6328(define-public quadrapassel
6329 (package
6330 (name "quadrapassel")
8a5bfb26 6331 (version "3.32.0")
39c676c4
EB
6332 (source (origin
6333 (method url-fetch)
49598564 6334 (uri (string-append "mirror://gnome/sources/quadrapassel/"
39c676c4 6335 (version-major+minor version) "/"
49598564 6336 "quadrapassel-" version ".tar.xz"))
39c676c4
EB
6337 (sha256
6338 (base32
8a5bfb26
KK
6339 "1zhi1957knz9dm98drn2dh95mr33sdch590yddh1f8r6bzsfjvpy"))))
6340 (build-system meson-build-system)
6341 (arguments
6342 '(#:glib-or-gtk? #t
6343 #:phases
6344 (modify-phases %standard-phases
6345 (add-after 'unpack 'skip-gtk-update-icon-cache
6346 ;; Don't create 'icon-theme.cache'.
6347 (lambda _
6348 (substitute* "build-aux/meson_post_install.py"
6349 (("gtk-update-icon-cache") (which "true")))
6350 #t)))))
39c676c4
EB
6351 (native-inputs
6352 `(("desktop-file-utils" ,desktop-file-utils) ;for desktop-file-validate
6353 ("gettext" ,gnu-gettext)
6354 ("glib" ,glib "bin") ;for glib-compile-resources
6355 ("itstool" ,itstool)
6356 ("libxml2" ,libxml2) ;for xmllint
6357 ("pkg-config" ,pkg-config)
6358 ("vala" ,vala)))
6359 (inputs
6360 `(("clutter" ,clutter)
6361 ("clutter-gtk" ,clutter-gtk)
6362 ("gtk+" ,gtk+)
6363 ("libcanberra" ,libcanberra)
6364 ("libmanette" ,libmanette)
6365 ("librsvg" ,librsvg)))
6366 (home-page "https://wiki.gnome.org/Apps/Quadrapassel")
6367 (synopsis "GNOME version of Tetris")
6368 (description "Quadrapassel comes from the classic falling-block game,
6369Tetris. The goal of the game is to create complete horizontal lines of
6370blocks, which will disappear. The blocks come in seven different shapes made
6371from four blocks each: one straight, two L-shaped, one square, and two
6372S-shaped. The blocks fall from the top center of the screen in a random
6373order. You rotate the blocks and move them across the screen to drop them in
6374complete lines. You score by dropping blocks fast and completing lines. As
6375your score gets higher, you level up and the blocks fall faster.")
6376 (license license:gpl2+)))
560df540
EF
6377
6378(define-public endless-sky
6379 (package
6380 (name "endless-sky")
aa641984 6381 (version "0.9.10")
560df540
EF
6382 (source
6383 (origin
6384 (method git-fetch)
6385 (uri (git-reference
6386 (url "https://github.com/endless-sky/endless-sky")
6387 (commit (string-append "v" version))))
6388 (file-name (git-file-name name version))
6389 (sha256
6390 (base32
aa641984 6391 "1wax9qhxakydg6bs92d1jy2fki1n9r0wkps1np02y0pvm1fl189i"))))
560df540
EF
6392 (build-system scons-build-system)
6393 (arguments
6394 `(#:scons ,scons-python2
6395 #:scons-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
6396 #:tests? #f ; no tests
6397 #:phases
6398 (modify-phases %standard-phases
6399 (add-after 'unpack 'patch-resource-locations
6400 (lambda* (#:key outputs #:allow-other-keys)
6401 (substitute* "source/Files.cpp"
6402 (("/usr/local/")
6403 (string-append (assoc-ref outputs "out") "/")))
6404 #t))
6405 (add-after 'unpack 'patch-scons
6406 (lambda _
6407 (substitute* "SConstruct"
6408 ;; Keep environmental variables
6409 (("Environment\\(\\)")
6410 "Environment(ENV = os.environ)")
6411 ;; Install into %out/bin
6412 (("games\"") "bin\""))
6413 #t)))))
6414 (inputs
6415 `(("glew" ,glew)
6416 ("libjpeg" ,libjpeg-turbo)
6417 ("libmad" ,libmad)
6418 ("libpng" ,libpng)
6419 ("openal" ,openal)
6420 ("sdl2" ,sdl2)))
6421 (home-page "https://endless-sky.github.io/")
6422 (synopsis "2D space trading and combat game")
6423 (description "Endless Sky is a 2D space trading and combat game. Explore
6424other star systems. Earn money by trading, carrying passengers, or completing
6425missions. Use your earnings to buy a better ship or to upgrade the weapons and
6426engines on your current one. Blow up pirates. Take sides in a civil war. Or
6427leave human space behind and hope to find friendly aliens whose culture is more
6428civilized than your own.")
6429 (license (list license:gpl3+
6430 license:cc-by-sa3.0
6431 license:cc-by-sa4.0
6432 license:public-domain))))
1faf0a04
NG
6433
6434(define-public stepmania
6435 (package
6436 (name "stepmania")
6437 (version "5.1.0-b2")
6438 (source
6439 (origin
6440 (method git-fetch)
6441 (uri (git-reference
6442 (url "https://github.com/stepmania/stepmania.git")
6443 (commit (string-append "v" version))))
6444 (file-name (git-file-name name version))
6445 (sha256
6446 (base32
6447 "0a7y9l7xm510vgnpmj1is7p9m6d6yd0fcaxrjcickz295k5w3rdn"))
6448 (modules '((guix build utils)))
6449 (snippet
6450 '(begin
6451 ;; Remove song files, which are licensed under a non-commercial
6452 ;; clause, and a course pointing to them.
6453 (for-each delete-file-recursively
6454 '("Songs/StepMania 5/Goin' Under"
6455 "Songs/StepMania 5/MechaTribe Assault"
6456 "Songs/StepMania 5/Springtime"))
6457 (for-each delete-file '("Courses/Default/Jupiter.crs"
6458 "Courses/Default/Jupiter.png"))
6459 ;; Unbundle libpng.
6460 (substitute* "extern/CMakeLists.txt"
6461 (("include\\(CMakeProject-png.cmake\\)") ""))
6462 (delete-file-recursively "extern/libpng")
6463 #t))))
6464 (build-system cmake-build-system)
6465 (arguments
6466 `(#:tests? #f ;FIXME: couldn't find how to run tests
6467 #:build-type "Release"
6468 #:out-of-source? #f ;for the 'install-desktop' phase
6469 #:configure-flags
6470 (list "-DWITH_SYSTEM_FFMPEG=1"
296c8484
EF
6471 ;; SSE instructions are available on Intel systems only.
6472 ,@(if (any (cute string-prefix? <> (or (%current-target-system)
6473 (%current-system)))
6474 '("x64_64" "i686"))
6475 '()
6476 '("-DWITH_SSE2=NO"))
1faf0a04
NG
6477 ;; Configuration cannot find GTK2 without the two following
6478 ;; flags.
6479 (string-append "-DGTK2_GDKCONFIG_INCLUDE_DIR="
6480 (assoc-ref %build-inputs "gtk+")
6481 "/lib/gtk-2.0/include")
6482 (string-append "-DGTK2_GLIBCONFIG_INCLUDE_DIR="
6483 (assoc-ref %build-inputs "glib")
6484 "/lib/glib-2.0/include"))
6485 #:phases
6486 (modify-phases %standard-phases
47746772 6487 (add-after 'unpack 'ensure-application-files-can-be-found
45aba232 6488 (lambda* (#:key outputs #:allow-other-keys)
47746772
RW
6489 (let ((out (assoc-ref outputs "out")))
6490 (substitute* "src/arch/LoadingWindow/LoadingWindow_Gtk.cpp"
6491 (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\" \\+ \"GtkModule.so\"")
6492 (string-append "\"" out
6493 "/share/stepmania/GtkModule.so\"")))
6494 (substitute* "src/arch/ArchHooks/ArchHooks_Unix.cpp"
6495 (("Root = sDirOfExecutable")
6496 (string-append "Root = \"" out "/share/stepmania/\""))
6497 (("sDirOfExecutable \\+ \"/(Packages|Songs)\"" _ dir)
6498 (string-append "\"" out "/share/stepmania/" dir "\"")))
6499 (substitute* "src/RageFileManager.cpp"
6500 (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\"")
6501 (string-append "\"" out "/share/stepmania/\""))))
45aba232 6502 #t))
1faf0a04
NG
6503 (add-after 'unpack 'fix-install-subdir
6504 ;; Installation would be done in "%out/stepmania-X.Y", but we
6505 ;; prefer the more common layout "%out/share/stepmania".
6506 (lambda _
6507 (substitute* "src/CMakeLists.txt"
6508 (("\"stepmania-.*?\"") "\"share/stepmania\""))
6509 #t))
6510 (add-after 'unpack 'unbundle-libpng
6511 (lambda* (#:key inputs #:allow-other-keys)
6512 (substitute* "src/CMakeLists.txt"
6513 (("\\$\\{SM_EXTERN_DIR\\}/libpng/include")
6514 (string-append (assoc-ref inputs "libpng") "/include")))
6515 #t))
6516 (add-after 'install 'install-executable
6517 (lambda* (#:key outputs #:allow-other-keys)
6518 (let* ((out (assoc-ref outputs "out"))
6519 (bin (string-append out "/bin"))
6520 (exe (string-append out "/share/stepmania/stepmania")))
6521 (mkdir-p bin)
6522 (symlink exe (string-append bin "/stepmania"))
6523 #t)))
6524 (add-after 'install-executable 'install-desktop
6525 (lambda* (#:key outputs #:allow-other-keys)
6526 (let* ((out (assoc-ref outputs "out"))
6527 (share (string-append out "/share"))
6528 (applications (string-append share "/applications"))
6529 (icons (string-append share "/icons")))
6530 (install-file "stepmania.desktop" applications)
6531 (mkdir-p icons)
6532 (copy-recursively "icons" icons)
6533 #t)))
6534 ;; Move documentation in a more usual place, i.e.,
6535 ;; "%out/share/doc/stepmania/".
6536 (add-after 'install-desktop 'install-doc
6537 (lambda* (#:key outputs #:allow-other-keys)
6538 (let* ((out (assoc-ref outputs "out"))
6539 (share (string-append out "/share")))
6540 (with-directory-excursion share
6541 (mkdir-p "doc")
6542 (symlink "../stepmania/Docs" "doc/stepmania"))
6543 #t))))))
6544 (native-inputs
6545 `(("pkg-config" ,pkg-config)
6546 ("yasm" ,yasm)))
6547 (inputs
6548 `(("alsa-lib" ,alsa-lib)
6549 ;; Per upstream, StepMania is only guaranteed to work with a very
6550 ;; specific FFmpeg version, which is included in the repository as
6551 ;; a Git submodule. This particular version requirement usually
6552 ;; changes every few years.
6553 ("ffmpeg" ,ffmpeg-for-stepmania)
6554 ("glib" ,glib)
6555 ("glew" ,glew)
6556 ("gtk+" ,gtk+-2)
6557 ("jsoncpp" ,jsoncpp)
6558 ("libpng" ,libpng)
6559 ("libjpeg" ,libjpeg-8)
6560 ("libmad" ,libmad)
6561 ("libogg" ,libogg)
6562 ("libva" ,libva)
6563 ("libvorbis" ,libvorbis)
6564 ("libxinerama" ,libxinerama)
6565 ("libxrandr" ,libxrandr)
6566 ("mesa" ,mesa)
6567 ("pcre" ,pcre)
6568 ("pulseaudio" ,pulseaudio)
6569 ("sdl" ,sdl2)
6570 ("udev" ,eudev)
6571 ("zlib" ,zlib)))
6572 (synopsis "Advanced rhythm game designed for both home and arcade use")
6573 (description "StepMania is a dance and rhythm game. It features 3D
6574graphics, keyboard and dance pad support, and an editor for creating your own
6575steps.
6576
6577This package provides the core application, but no song is shipped. You need
6578to download and install them in @file{$HOME/.stepmania-X.Y/Songs} directory.")
6579 (home-page "https://www.stepmania.com")
6580 (license license:expat)))
6581
649220ad 6582(define-public btanks
ca32afac 6583 (package
649220ad 6584 (name "btanks")
ca32afac
RW
6585 (version "0.9.8083")
6586 (source
6587 (origin
6588 (method url-fetch)
6589 (uri (string-append "mirror://sourceforge/btanks/btanks-source/"
6590 "btanks-" version ".tar.bz2"))
6591 (sha256
6592 (base32
6593 "0ha35kxc8xlbg74wsrbapfgxvcrwy6psjkqi7c6adxs55dmcxliz"))))
6594 (build-system scons-build-system)
6595 (arguments
6596 `(#:tests? #f ; there are none
6597 #:scons ,scons-python2
6598 #:scons-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
6599 #:phases
6600 (modify-phases %standard-phases
6601 (add-after 'unpack 'replace-removed-scons-syntax
6602 (lambda _
6603 (substitute* "SConstruct"
6604 (("Options") "Variables")
6605 (("opts.Add\\(BoolOption.*") "opts.Add('gcc_visibility', 'gcc visibility', 'true')")
6606 (("opts.Add\\(EnumOption.*") "opts.Add('mode', 'build mode', 'release')"))
6607 #t))
6608 (add-after 'set-paths 'set-sdl-paths
6609 (lambda* (#:key inputs #:allow-other-keys)
6610 (setenv "CPATH"
6611 (string-append (assoc-ref inputs "sdl")
5ba856ab
MB
6612 "/include/SDL:"
6613 (or (getenv "CPATH") "")))
ca32afac
RW
6614 #t))
6615 (add-after 'unpack 'fix-compilation-errors
6616 (lambda _
6617 (substitute* "mrt/base_file.h"
6618 (("#include <string>" m)
6619 (string-append m "\n#include <sys/types.h>")))
6620 (substitute* '("engine/sl08/sl08.h"
6621 "engine/sl08/sl08.py")
6622 (("signal = NULL") "signal = 0")
6623 (("object\\(NULL\\)") "object(0)")
6624 (("func\\(NULL\\)") "func(0)")
6625 ((" connect\\(signal_ref\\)")
6626 " this->connect(signal_ref)"))
6627 (substitute* "math/range_list.h"
6628 ((" lower_bound\\(value\\)")
6629 " this->lower_bound(value)")
6630 ((" erase\\(i\\)")
6631 " this->erase(i)"))
6632 (substitute* "clunk/source.cpp"
6633 (("using namespace clunk" m)
6634 (string-append "# define pow10f(x) exp10f(x)\n" m)))
6635 #t))
6636 (add-after 'unpack 'find-lua
6637 (lambda _
6638 (substitute* "engine/SConscript"
6639 (("lua5.1") "lua-5.1")
6640 (("bt_libs.append\\(lua\\)")
6641 "bt_libs.append(\"lua\")"))
6642 #t)))))
6643 (inputs
6644 `(("expat" ,expat)
6645 ("glu" ,glu)
6646 ("libsmpeg" ,libsmpeg-with-sdl1)
6647 ("libvorbis" ,libvorbis)
6648 ("lua51" ,lua-5.1)
6649 ("sdl" ,(sdl-union (list sdl
6650 sdl-mixer
6651 sdl-image
6652 sdl-ttf)))
6653 ("zlib" ,zlib)))
6654 (native-inputs
6655 `(("pkg-config" ,pkg-config)
6656 ("zip" ,zip)))
6657 (home-page "http://btanks.sourceforge.net")
6658 (synopsis "Multiplayer tank battle game")
b1aee9fc
PN
6659 (description "Battle Tanks (also known as \"btanks\") is a funny battle
6660game, where you can choose one of three vehicles and eliminate your enemy
6661using the whole arsenal of weapons. It has original cartoon-like graphics and
6662cool music, it’s fun and dynamic, it has several network modes for deathmatch
6663and cooperative.")
ca32afac
RW
6664 ;; Some parts (e.g. mrt/b64.cpp) are LGPLv2.1+, but the whole package is
6665 ;; released under GPLv2 or later. It comes with extra exceptions for the
6666 ;; developers.
6667 (license (list license:gpl2+ license:lgpl2.1+))))
c06709b8 6668
649220ad
NG
6669(define-public battle-tanks
6670 (deprecated-package "battle-tanks" btanks))
b1aee9fc 6671
c06709b8
RW
6672(define-public slingshot
6673 (package
6674 (name "slingshot")
6675 (version "0.9")
6676 (source
6677 (origin
6678 (method git-fetch)
6679 (uri (git-reference
6680 (url "https://github.com/ryanakca/slingshot.git")
6681 (commit version)))
6682 (file-name (git-file-name name version))
6683 (sha256
6684 (base32
6685 "19m8b6nsi786bc6gmkp185mwri3r5y249gjmqd5qsc23nnfhgrs1"))))
6686 (build-system python-build-system)
6687 (arguments
6688 `(#:python ,python-2))
6689 (inputs
6690 `(("python-pygame" ,python2-pygame)))
6691 (home-page "https://github.com/ryanakca/slingshot")
6692 (synopsis "Simple 2D shooting strategy game set in space")
6693 (description "Slingshot is a two-dimensional strategy game where two
6694players attempt to shoot one another through a section of space populated by
6695planets. The main feature of the game is that the shots, once fired, are
6696affected by the gravity of the planets.")
6697 (license license:gpl2+)))
8ada024b
RW
6698
6699(define-public 4dtris
6700 (package
6701 (name "4dtris")
6702 (version "0.4.3")
6703 (source
6704 (origin
6705 (method url-fetch)
6706 (uri (string-append "https://launchpad.net/4dtris/"
6707 (version-major+minor version)
6708 "/" version "/+download/4dtris_"
6709 version ".orig.tar.gz"))
6710 (sha256
6711 (base32
6712 "1nfkhcm0l89jyw8yr65na97g4l385zhjf7whkyg47c3v5sdqq2g7"))))
6713 (build-system gnu-build-system)
6714 (arguments
6715 `(#:phases
6716 (modify-phases %standard-phases
6717 (add-after 'unpack 'fix-install-directories
6718 (lambda* (#:key outputs #:allow-other-keys)
6719 (let ((out (assoc-ref outputs "out")))
6720 (substitute* "Makefile.in"
6721 (("bindir = /usr/games")
6722 (string-append "bindir = " out "/bin"))
6723 (("/usr/share/applications")
6724 (string-append out "/share/applications"))
6725 (("/usr/share/games/4dtris")
6726 (string-append out "/share/4dtris"))))
6727 #t))
6728 (add-after 'set-paths 'set-sdl-paths
6729 (lambda* (#:key inputs #:allow-other-keys)
6730 (setenv "CPATH"
6731 (string-append (assoc-ref inputs "sdl")
5ba856ab
MB
6732 "/include/SDL:"
6733 (or (getenv "CPATH") "")))
8ada024b
RW
6734 #t)))))
6735 (inputs
6736 `(("fontconfig" ,fontconfig)
6737 ("freeglut" ,freeglut)
6738 ("sdl" ,(sdl-union (list sdl sdl-ttf)))))
6739 (home-page "https://launchpad.net/4dtris/")
6740 (synopsis "4D Tetris")
6741 (description "4D-TRIS is an alteration of the well-known Tetris game. The
6742game field is extended to 4D space, which has to filled up by the gamer with
67434D hyper cubes.")
6744 (license license:gpl3)))
6745
8044e584
PN
6746(define-public arx-libertatis
6747 (package
6748 (name "arx-libertatis")
6749 (version "1.1.2")
6750 (source
6751 (origin
6752 (method url-fetch)
6753 (uri (string-append "http://arx-libertatis.org/files/arx-libertatis-"
6754 version ".tar.xz"))
6755 (sha256
6756 (base32
6757 "0hjfxlsmp8wwqr06snv2dlly2s79ra0d9aw49gkp6rn8m50b9bc2"))))
6758 (build-system cmake-build-system)
6759 (outputs '("out" "installer"))
6760 (arguments
6761 '(#:tests? #f ; No tests.
6762 #:phases
6763 (modify-phases %standard-phases
6764 (add-after 'unpack 'fix-install-helper-paths
6765 (lambda* (#:key inputs #:allow-other-keys)
6766 (let ((p7zip (assoc-ref inputs "p7zip"))
6767 (innoextract (assoc-ref inputs "innoextract"))
6768 (wget (assoc-ref inputs "wget"))
6769 (zenity (assoc-ref inputs "zenity")))
6770 (substitute* "scripts/arx-install-data"
6771 (("have innoextract")
6772 (string-append "have " innoextract "/bin/innoextract"))
6773 (("then innoextract")
6774 (string-append "then " innoextract "/bin/innoextract"))
6775 (("else innoextract")
6776 (string-append "else " innoextract "/bin/innoextract"))
6777 (("for _extract_zip_sz in 7za 7z")
6778 (string-append "for _extract_zip_sz in " p7zip "/bin/7za"))
6779 (("else if have 7z")
6780 (string-append "else if have " p7zip "/bin/7za"))
6781 (("7z x -tiso")
6782 (string-append p7zip "/bin/7z x -tiso"))
6783 (("if have wget")
6784 (string-append "if have " wget "/bin/wget"))
6785 (("wget -O")
6786 (string-append wget "/bin/wget -O"))
6787 (("for backend in \\$preferred zenity")
6788 (string-append "for backend in $preferred " zenity "/bin/zenity"))
6789 (("zenity +--title")
6790 (string-append zenity "/bin/zenity --title"))
6791 (("^zenity\\)")
6792 (string-append zenity "/bin/zenity)"))))
6793 #t))
6794 (add-after 'install 'move-installer
6795 (lambda* (#:key outputs #:allow-other-keys)
6796 (let ((out (assoc-ref outputs "out"))
6797 (installer (assoc-ref outputs "installer")))
6798 (mkdir-p (string-append installer "/bin"))
6799 (rename-file (string-append out "/bin/arx-install-data")
6800 (string-append installer "/bin/arx-install-data"))))))))
6801 (inputs
6802 `(("sdl" ,sdl) ; Switch to sdl2 in >1.1.2.
6803 ("mesa" ,mesa) ; Switch to libepoxy in >1.1.2.
6804 ("glew" ,glew)
6805 ("openal" ,openal)
6806 ("zlib" ,zlib)
6807 ("boost" ,boost)
6808 ("glm" ,glm)
6809 ("freetype" ,freetype)
6810 ;; The following are only needed by the arx-install-data script.
6811 ("p7zip" ,p7zip) ; Install-helper uses it to extract ISO and .cab archives.
6812 ("zenity" ,zenity) ; GUI for install-helper.
6813 ("wget" ,wget) ; Used by the install-helper to download the patch.
6814 ;; The install-helper needs it to extract the patch.
6815 ("innoextract" ,innoextract)))
6816 (home-page "https://arx-libertatis.org/")
6817 (synopsis "Port of Arx Fatalis, a first-person role-playing game")
37e47aa7
MB
6818 (description "Arx Libertatis is a cross-platform port of Arx Fatalis, a 2002
6819first-person role-playing game / dungeon crawler developed by Arkane Studios.
6820This port however does not include the game data, so you need to obtain a copy
6821of the original Arx Fatalis or its demo to play Arx Libertatis. Arx Fatalis
6822features crafting, melee and ranged combat, as well as a unique casting system
6823where the player draws runes in real time to effect the desired spell.")
8044e584 6824 (license license:gpl3+)))
47903653 6825
649220ad 6826(define-public edgar
47903653 6827 (package
649220ad 6828 (name "edgar")
a50d6099 6829 (version "1.32")
47903653 6830 (source
6831 (origin
6832 (method url-fetch)
6833 (uri
6834 (string-append "https://github.com/riksweeney/edgar/releases/download/"
6835 version "/edgar-" version "-1.tar.gz"))
6836 (sha256
a50d6099 6837 (base32 "12lam6qcscc5ima1w2ksd1cvsvxbd17h6mqkgsqpzx8ap43p2r5p"))))
47903653 6838 (build-system gnu-build-system)
067826ab 6839 (arguments '(#:tests? #f ; there are no tests
47903653 6840 #:make-flags
6841 (list "CC=gcc"
6842 (string-append "PREFIX=" (assoc-ref %outputs "out"))
6843 (string-append "BIN_DIR=" (assoc-ref %outputs "out") "/bin/"))
6844 #:phases
6845 (modify-phases %standard-phases
6846 (delete 'configure)
6847 (add-before 'build 'fix-env
6848 (lambda* (#:key inputs #:allow-other-keys)
067826ab
TGR
6849 (setenv "CPATH"
6850 (string-append (assoc-ref inputs "sdl2-union")
5ba856ab
MB
6851 "/include/SDL2:"
6852 (or (getenv "CPATH") "")))
47903653 6853 #t)))))
067826ab
TGR
6854 (inputs
6855 `(("sdl2-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
6856 ("zlib" ,zlib)))
47903653 6857 (native-inputs
6858 `(("pkg-config" ,pkg-config)
6859 ("autoconf" ,autoconf)
6860 ("automake" ,automake)
6861 ("gnu-gettext" ,gnu-gettext)
6862 ("libtool" ,libtool)
6863 ("which" ,which)))
6864 (synopsis "2d action platformer game")
6865 (description "The Legend of Edgar is a 2D platform game with a persistent world.
6866When Edgar's father fails to return home after venturing out one dark and stormy night,
6867Edgar fears the worst: he has been captured by the evil sorcerer who lives in
6868a fortress beyond the forbidden swamp.")
6869 (home-page "https://www.parallelrealities.co.uk/games/edgar/")
6870 (license license:gpl2+)))
f95e33a7 6871
649220ad
NG
6872(define-public the-legend-of-edgar
6873 (deprecated-package "the-legend-of-edgar" edgar))
4e43e317
NG
6874
6875(define-public openclonk
6876 (package
6877 (name "openclonk")
6878 (version "8.1")
6879 (source (origin
6880 (method url-fetch)
6881 (uri (string-append
6882 "https://www.openclonk.org/builds/release/" version "/"
6883 "openclonk-" version "-src.tar.bz2"))
6884 (sha256
6885 (base32
6886 "0imkqjp8lww5p0cnqf4k4mb2v682mnsas63qmiz17rspakr7fxik"))))
6887 (build-system cmake-build-system)
6888 (arguments
6889 `(#:configure-flags '("-DAudio_TK=OpenAL")
6890 #:test-target "tests"
6891 #:phases
6892 (modify-phases %standard-phases
6893 (add-after 'unpack 'prepare-gmock
6894 (lambda* (#:key inputs #:allow-other-keys)
6895 (mkdir "gmock")
6896 (copy-recursively (assoc-ref inputs "googlemock") "gmock")
6897 (substitute* "tests/CMakeLists.txt"
6898 (("/usr/src/gmock")
6899 (string-append (getcwd) "/gmock/googlemock"))
6900 (("/usr/src/gtest")
6901 (string-append (getcwd) "/gmock/googletest"))
6902 (("PATH_SUFFIXES \"src\" \"gtest\"")
6903 "PATH_SUFFIXES \"src\""))
6904 #t))
ee9eafc1
MB
6905 (add-after 'unpack 'adjust-backward-cpp-includes
6906 (lambda _
6907 ;; XXX: The bundled backward-cpp exports a CMake "interface"
6908 ;; that includes external libraries such as libdl from glibc.
6909 ;; By default, CMake interface includes are treated as "system
6910 ;; headers", and GCC behaves poorly when glibc is passed as a
6911 ;; system header (causing #include_next failures).
6912
6913 ;; Here we prevent targets that consume the Backward::Backward
6914 ;; interface from treating it as "system includes".
6915 (substitute* "CMakeLists.txt"
6916 (("target_link_libraries\\((.+) Backward::Backward\\)" all target)
6917 (string-append "set_property(TARGET " target " PROPERTY "
6918 "NO_SYSTEM_FROM_IMPORTED true)\n"
6919 all)))
6920 #t))
4e43e317
NG
6921 (add-after 'unpack 'add-libiberty
6922 ;; Build fails upon linking executables without this.
6923 (lambda _
6924 (substitute* "thirdparty/backward-cpp/BackwardConfig.cmake"
6925 (("set\\(LIBBFD_LIBRARIES (.*?)\\)" _ libraries)
6926 (string-append "set(LIBBFD_LIBRARIES " libraries " iberty)")))
6927 #t))
6928 (add-after 'add-libiberty 'lax-freealut-requirement
6929 ;; TODO: We provide freealut 1.1.0, but pkg-config somehow detects
6930 ;; it as 1.0.1. Force minimal version.
6931 (lambda _
6932 (substitute* "cmake/FindAudio.cmake"
6933 (("freealut>=1.1.0") "freealut>=1.0.1"))
6934 #t))
6935 (add-after 'lax-freealut-requirement 'fix-directories
6936 ;; Prefer "$out/share/openclonk" over
6937 ;; "$out/share/games/openclonk". Also install "openclonk"
6938 ;; binary in "bin/", not "games/".
6939 (lambda _
6940 (substitute* "CMakeLists.txt"
6941 (("share/games/openclonk") "share/openclonk")
6942 (("TARGETS openclonk DESTINATION games")
6943 "TARGETS openclonk DESTINATION bin"))
6944 #t)))))
6945 (native-inputs
6946 `(("googlemock" ,(package-source googletest))
6947 ("googletest" ,googletest)
6948 ("pkg-config" ,pkg-config)))
6949 (inputs
6950 `(("freealut" ,freealut)
6951 ("freetype" ,freetype)
6952 ("glew" ,glew)
6953 ("libiberty" ,libiberty)
6954 ("libjpeg" ,libjpeg-turbo)
6955 ("libogg" ,libogg)
6956 ("libpng" ,libpng)
6957 ("libvorbis" ,libvorbis)
6958 ("libxrandr" ,libxrandr)
6959 ("mesa" ,mesa)
6960 ("miniupnpc" ,miniupnpc)
6961 ("openal" ,openal)
6962 ("qtbase" ,qtbase)
6963 ("readline" ,readline)
6964 ("sdl" ,sdl2)
6965 ("tinyxml" ,tinyxml)
6966 ("zlib" ,zlib)))
6967 (home-page "https://www.openclonk.org/")
6968 (synopsis
6969 "Multiplayer action game where you control small and nimble humanoids")
6970 (description "OpenClonk is a multiplayer action/tactics/skill game. It is
6971often referred to as a mixture of The Settlers and Worms. In a simple 2D
6018d26b 6972antfarm-style landscape, the player controls a crew of Clonks, small but
4e43e317
NG
6973robust humanoid beings. The game encourages free play but the normal goal is
6974to either exploit valuable resources from the earth by building a mine or
6975fight each other on an arena-like map.")
6976 ;; Software as a whole is licensed under ISC, artwork under CC-BY.
6977 (license (list license:isc license:cc-by3.0))))
ad4f6442
NG
6978
6979(define-public flare-engine
6980 (package
6981 (name "flare-engine")
f9622ec7 6982 (version "1.11")
ad4f6442
NG
6983 (source (origin
6984 (method git-fetch)
6985 (uri (git-reference
6986 (url "https://github.com/flareteam/flare-engine.git")
6987 (commit (string-append "v" version))))
6988 (file-name (git-file-name name version))
6989 (sha256
6990 (base32
f9622ec7 6991 "1mqr1s72p5bdh4kq2a8hg72dk8lwnddicjnd2cdp1sbfa9lmjym8"))))
ad4f6442
NG
6992 (build-system cmake-build-system)
6993 (arguments
6994 `(#:tests? #f ;no test
6995 #:configure-flags '("-DBINDIR=bin" "-DDATADIR=share/flare")))
6996 (inputs
6997 `(("hicolor-icon-theme" ,hicolor-icon-theme)
6998 ("python" ,python-wrapper)
6999 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
7000 (home-page "http://www.flarerpg.org/")
7001 (synopsis "Action Roleplaying Engine")
7002 (description "Flare (Free Libre Action Roleplaying Engine) is a simple
7003game engine built to handle a very specific kind of game: single-player 2D
7004action RPGs.")
7005 (license license:gpl3+)))
7006
7007(define-public flare-game
7008 (package
7009 (name "flare-game")
ffbaefc7 7010 (version "1.11")
ad4f6442
NG
7011 (source (origin
7012 (method git-fetch)
7013 (uri (git-reference
7014 (url "https://github.com/flareteam/flare-game.git")
7015 (commit (string-append "v" version))))
7016 (file-name (git-file-name name version))
7017 (sha256
7018 (base32
ffbaefc7 7019 "0bd5g7sd89a9176ilr408hdqzdfv4j7wj0idd685c1n6s01c3h6p"))))
ad4f6442
NG
7020 (build-system cmake-build-system)
7021 (arguments
7022 `(#:tests? #f ;no test
7023 #:configure-flags '("-DDATADIR=share/flare")
7024 #:phases
7025 (modify-phases %standard-phases
7026 ;; Flare expects the mods to be located in the same folder.
7027 ;; Yet, "default" mod is in the engine, whereas the others
7028 ;; are in the current package. Merge everything here with
7029 ;; a symlink.
7030 (add-after 'install 'add-default-mod
7031 (lambda* (#:key inputs outputs #:allow-other-keys)
7032 (let* ((out (assoc-ref outputs "out"))
7033 (mods (string-append out "/share/flare/mods")))
7034 (with-directory-excursion mods
7035 (symlink (string-append (assoc-ref inputs "flare-engine")
7036 "/share/flare/mods/default")
7037 "default")))
7038 #t))
7039 (add-after 'install 'install-executable
7040 ;; The package only provides assets for the game, the
7041 ;; executable coming from "flare-engine". Since more than
7042 ;; one game may use the engine, we create a new executable,
7043 ;; "flare-game", which launches the engine with appropriate
7044 ;; parameters.
7045 (lambda* (#:key inputs outputs #:allow-other-keys)
7046 (let* ((out (assoc-ref outputs "out"))
7047 (bash (string-append (assoc-ref inputs "bash")
7048 "/bin/bash"))
7049 (flare (string-append (assoc-ref inputs "flare-engine")
7050 "/bin/flare"))
7051 (script (string-append out "/bin/flare-game")))
7052 (mkdir-p (dirname script))
7053 (call-with-output-file script
7054 (lambda (port)
7055 (format port
7056 "#!~a
7057exec ~a --data-path=~a/share/flare --mods=empyrean_campaign~%"
7058 bash
7059 flare
7060 out)))
7061 (chmod script #o755))
7062 #t)))))
7063 (inputs
7064 `(("flare-engine" ,flare-engine)))
7065 (home-page "http://www.flarerpg.org/")
7066 (synopsis "Fantasy action RPG using the FLARE engine")
7067 (description "Flare is a single-player 2D action RPG with
7068fast-paced action and a dark fantasy style.")
7069 (license license:cc-by-sa3.0)))
660e0050
NG
7070
7071(define-public meritous
7072 (package
7073 (name "meritous")
7074 (version "1.5")
7075 (source (origin
7076 (method git-fetch)
7077 (uri (git-reference
7078 (url "https://gitlab.com/meritous/meritous.git")
7079 (commit (string-append "v" version))))
7080 (file-name (git-file-name name version))
7081 (sha256
7082 (base32
7083 "0n5jm4g0arjllgqmd2crv8h02i6hs3hlh1zyc7ng7yfpg1mbd8p8"))))
7084 (build-system gnu-build-system)
7085 (arguments
7086 `(#:tests? #f ;no test
7087 #:make-flags
7088 (list "CC=gcc"
7089 (string-append "prefix=" (assoc-ref %outputs "out")))
7090 #:phases
7091 (modify-phases %standard-phases
7092 (delete 'configure)
7093 (add-after 'unpack 'fix-sdl-path
7094 ;; XXX: For some reason, `sdl-config' reports stand-alone SDL
7095 ;; directory, not SDL-union provided as an input to the package.
7096 ;; We force the latter with "--prefix=" option.
7097 (lambda* (#:key inputs #:allow-other-keys)
7098 (substitute* "Makefile"
7099 (("sdl-config" command)
7100 (string-append command " --prefix=" (assoc-ref inputs "sdl"))))
7101 #t))
7102 (add-after 'unpack 'fix-crash
7103 ;; XXX: Songs are not present in the repository, due to licensing
7104 ;; issues. Yet, the game tries to load them, and, since it cannot
7105 ;; find them, crashes. Users cannot add them back, the store being
7106 ;; read-only, so we turn off background music altogether.
7107 (lambda _
7108 (substitute* "src/audio.c"
7109 (("PlayBackgroundMusic\\(new_track\\);" all)
7110 (string-append "// " all)))
7111 #t)))))
7112 (native-inputs
7113 `(("intltool" ,intltool)))
7114 (inputs
7115 `(("sdl" ,(sdl-union (list sdl sdl-image sdl-mixer)))
7116 ("zlib" ,zlib)))
7117 (home-page "https://gitlab.com/meritous/meritous")
7118 (synopsis "Action-adventure dungeon crawl game")
7119 (description "Far below the surface of the planet is a place of limitless
7120power. Those that seek to control such a utopia will soon bring an end to
7121themselves. Seeking an end to the troubles that plague him, PSI user Merit
7122journeys into the hallowed Orcus Dome in search of answers.
7123
7124Meritous is a action-adventure game with simple controls but a challenge to
7125find a balance of power versus recovery time during real-time battles. Set in
7126a procedurally generated world, the player can explore thousands of rooms in
7127search of powerful artifacts, tools to help them, and to eventually free the
7128Orcus Dome from evil.")
7129 (license license:gpl3+)))
472af999
RW
7130
7131(define-public marble-marcher
7132 (let ((commit "e580460a0c3826f9b28ab404607942a8ecb625d7")
7133 (revision "1"))
7134 (package
7135 (name "marble-marcher")
7136 (version (git-version "0" revision commit))
7137 (source (origin
7138 (method git-fetch)
7139 (uri (git-reference
7140 (url "https://github.com/HackerPoet/MarbleMarcher.git")
7141 (commit commit)))
7142 (file-name (git-file-name name version))
7143 (sha256
7144 (base32
7145 "0jjv832hl1v170n6gryp2sr3lgqndi9ab841qvgqk68bks8701mx"))))
7146 (build-system cmake-build-system)
7147 (arguments
7148 `(#:tests? #f ; there are none
7149 #:phases
7150 (modify-phases %standard-phases
7151 (add-after 'unpack 'embed-asset-directory
7152 (lambda* (#:key outputs #:allow-other-keys)
7153 (let ((assets (string-append (assoc-ref outputs "out")
7154 "/share/marble-marcher/assets/")))
7155 ;; Some of the files we're patching are
7156 ;; ISO-8859-1-encoded, so choose it as the default
7157 ;; encoding so the byte encoding is preserved.
7158 (with-fluids ((%default-port-encoding #f))
7159 (substitute* "src/Resource.rc"
7160 (("../assets/icon.ico")
7161 (string-append assets "icon.ico")))
7162 (substitute* "src/Res.h"
7163 (("assets/") assets))))
7164 #t))
7165 (replace 'install
7166 (lambda* (#:key outputs #:allow-other-keys)
7167 (let* ((out (assoc-ref outputs "out"))
7168 (assets (string-append out "/share/marble-marcher/assets"))
7169 (bin (string-append out "/bin/")))
7170 (mkdir-p bin)
7171 (mkdir-p assets)
7172 (copy-recursively "../source/assets" assets)
7173 (install-file "MarbleMarcher" bin))
7174 #t)))))
7175 (inputs
7176 `(("eigen" ,eigen)
7177 ("mesa" ,mesa)
7178 ("sfml" ,sfml)))
7179 (native-inputs
7180 `(("pkg-config" ,pkg-config)))
7181 (home-page "https://codeparade.itch.io/marblemarcher")
7182 (synopsis "Guide a marble across fractal landscapes")
7183 (description "Marble Marcher is a video game that uses a fractal physics
7184engine and fully procedural rendering to produce beautiful and unique
7185gameplay. The game is played on the surface of evolving fractals. The goal
7186of the game is to get your marble to the flag as quickly as possible. But be
7187careful not to fall off the level or get crushed by the fractal! There are 24
7188levels to unlock.")
7189 ;; Code is under GPLv2+, assets are under CC-BY-SA 3.0 and OFL 1.1.
7190 (license (list license:gpl2+
7191 license:silofl1.1
7192 license:cc-by-sa3.0)))))
20185e4f 7193
a84510f9 7194;; This must be updated together with flightgear.
20185e4f
RW
7195(define simgear
7196 (package
7197 (name "simgear")
7198 (version "2018.3.2")
7199 (source (origin
7200 (method url-fetch)
7201 (uri (string-append "mirror://sourceforge/flightgear/release-"
7202 (version-major+minor version) "/"
7203 "simgear-" version ".tar.bz2"))
7204 (sha256
7205 (base32
7206 "1941ay8rngz4vwsx37bbpxr48hpcvcbj3xw1hy264lq4qnl99c68"))))
7207 (build-system cmake-build-system)
7208 (arguments
7209 `(#:phases
7210 (modify-phases %standard-phases
7211 (replace 'check
7212 (lambda _
7213 ;; Skip tests that require internet access.
7214 (invoke "ctest" "-E" "(http|dns)"))))))
7215 (inputs
7216 `(("boost" ,boost-for-mysql) ; fails with 1.69
7217 ("curl" ,curl)
7218 ("expat" ,expat)
7219 ("mesa" ,mesa)
7220 ("openal" ,openal)
7221 ("openscenegraph" ,openscenegraph-3.4)
7222 ("zlib" ,zlib)))
7223 (home-page "https://home.flightgear.org/")
7224 (synopsis "Libraries for 3D simulations and games")
7225 (description "SimGear is a set of libraries designed to be used as
7226building blocks for quickly assembling 3D simulations, games, and
7227visualization applications. SimGear is developed by the FlightGear project
7228and also provides the base for the FlightGear Flight Simulator.")
7229 (license license:lgpl2.0+)))
a84510f9
RW
7230
7231(define-public flightgear
7232 (package
7233 (name "flightgear")
7234 (version (package-version simgear))
7235 (source (origin
7236 (method url-fetch)
7237 (uri (string-append "mirror://sourceforge/flightgear/release-"
7238 (version-major+minor version) "/"
7239 "flightgear-" version ".tar.bz2"))
7240 (sha256
7241 (base32
7242 "0lzy524cjzs8vldcjcc750bgg5c4mq9fkymxxxzqf68ilc4d1jss"))
7243 (modules '((guix build utils)))
7244 (snippet
7245 '(begin
7246 ;; There are some bundled libraries.
7247 (for-each delete-file-recursively
7248 '("3rdparty/sqlite3/"))
7249 #t))))
7250 (build-system cmake-build-system)
7251 (arguments
7252 `(#:configure-flags
7253 (list "-DSYSTEM_SQLITE=ON"
7254 (string-append "-DFG_DATA_DIR="
7255 (assoc-ref %outputs "out")
7256 "/share/flightgear"))
7257 ;; TODO: test cannot be run because the "run_test_suite" executable
7258 ;; does not seem to be built.
7259 #:tests? #f
7260 #:phases
7261 (modify-phases %standard-phases
7262 (add-after 'install 'wrap-executable
7263 (lambda* (#:key inputs outputs #:allow-other-keys)
7264 (let ((out (assoc-ref outputs "out")))
7265 (wrap-program (string-append out "/bin/fgfs")
7266 `("QT_PLUGIN_PATH" ":" prefix
7267 ,(map (lambda (label)
7268 (string-append (assoc-ref inputs label)
7269 "/lib/qt5/plugins"))
7270 '("qtbase" "qtdeclarative" "qtsvg")))
7271 `("QML2_IMPORT_PATH" ":" prefix
7272 ,(map (lambda (label)
7273 (string-append (assoc-ref inputs label)
7274 "/lib/qt5/qml"))
7275 '("qtdeclarative" "qtsvg"))))
7276 #t)))
7277 (add-after 'install 'install-data
7278 (lambda* (#:key inputs outputs #:allow-other-keys)
7279 (let ((share (string-append (assoc-ref outputs "out") "/share/flightgear")))
7280 (mkdir-p share)
7281 (with-directory-excursion share
7282 (invoke "tar" "xf" (assoc-ref inputs "flightgear-data")
7283 "--strip-components=1")))
7284 #t)))))
7285 (inputs
7286 `(("boost" ,boost-for-mysql) ; same as simgear
7287 ("dbus" ,dbus)
7288 ("eudev" ,eudev)
7289 ("freeglut" ,freeglut)
7290 ("freetype" ,freetype)
7291 ("glew" ,glew)
7292 ("libpng" ,libpng)
7293 ("openal" ,openal)
7294 ("openscenegraph" ,openscenegraph-3.4)
7295 ("plib" ,plib)
7296 ("qtbase" ,qtbase)
7297 ("qtdeclarative" ,qtdeclarative)
7298 ("qtsvg" ,qtsvg)
7299 ("simgear" ,simgear)
7300 ("speexdsp" ,speexdsp)
7301 ("sqlite" ,sqlite)
7302 ("zlib" ,zlib)))
7303 (native-inputs
7304 `(("cppunit" ,cppunit)
7305 ("pkg-config" ,pkg-config)
7306 ("qttools" ,qttools)
7307 ("flightgear-data"
7308 ,(origin
7309 (method url-fetch)
7310 (uri (string-append "mirror://sourceforge/flightgear/release-"
7311 (version-major+minor version) "/"
7312 "FlightGear-" version "-data.tar.bz2"))
7313 (sha256
7314 (base32
7315 "0h4npa7gqpf5fw6pv2bpw0wbwr7fa2vhia21cjbigfgd75x82zi7"))))))
7316 (home-page "https://home.flightgear.org/")
7317 (synopsis "Flight simulator")
7318 (description "The goal of the FlightGear project is to create a
7319sophisticated flight simulator framework for use in research or academic
7320environments, pilot training, as an industry engineering tool, for DIY-ers to
7321pursue their favorite interesting flight simulation idea, and last but
7322certainly not least as a fun, realistic, and challenging desktop flight
7323simulator.")
7324 (license license:gpl2+)))
e8a0696d
NG
7325
7326(define-public jumpnbump
7327 (package
7328 (name "jumpnbump")
60d2aaa5 7329 (version "1.61")
e8a0696d
NG
7330 (source (origin
7331 (method git-fetch)
7332 (uri (git-reference
7333 (url "https://gitlab.com/LibreGames/jumpnbump.git")
7334 (commit version)))
7335 (file-name (git-file-name name version))
7336 (sha256
7337 (base32
60d2aaa5 7338 "12lwl5sl5n009nb83r8l4lakb9286csqdf1ynpmwwydy17giqsdp"))))
e8a0696d
NG
7339 (build-system gnu-build-system)
7340 (arguments
7341 `(#:make-flags
7342 (list "CC=gcc"
7343 (string-append "PREFIX=" (assoc-ref %outputs "out")))
7344 #:tests? #f ;no test
7345 #:phases
7346 (modify-phases %standard-phases
7347 (delete 'configure) ;no configure script
7348 (add-after 'unpack 'fix-sdl-path
7349 ;; XXX: For some reason, `sdl2-config' reports stand-alone SDL
7350 ;; directory, not SDL-union provided as an input to the package.
7351 ;; We force the latter with "--prefix=" option.
7352 (lambda* (#:key inputs #:allow-other-keys)
7353 (substitute* "Makefile"
7354 (("sdl2-config" command)
7355 (string-append command " --prefix=" (assoc-ref inputs "sdl"))))
7356 #t)))))
7357 (inputs
7358 `(("bzip2" ,bzip2)
7359 ("sdl" ,(sdl-union (list sdl2 sdl2-mixer sdl2-net)))
7360 ("zlib" ,zlib)))
7361 (native-inputs
7362 `(("gettext" ,gettext-minimal))) ;for msgfmt
7363 (home-page "https://gitlab.com/LibreGames/jumpnbump")
7364 (synopsis "Multiplayer platform game with bunnies")
7365 (description "You, as a bunny, have to jump on your opponents to make them
7366explode. It is a true multiplayer game; you cannot play this alone. You can
7367play with up to four players simultaneously. It has network support.")
7368 (license license:gpl2+)))
a3d4a631
NG
7369
7370(define-public hedgewars
7371 (package
7372 (name "hedgewars")
ea042113 7373 (version "1.0.0")
a3d4a631
NG
7374 (source (origin
7375 (method url-fetch)
7376 (uri (string-append "https://www.hedgewars.org/download/releases/"
7377 "hedgewars-src-" version ".tar.bz2"))
7378 (sha256
7379 (base32
ea042113 7380 "0nqm9w02m0xkndlsj6ys3wr0ik8zc14zgilq7k6fwjrf3zk385i1"))))
a3d4a631
NG
7381 (build-system cmake-build-system)
7382 (arguments
7383 ;; XXX: Engine is built as Pascal source code, requiring Free Pascal
7384 ;; Compiler, which we haven't packaged yet. With the flag below, we use
7385 ;; a Pascal to C translator and Clang instead.
7386 `(#:configure-flags (list "-DBUILD_ENGINE_C=ON")
7387 #:phases
7388 (modify-phases %standard-phases
a3d4a631 7389 (replace 'check
ea042113 7390 (lambda _ (invoke "ctest"))))))
a3d4a631
NG
7391 (inputs
7392 `(("ffmpeg" ,ffmpeg)
7393 ("freeglut" ,freeglut)
7394 ("ghc-entropy" ,ghc-entropy)
7395 ("ghc-hslogger" ,ghc-hslogger)
7396 ("ghc-network" ,ghc-network)
7397 ("ghc-random" ,ghc-random)
7398 ("ghc-regex-tdfa" ,ghc-regex-tdfa)
7399 ("ghc-sandi" ,ghc-sandi)
7400 ("ghc-sha" ,ghc-sha)
7401 ("ghc-utf8-string" ,ghc-utf8-string)
7402 ("ghc-vector" ,ghc-vector)
7403 ("ghc-zlib" ,ghc-zlib)
7404 ("glew" ,glew)
7405 ("libpng" ,libpng)
7406 ("lua" ,lua-5.1)
7407 ("physfs" ,physfs)
7408 ("qtbase" ,qtbase)
7409 ("sdl" ,(sdl-union
7410 (list sdl2 sdl2-mixer sdl2-net sdl2-ttf sdl2-image)))))
7411 (native-inputs
7412 `(("clang" ,clang)
7413 ("ghc" ,ghc)
7414 ("pkg-config" ,pkg-config)
7415 ("qttools" ,qttools)))
7416 (home-page "https://hedgewars.org/")
7417 (synopsis "Turn-based artillery game featuring fighting hedgehogs")
7418 (description
7419 "Hedgewars is a turn based strategy, artillery, action and comedy game,
7420featuring the antics of pink hedgehogs with attitude as they battle from the
7421depths of hell to the depths of space.
7422
7423As commander, it's your job to assemble your crack team of hedgehog soldiers
7424and bring the war to your enemy.")
7425 ;; Software as a whole is licensed under GPL-2 terms. Artwork and
7426 ;; scripts are distributed under various terms.
7427 (license (list license:gpl2
7428 license:bsd-2 license:bsd-3 license:cc-by3.0 license:cc0
7429 license:expat license:fdl1.3+ license:public-domain
7430 license:zlib))))
1bba3e8c
JL
7431
7432(define-public harmonist
7433 (package
7434 (name "harmonist")
3755d5cb 7435 (version "0.2")
1bba3e8c
JL
7436 (source (origin
7437 (method git-fetch)
7438 (uri (git-reference
7439 (url "https://git.tuxfamily.org/harmonist/harmonist.git")
7440 (commit (string-append "v" version))))
7441 (file-name (git-file-name name version))
7442 (sha256
7443 (base32
3755d5cb 7444 "0hqy9kqwgirwkq1v3vj1hp9m93hjvdj4nxcfbjfvvwk2bbzri3s2"))))
1bba3e8c
JL
7445 (build-system go-build-system)
7446 (arguments
7447 '(#:import-path "git.tuxfamily.org/harmonist/harmonist"))
7448 (inputs
7449 `(("go-github.com-nsf-termbox-go" ,go-github.com-nsf-termbox-go)))
7450 (home-page "https://harmonist.tuxfamily.org/")
7451 (synopsis "Stealth coffee-break roguelike game")
7452 (description "Harmonist: Dayoriah Clan Infiltration is a stealth
7453coffee-break roguelike game. The game has a heavy focus on tactical
7454positioning, light and noise mechanisms, making use of various terrain types
7455and cones of view for monsters. Aiming for a replayable streamlined experience,
7456the game avoids complex inventory management and character building, relying
7457on items and player adaptability for character progression.")
7458 (license license:isc)))
e93352d6 7459
453365bc
JL
7460(define-public harmonist-tk
7461 (package
7462 (inherit harmonist)
7463 (name "harmonist-tk")
7464 (arguments
7465 (append
7466 (package-arguments harmonist)
7467 `(#:phases
7468 (modify-phases %standard-phases
7469 (replace 'build
7470 (lambda _
7471 (invoke "go" "install" "-v" "-x" "--tags" "tk"
7472 "git.tuxfamily.org/harmonist/harmonist")))
7473 (replace 'check
7474 (lambda _
7475 (invoke "go" "test" "--tags" "tk"
7476 "git.tuxfamily.org/harmonist/harmonist")))))))
7477 (inputs
7478 `(("go-github.com-nsf-gothic" ,go-github.com-nsf-gothic)))))
7479
e93352d6
NG
7480(define-public drascula
7481 (package
7482 (name "drascula")
7483 (version "1.0")
7484 (source (origin
7485 (method url-fetch)
7486 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7487 "Drascula_%20The%20Vampire%20Strikes%20Back/"
7488 "drascula-" version ".zip"))
7489 (sha256
7490 (base32
7491 "1pj29rpb754sn6a56f8brfv6f2m1p5qgaqik7d68pfi2bb5zccdp"))))
7492 (build-system trivial-build-system)
7493 (arguments
7494 `(#:modules ((guix build utils))
7495 #:builder
7496 (begin
7497 (use-modules (guix build utils)
7498 (ice-9 match))
7499 (let* ((out (assoc-ref %outputs "out"))
7500 (share (string-append out "/share/drascula"))
7501 (scummvm (assoc-ref %build-inputs "scummvm")))
7502 ;; Install data.
7503 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
7504 "/bin/unzip"))
7505 (doc (string-append out "/share/doc/" ,name "-" ,version)))
7506 (for-each
7507 (lambda (input)
7508 (invoke unzip
7509 "-j"
7510 (assoc-ref %build-inputs input)
7511 "-x" "__MACOSX")
7512 ;; Every input provides "readme.txt", and we want to
7513 ;; preserve them all. Therefore we rename them first.
7514 (match input
7515 ("drascula-int"
7516 (rename-file "readme.txt" "readme-international.txt"))
7517 ("drascula-audio"
7518 (rename-file "readme.txt" "readme-audio.txt"))
7519 (_ #f))
7520 ;; Install documentation.
7521 (for-each (lambda (f) (install-file f doc))
7522 (find-files "." "\\.(txt|doc)$"))
7523 ;; Install data.
7524 (for-each (lambda (f) (install-file f share))
7525 (find-files "." "\\.(ogg|00[0-9])$")))
7526 '("drascula-audio" "drascula-int" "source")))
7527 ;; Create standalone executable.
7528 (let* ((bin (string-append out "/bin"))
7529 (executable (string-append bin "/drascula"))
7530 (bash (string-append (assoc-ref %build-inputs "bash")
7531 "/bin/bash")))
7532 (mkdir-p bin)
7533 (with-output-to-file executable
7534 (lambda ()
7535 (format #t "#!~a~%" bash)
7536 (format #t
7537 "exec ~a/bin/scummvm --path=~a drascula~%"
7538 scummvm share)))
7539 (chmod executable #o755))
7540 ;; Create desktop file. There is no dedicated icon for the
7541 ;; game, so we borrow SCUMMVM's.
7542 (let ((apps (string-append out "/share/applications")))
7543 (mkdir-p apps)
7544 (with-output-to-file (string-append apps "/drascula.desktop")
7545 (lambda _
7546 (format #t
7547 "[Desktop Entry]~@
7548 Name=Drascula: The Vampire Strikes Back~@
7549 GenericName=Drascula~@
7550 Exec=~a/bin/drascula~@
7551 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
7552 Categories=AdventureGame;Game;RolePlaying;~@
7553 Keywords=game;adventure;roleplaying;2D,fantasy;~@
7554 Comment=Classic 2D point and click adventure game~@
7555 Comment[de]=klassisches 2D-Abenteuerspiel in Zeigen-und-Klicken-Manier~@
7556 Comment[fr]=Jeux classique d'aventure pointer-et-cliquer en 2D~@
7557 Comment[it]=Gioco classico di avventura punta e clicca 2D~@
7558 Type=Application~%"
7559 out scummvm))))
7560 #t))))
7561 (native-inputs
7562 `(("bash" ,bash)
7563 ("unzip" ,unzip)))
7564 (inputs
7565 `(("scummvm" ,scummvm)
7566 ("drascula-int"
7567 ,(let ((version "1.1"))
7568 (origin
7569 (method url-fetch)
7570 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7571 "Drascula_%20The%20Vampire%20Strikes%20Back/"
7572 "drascula-int-" version ".zip"))
7573 (sha256
7574 (base32
7575 "12236i7blamal92p1i8dgp3nhp2yicics4whsl63v682bj999n14")))))
7576 ("drascula-audio"
7577 ,(let ((version "2.0"))
7578 (origin
7579 (method url-fetch)
7580 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7581 "Drascula_%20The%20Vampire%20Strikes%20Back/"
7582 "drascula-audio-" version ".zip"))
7583 (sha256
7584 (base32
7585 "00g4izmsqzxb8ry1vhfx6jrygl58lvlij09nw01ds4zddsiznsky")))))))
7586 (home-page "https://www.scummvm.org")
7587 (synopsis "Classic 2D point and click adventure game")
7588 (description "Drascula: The Vampire Strikes Back is a classic humorous 2D
7589point and click adventure game.
7590
7591In Drascula you play the role of John Hacker, a British estate agent, that
7592gets to meet a gorgeous blond girl who is kidnapped by the notorious vampire
7593Count Drascula and embark on a fun yet dangerous quest to rescue her.
7594Unfortunately, Hacker is not aware of Drascula's real ambitions: DOMINATING
7595the World and demonstrating that he is even more evil than his brother Vlad.")
7596 ;; Drascula uses a BSD-like license.
7597 (license (license:non-copyleft "file:///readme.txt"))))
08c2fb8f
JG
7598
7599(define-public gnurobots
7600 (package
7601 (name "gnurobots")
7602 (version "1.2.0")
7603 (source
7604 (origin
7605 (method url-fetch)
7606 (uri (string-append "mirror://gnu/gnurobots/gnurobots-"
7607 version ".tar.gz"))
7608 (sha256
7609 (base32
7610 "07gi3lsmbzzsjambgixj6xy79lh22km84z7bnzgwzxdy806lyvwb"))))
7611 (build-system gnu-build-system)
7612 (inputs
7613 `(("glib" ,glib)
7614 ("gtk+" ,gtk+-2)
7615 ("vte" ,vte/gtk+-2)
7616 ("readline" ,readline)
7617 ("guile" ,guile-1.8)))
7618 (native-inputs
7619 `(("pkg-config" ,pkg-config)))
7620 (arguments
7621 `(#:make-flags
7622 (list
7623 ;; Do not abort build on "deprecated-declarations" warnings.
7624 "CFLAGS=-Wno-error=deprecated-declarations"
7625 ;; Find readline headers in sub-directory.
7626 (string-append "READLINE_CFLAGS=-I"
7627 (assoc-ref %build-inputs "readline")
7628 "/include/readline/"))
7629 #:phases
7630 (modify-phases %standard-phases
7631 (add-after 'install 'install-doc
7632 (lambda* (#:key outputs #:allow-other-keys)
7633 (install-file "doc/Robots-HOWTO"
7634 (string-append (assoc-ref outputs "out")
7635 "/share/doc/gnurobots-"
7636 ,version))
7637 #t)))))
7638 (home-page "https://www.gnu.org/software/gnurobots/")
7639 (synopsis "Program a little robot and watch it explore a world")
7640 (description
7641 "GNU Robots is a game in which you program a robot to explore a world
7642full of enemies that can hurt it, obstacles and food to be eaten. The goal of
7643the game is to stay alive and collect prizes. The robot program conveniently
7644may be written in a plain text file in the Scheme programming language.")
7645 (license license:gpl3+)))
3745909d
NG
7646
7647(define-public ri-li
7648 (package
7649 (name "ri-li")
7650 (version "2.0.1")
7651 (source (origin
7652 (method url-fetch)
7653 (uri (string-append "mirror://sourceforge/ri-li/"
7654 "Ri-li%20Linux_Unix/Ri-li%20V" version "/"
7655 "Ri-li-" version ".tar.bz2"))
7656 (sha256
7657 (base32
7658 "1gcdsgnnbbn1mb1hkpwniv3fhkaj1nn8gq33v5c16q3wqchcq77p"))
7659 ;; Taken from
7660 ;; <https://github.com/NixOS/nixpkgs/blob/master/pkgs/games/rili/moderinze_cpp.patch>.
7661 ;; It doesn't build otherwise.
7662 (patches (search-patches "ri-li-modernize_cpp.patch"))))
7663 (build-system gnu-build-system)
7664 (arguments
7665 `(#:phases
7666 (modify-phases %standard-phases
7667 ;; Remove "gentoo" subdirectory from Makefile, as it is
7668 ;; missing a make file and generates a build failure.
7669 (add-after 'configure 'fix-build
7670 (lambda _
7671 (substitute* "Makefile"
7672 ((" gentoo") ""))
7673 #t))
7674 (add-after 'install 'install-desktop-file
7675 (lambda* (#:key outputs #:allow-other-keys)
7676 (let* ((out (assoc-ref outputs "out"))
7677 (apps (string-append out "/share/applications"))
7678 (pixmaps (string-append out "/share/pixmaps")))
7679 (for-each (lambda (f) (install-file f pixmaps))
7680 (find-files "data" "\\.(png|ico)$"))
7681 (mkdir-p apps)
7682 (with-output-to-file (string-append apps "/ri-li.desktop")
7683 (lambda _
7684 (format #t
7685 "[Desktop Entry]~@
7686 Name=Ri-li~@
7687 Exec=~a/bin/Ri_li~@
7688 Icon=~a/Ri-li-icon-32x32.png~@
7689 Categories=Game;ArcadeGame;~@
7690 Keywords=toy;train;wooden;snake-like;engine;~@
7691 Comment=a toy simulator game~@
7692 Comment[de]=Ein Spiel mit einem kleinen Zug~@
7693 Comment[fr]=un jeu de petit train~@
7694 Comment[ro_RO]=un joc cu un tren de jucărie~@
7695 Terminal=false~@
7696 Type=Application~%"
7697 out pixmaps))))
7698 #t))
7699 (add-after 'install-desktop-file 'remove-spurious-files
7700 ;; Delete redundant files already installed somewhere else.
7701 (lambda* (#:key outputs #:allow-other-keys)
7702 (let ((out (assoc-ref outputs "out")))
7703 (for-each delete-file
7704 (find-files (string-append out "/share/Ri-li")
7705 "\\.(png|ico)|COPYING"))
7706 #t))))))
7707 (inputs
7708 `(("sdl" ,(sdl-union (list sdl sdl-mixer)))))
7709 (home-page "http://www.ri-li.org")
7710 (synopsis "Toy train simulation game")
7711 (description "Ri-li is a game in which you drive a wooden toy
7712steam locomotive across many levels and collect all the coaches to
7713win.")
7714 ;; The project is dual-licensed GPL2+ and GPL3+.
7715 (license (list license:gpl2+ license:gpl3+))))
562a2a40
JG
7716
7717(define-public freeorion
7718 (package
7719 (name "freeorion")
7720 (version "0.4.8")
7721 (source
7722 (origin
7723 (method git-fetch)
7724 (uri (git-reference
7725 (url "https://github.com/freeorion/freeorion.git")
7726 ;; Most recent stable release uses boost_signals (v1) which was
7727 ;; later replaced with boost-signals2 and no longer exists. This
7728 ;; commit builds and runs.
7729 ;;
7730 ;; TODO: Update this when the next stable release when it is
7731 ;; available.
7732 (commit "470d0711537804df3c2ca25532f674ab4bec58af")))
7733 (file-name (git-file-name name version))
7734 (sha256
7735 (base32
7736 "1wsw632l1cj17px6i88nqjzs0dngp5rsr67n6qkkjlfjfxi69j0f"))
7737 (modules '((guix build utils)))
7738 (snippet
7739 '(begin
7740 ;; There are some bundled fonts.
7741 (for-each delete-file-recursively '("default/data/fonts"))
7742 #t))))
7743 (build-system cmake-build-system)
7744 (arguments
7745 '(#:tests? #f ;no test
7746 #:phases
7747 (modify-phases %standard-phases
7748 (add-after 'unpack 'unbundle-fonts
7749 (lambda* (#:key inputs #:allow-other-keys)
7750 (let ((roboto-dir (string-append (assoc-ref inputs "font-roboto")
7751 "/share/fonts/truetype/")))
7752 (substitute* "UI/ClientUI.cpp"
7658904a 7753 (("\\(GetRootDataDir.*?Roboto-(Bold|Regular)\\.ttf\"\\)\\.string\\(\\)\\);"
562a2a40 7754 all type)
7658904a 7755 (string-append "\"" roboto-dir "Roboto-" type ".ttf\");")))
562a2a40
JG
7756 #t))))))
7757 (inputs
7758 `(("boost" ,boost)
7759 ("boost_signals" ,boost-signals2)
7760 ("font-dejavu" ,font-dejavu)
7761 ("font-roboto" ,font-google-roboto)
7762 ("freetype2" ,freetype)
7763 ("glew" ,glew)
7764 ("glu" ,glu)
7765 ("libogg" ,libogg)
7766 ("libpng" ,libpng)
7767 ("libvorbis" ,libvorbis)
7768 ("openal" ,openal)
7769 ("python2" ,python-2.7)
7770 ("sdl2" ,sdl2)
7771 ("zlib" ,zlib)))
7772 (home-page "https://www.freeorion.org/index.php/Main_Page")
7773 (synopsis "Turn-based space empire and galactic conquest computer game")
7774 (description
7775 "FreeOrion is a turn-based space empire and galactic conquest (4X)
7776computer game being designed and built by the FreeOrion project. Control an
7777empire with the goal of exploring the galaxy, expanding your territory,
7778exploiting the resources, and exterminating rival alien empires. FreeOrion is
7779inspired by the tradition of the Master of Orion games, but is not a clone or
7780remake of that series or any other game.")
7781 ;; Source code is released under gpl2. Artwork, music and sounds, and
7782 ;; in-game text are released under cc-by-sa3.0. Game content scripts are
7783 ;; released under both gpl2 and cc-by-sa3.0. Bundled Gigi library is
7784 ;; released under lgpl2.1+.
7785 (license (list license:gpl2 license:cc-by-sa3.0 license:lgpl2.1+))))
fbfc07bd
GLV
7786
7787(define-public leela-zero
7788 (package
7789 (name "leela-zero")
7790 (version "0.17")
7791 (source
7792 (origin
7793 (method git-fetch)
7794 (uri (git-reference
7795 (url "https://github.com/leela-zero/leela-zero.git")
7796 (commit (string-append "v" version))))
7797 (file-name (git-file-name name version))
7798 (sha256
7799 (base32
7800 "17px5iny8mql5c01bymcli7zfssswkzvb2i8gnsmjcck6i2n8srl"))
7801 (patches (search-patches "leela-zero-gtest.patch"))))
7802 (build-system cmake-build-system)
7803 (native-inputs
7804 `(("googletest" ,googletest)))
7805 (inputs
7806 `(("boost" ,boost)
7807 ("ocl-icd" ,ocl-icd)
7808 ("openblas" ,openblas)
7809 ("opencl-headers" ,opencl-headers)
7810 ("qtbase" ,qtbase)
7811 ("zlib" ,zlib)))
7812 (arguments
7813 '(#:configure-flags '("-DUSE_BLAS=YES")
7814 #:phases (modify-phases %standard-phases
7815 (add-before 'configure 'fix-tests
7816 (lambda* (#:key outputs #:allow-other-keys)
7817 (let ((home (getcwd)))
7818 (setenv "HOME" home)
7819 (substitute* "src/tests/gtests.cpp"
7820 (("\\.\\./src/tests/0k\\.txt")
7821 (string-append home "/src/tests/0k.txt"))
7822 (("cfg_gtp_mode = true;")
7823 "cfg_gtp_mode = true; cfg_cpu_only = true;")))
7824 #t))
7825 (replace 'check
7826 (lambda _
7827 (invoke "./tests"))))))
7828 (home-page "https://github.com/leela-zero/leela-zero")
7829 (synopsis "Program playing the game of Go")
7830 (description
7831 "Leela-zero is a Go engine with no human-provided knowledge, modeled after
7832the AlphaGo Zero paper. The current best network weights file for the engine
7833can be downloaded from @url{https://zero.sjeng.org/best-network}.")
7834 (license license:gpl3+)))
66977719
GLV
7835
7836(define-public q5go
7837 (package
7838 (name "q5go")
7839 (version "1.0")
7840 (source (origin
7841 (method git-fetch)
7842 (uri (git-reference
7843 (url "https://github.com/bernds/q5Go.git")
7844 (commit (string-append "q5go-" version))))
7845 (file-name (git-file-name name version))
7846 (sha256
7847 (base32
7848 "1gdlfqcqkqv7vph3qwq78d0qz6dhmdsranxq9bmixiisbzkqby31"))))
7849 (build-system gnu-build-system)
7850 (native-inputs
7851 `(("pkg-config" ,pkg-config)))
7852 (inputs
7853 `(("qtbase" ,qtbase)
7854 ("qtmultimedia" ,qtmultimedia)
7855 ("qtsvg" ,qtsvg)))
7856 (arguments
7857 '(#:phases
7858 (modify-phases %standard-phases
7859 (add-after 'unpack 'fix-configure-script
7860 (lambda _
7861 ;; Bypass the unavailable qtchooser program.
7862 (substitute* "configure"
7863 (("test -z \"QTCHOOSER\"")
7864 "false")
7865 (("qtchooser -run-tool=(.*) -qt=qt5" _ command)
7866 command))
7867 #t))
7868 (add-after 'unpack 'fix-paths
7869 (lambda _
7870 (substitute* '("src/pics/Makefile.in"
7871 "src/translations/Makefile.in")
7872 (("\\$\\(datadir\\)/qGo/")
7873 "$(datadir)/q5go/"))
7874 #t))
7875 (add-after 'install 'install-desktop-file
7876 (lambda* (#:key outputs #:allow-other-keys)
7877 (let* ((out (assoc-ref outputs "out"))
7878 (apps (string-append out "/share/applications"))
7879 (pics (string-append out "/share/q5go/pics")))
7880 (delete-file-recursively (string-append out "/share/applnk"))
7881 (delete-file-recursively (string-append out "/share/mimelnk"))
7882 (install-file "../source/src/pics/Bowl.ico" pics)
7883 (mkdir-p apps)
7884 (with-output-to-file (string-append apps "/q5go.desktop")
7885 (lambda _
7886 (format #t
7887 "[Desktop Entry]~@
7888 Name=q5go~@
7889 Exec=~a/bin/q5go~@
7890 Icon=~a/Bowl.ico~@
7891 Categories=Game;~@
7892 Comment=Game of Go~@
7893 Comment[de]=Spiel des Go~@
7894 Comment[eo]=Goo~@
7895 Comment[es]=Juego de Go~@
7896 Comment[fr]=Jeu de Go~@
7897 Comment[ja]=囲碁~@
7898 Comment[ko]=바둑~@
7899 Comment[zh]=围棋~@
7900 Terminal=false~@
7901 Type=Application~%"
7902 out pics))))
7903 #t)))))
7904 (synopsis "Qt GUI to play the game of Go")
7905 (description
7906 "This a tool for Go players which performs the following functions:
7907@itemize
7908@item SGF editor,
7909@item Analysis frontend for Leela Zero (or compatible engines),
7910@item GTP interface (to play against an engine),
7911@item IGS client (to play on the internet),
7912@item Export games to a variety of formats.
7913@end itemize")
7914 (home-page "https://github.com/bernds/q5Go")
7915 (license license:gpl2+)))
3c1c5622
HG
7916
7917(define-public ktuberling
7918 (package
7919 (name "ktuberling")
7920 (version "19.08.3")
7921 (source
7922 (origin
7923 (method url-fetch)
7924 (uri (string-append "mirror://kde/stable/applications/" version
7925 "/src/ktuberling-" version ".tar.xz"))
7926 (sha256
7927 (base32 "1qdf4q6wjh1lnlqw5c8z4rpj9w5vbyjfri1dah6yjm3mwppbc12j"))))
7928 (properties `((tags . ("Desktop" "KDE" "Games"))))
7929 (build-system qt-build-system)
7930 (native-inputs
7931 `(("extra-cmake-modules" ,extra-cmake-modules)
7932 ("perl" ,perl)))
7933 (inputs
7934 `(("kcompletion" ,kcompletion)
7935 ("kconfigwidgets" ,kconfigwidgets)
7936 ("kcoreaddons" ,kcoreaddons)
7937 ("kcrash" ,kcrash)
7938 ("kdbusaddons" ,kdbusaddons)
7939 ("kdelibs4support" ,kdelibs4support)
7940 ("ki18n" ,ki18n)
7941 ("kwidgetsaddons" ,kwidgetsaddons)
7942 ("kxmlgui" ,kxmlgui)
7943 ("libkdegames" ,libkdegames)
7944 ("qtbase" ,qtbase)
7945 ("qtmultimedia" ,qtmultimedia)
7946 ("qtdeclarative" ,qtdeclarative)
7947 ("qtsvg" ,qtsvg)))
7948 (home-page "https://games.kde.org/")
7949 (synopsis "Stamp drawing toy")
7950 (description "KTuberling is a drawing toy intended for small children and
7951adults who remain young at heart. The game has no winner; the only purpose is
7952to make the funniest faces you can. Several activites are possible, e.g.:
7953
7954@itemize
7955@item Give the potato a funny face, clothes, and other goodies
7956@item Build a small town, complete with school, zoo, and fire department
7957@item Create a fantastic moonscape with spaceships and aliens
7958@item Top a pizza
7959@end itemize
7960
7961KTuberling can speak the name of each the object in several languages,
7962to assist in learning basic vocabulary.
7963
7964This package is part of the KDE games module.")
7965 (license (list license:gpl2+ license:fdl1.2+))))
f9913977
HG
7966
7967(define-public picmi
7968 (package
7969 (name "picmi")
7970 (version "19.08.3")
7971 (source
7972 (origin
7973 (method url-fetch)
7974 (uri (string-append "mirror://kde/stable/applications/" version
7975 "/src/picmi-" version ".tar.xz"))
7976 (sha256
7977 (base32 "0z9mpmv49w914gqdx274brdzl6d1bz9j9nkvbwgmr3iq1ba49m3f"))))
7978 (properties `((tags . ("Desktop" "KDE" "Games"))))
7979 (build-system qt-build-system)
7980 (native-inputs
7981 `(("extra-cmake-modules" ,extra-cmake-modules)
7982 ("kdoctools" ,kdoctools)))
7983 (inputs
7984 `(("kcoreaddons" ,kcoreaddons)
7985 ("kcrash" ,kcrash)
7986 ("kdbusaddons" ,kdbusaddons)
7987 ("kdeclarative" ,kdeclarative)
7988 ("ki18n" ,ki18n)
7989 ("kio" ,kio)
7990 ("knewstuff" ,knewstuff)
7991 ("kxmlgui" ,kxmlgui)
7992 ("libkdegames" ,libkdegames)
7993 ("qtbase" ,qtbase)
7994 ("qtdeclarative" ,qtdeclarative)
7995 ("qtsvg" ,qtsvg)))
7996 (home-page "https://games.kde.org/")
7997 (synopsis "Number logic game")
7998 (description "Picmi is a number logic game in which cells in a grid have
7999to be colored or left blank according to numbers given at the side of the
8000grid. The aim is to reveal a hidden picture.
8001
8002This package is part of the KDE games module.")
8003 (license (list license:gpl2+ license:fdl1.2+))))
e1b174eb
HG
8004
8005(define-public kolf
8006 (package
8007 (name "kolf")
8008 (version "19.08.3")
8009 (source
8010 (origin
8011 (method url-fetch)
8012 (uri (string-append "mirror://kde/stable/applications/" version
8013 "/src/kolf-" version ".tar.xz"))
8014 (sha256
8015 (base32 "06sfd0llr5cc3zf1vrpcxgw9bm009ky7y8822kynic9ipcd4z1hw"))))
8016 (properties `((tags . ("Desktop" "KDE" "Games"))))
8017 (build-system qt-build-system)
8018 (native-inputs
8019 `(("extra-cmake-modules" ,extra-cmake-modules)
8020 ("kdoctools" ,kdoctools)))
8021 (inputs
8022 `(("kcompletion" ,kcompletion)
8023 ("kconfigwidgets" ,kconfigwidgets)
8024 ("kcoreaddons" ,kcoreaddons)
8025 ("kcrash" ,kcrash)
8026 ("kdbusaddons" ,kdbusaddons)
8027 ("ki18n" ,ki18n)
8028 ("kio" ,kio)
8029 ("kwidgetsaddons" ,kwidgetsaddons)
8030 ("kxmlgui" ,kxmlgui)
8031 ("ktextwidgets" ,ktextwidgets)
8032 ("libkdegames" ,libkdegames)
8033 ("qtbase" ,qtbase)
8034 ("qtdeclarative" ,qtdeclarative)))
8035 (home-page "https://games.kde.org/")
8036 (synopsis "Miniature golf game")
8037 (description "Kolf is a miniature golf game for one to ten players. The
8038game is played from an overhead view, with a short bar representing the golf
8039club. Kolf features many different types of objects, such as water hazards,
8040slopes, sand traps, and black holes (warps), among others.
8041
8042Features are:
8043@itemize
8044@item Single and Multi-player (up to ten players) modes
8045@item High scores table
8046@item Dynamic courses
8047@item Third-party courses
8048@item Course editor
8049@end itemize
8050
8051This package is part of the KDE games module.")
8052 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
2582f582
HG
8053
8054(define-public libkmahjongg
8055 (package
8056 (name "libkmahjongg")
8057 (version "19.08.3")
8058 (source
8059 (origin
8060 (method url-fetch)
8061 (uri (string-append "mirror://kde/stable/applications/"
8062 version "/src/libkmahjongg-" version ".tar.xz"))
8063 (sha256
8064 (base32 "0rdimk11hrc8qrmiv26z0ddjzi1k6806c0rfskx4cwmildmh6zgx"))))
8065 (build-system qt-build-system)
8066 (native-inputs
8067 `(("extra-cmake-modules" ,extra-cmake-modules)))
8068 (inputs
8069 `(("kauth" ,kauth)
8070 ("kcompletion" ,kcompletion)
8071 ;("kconfig" ,kconfig)
8072 ("kcodecs" ,kcodecs)
8073 ("kconfigwidgets" ,kconfigwidgets)
8074 ("kcoreaddons" ,kcoreaddons)
8075 ("ki18n" ,ki18n)
8076 ("kwidgetsaddons" ,kwidgetsaddons)
8077 ("qtbase" ,qtbase)
8078 ("qtsvg" ,qtsvg)))
8079 (home-page "https://games.kde.org/")
8080 (synopsis "Shared library for kmahjongg and kshisen")
8081 (description "Shared library and common files for kmahjongg, kshisen and
8082other Mah Jongg like games.")
8083 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
c57e31fb
HG
8084
8085(define-public kmahjongg
8086 (package
8087 (name "kmahjongg")
8088 (version "19.08.3")
8089 (source
8090 (origin
8091 (method url-fetch)
8092 (uri (string-append "mirror://kde/stable/applications/"
8093 version "/src/kmahjongg-" version ".tar.xz"))
8094 (sha256
8095 (base32 "08na845h0nhmfrszdmvfq5y1dy7kgbrlzjp0f5snvbbf7w44ci6p"))))
8096 (properties `((tags . ("Desktop" "KDE" "Games"))))
8097 (build-system qt-build-system)
8098 (native-inputs
8099 `(("extra-cmake-modules" ,extra-cmake-modules)
8100 ("kdoctools" ,kdoctools)))
8101 (inputs
8102 `(("kcompletion" ,kcompletion)
8103 ("kcrash" ,kcrash)
8104 ("kdbusaddons" ,kdbusaddons)
8105 ("kdeclarative" ,kdeclarative)
8106 ("ki18n" ,ki18n)
8107 ("knewstuff" ,knewstuff)
8108 ("kxmlgui" ,kxmlgui)
8109 ("libkdegames" ,libkdegames)
8110 ("libkmahjongg" ,libkmahjongg)
8111 ("qtbase" ,qtbase)
8112 ("qtdeclarative" ,qtdeclarative)
8113 ("qtsvg" ,qtsvg)))
8114 (home-page "https://games.kde.org/")
8115 (synopsis "Tile laying patience")
8116 (description "In KMahjongg the tiles are scrambled and staked on top of
8117each other to resemble a certain shape. The player is then expected to remove
8118all the tiles off the game board by locating each tile's matching pair.
8119
8120A variety of tile layouts are included, as well as an editor to create new
8121layouts.
8122
8123This package is part of the KDE games module.")
8124 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
110b738b
HG
8125
8126(define-public kshisen
8127 (package
8128 (name "kshisen")
8129 (version "19.08.3")
8130 (source
8131 (origin
8132 (method url-fetch)
8133 (uri (string-append "mirror://kde/stable/applications/"
8134 version "/src/kshisen-" version ".tar.xz"))
8135 (sha256
8136 (base32 "1bq5m48af4h5apfp3bfsp76nlpv6h5sc0gd544zv7cgpfznz1sds"))))
8137 (properties `((tags . ("Desktop" "KDE" "Games"))))
8138 (build-system qt-build-system)
8139 (native-inputs
8140 `(("extra-cmake-modules" ,extra-cmake-modules)
8141 ;("perl" ,perl)
8142 ;("pkg-config" ,pkg-config)
8143 ("kdoctools" ,kdoctools)))
8144 (inputs
8145 `(("kauth" ,kauth)
8146 ("kcompletion" ,kcompletion)
8147 ("kconfigwidgets" ,kconfigwidgets)
8148 ("kcoreaddons" ,kcoreaddons)
8149 ("kcrash" ,kcrash)
8150 ("kdbusaddons" ,kdbusaddons)
8151 ("ki18n" ,ki18n)
8152 ("kxmlgui" ,kxmlgui)
8153 ("libkdegames" ,libkdegames)
8154 ("libkmahjongg" ,libkmahjongg)
8155 ("qtbase" ,qtbase)
8156 ("qtdeclarative" ,qtdeclarative)))
8157 (home-page "https://games.kde.org/")
8158 (synopsis "Shisen-Sho solitaire game")
8159 (description "KShisen is a solitaire-like game played using the standard
8160set of Mahjong tiles. Unlike Mahjong however, KShisen has only one layer of
8161scrambled tiles
8162
8163This package is part of the KDE games module.")
8164 (license license:gpl2+)))
321bd0c3
HG
8165
8166(define-public kajongg
8167 (package
8168 (name "kajongg")
8169 (version "19.08.3")
8170 (source
8171 (origin
8172 (method url-fetch)
8173 (uri (string-append "mirror://kde/stable/applications/"
8174 version "/src/kajongg-" version ".tar.xz"))
8175 (sha256
8176 (base32 "0ql6p5zifdpdf65r7ki9ml123azpwwk9x3x8r9ij6xhjnf7p7x6w"))))
8177 (properties `((tags . ("Desktop" "KDE" "Games"))))
8178 (build-system qt-build-system)
8179 (native-inputs
8180 `(("extra-cmake-modules" ,extra-cmake-modules)
8181 ;("perl" ,perl)
8182 ("kdoctools" ,kdoctools)))
8183 (inputs
8184 `(("kconfig" ,kconfig)
8185 ("kconfigwidgets" ,kconfigwidgets)
8186 ("kcoreaddons" ,kcoreaddons)
8187 ("ki18n" ,ki18n)
8188 ("libkmahjongg" ,libkmahjongg)
8189 ("python" ,python)
8190 ("qtbase" ,qtbase)
8191 ("qtsvg" ,qtsvg)))
8192 (propagated-inputs
8193 `(("python-twisted" ,python-twisted)
8194 ("python-pyqt" ,python-pyqt)))
8195 ;; FIXME: Need to wrap PYTHONPATH
8196 (home-page "https://games.kde.org/")
8197 (synopsis "Classical Mah Jongg game for 4 players")
8198 (description "Kajongg is the ancient Chinese board game for 4 players.
8199
8200If you are looking for the Mah Jongg solitaire please use the application
8201kmahjongg.
8202
8203Kajongg can be used in two different ways: Scoring a manual game where you
8204play as always and use Kajongg for the computation of scores and for
8205bookkeeping. Or you can use Kajongg to play against any combination of other
8206human players or computer players.
8207
8208This package is part of the KDE games module.")
8209 (license (list license:gpl2+ license:fdl1.2+))))
f4195446
HG
8210
8211(define-public kbreakout
8212 (package
8213 (name "kbreakout")
8214 (version "19.08.3")
8215 (source
8216 (origin
8217 (method url-fetch)
8218 (uri (string-append "mirror://kde/stable/applications/" version
8219 "/src/kbreakout-" version ".tar.xz"))
8220 (sha256
8221 (base32 "0gwzx1z9mxrjlcjzglg8cxkyd6900whcar3b5j9laxxarc6xhj8w"))))
8222 (properties `((tags . ("Desktop" "KDE" "Games"))))
8223 (build-system qt-build-system)
8224 (native-inputs
8225 `(("extra-cmake-modules" ,extra-cmake-modules)
8226 ("kdoctools" ,kdoctools)))
8227 (inputs
8228 `(("kcompletion" ,kcompletion)
8229 ("kconfig" ,kconfig)
8230 ("kconfigwidgets" ,kconfigwidgets)
8231 ("kcoreaddons" ,kcoreaddons)
8232 ("kcrash" ,kcrash)
8233 ("kdbusaddons" ,kdbusaddons)
8234 ("ki18n" ,ki18n)
8235 ("kwidgetsaddons" ,kwidgetsaddons)
8236 ("kxmlgui" ,kxmlgui)
8237 ("libkdegames" ,libkdegames)
8238 ("qtbase" ,qtbase)
8239 ("qtdeclarative" ,qtdeclarative)))
8240 (home-page "https://games.kde.org/")
8241 (synopsis "Breakout like game")
8242 (description "KBreakout is similar to the classics breakout and xboing,
8243featuring a number of added graphical enhancements and effects. You control a
8244paddle at the bottom of the playing-field, and must destroy bricks at the top
8245by bouncing balls against them.
8246
8247This package is part of the KDE games module.")
8248 (license (list license:gpl2+ license:fdl1.2+))))
df3d90c7
HG
8249
8250(define-public kmines
8251 (package
8252 (name "kmines")
8253 (version "19.08.3")
8254 (source
8255 (origin
8256 (method url-fetch)
8257 (uri (string-append "mirror://kde/stable/applications/" version
8258 "/src/kmines-" version ".tar.xz"))
8259 (sha256
8260 (base32 "0ac3za36lh8hpx6mqfic9amwmzhzhzplm9hg3pw12gxl5a9mvfsf"))))
8261 (properties `((tags . ("Desktop" "KDE" "Games"))))
8262 (build-system qt-build-system)
8263 (native-inputs
8264 `(("extra-cmake-modules" ,extra-cmake-modules)
8265 ("kdoctools" ,kdoctools)))
8266 (inputs
8267 `(("kcompletion" ,kcompletion)
8268 ("kconfig" ,kconfig)
8269 ("kconfigwidgets" ,kconfigwidgets)
8270 ("kcoreaddons" ,kcoreaddons)
8271 ("kcrash" ,kcrash)
8272 ("kdbusaddons" ,kdbusaddons)
8273 ("ki18n" ,ki18n)
8274 ("ktextwidgets" ,ktextwidgets)
8275 ("kwidgetsaddons" ,kwidgetsaddons)
8276 ("kxmlgui" ,kxmlgui)
8277 ("libkdegames" ,libkdegames)
8278 ("qtbase" ,qtbase)
8279 ("qtdeclarative" ,qtdeclarative)))
8280 (home-page "https://games.kde.org/")
8281 (synopsis "Classical mine sweeper game")
8282 (description "KMines is a classic Minesweeper game. The idea is to
8283uncover all the squares without blowing up any mines. When a mine is blown
8284up, the game is over.
8285
8286This package is part of the KDE games module.")
8287 (license (list license:gpl2+ license:fdl1.2+))))
72b69fa9
HG
8288
8289(define-public konquest
8290 (package
8291 (name "konquest")
8292 (version "19.08.3")
8293 (source
8294 (origin
8295 (method url-fetch)
8296 (uri (string-append "mirror://kde/stable/applications/"
8297 version "/src/konquest-" version ".tar.xz"))
8298 (sha256
8299 (base32 "02gjxskhi10a1sqh3skcild8zria7wncz1a4sbz7ax1p851q76k1"))))
8300 (properties `((tags . ("Desktop" "KDE" "Games"))))
8301 (build-system qt-build-system)
8302 (native-inputs
8303 `(("extra-cmake-modules" ,extra-cmake-modules)
8304 ("kdoctools" ,kdoctools)))
8305 (inputs
8306 `(("kcompletion" ,kcompletion)
8307 ("kconfig" ,kconfig)
8308 ("kcoreaddons" ,kcoreaddons)
8309 ("kcrash" ,kcrash)
8310 ("kdbusaddons" ,kdbusaddons)
8311 ("kguiaddons" ,kguiaddons)
8312 ("ki18n" ,ki18n)
8313 ("kwidgetsaddons" ,kwidgetsaddons)
8314 ("kxmlgui" ,kxmlgui)
8315 ("libkdegames" ,libkdegames)
8316 ("qtbase" ,qtbase)
8317 ("qtdeclarative" ,qtdeclarative)
8318 ("qtsvg" ,qtsvg)))
8319 (home-page "https://games.kde.org/")
8320 (synopsis "Simple turn-based strategy game")
8321 (description "Konquest is the KDE version of Gnu-Lactic Konquest. Players
8322conquer other planets by sending ships to them. The goal is to build an
8323interstellar empire and ultimately conquer all other player's planets. The
8324game can be played with up to nine empires, commanded either by the computer
8325or by puny earthlings.
8326
8327This package is part of the KDE games module.")
8328 (license (list license:gpl2+ license:fdl1.2+))))
d980ddb8
HG
8329
8330(define-public kbounce
8331 (package
8332 (name "kbounce")
8333 (version "19.08.3")
8334 (source
8335 (origin
8336 (method url-fetch)
8337 (uri (string-append "mirror://kde/stable/applications/"
8338 version "/src/kbounce-" version ".tar.xz"))
8339 (sha256
8340 (base32 "02rfv0qzz5cmyfx8f56a45hbm9gsp6m3dcy8ajwx88rw5wpbrr11"))))
8341 (properties `((tags . ("Desktop" "KDE" "Games"))))
8342 (build-system qt-build-system)
8343 (native-inputs
8344 `(("extra-cmake-modules" ,extra-cmake-modules)
8345 ("kdoctools" ,kdoctools)))
8346 (inputs
8347 `(("kcompletion" ,kcompletion)
8348 ("kconfigwidgets" ,kconfigwidgets)
8349 ("kcoreaddons" ,kcoreaddons)
8350 ("kcrash" ,kcrash)
8351 ("kdbusaddons" ,kdbusaddons)
8352 ("ki18n" ,ki18n)
8353 ("kio" ,kio)
8354 ("kwidgetsaddons" ,kwidgetsaddons)
8355 ("kxmlgui" ,kxmlgui)
8356 ("libkdegames" ,libkdegames)
8357 ("qtbase" ,qtbase)
8358 ("qtdeclarative" ,qtdeclarative)
8359 ("qtsvg" ,qtsvg)))
8360 (home-page "https://games.kde.org/")
8361 (synopsis "Jezzball arcade game")
8362 (description "KBounce is a single player arcade game with the elements of
8363puzzle. It is played on a field, surrounded by wall, with two or more balls
8364bouncing around within the walls. The object of the game is to build new
8365walls to decrease the size of the active field.
8366
8367This package is part of the KDE games module.")
8368 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
d685f860
HG
8369
8370(define-public kblocks
8371 (package
8372 (name "kblocks")
8373 (version "19.08.3")
8374 (source
8375 (origin
8376 (method url-fetch)
8377 (uri (string-append "mirror://kde/stable/applications/"
8378 version "/src/kblocks-" version ".tar.xz"))
8379 (sha256
8380 (base32 "0qrm0dihzhkxsq9l49ndzms802x6jn92vvabb2zf2q9z593m69cx"))))
8381 (properties `((tags . ("Desktop" "KDE" "Games"))))
8382 (build-system qt-build-system)
8383 (native-inputs
8384 `(("extra-cmake-modules" ,extra-cmake-modules)
8385 ("kdoctools" ,kdoctools)))
8386 (inputs
8387 `(("kcompletion" ,kcompletion)
8388 ("kconfig" ,kconfig)
8389 ("kconfigwidgets" ,kconfigwidgets)
8390 ("kcoreaddons" ,kcoreaddons)
8391 ("kcrash" ,kcrash)
8392 ("kdbusaddons" ,kdbusaddons)
8393 ("ki18n" ,ki18n)
8394 ("kwidgetsaddons" ,kwidgetsaddons)
8395 ("kxmlgui" ,kxmlgui)
8396 ("libkdegames" ,libkdegames)
8397 ("qtbase" ,qtbase)
8398 ("qtdeclarative" ,qtdeclarative)
8399 ("qtsvg" ,qtsvg)))
8400 (home-page "https://games.kde.org/")
8401 (synopsis "Single player falling blocks puzzle game")
8402 (description "KBlocks is the classic Tetris-like falling blocks game.
8403
8404The idea is to stack the falling blocks to create horizontal lines without any
8405gaps. When a line is completed it is removed, and more space is available in
8406the play area. When there is not enough space for blocks to fall, the game is
8407over.
8408
8409This package is part of the KDE games module.")
8410 (license (list license:gpl2+ license:fdl1.2+))))
f6e9a6e2
HG
8411
8412(define-public ksudoku
8413 (package
8414 (name "ksudoku")
8415 (version "19.08.3")
8416 (source
8417 (origin
8418 (method url-fetch)
8419 (uri (string-append "mirror://kde/stable/applications/"
8420 version "/src/ksudoku-" version ".tar.xz"))
8421 (sha256
8422 (base32 "0rcscz91hilm7l3am5w02n0n8l7xhi4l0n4sskznh68kblw0ggw2"))))
8423 (properties `((tags . ("Desktop" "KDE" "Games"))))
8424 (build-system qt-build-system)
8425 (native-inputs
8426 `(("extra-cmake-modules" ,extra-cmake-modules)
8427 ("kdoctools" ,kdoctools)))
8428 (inputs
8429 `(("karchive", karchive)
8430 ("kconfig" ,kconfig)
8431 ("kconfigwidgets" ,kconfigwidgets)
8432 ("kcoreaddons" ,kcoreaddons)
8433 ("kcrash" ,kcrash)
8434 ("kguiaddons" ,kguiaddons)
8435 ("ki18n" ,ki18n)
8436 ("kiconthemes" ,kiconthemes)
8437 ("kio" ,kio)
8438 ("kwidgetsaddons" ,kwidgetsaddons)
8439 ("kxmlgui" ,kxmlgui)
8440 ("libkdegames" ,libkdegames)
8441 ("glu" ,glu)
8442 ("qtbase" ,qtbase)
8443 ("qtdeclarative" ,qtdeclarative)
8444 ("qtsvg" ,qtsvg)))
8445 (home-page "https://games.kde.org/")
8446 (synopsis "Sudoku puzzle game and solver")
8447 (description "KSudoku is a Sudoku game and solver, supporting a range of
84482D and 3D Sudoku variants. In addition to playing Sudoku, it can print Sudoku
8449puzzle sheets and find the solution to any Sudoku puzzle.
8450
8451The word Sudoku means \"single number in an allotted place\" in Japanese.
8452These are the basic rules: Every Sudoku is a square divided into 3x3
8453subsquares with 3x3 cells each.
8454
8455Some cells are filled with a number at the beginning. The remaining ones are
8456to be filled by the player using numbers from 1 to 9, without repeating a
8457number twice on each column, row or subsquare (each of them must contain only
8458one 1, one 2, one 3, and so on). The game requires logic and patience.
8459Solving takes usually 10 to 30 minutes, depending on puzzle level, your skill
8460and experience.
8461
8462The numerals in Sudoku puzzles are used for convenience (for example in 16x16
8463board we use letters): arithmetic relationships between numbers are
8464irrelevant.
8465
8466This program supports also 16x16 games with numbers from 1 to 16 and 256
8467cells with 16 cols, rows and subsquares!
8468
8469More information at http://en.wikipedia.org/wiki/Sudoku
8470
8471This package is part of the KDE games module.")
8472 (license (list license:gpl2+ license:fdl1.2+))))
ec9ce951
HG
8473
8474(define-public klines
8475 (package
8476 (name "klines")
8477 (version "19.08.3")
8478 (source
8479 (origin
8480 (method url-fetch)
8481 (uri (string-append "mirror://kde/stable/applications/" version
8482 "/src/klines-" version ".tar.xz"))
8483 (sha256
8484 (base32 "1g1f46jp0rb8gpqkgcf915ydpsscn1sxk3gjvm8bcqgx9ddq59xa"))))
8485 (properties `((tags . ("Desktop" "KDE" "Games"))))
8486 (build-system qt-build-system)
8487 (native-inputs
8488 `(("extra-cmake-modules" ,extra-cmake-modules)
8489 ("kdoctools" ,kdoctools)))
8490 (inputs
8491 `(("kcompletion" ,kcompletion)
8492 ("kconfigwidgets" ,kconfigwidgets)
8493 ("kcoreaddons" ,kcoreaddons)
8494 ("kcrash" ,kcrash)
8495 ("kdbusaddons" ,kdbusaddons)
8496 ("ki18n" ,ki18n)
8497 ("kwidgetsaddons" ,kwidgetsaddons)
8498 ("kxmlgui" ,kxmlgui)
8499 ("libkdegames" ,libkdegames)
8500 ("qtbase" ,qtbase)
8501 ("qtdeclarative" ,qtdeclarative)))
8502 (home-page "https://games.kde.org/")
8503 (synopsis "Place 5 equal pieces together, but wait, there are 3 new ones")
8504 (description "KLines is a simple but highly addictive one player game.
8505
8506The player has to move the colored balls around the game board, gathering them
8507into the lines of the same color by five. Once the line is complete it is
8508removed from the board, therefore freeing precious space. In the same time
8509the new balls keep arriving by three after each move, filling up the game
8510board.
8511
8512KLines is a single-player game where the player removes colored balls from the
8513board by arranging them into lines of five or more. However, every time the
8514player moves a ball, three more balls are added to the board.
8515
8516This package is part of the KDE games module.")
8517 (license (list license:gpl2+ license:fdl1.2+))))
5a0fc695
HG
8518
8519(define-public kgoldrunner
8520 (package
8521 (name "kgoldrunner")
8522 (version "19.08.3")
8523 (source
8524 (origin
8525 (method url-fetch)
8526 (uri (string-append "mirror://kde/stable/applications/" version "/src/kgoldrunner-"
8527 version ".tar.xz"))
8528 (sha256
8529 (base32 "16rcvq796r3asz4v4ap75xvwnxd3dd2nsq5r9vxvzl6rrf1w9bj4"))))
8530 (properties `((tags . ("Desktop" "KDE" "Games"))))
8531 (build-system qt-build-system)
8532 (native-inputs
8533 `(("extra-cmake-modules" ,extra-cmake-modules)
8534 ("kdoctools" ,kdoctools)))
8535 (inputs
8536 `(("kcompletion" ,kcompletion)
8537 ("kcoreaddons" ,kcoreaddons)
8538 ("kcrash" ,kcrash)
8539 ("kdbusaddons" ,kdbusaddons)
8540 ("ki18n" ,ki18n)
8541 ("kio" ,kio)
8542 ("kwidgetsaddons" ,kwidgetsaddons)
8543 ("kxmlgui" ,kxmlgui)
8544 ("libkdegames" ,libkdegames)
8545 ("qtbase" ,qtbase)
8546 ("qtdeclarative" ,qtdeclarative)))
8547 (home-page "https://games.kde.org/")
8548 (synopsis "Action and puzzle solving game")
8549 (description "KGoldrunner is an action game where the hero runs through a
8550maze, climbs stairs, dig holes and dodges enemies in order to collect all the
8551gold nuggets and escape to the next level. Your enemies are also after the
8552gold. Worse still, they are after you!.
8553
8554KGoldrunner is a fast-paced platform game where the player must navigate a
8555maze while collecting gold nuggets and avoiding enemies. A variety of level
8556packs are included, as well as an editor to create new levels.
8557
8558This package is part of the KDE games module.")
8559 (license (list license:gpl2+ license:fdl1.2+))))
4c5ef9ba
HG
8560
8561(define-public kdiamond
8562 (package
8563 (name "kdiamond")
8564 (version "19.08.3")
8565 (source
8566 (origin
8567 (method url-fetch)
8568 (uri (string-append "mirror://kde/stable/applications/" version
8569 "/src/kdiamond-" version ".tar.xz"))
8570 (sha256
8571 (base32 "1v5yb9hb26lk277zhw8d37ks829yfqr5anzx1qhms44gca5kqhva"))))
8572 (properties `((tags . ("Desktop" "KDE" "Games"))))
8573 (build-system qt-build-system)
8574 (native-inputs
8575 `(("extra-cmake-modules" ,extra-cmake-modules)
8576 ("kdoctools" ,kdoctools)))
8577 (inputs
8578 `(("kcompletion", kcompletion)
8579 ("kconfig" ,kconfig)
8580 ("kconfigwidgets" ,kconfigwidgets)
8581 ("kcoreaddons" ,kcoreaddons)
8582 ("kcrash" ,kcrash)
8583 ("kdbusaddons" ,kdbusaddons)
8584 ("ki18n" ,ki18n)
8585 ("knotifications" ,knotifications)
8586 ("knotifyconfig" ,knotifyconfig)
8587 ("kwidgetsaddons" ,kwidgetsaddons)
8588 ("kxmlgui" ,kxmlgui)
8589 ("libkdegames" ,libkdegames)
8590 ("qtbase" ,qtbase)
8591 ("qtdeclarative" ,qtdeclarative)))
8592 (home-page "https://games.kde.org/")
8593 (synopsis "Three-in-a-row game")
8594 (description "KDiamond is a three-in-a-row game like Bejeweled. It
8595features unlimited fun with randomly generated games and five difficulty
8596levels with varying number of diamond colors and board sizes.
8597
8598This package is part of the KDE games module.")
8599 (license (list license:gpl2+ license:fdl1.2+))))
601f29cd
HG
8600
8601(define-public kfourinline
8602 (package
8603 (name "kfourinline")
8604 (version "19.08.3")
8605 (source
8606 (origin
8607 (method url-fetch)
8608 (uri (string-append "mirror://kde/stable/applications/" version
8609 "/src/kfourinline-" version ".tar.xz"))
8610 (sha256
8611 (base32 "1vprs6dc1ccn3g6k594i9s94xy4b91vzlqjysyc6fqcq2fs54ny3"))))
8612 (properties `((tags . ("Desktop" "KDE" "Games"))))
8613 (build-system qt-build-system)
8614 (native-inputs
8615 `(("extra-cmake-modules" ,extra-cmake-modules)
8616 ("kdoctools" ,kdoctools)))
8617 (inputs
8618 `(("kcompletion" ,kcompletion)
8619 ("kconfig" ,kconfig)
8620 ("kconfigwidgets" ,kconfigwidgets)
8621 ("kcoreaddons" ,kcoreaddons)
8622 ("kcrash" ,kcrash)
8623 ("kdelibs4support" ,kdelibs4support)
8624 ("kdnssd" ,kdnssd)
8625 ("ki18n" ,ki18n)
8626 ("kxmlgui" ,kxmlgui)
8627 ("libkdegames" ,libkdegames)
8628 ("qtbase" ,qtbase)
8629 ("qtdeclarative" ,qtdeclarative)
8630 ("qtsvg" ,qtsvg)))
8631 (home-page "https://games.kde.org/")
8632 (synopsis "Place 4 pieces in a row")
8633 (description "KFourInLine is a board game for two players based on the
8634Connect-Four game.
8635
8636KFourInLine is a game where two players take turns dropping pieces into a
8637grid, the winner being the first to place four pieces in a line.
8638
8639This package is part of the KDE games module.")
8640 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
cc1cca9f
HG
8641
8642(define-public kblackbox
8643 (package
8644 (name "kblackbox")
8645 (version "19.08.3")
8646 (source
8647 (origin
8648 (method url-fetch)
8649 (uri (string-append "mirror://kde/stable/applications/" version
8650 "/src/kblackbox-" version ".tar.xz"))
8651 (sha256
8652 (base32 "1x42sfpf75c6mavwkc7g7dm11y9s5dpj8igphly5kvm0pajqby0n"))))
8653 (properties `((tags . ("Desktop" "KDE" "Games"))))
8654 (build-system qt-build-system)
8655 (native-inputs
8656 `(("extra-cmake-modules" ,extra-cmake-modules)
8657 ("kdoctools" ,kdoctools)))
8658 (inputs
8659 `(("karchive" ,karchive)
8660 ("kcompletion" ,kcompletion)
8661 ("kconfig" ,kconfig)
8662 ("kcoreaddons" ,kcoreaddons)
8663 ("kcrash" ,kcrash)
8664 ("kdbusaddons" ,kdbusaddons)
8665 ("ki18n" ,ki18n)
8666 ("ktextwidgets" ,ktextwidgets)
8667 ("kxmlgui" ,kxmlgui)
8668 ("libkdegames" ,libkdegames)
8669 ("qtbase" ,qtbase)
8670 ("qtdeclarative" ,qtdeclarative)
8671 ("qtsvg" ,qtsvg)))
8672 (home-page "https://games.kde.org/")
8673 (synopsis "Find atoms in a grid by shooting electrons")
8674 (description "KBlackbox is a game of hide and seek played on a grid of
8675boxes where the computer has hidden several balls. The position of the hidden
8676balls can be deduced by shooting beams into the box
8677
8678KBlackBox is a game of hide and seek played on an grid of boxes, where the
8679player shoots rays into the grid to deduce the positions of hidden objects.
8680
8681This package is part of the KDE games module.")
8682 (license (list license:gpl2+ license:fdl1.2+))))
d6973ec9
HG
8683
8684(define-public knetwalk
8685 (package
8686 (name "knetwalk")
8687 (version "19.08.3")
8688 (source
8689 (origin
8690 (method url-fetch)
8691 (uri (string-append "mirror://kde/stable/applications/" version
8692 "/src/knetwalk-" version ".tar.xz"))
8693 (sha256
8694 (base32 "1i340salzgqdw8y33wrrydmpgx3pvwf5wrbljlh67cjf6s4csx7d"))))
8695 (properties `((tags . ("Desktop" "KDE" "Games"))))
8696 (build-system qt-build-system)
8697 (native-inputs
8698 `(("extra-cmake-modules" ,extra-cmake-modules)
8699 ("kdoctools" ,kdoctools)))
8700 (inputs
8701 `(("kcompletion" ,kcompletion)
8702 ("kconfig" ,kconfig)
8703 ("kconfigwidgets" ,kconfigwidgets)
8704 ("kcoreaddons" ,kcoreaddons)
8705 ("kcrash" ,kcrash)
8706 ("kdbusaddons" ,kdbusaddons)
8707 ("ki18n" ,ki18n)
8708 ("ktextwidgets" ,ktextwidgets)
8709 ("kwidgetsaddons" ,kwidgetsaddons)
8710 ("kxmlgui" ,kxmlgui)
8711 ("libkdegames" ,libkdegames)
8712 ("qtbase" ,qtbase)
8713 ("qtdeclarative" ,qtdeclarative)))
8714 (home-page "https://games.kde.org/")
8715 (synopsis "Turn the board pieces to get all computers connected")
8716 (description "KNetWalk is a small game where you have to build up a
8717computer network by rotating the wires to connect the terminals to the server.
8718When the network is build, a highscore-list comes up where competitions can be
8719fought out.
8720
8721KNetwalk is a puzzle game where the player arranges sections of wire to
8722connect all the computers on the board.
8723
8724This package is part of the KDE games module.")
8725 (license (list license:gpl2+ license:fdl1.2+))))
69436285
HG
8726
8727(define-public bomber
8728 (package
8729 (name "bomber")
8730 (version "19.08.3")
8731 (source
8732 (origin
8733 (method url-fetch)
8734 (uri (string-append "mirror://kde/stable/applications/" version
8735 "/src/bomber-" version ".tar.xz"))
8736 (sha256
8737 (base32 "1lvzd0mzgq25akvwvkm57l3plm65k731v2i1ahakn985bb5gc3is"))))
8738 (properties `((tags . ("Desktop" "KDE" "Games"))))
8739 (build-system qt-build-system)
8740 (native-inputs
8741 `(("extra-cmake-modules" ,extra-cmake-modules)
8742 ("kdoctools" ,kdoctools)))
8743 (inputs
8744 `(("kcompletiom" ,kcompletion)
8745 ("kconfig" ,kconfig)
8746 ("kcoreaddons" ,kcoreaddons)
8747 ("kcrash" ,kcrash)
8748 ("kdbusaddons" ,kdbusaddons)
8749 ("ki18n" ,ki18n)
8750 ("kxmlgui" ,kxmlgui)
8751 ("libkdegames" ,libkdegames)
8752 ("qtbase" ,qtbase)
8753 ("qtdeclarative" ,qtdeclarative)))
8754 (home-page "https://games.kde.org/")
8755 (synopsis "Arcade bombing game")
8756 (description "Bomber is a single player arcade game.
8757
8758The player is invading various cities in a plane that is decreasing in height.
8759The goal of the game is to destroy all the buildings and advance to the next
8760level. Each level gets a bit harder by increasing the speed of the plane and
8761the height of the buildings.
8762
8763Bomber is a game where you fly a spaceship and attempt to bomb the buildings
8764below you. Each pass the spaceship makes, it gets lower and lower. If you've
8765not destroyed a building in your path, you will crash into it.
8766
8767This package is part of the KDE games module.")
8768 (license (list license:gpl2+ license:fdl1.2+))))
4f0b3368
HG
8769
8770(define-public granatier
8771 (package
8772 (name "granatier")
8773 (version "19.08.3")
8774 (source
8775 (origin
8776 (method url-fetch)
8777 (uri (string-append "mirror://kde/stable/applications/" version
8778 "/src/granatier-" version ".tar.xz"))
8779 (sha256
8780 (base32 "141qmdinz7ikbbrs8dq6cap3nl22sl7pw62r80pf3xxwn2q4phpa"))))
8781 (properties `((tags . ("Desktop" "KDE" "Games"))))
8782 (build-system qt-build-system)
8783 (native-inputs
8784 `(("extra-cmake-modules" ,extra-cmake-modules)
8785 ("kdoctools" ,kdoctools)))
8786 (inputs
8787 `(("kcompletion" ,kcompletion)
8788 ("kconfig" ,kconfig)
8789 ("kconfigwidgets" ,kconfigwidgets)
8790 ("kcoreaddons" ,kcoreaddons)
8791 ("kcrash" ,kcrash)
8792 ("kdbusaddons" ,kdbusaddons)
8793 ("ki18n" ,ki18n)
8794 ("knewstuff" ,knewstuff)
8795 ("kwidgetsaddons" ,kwidgetsaddons)
8796 ("kxmlgui" ,kxmlgui)
8797 ("libkdegames" ,libkdegames)
8798 ("qtbase" ,qtbase)
8799 ("qtdeclarative" ,qtdeclarative)
8800 ("qtsvg" ,qtsvg)))
8801 (home-page "https://games.kde.org/")
8802 (synopsis "Bomberman clone")
8803 (description "Granatier is a clone of the classic Bomberman game,
8804inspired by the work of the Clanbomber clone.
8805
8806This package is part of the KDE games module.")
8807 (license (list license:gpl2+ license:fdl1.2+))))
584e07ee
HG
8808
8809(define-public ksirk
8810 (package
8811 (name "ksirk")
8812 (version "19.08.3")
8813 (source
8814 (origin
8815 (method url-fetch)
8816 (uri (string-append "mirror://kde/stable/applications/" version
8817 "/src/ksirk-" version ".tar.xz"))
8818 (sha256
8819 (base32 "1b1wixs2hp5qnvdygfwa3kvy0kn94ysa4ifmx90q6r3yfr2lpfca"))))
8820 (properties `((tags . ("Desktop" "KDE" "Games"))))
8821 (build-system qt-build-system)
8822 (native-inputs
8823 `(("extra-cmake-modules" ,extra-cmake-modules)
8824 ("kdoctools" ,kdoctools)))
8825 (inputs
8826 `(("kcrash" ,kcrash)
8827 ("ki18n" ,ki18n)
8828 ("kiconthemes" ,kiconthemes)
8829 ("kio" ,kio)
8830 ("knewstuff" ,knewstuff)
8831 ("kwallet" ,kwallet)
8832 ("kxmlgui" ,kxmlgui)
8833 ("libkdegames" ,libkdegames)
8834 ("phonon" ,phonon)
8835 ("qca" ,qca)
8836 ("qtbase" ,qtbase)
8837 ("qtdeclarative" ,qtdeclarative)
8838 ("qtsvg" ,qtsvg)
8839 ("zlib" ,zlib)))
8840 (home-page "https://games.kde.org/")
8841 (synopsis "Computerized version of the well known strategy board game
8842'Risk'")
8843 (description "KsirK is a multi-player network-enabled game. The goal of
8844the game is simply to conquer the world by attacking your neighbors with your
8845armies.
8846
8847At the beginning of the game, countries are distributed to all the players.
8848Each country contains one army represented by an infantryman. Each player has
8849some armies to distribute to his countries. On each turn, each player can
8850attack his neighbours, eventually conquering one or more countries. At the
8851end of each turn, some bonus armies are distributed to the players in function
8852of the number of countries they own. The winner is the player that conquered
8853all the world.
8854
8855Features:
8856@itemize
8857@item Support for 1-6 human or computer players
8858@item Multi-player gaming over a network
8859@item You can easily create new skins with SVG graphics and the skin editor
8860@item Hot New Stuff support. You can easily download and install new skins
8861@end itemize
8862
8863This package is part of the KDE games module.")
8864 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
56064cd7
HG
8865
8866(define-public palapeli
8867 (package
8868 (name "palapeli")
8869 (version "19.08.3")
8870 (source
8871 (origin
8872 (method url-fetch)
8873 (uri (string-append "mirror://kde/stable/applications/" version
8874 "/src/palapeli-" version ".tar.xz"))
8875 (sha256
8876 (base32 "1g91ydbc0x2y2gn3lcb5w03mn7k78l5bq4cb1s59kx6yjbflv3pw"))))
8877 (properties `((tags . ("Desktop" "KDE" "Games"))))
8878 (build-system qt-build-system)
8879 (native-inputs
8880 `(("extra-cmake-modules" ,extra-cmake-modules)
8881 ("kdoctools" ,kdoctools)))
8882 (inputs
8883 `(("karchive" ,karchive)
8884 ("kcompletion" ,kcompletion)
8885 ("kconfig" ,kconfig)
8886 ("kconfigwidgets" ,kconfigwidgets)
8887 ("kcoreaddons" ,kcoreaddons)
8888 ("kcrash" ,kcrash)
8889 ("kcrash" ,kcrash)
8890 ("ki18n" ,ki18n)
8891 ("ki18n" ,ki18n)
8892 ("kio" ,kio)
8893 ("kitemviews" ,kitemviews)
8894 ("knotifications" ,knotifications)
8895 ("kservice" ,kservice)
8896 ("kwidgetsaddons" ,kwidgetsaddons)
8897 ("kxmlgui" ,kxmlgui)
8898 ("libkdegames" ,libkdegames)
8899 ("qtbase" ,qtbase)
8900 ("qtdeclarative" ,qtdeclarative)
8901 ("qtsvg" ,qtsvg)
8902 ("shared-mime-info" ,shared-mime-info)))
8903 (home-page "https://games.kde.org/")
8904 (synopsis "Jigsaw puzzle game")
8905 (description "Palapeli is a jigsaw puzzle game. Unlike other games in
8906that genre, you are not limited to aligning pieces on imaginary grids. The
8907pieces are freely moveable. Also, Palapeli features real persistency, i.e.
8908everything you do is saved on your disk immediately.
8909
8910Palapeli is the Finnish word for jigsaw puzzle.
8911
8912This package is part of the KDE games module.")
8913 (license license:gpl2+)))
bf6bfdbe
HG
8914
8915(define-public kiriki
8916 (package
8917 (name "kiriki")
8918 (version "19.08.3")
8919 (source
8920 (origin
8921 (method url-fetch)
8922 (uri (string-append "mirror://kde/stable/applications/" version
8923 "/src/kiriki-" version ".tar.xz"))
8924 (sha256
8925 (base32 "1xg25dj95g81dc5l7k47am4j52abrwwfx4h73lvsbn4lc8lfmshw"))))
8926 (properties `((tags . ("Desktop" "KDE" "Games"))))
8927 (build-system qt-build-system)
8928 (native-inputs
8929 `(("extra-cmake-modules" ,extra-cmake-modules)
8930 ("kdoctools" ,kdoctools)))
8931 (inputs
8932 `(("kcompletion" ,kcompletion)
8933 ("kconfig" ,kconfig)
8934 ("kconfigwidgets" ,kconfigwidgets)
8935 ("kcoreaddons" ,kcoreaddons)
8936 ("kcrash" ,kcrash)
8937 ("kdbusaddons" ,kdbusaddons)
8938 ("ki18n" ,ki18n)
8939 ("kiconthemes" ,kiconthemes)
8940 ("kxmlgui" ,kxmlgui)
8941 ("libkdegames" ,libkdegames)
8942 ("qtbase" ,qtbase)
8943 ("qtdeclarative" ,qtdeclarative)))
8944 (home-page "https://games.kde.org/")
8945 (synopsis "Yahtzee dice game")
8946 (description "Kiriki is an addictive and fun dice game, designed to be
8947played by as many as six players.
8948
8949Participants have to collect points by rolling five dice for up to three times
8950per single turn to make combinations with the highest score.
8951
8952This package is part of the KDE games module.")
8953 (license (list license:gpl2+ license:fdl1.2+))))
f0b21b8d
HG
8954
8955(define-public kigo
8956 (package
8957 (name "kigo")
8958 (version "19.08.3")
8959 (source
8960 (origin
8961 (method url-fetch)
8962 (uri (string-append "mirror://kde/stable/applications/" version
8963 "/src/kigo-" version ".tar.xz"))
8964 (sha256
8965 (base32 "00l5gcbi8xyj9c1lngkrddka3a4m4cd78prfplrpq32ma9xq681f"))))
8966 (properties `((tags . ("Desktop" "KDE" "Games"))))
8967 (build-system qt-build-system)
8968 (native-inputs
8969 `(("extra-cmake-modules" ,extra-cmake-modules)
8970 ("kdoctools" ,kdoctools)))
8971 (inputs
8972 `(("kconfig" ,kconfig)
8973 ("kconfigwidgets" ,kconfigwidgets)
8974 ("kcoreaddons" ,kcoreaddons)
8975 ("kcrash" ,kcrash)
8976 ("kdbusaddons" ,kdbusaddons)
8977 ("ki18n" ,ki18n)
8978 ("kio" ,kio)
8979 ("knewstuff", knewstuff)
8980 ("ktextwidgets" ,ktextwidgets)
8981 ("kxmlgui" ,kxmlgui)
8982 ("libkdegames" ,libkdegames)
8983 ("qtbase" ,qtbase)
8984 ("qtdeclarative" ,qtdeclarative)
8985 ("qtsvg" ,qtsvg)))
8986 (home-page "https://games.kde.org/")
8987 (synopsis "Go board game")
8988 (description "Kigo is an open-source implementation of the popular Go
8989game.
8990
8991Go is a strategic board game for two players. It is also known as
8992igo (Japanese), weiqi or wei ch'i (Chinese) or baduk (Korean). Go is noted
8993for being rich in strategic complexity despite its simple rules. The game is
8994played by two players who alternately place black and white stones (playing
8995pieces, now usually made of glass or plastic) on the vacant intersections of a
8996grid of 19x19 lines (9x9 or 13x13 for easier games).
8997
8998You also need to install a go engine, e.g. @code{gnugo}.
8999
9000This package is part of the KDE games module.")
9001 (license license:gpl3+)))
90e594d3
HG
9002
9003(define-public kubrick
9004 (package
9005 (name "kubrick")
9006 (version "19.08.3")
9007 (source
9008 (origin
9009 (method url-fetch)
9010 (uri (string-append "mirror://kde/stable/applications/" version
9011 "/src/kubrick-" version ".tar.xz"))
9012 (sha256
9013 (base32 "0ma8wja4rqlsmsr8cyicfpkwlgqva4450ls4c0ql53p0kabf04gx"))))
9014 (properties `((tags . ("Desktop" "KDE" "Games"))))
9015 (build-system qt-build-system)
9016 (native-inputs
9017 `(("extra-cmake-modules" ,extra-cmake-modules)
9018 ("kdoctools" ,kdoctools)))
9019 (inputs
9020 `(("glu" ,glu)
9021 ("kconfig" ,kconfig)
9022 ("kconfigwidgets" ,kconfigwidgets)
9023 ("kcoreaddons" ,kcoreaddons)
9024 ("kcrash" ,kcrash)
9025 ("ki18n" ,ki18n)
9026 ("kio" ,kio)
9027 ("kwidgetsaddons" ,kwidgetsaddons)
9028 ("kxmlgui" ,kxmlgui)
9029 ("libkdegames" ,libkdegames)
9030 ("qtbase" ,qtbase)
9031 ("qtdeclarative" ,qtdeclarative)
9032 ("qtsvg" ,qtsvg)))
9033 (home-page "https://games.kde.org/")
9034 (synopsis "Game based on Rubik's Cube")
9035 (description "Kubrick is a game based on the Rubik's Cube puzzle.
9036
9037The cube sizes range from 2x2x2 up to 6x6x6, or you can play with irregular
9038\"bricks\" such as 5x3x2 or \"mats\" such as 6x4x1 or 2x2x1. The game has a
9039selection of puzzles at several levels of difficulty, as well as demos of
9040pretty patterns and solution moves, or you can make up your own puzzles. The
9041game has unlimited undo, redo, save and reload capabilities.
9042
9043This package is part of the KDE games module.")
9044 (license (list license:gpl2+ license:fdl1.2+))))
01e2f2ed
HG
9045
9046(define-public lskat
9047 (package
9048 (name "lskat")
9049 (version "19.08.3")
9050 (source
9051 (origin
9052 (method url-fetch)
9053 (uri (string-append "mirror://kde/stable/applications/" version
9054 "/src/lskat-" version ".tar.xz"))
9055 (sha256
9056 (base32 "1qk5hd27zb42pbcxq5wyzz62nj5f0qdmgy54r9rnk92pzzzk94s9"))))
9057 (properties `((tags . ("Desktop" "KDE" "Games"))))
9058 (build-system qt-build-system)
9059 (native-inputs
9060 `(("extra-cmake-modules" ,extra-cmake-modules)
9061 ("kdoctools" ,kdoctools)))
9062 (inputs
9063 `(("kcompletion" ,kcompletion)
9064 ("kconfig" ,kconfig)
9065 ("kcoreaddons" ,kcoreaddons)
9066 ("kcrash" ,kcrash)
9067 ("kguiaddons" ,kguiaddons)
9068 ("ki18n" ,ki18n)
9069 ("kwidgetsaddons" ,kwidgetsaddons)
9070 ("kxmlgui" ,kxmlgui)
9071 ("libkdegames" ,libkdegames)
9072 ("qtbase" ,qtbase)
9073 ("qtdeclarative" ,qtdeclarative)
9074 ("qtsvg" ,qtsvg)))
9075 (home-page "https://games.kde.org/")
9076 (synopsis "Lieutnant Skat card game")
9077 (description "Lieutnant Skat (from German \"Offiziersskat\") is a fun and
9078engaging card game for two players, where the second player is either live
9079opponent, or a built in artificial intelligence.
9080
9081Lieutnant Skat is a simplified variant of the Skat card game for two players.
9082
9083This package is part of the KDE games module.")
9084 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
ed88e67d
HG
9085
9086(define-public kapman
9087 (package
9088 (name "kapman")
9089 (version "19.08.3")
9090 (source
9091 (origin
9092 (method url-fetch)
9093 (uri (string-append "mirror://kde/stable/applications/" version
9094 "/src/kapman-" version ".tar.xz"))
9095 (sha256
9096 (base32 "03pq38caam30q4bw14c045kayw2d87xq1yaa3s2jkrylylfq3p0f"))))
9097 (properties `((tags . ("Desktop" "KDE" "Games"))))
9098 (build-system qt-build-system)
9099 (native-inputs
9100 `(("extra-cmake-modules" ,extra-cmake-modules)
9101 ("kdoctools" ,kdoctools)))
9102 (inputs
9103 `(("kcompletion" ,kcompletion)
9104 ("kconfig" ,kconfig)
9105 ("kconfigwidgets" ,kconfigwidgets)
9106 ("kcoreaddons" ,kcoreaddons)
9107 ("kcrash" ,kcrash)
9108 ("kdbusaddons" ,kdbusaddons)
9109 ("ki18n" ,ki18n)
9110 ("kxmlgui" ,kxmlgui)
9111 ("libkdegames" ,libkdegames)
9112 ("qtbase" ,qtbase)
9113 ("qtdeclarative" ,qtdeclarative)
9114 ("qtsvg" ,qtsvg)))
9115 (home-page "https://games.kde.org/")
9116 (synopsis "Pac-Man clone")
9117 (description "Kapman is a clone of the well known game Pac-Man.
9118
9119You must run through the maze to eat all pills without being captured by a
9120ghost. By eating an energizer, Kapman gets the ability to eat ghosts for a
9121few seconds. When a stage is cleared of pills and energizer the player is
9122taken to the next stage with slightly increased game speed
9123
9124This package is part of the KDE games module.")
9125 (license (list license:gpl2+ license:fdl1.2+))))
fb05eed9
HG
9126
9127(define-public kspaceduel
9128 (package
9129 (name "kspaceduel")
9130 (version "19.08.3")
9131 (source
9132 (origin
9133 (method url-fetch)
9134 (uri (string-append "mirror://kde/stable/applications/" version
9135 "/src/kspaceduel-" version ".tar.xz"))
9136 (sha256
9137 (base32 "1hppni0ihs7psc0dly5rxyy2a38nzhlig9yfyhi3lkh36z05pql8"))))
9138 (properties `((tags . ("Desktop" "KDE" "Games"))))
9139 (build-system qt-build-system)
9140 (native-inputs
9141 `(("extra-cmake-modules" ,extra-cmake-modules)
9142 ("kdoctools" ,kdoctools)))
9143 (inputs
9144 `(("kcompletion" ,kcompletion)
9145 ("kconfig" ,kconfig)
9146 ("kconfigwidgets" ,kconfigwidgets)
9147 ("kcoreaddons" ,kcoreaddons)
9148 ("kcrash" ,kcrash)
9149 ("kdbusaddons" ,kdbusaddons)
9150 ("ki18n" ,ki18n)
9151 ("kxmlgui" ,kxmlgui)
9152 ("libkdegames" ,libkdegames)
9153 ("qtbase" ,qtbase)
9154 ("qtdeclarative" ,qtdeclarative)
9155 ("qtsvg" ,qtsvg)))
9156 (home-page "https://games.kde.org/")
9157 (synopsis "Two player game with shooting spaceships flying around a sun")
9158 (description "KSpaceduel is a space battle game for one or two players,
9159where two ships fly around a star in a struggle to be the only survivor.
9160
9161This package is part of the KDE games module.")
9162 (license (list license:gpl2+ license:fdl1.2+))))
37ea126d
HG
9163
9164(define-public bovo
9165 (package
9166 (name "bovo")
9167 (version "19.08.3")
9168 (source
9169 (origin
9170 (method url-fetch)
9171 (uri (string-append "mirror://kde/stable/applications/" version
9172 "/src/bovo-" version ".tar.xz"))
9173 (sha256
9174 (base32 "0dbpng0w52nahmx7brsll66zw23ql1g6pcvn2k4g2lnvxch0i59g"))))
9175 (properties `((tags . ("Desktop" "KDE" "Games"))))
9176 (build-system qt-build-system)
9177 (native-inputs
9178 `(("extra-cmake-modules" ,extra-cmake-modules)
9179 ("kdoctools" ,kdoctools)))
9180 (inputs
9181 `(("kcompletion" ,kcompletion)
9182 ("kcoreaddons" ,kcoreaddons)
9183 ("kcrash" ,kcrash)
9184 ("kdbusaddons" ,kdbusaddons)
9185 ("ki18n" ,ki18n)
9186 ("kxmlgui" ,kxmlgui)
9187 ("libkdegames" ,libkdegames)
9188 ("qtbase" ,qtbase)
9189 ("qtdeclarative" ,qtdeclarative)
9190 ("qtsvg" ,qtsvg)))
9191 (home-page "https://games.kde.org/")
9192 (synopsis "Classic pen and paper game: five in a line")
9193 (description "Bovo is a Gomoku (from Japanese 五目並べ - lit. \"five
9194points\") like game for two players, where the opponents alternate in placing
9195their respective pictogram on the game board. The winner is the first to
9196complete a line of five markers. (Also known as: Connect Five, Five in a row,
9197X and O, Naughts and Crosses)
9198
9199This package is part of the KDE games module.")
9200 (license (list license:gpl2+ license:fdl1.2+))))
2fbf14e1
HG
9201
9202(define-public killbots
9203 (package
9204 (name "killbots")
9205 (version "19.08.3")
9206 (source
9207 (origin
9208 (method url-fetch)
9209 (uri (string-append "mirror://kde/stable/applications/" version
9210 "/src/killbots-" version ".tar.xz"))
9211 (sha256
9212 (base32 "1qi86q7diw7glkp9v33yim9nhz2da4balbxa1hjrdgjdv8zdbxbm"))))
9213 (properties `((tags . ("Desktop" "KDE" "Games"))))
9214 (build-system qt-build-system)
9215 (native-inputs
9216 `(("extra-cmake-modules" ,extra-cmake-modules)
9217 ("kdoctools" ,kdoctools)))
9218 (inputs
9219 `(("kcompletion" ,kcompletion)
9220 ("kconfig" ,kconfig)
9221 ("kconfigwidgets" ,kconfigwidgets)
9222 ("kcoreaddons" ,kcoreaddons)
9223 ("kcrash" ,kcrash)
9224 ("kdbusaddons" ,kdbusaddons)
9225 ("ki18n" ,ki18n)
9226 ("kwidgetsaddons" ,kwidgetsaddons)
9227 ("kxmlgui" ,kxmlgui)
9228 ("libkdegames" ,libkdegames)
9229 ("qtbase" ,qtbase)
9230 ("qtdeclarative" ,qtdeclarative)))
9231 (home-page "https://games.kde.org/")
9232 (synopsis "Port of the classic BSD console game robots")
9233 (description "Killbots is a simple game of evading killer robots.
9234
9235Who created the robots and why they have been programmed to destroy, no one
9236knows. All that is known is that the robots are numerous and their sole
9237objective is to destroy you. Fortunately for you, their creator has focused
9238on quantity rather than quality and as a result the robots are severely
9239lacking in intelligence. Your superior wit and a fancy teleportation device
9240are your only weapons against the never-ending stream of mindless automatons.
9241
9242This package is part of the KDE games module.")
9243 (license (list license:gpl2+ license:fdl1.2+))))
f2f0ef92
HG
9244
9245(define-public ksnakeduel
9246 (package
9247 (name "ksnakeduel")
9248 (version "19.08.3")
9249 (source
9250 (origin
9251 (method url-fetch)
9252 (uri (string-append "mirror://kde/stable/applications/" version
9253 "/src/ksnakeduel-" version ".tar.xz"))
9254 (sha256
9255 (base32 "0mprrnpax8pv7ab36zwhvdfj8id52w8g6x76nnj8qvkdlkjiqdnn"))))
9256 (properties `((tags . ("Desktop" "KDE" "Games"))))
9257 (build-system qt-build-system)
9258 (native-inputs
9259 `(("extra-cmake-modules" ,extra-cmake-modules)
9260 ("kdoctools" ,kdoctools)))
9261 (inputs
9262 `(("kcompletion" ,kcompletion)
9263 ("kconfig" ,kconfig)
9264 ("kconfigwidgets" ,kconfigwidgets)
9265 ("kcoreaddons" ,kcoreaddons)
9266 ("kcrash" ,kcrash)
9267 ("kdbusaddons" ,kdbusaddons)
9268 ("kguiaddons" ,kguiaddons)
9269 ("ki18n" ,ki18n)
9270 ("kxmlgui" ,kxmlgui)
9271 ("libkdegames" ,libkdegames)
9272 ("qtbase" ,qtbase)
9273 ("qtdeclarative" ,qtdeclarative)
9274 ("qtsvg" ,qtsvg)))
9275 (home-page "https://games.kde.org/")
9276 (synopsis "Snake race played against the computer")
9277 (description "KSnakeDuel is a fast action game where you steer a snake
9278which has to eat food. While eating the snake grows. But once a player
9279collides with the other snake or the wall the game is lost. This becomes of
9280course more and more difficult the longer the snakes grow.
9281
9282This package is part of the KDE games module.")
9283 (license (list license:gpl2+ license:fdl1.2+))))
f114a689
HG
9284
9285(define-public kollision
9286 (package
9287 (name "kollision")
9288 (version "19.08.3")
9289 (source
9290 (origin
9291 (method url-fetch)
9292 (uri (string-append "mirror://kde/stable/applications/" version
9293 "/src/kollision-" version ".tar.xz"))
9294 (sha256
9295 (base32 "1p7qrn3d0ybpvc9k6k5wzj54dsrp1rqh39844maz0ay2fhvmch12"))))
9296 (properties `((tags . ("Desktop" "KDE" "Games"))))
9297 (build-system qt-build-system)
9298 (native-inputs
9299 `(("extra-cmake-modules" ,extra-cmake-modules)
9300 ("kdoctools" ,kdoctools)))
9301 (inputs
9302 `(("kcompletion" ,kcompletion)
9303 ("kconfig" ,kconfig)
9304 ("kcoreaddons" ,kcoreaddons)
9305 ("kcrash" ,kcrash)
9306 ("kdbusaddons" ,kdbusaddons)
9307 ("ki18n" ,ki18n)
9308 ("kwidgetsaddons" ,kwidgetsaddons)
9309 ("kxmlgui" ,kxmlgui)
9310 ("libkdegames" ,libkdegames)
9311 ("qtbase" ,qtbase)
9312 ("qtdeclarative" ,qtdeclarative)))
9313 (home-page "https://games.kde.org/")
9314 (synopsis "Simple ball dodging game")
9315 (description "In Kollision you use mouse to control a small blue ball in a
9316closed space environment filled with small red balls, which move about
9317chaotically. Your goal is to avoid touching any of those red balls with your
9318blue one, because the moment you do the game will be over. The longer you can
9319stay in game the higher will your score be.
9320
9321This package is part of the KDE games module.")
9322 (license (list license:gpl2+ license:fdl1.2+))))
4e759110
HG
9323
9324(define-public knavalbattle
9325 (package
9326 (name "knavalbattle")
9327 (version "19.08.3")
9328 (source
9329 (origin
9330 (method url-fetch)
9331 (uri (string-append "mirror://kde/stable/applications/" version
9332"/src/knavalbattle-" version ".tar.xz"))
9333 (sha256
9334 (base32 "0sdfjplqkb30x2mvh66pkzay6vn5px87779sh2s8lpl6fcw0v9g4"))))
9335 (properties `((tags . ("Desktop" "KDE" "Games"))))
9336 (build-system qt-build-system)
9337 (native-inputs
9338 `(("extra-cmake-modules" ,extra-cmake-modules)
9339 ("kdoctools" ,kdoctools)))
9340 (inputs
9341 `(("kauth" ,kauth)
9342 ("kcompletion" ,kcompletion)
9343 ("kconfig" ,kconfig)
9344 ("kconfigwidgets" ,kconfigwidgets)
9345 ("kcoreaddons" ,kcoreaddons)
9346 ("kcrash" ,kcrash)
9347 ("kdbusaddons" ,kdbusaddons)
9348 ("kdnssd" ,kdnssd)
9349 ("ki18n" ,ki18n)
9350 ("ktextwidgets" ,ktextwidgets)
9351 ("kxmlgui" ,kxmlgui)
9352 ("libkdegames" ,libkdegames)
9353 ("qtbase" ,qtbase)
9354 ("qtdeclarative" ,qtdeclarative)))
9355 (home-page "https://games.kde.org/")
9356 (synopsis "Battleship board game with built-in game server")
9357 (description "KBattleship is a Battle Ship game for KDE.
9358
9359Ships are placed on a board which represents the sea. Players try to hit each
9360others ships in turns without knowing where they are placed. The first player
9361to destroy all ships wins the game.
9362
9363This package is part of the KDE games module.")
9364 (license (list license:gpl2+ license:fdl1.2+))))