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