gnu: Add ronn-ng
[jackhill/guix/guix.git] / gnu / packages / games.scm
CommitLineData
490c6528
JD
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 John Darrington <jmd@gnu.org>
5edf2f05 3;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
1a6734ed 4;;; Copyright © 2014, 2016 David Thompson <dthompson2@worcester.edu>
8f33b76e 5;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020 Eric Bavier <bavier@posteo.net>
3cf118a1 6;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com>
bb3b71ce 7;;; Copyright © 2014 Sylvain Beucler <beuc@beuc.net>
e23f2ff1 8;;; Copyright © 2014, 2015, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
576b1aee 9;;; Copyright © 2014, 2015, 2016 Sou Bunnbu <iyzsong@gmail.com>
ab0c796b 10;;; Copyright © 2014, 2015, 2019 Mark H Weaver <mhw@netris.org>
d7c4619b 11;;; Copyright © 2015, 2016 Andreas Enge <andreas@enge.fr>
fc936b65 12;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
10d53153 13;;; Copyright © 2015, 2017, 2018 Christopher Lemmer Webber <cwebber@dustycloud.org>
ca32afac 14;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
eccfa301 15;;; Copyright © 2015, 2016, 2017 Alex Kost <alezost@gmail.com>
e11b2752 16;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
365950ce 17;;; Copyright © 2016, 2017 Rodger Fox <thylakoid@openmailbox.org>
3c986a7d 18;;; Copyright © 2016, 2017, 2018 Nikita <nikita@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>
dc9b1835 22;;; Copyright © 2016, 2017, 2018, 2019, 2020 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>
57fa9cd8 26;;; Copyright © 2017, 2018, 2020 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>
1abfb4d4 30;;; Copyright © 2017, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
1be6f488 31;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
a70d06b5 32;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
40d2bddd 33;;; Copyright © 2017, 2018, 2019, 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
2922852e 34;;; Copyright © 2018 okapi <okapi@firemail.cc>
e402a66b 35;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
e7448859 36;;; Copyright © 2018 Madalin Ionel-Patrascu <madalinionel.patrascu@mdc-berlin.de>
39b5d8fd 37;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net>
f9e5caf9 38;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
7dd2005f 39;;; Copyright © 2019, 2020 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>
982a6e79 43;;; Copyright © 2019, 2020 Jesse Gibbons <jgibbons2357+guix@gmail.com>
3f9a027c 44;;; Copyright © 2019 Dan Frumin <dfrumin@cs.ru.nl>
d24881e4 45;;; Copyright © 2019, 2020 Guillaume Le Vaillant <glv@posteo.net>
299e15c1 46;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar@araneo.si>
894fbb33 47;;; Copyright © 2019 Josh Holland <josh@inv.alid.pw>
3c1c5622 48;;; Copyright © 2017, 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
79a48038 49;;; Copyright © 2020 Alberto Eleuterio Flores Guerrero <barbanegra+guix@posteo.mx>
db47adb0 50;;; Copyright © 2020 Naga Malleswari <nagamalli@riseup.net>
3de5b404 51;;; Copyright © 2020 Vitaliy Shatrov <D0dyBo0D0dyBo0@protonmail.com>
63406c0b 52;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us>
0ad7e703 53;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
500ee354 54;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
fb38560c 55;;; Copyright © 2020 Trevor Hass <thass@okstate.edu>
d8fcde01 56;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at>
490c6528
JD
57;;;
58;;; This file is part of GNU Guix.
59;;;
60;;; GNU Guix is free software; you can redistribute it and/or modify it
61;;; under the terms of the GNU General Public License as published by
62;;; the Free Software Foundation; either version 3 of the License, or (at
63;;; your option) any later version.
64;;;
65;;; GNU Guix is distributed in the hope that it will be useful, but
66;;; WITHOUT ANY WARRANTY; without even the implied warranty of
67;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
68;;; GNU General Public License for more details.
69;;;
70;;; You should have received a copy of the GNU General Public License
71;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
72
73(define-module (gnu packages games)
158f5734 74 #:use-module (ice-9 match)
024e2c17
DT
75 #:use-module ((guix licenses) #:prefix license:)
76 #:use-module (guix utils)
490c6528
JD
77 #:use-module (guix packages)
78 #:use-module (guix download)
c23c50c7 79 #:use-module (guix git-download)
e11b2752 80 #:use-module (guix svn-download)
bff33e6c 81 #:use-module (guix gexp)
a83c6a64 82 #:use-module (gnu packages)
db23a548 83 #:use-module (gnu packages adns)
3307c787 84 #:use-module (gnu packages algebra)
e11b2752 85 #:use-module (gnu packages autotools)
03d521f9 86 #:use-module (gnu packages backup)
7e51e5bc 87 #:use-module (gnu packages base)
b77e3a1c 88 #:use-module (gnu packages build-tools)
11c38cbe 89 #:use-module (gnu packages admin)
f2fac359 90 #:use-module (gnu packages audio)
7e2e1155 91 #:use-module (gnu packages avahi)
1faf0a04 92 #:use-module (gnu packages assembly)
35d5fa76
EF
93 #:use-module (gnu packages bash)
94 #:use-module (gnu packages bison)
a83c6a64 95 #:use-module (gnu packages boost)
35d5fa76
EF
96 #:use-module (gnu packages check)
97 #:use-module (gnu packages cmake)
98 #:use-module (gnu packages compression)
99 #:use-module (gnu packages curl)
706d6190 100 #:use-module (gnu packages crypto)
35d5fa76 101 #:use-module (gnu packages cyrus-sasl)
0b5d078f 102 #:use-module (gnu packages documentation)
dec63df4 103 #:use-module (gnu packages docbook)
e93352d6 104 #:use-module (gnu packages emulators)
35d5fa76 105 #:use-module (gnu packages flex)
d2563973 106 #:use-module (gnu packages fltk)
35d5fa76
EF
107 #:use-module (gnu packages fonts)
108 #:use-module (gnu packages fontutils)
540dd1c8 109 #:use-module (gnu packages freedesktop)
c23c50c7
RW
110 #:use-module (gnu packages fribidi)
111 #:use-module (gnu packages game-development)
940c2c5c 112 #:use-module (gnu packages gcc)
490c6528 113 #:use-module (gnu packages gettext)
9b1ada4e 114 #:use-module (gnu packages ghostscript)
4df9495e 115 #:use-module (gnu packages gimp)
490c6528 116 #:use-module (gnu packages gl)
bf0018cd 117 #:use-module (gnu packages glib)
490c6528 118 #:use-module (gnu packages gnome)
c02af11d 119 #:use-module (gnu packages gnupg)
35d5fa76 120 #:use-module (gnu packages gnuzilla)
9b1ada4e 121 #:use-module (gnu packages gperf)
aac1aa75 122 #:use-module (gnu packages graphics)
c02af11d 123 #:use-module (gnu packages gsasl)
35d5fa76 124 #:use-module (gnu packages gstreamer)
490c6528
JD
125 #:use-module (gnu packages gtk)
126 #:use-module (gnu packages guile)
1abe2e2a
NG
127 #:use-module (gnu packages haskell)
128 #:use-module (gnu packages haskell-crypto)
dddbc90c 129 #:use-module (gnu packages haskell-xyz)
35d5fa76
EF
130 #:use-module (gnu packages icu4c)
131 #:use-module (gnu packages image)
0b5d078f 132 #:use-module (gnu packages imagemagick)
3c1c5622
HG
133 #:use-module (gnu packages kde)
134 #:use-module (gnu packages kde-frameworks)
3bd0d186 135 #:use-module (gnu packages less)
bf0018cd 136 #:use-module (gnu packages libcanberra)
721e1987 137 #:use-module (gnu packages libedit)
67fa7a27 138 #:use-module (gnu packages libunwind)
35d5fa76 139 #:use-module (gnu packages linux)
fdd9ab37 140 #:use-module (gnu packages llvm)
35d5fa76 141 #:use-module (gnu packages lua)
a9249f58
KK
142 #:use-module (gnu packages man)
143 #:use-module (gnu packages maths)
c02af11d 144 #:use-module (gnu packages messaging)
c23c50c7 145 #:use-module (gnu packages mp3)
26a657f0 146 #:use-module (gnu packages music)
dc70ff2a 147 #:use-module (gnu packages multiprecision)
3cf118a1 148 #:use-module (gnu packages ncurses)
9b1ada4e 149 #:use-module (gnu packages netpbm)
162a4a03 150 #:use-module (gnu packages networking)
b3de5ff2 151 #:use-module (gnu packages ocaml)
fbfc07bd 152 #:use-module (gnu packages opencl)
35d5fa76
EF
153 #:use-module (gnu packages pcre)
154 #:use-module (gnu packages perl)
155 #:use-module (gnu packages perl-check)
ce84582b 156 #:use-module (gnu packages perl-compression)
35d5fa76 157 #:use-module (gnu packages pkg-config)
c02af11d 158 #:use-module (gnu packages protobuf)
35d5fa76 159 #:use-module (gnu packages pulseaudio)
bf0018cd 160 #:use-module (gnu packages python)
44d10b1f 161 #:use-module (gnu packages python-xyz)
35d5fa76 162 #:use-module (gnu packages qt)
bf0018cd 163 #:use-module (gnu packages readline)
7dd2005f 164 #:use-module (gnu packages ruby)
be6e2c30 165 #:use-module (gnu packages shells)
3da5dca3 166 #:use-module (gnu packages sdl)
7fc90282 167 #:use-module (gnu packages serialization)
cd0322a3 168 #:use-module (gnu packages sqlite)
8698d986 169 #:use-module (gnu packages squirrel)
bd71525b 170 #:use-module (gnu packages swig)
67fa7a27 171 #:use-module (gnu packages tcl)
1bba3e8c 172 #:use-module (gnu packages terminals)
35d5fa76
EF
173 #:use-module (gnu packages texinfo)
174 #:use-module (gnu packages textutils)
751c7040 175 #:use-module (gnu packages tls)
0b608ec4 176 #:use-module (gnu packages upnp)
35d5fa76 177 #:use-module (gnu packages video)
01564e5a 178 #:use-module (gnu packages vulkan)
7aafb3b3 179 #:use-module (gnu packages web)
8044e584 180 #:use-module (gnu packages wget)
35d5fa76
EF
181 #:use-module (gnu packages wxwidgets)
182 #:use-module (gnu packages xdisorg)
183 #:use-module (gnu packages xorg)
184 #:use-module (gnu packages xiph)
185 #:use-module (gnu packages xml)
3de5b404 186 #:use-module (guix build-system copy)
ce84582b 187 #:use-module (guix build-system cmake)
39c676c4 188 #:use-module (guix build-system glib-or-gtk)
a6b55314 189 #:use-module (guix build-system gnu)
57f9671d 190 #:use-module (guix build-system go)
18ebaa9e 191 #:use-module (guix build-system meson)
ce84582b 192 #:use-module (guix build-system perl)
b0488fe5 193 #:use-module (guix build-system python)
3c1c5622 194 #:use-module (guix build-system qt)
ce84582b 195 #:use-module (guix build-system scons)
296c8484
EF
196 #:use-module (guix build-system trivial)
197 #:use-module ((srfi srfi-1) #:hide (zip))
198 #:use-module (srfi srfi-26))
490c6528 199
68a6070b
NG
200(define-public abe
201 (package
202 (name "abe")
203 (version "1.1")
204 (source
205 (origin
206 (method url-fetch)
207 (uri (string-append "mirror://sourceforge/abe/abe/abe-" version
208 "/abe-" version ".tar.gz"))
209 (sha256
210 (base32 "1xvpnq1y6y48fn3pvn2lk0h1ilmalv7nb7awpid1g4jcq1sfmi6z"))))
211 (build-system gnu-build-system)
212 (arguments
213 `(#:configure-flags
214 (list (string-append "--with-data-dir="
215 (assoc-ref %outputs "out")
216 "/share/abe"))
217 #:phases
218 (modify-phases %standard-phases
219 (replace 'bootstrap
220 (lambda _ (invoke "sh" "autogen.sh")))
221 (add-before 'build 'set-SDL
222 ;; Set correct environment for SDL.
223 (lambda* (#:key inputs #:allow-other-keys)
224 (setenv "CPATH"
225 (string-append
226 (assoc-ref inputs "sdl") "/include/SDL:"
227 (or (getenv "CPATH") "")))
228 #t))
229 (add-after 'install 'finalize-install
230 (lambda* (#:key outputs #:allow-other-keys)
231 (let ((share (string-append (assoc-ref outputs "out") "/share")))
232 ;; Installation script does not copy game data files.
233 (let ((data (string-append share "/abe")))
234 (for-each (lambda (dir)
235 (let ((target (string-append data "/" dir)))
236 (mkdir-p target)
237 (copy-recursively dir target)))
238 '("images" "maps" "sounds")))
239 ;; Create desktop file.
240 (let ((apps (string-append share "/applications")))
241 (mkdir-p apps)
242 (make-desktop-entry-file
243 (string-append apps "/abe.desktop")
244 #:name "Abe's Amazing Adventure"
245 #:exec ,name
246 #:categories '("AdventureGame" "Game")
247 #:keywords
248 '("side-scrolling" "adventure" "pyramid" "singleplayer")
249 #:comment
250 '(("de" "Ein sich seitwärts bewegendes Abenteuerspiel")
251 (#f "Side-scrolling game")))))
252 #t)))))
253 (native-inputs
254 `(("autoconf" ,autoconf)
255 ("automake" ,automake)))
256 (inputs
257 `(("libxi" ,libxi)
258 ("libxmu" ,libxmu)
259 ("libxt" ,libxt)
260 ("sdl" ,(sdl-union (list sdl sdl-mixer)))))
261 (home-page "http://abe.sourceforge.net")
262 (synopsis "Scrolling, platform-jumping, ancient pyramid exploring game")
263 (description
264 "Abe's Amazing Adventure is a scrolling,
265platform-jumping, key-collecting, ancient pyramid exploring game, vaguely in
266the style of similar games for the Commodore+4.")
267 (license license:gpl2+)))
268
4fee5ec0
KK
269;; Data package for adanaxisgpl.
270(define adanaxis-mush
271 (let ((version "1.1.0"))
272 (origin
273 (method url-fetch)
274 (uri (string-append "http://www.mushware.com/files/adanaxis-mush-"
275 version ".tar.gz"))
276 (sha256
277 (base32 "0mk9ibis5nkdcalcg1lkgnsdxxbw4g5w2i3icjzy667hqirsng03")))))
278
279(define-public adanaxisgpl
280 (package
281 (name "adanaxisgpl")
282 (version "1.2.5")
283 (source
284 (origin
285 (method url-fetch)
286 (uri (string-append "http://www.mushware.com/files/adanaxisgpl-"
287 version ".tar.gz"))
288 (sha256
289 (base32 "0jkn637jaabvlhd6hpvzb57vvjph94l6fbf7qxbjlw9zpr19dw1f"))
290 (modules '((guix build utils)))
291 (snippet
292 '(begin
293 ;; Necessary for building with gcc >=4.7.
294 (substitute* "src/Mushcore/MushcoreSingleton.h"
295 (("SingletonPtrSet\\(new SingletonType\\);")
296 "MushcoreSingleton::SingletonPtrSet(new SingletonType);"))
297 ;; Avoid an "invalid conversion from const char* to char*" error.
298 (substitute* "src/Platform/X11/PlatformMiscUtils.cpp"
299 (("char \\*end, \\*result;")
300 (string-append "const char *end;"
301 "\n"
302 "char *result;")))
303 #t))))
304 (build-system gnu-build-system)
305 (arguments
306 `(#:tests? #f ; no check target
307 #:phases
308 (modify-phases %standard-phases
309 (add-after 'install 'install-data
310 (lambda* (#:key inputs outputs #:allow-other-keys)
311 (let ((data (assoc-ref inputs "adanaxis-mush"))
312 (share (string-append (assoc-ref outputs "out")
313 "/share/" ,name "-" ,version)))
314 (mkdir-p share)
315 (invoke "tar" "xvf" data "-C" share)))))))
316 (native-inputs
317 `(("adanaxis-mush" ,adanaxis-mush))) ; game data
318 (inputs
319 `(("expat" ,expat)
320 ("freeglut" ,freeglut)
321 ("glu" ,glu)
4bd428a7 322 ("libjpeg" ,libjpeg-turbo)
4fee5ec0
KK
323 ("libogg" ,libogg)
324 ("libtiff" ,libtiff)
325 ("libvorbis" ,libvorbis)
326 ("libx11" ,libx11)
327 ("libxext" ,libxext)
328 ("pcre" ,pcre)
329 ("sdl" ,sdl)
330 ("sdl-mixer" ,sdl-mixer)))
331 (home-page "https://www.mushware.com")
332 (synopsis "Action game in four spatial dimensions")
333 (description
334 "Adanaxis is a fast-moving first person shooter set in deep space, where
335the fundamentals of space itself are changed. By adding another dimension to
336space this game provides an environment with movement in four directions and
337six planes of rotation. Initially the game explains the 4D control system via
338a graphical sequence, before moving on to 30 levels of gameplay with numerous
339enemy, ally, weapon and mission types. Features include simulated 4D texturing,
340mouse and joystick control, and original music.")
341 (license license:gpl2)))
342
f9fee46f
KK
343(define-public alex4
344 (package
345 (name "alex4")
8ef3f2e3 346 (version "1.2.1")
f9fee46f
KK
347 (source
348 (origin
359a57b6
TGR
349 (method git-fetch)
350 (uri (git-reference
b0e7b699 351 (url "https://github.com/carstene1ns/alex4")
359a57b6
TGR
352 (commit version)))
353 (file-name (git-file-name name version))
f9fee46f 354 (sha256
8ef3f2e3 355 (base32 "098wy72mh4lsvq3gm0rhamjssf9l1hp6hhkpzrv7klpb97cwwc3h"))))
f9fee46f
KK
356 (build-system gnu-build-system)
357 (arguments
359a57b6 358 `(#:tests? #f ; no check target
f9fee46f 359 #:make-flags
8ef3f2e3 360 (list "CC=gcc"
f9fee46f 361 "CFLAGS=-D_FILE_OFFSET_BITS=64"
f9fee46f
KK
362 (string-append "PREFIX=" (assoc-ref %outputs "out")))
363 #:phases
364 (modify-phases %standard-phases
8ef3f2e3 365 (delete 'configure) ; no configure script
f9fee46f
KK
366 (add-after 'install 'install-data
367 (lambda* (#:key outputs #:allow-other-keys)
368 (let ((share (string-append (assoc-ref outputs "out")
369 "/share/" ,name)))
370 (install-file "alex4.ini" share)
371 #t))))))
372 (inputs
373 `(("allegro" ,allegro-4)
374 ("dumb" ,dumb-allegro4)))
375 (home-page "http://allegator.sourceforge.net/")
376 (synopsis "Retro platform game")
377 (description
378 "Guide Alex the Allegator through the jungle in order to save his
379girlfriend Lola from evil humans who want to make a pair of shoes out of her.
380Plenty of classic platforming in four nice colors guaranteed!
381
382The game includes a built-in editor so you can design and share your own maps.")
383 (license license:gpl2+)))
384
649220ad 385(define-public armagetronad
a70d06b5 386 (package
649220ad 387 (name "armagetronad")
06271fe3 388 (version "0.2.8.3.5")
a70d06b5
RJ
389 (source (origin
390 (method url-fetch)
c0c09950
TGR
391 (uri (string-append "mirror://sourceforge/armagetronad/stable/"
392 version "/armagetronad-" version ".src.tar.gz"))
a70d06b5
RJ
393 (sha256
394 (base32
06271fe3 395 "1z266haq22n5b0733h7qsg1rpzhz8lvm82f7wd06r008iiar7jdl"))))
a70d06b5
RJ
396 (build-system gnu-build-system)
397 (inputs
398 `(("libxml2" ,libxml2)
399 ("sdl" ,sdl)
400 ("sdl-image" ,sdl-image)
401 ("freeglut" ,freeglut)
402 ("libpng" ,libpng)
403 ("libjpeg-turbo" ,libjpeg-turbo)))
404 (home-page "http://www.armagetronad.org")
405 (synopsis "Tron clone in 3D")
df42e0f9
PN
406 (description "Armagetron Advanced is a multiplayer game in 3d that
407attempts to emulate and expand on the lightcycle sequence from the movie Tron.
408It's an old school arcade game slung into the 21st century. Highlights
409include a customizable playing arena, HUD, unique graphics, and AI bots. For
410the more advanced player there are new game modes and a wide variety of
411physics settings to tweak as well.")
a70d06b5
RJ
412 (license license:gpl2+)))
413
393190ce
NG
414(define-public astromenace
415 (package
416 (name "astromenace")
417 (version "1.4.1")
418 (source
419 (origin
420 (method git-fetch)
421 (uri (git-reference
b0e7b699 422 (url "https://github.com/viewizard/astromenace")
393190ce
NG
423 (commit (string-append "v" version))))
424 (file-name (git-file-name name version))
425 (sha256
426 (base32 "1ad6l887jxqv8xspwc2rvy8ym9sdlmkqdqhsh0pi076kjarxsyws"))))
427 (build-system cmake-build-system)
428 (arguments
429 `(#:tests? #f ;no test
430 #:configure-flags '("-DDATADIR=share/astromenace")
431 #:phases
432 (modify-phases %standard-phases
433 (replace 'install
434 ;; Upstream provides no install phase.
435 (lambda* (#:key inputs outputs #:allow-other-keys)
436 (let* ((out (assoc-ref outputs "out"))
437 (bin (string-append out "/bin"))
438 (share (string-append out "/share"))
439 (apps (string-append share "/applications"))
440 (data (string-append share "/astromenace"))
441 (icons (string-append share "/icons/hicolor/64x64/apps")))
442 (install-file "astromenace" bin)
443 (install-file "gamedata.vfs" data)
444 (let ((source (assoc-ref inputs "source")))
445 (with-directory-excursion (string-append source "/share")
446 (install-file "astromenace.desktop" apps)
447 (mkdir-p icons)
448 (copy-file "astromenace_64.png"
449 (string-append icons "/astromenace.png")))))
450 #t)))))
451 (inputs
452 `(("freealut" ,freealut)
453 ("freetype" ,freetype)
454 ("glu" ,glu)
455 ("libogg" ,libogg)
456 ("libvorbis" ,libvorbis)
457 ("openal" ,openal)
458 ("sdl2" ,sdl2)))
459 (home-page "https://www.viewizard.com/")
460 (synopsis "3D space shooter with spaceship upgrade possibilities")
461 (description
462 "Space is a vast area, an unbounded territory where it seems there is
463a room for everybody, but reversal of fortune put things differently. The
464hordes of hostile creatures crawled out from the dark corners of the universe,
465craving to conquer your homeland. Their force is compelling, their legions
466are interminable. However, humans didn't give up without a final showdown and
467put their best pilot to fight back. These malicious invaders chose the wrong
468galaxy to conquer and you are to prove it! Go ahead and make alien aggressors
469regret their insolence.")
470 ;; Game is released under GPL3+ terms. Artwork is subject to CC
471 ;; BY-SA 4.0, and fonts to OFL1.1.
472 (license (list license:gpl3+ license:cc-by-sa4.0 license:silofl1.1))))
473
fc473814
TGR
474(define-public bastet
475 (package
476 (name "bastet")
477 (version "0.43.2")
478 (source
479 (origin
480 (method git-fetch)
481 (uri (git-reference
b0e7b699 482 (url "https://github.com/fph/bastet")
fc473814
TGR
483 (commit version)))
484 (file-name (git-file-name name version))
485 (sha256
486 (base32 "09kamxapm9jw9przpsgjfg33n9k94bccv65w95dakj0br33a75wn"))
487 (patches
488 (search-patches "bastet-change-source-of-unordered_set.patch"))))
489 (build-system gnu-build-system)
490 (arguments
491 `(#:make-flags
492 (list (string-append "CXXFLAGS=-I"
493 (assoc-ref %build-inputs "boost") "/include"))
494 #:phases
495 (modify-phases %standard-phases
496 (delete 'configure) ; no configure script
497 (replace 'check
498 ;; The 'Test' target builds the tests, but doesn't actually run them.
499 (lambda* (#:key make-flags #:allow-other-keys)
500 (apply invoke "make" "Test" make-flags)
501 (setenv "HOME" ".")
502 (invoke "./Test")))
503 (replace 'install
504 (lambda* (#:key outputs #:allow-other-keys)
505 (let* ((out (assoc-ref outputs "out"))
506 (share (string-append out "/share"))
507 (hicolor (string-append share "/icons/hicolor")))
508 (install-file "bastet"
509 (string-append out "/bin"))
510
511 (install-file "bastet.desktop"
512 (string-append share "/applications"))
513 (install-file "bastet.svg"
514 (string-append hicolor "/scalable/apps"))
515
516 (install-file "bastet.appdata.xml"
517 (string-append share "/appdata"))
518
519 (install-file "bastet.6"
520 (string-append out "/share/man/man6"))
521 #t))))))
522 (native-inputs
523 `(("hicolor-icon-theme" ,hicolor-icon-theme)))
524 (inputs
525 `(("boost" ,boost)
526 ("ncurses" ,ncurses)))
16b84f54 527 (home-page "https://fph.altervista.org/prog/bastet.html")
fc473814
TGR
528 (synopsis "Antagonistic Tetris-style falling brick game for text terminals")
529 (description
530 "Bastet (short for Bastard Tetris) is a simple ncurses-based falling brick
531game. Unlike normal Tetris, Bastet does not choose the next brick at random.
532Instead, it uses a special algorithm to choose the worst brick possible.
533
534Playing bastet can be a painful experience, especially if you usually make
535canyons and wait for the long I-shaped block to clear four rows at a time.")
536 (license license:gpl3+)))
537
dcf9a7dc
AEFG
538(define-public blobwars
539 (package
540 (name "blobwars")
541 (version "2.00")
542 (source
543 (origin
544 (method url-fetch)
545 (uri (string-append "mirror://sourceforge/blobwars/"
546 "blobwars-" version ".tar.gz"))
547 (sha256
548 (base32 "16aagvkx6azf75gm5kaa94bh5npydvhqp3fvdqyfsanzdjgjf1n4"))))
549 (build-system gnu-build-system)
550 (arguments
551 `(#:tests? #f ;no test
552 #:make-flags
553 (let ((out (assoc-ref %outputs "out")))
554 (list (string-append "PREFIX=" out)
555 (string-append "BINDIR=" out "/bin/")
556 "USEPAK=1"
557 "RELEASE=1"))
558 #:phases
559 (modify-phases %standard-phases
560 (add-after 'unpack 'werror-begone
561 (lambda _
562 (substitute* "Makefile" (("-Werror") ""))
563 #t))
564 (delete 'configure)))) ;no configure script
565 (native-inputs
566 `(("gettext" ,gettext-minimal)
567 ("pkg-config" ,pkg-config)))
568 (inputs
569 `(("hicolor-icon-theme" ,hicolor-icon-theme)
570 ("sdl" ,(sdl-union (list sdl2
571 sdl2-image
572 sdl2-mixer
573 sdl2-ttf
574 sdl2-net)))))
575 (home-page "https://sourceforge.net/projects/blobwars/")
576 (synopsis "Platform action game featuring a blob with a lot of weapons")
577 (description "Blobwars: Metal Blob Solid is a 2D platform game, the first
578in the Blobwars series. You take on the role of a fearless Blob agent. Your
579mission is to infiltrate various enemy bases and rescue as many MIAs as
580possible, while battling many vicious aliens.")
581 (license (list license:gpl2 ; For code and graphics
582 license:cc0 ; Music and sounds have specific licenses
583 license:cc-by3.0 ; see /doc/readme
584 license:cc-by-sa3.0
585 license:lgpl2.1+
586 license:bsd-2))))
587
db23a548
NG
588(define-public bzflag
589 (package
590 (name "bzflag")
591 (version "2.4.20")
592 (source
593 (origin
594 (method url-fetch)
595 (uri (string-append "https://download.bzflag.org/bzflag/source/"
596 version "/bzflag-" version ".tar.bz2"))
597 (sha256
598 (base32 "16brxqmfiyz4j4lb8ihzjcbwqmpsms6vm3ijbp34lnw0blbwdjb2"))))
599 (build-system gnu-build-system)
600 (arguments
601 `(#:phases
602 (modify-phases %standard-phases
603 (add-after 'install 'install-desktop-file-and-icons
604 (lambda* (#:key outputs #:allow-other-keys)
605 (let* ((share (string-append (assoc-ref outputs "out") "/share"))
606 (data (string-append share "/bzflag"))
607 (hicolor (string-append share "/icons/hicolor"))
608 (applications (string-append share "/applications")))
609 ;; Move desktop file.
610 (install-file (string-append data "/bzflag.desktop")
611 applications)
612 ;; Install icons.
613 (for-each (lambda (size)
614 (let* ((dim (string-append size "x" size))
615 (dir (string-append hicolor "/" dim "/apps")))
616 (mkdir-p dir)
617 (copy-file
618 (string-append data "/bzflag-" dim ".png")
619 (string-append dir "/bzflag.png"))))
620 '("48" "256")))
621 #t)))))
622 (native-inputs
623 `(("pkg-config" ,pkg-config)))
624 (inputs
625 `(("c-ares" ,c-ares)
626 ("curl" ,curl)
627 ("glew" ,glew)
628 ("glu" ,glu)
629 ("sdl2" ,sdl2)
630 ("zlib" ,zlib)))
631 (home-page "https://www.bzflag.org/")
632 (synopsis "3D first person tank battle game")
633 (description
634 "BZFlag is a 3D multi-player multiplatform tank battle game that
635allows users to play against each other in a network environment.
636There are five teams: red, green, blue, purple and rogue (rogue tanks
637are black). Destroying a player on another team scores a win, while
638being destroyed or destroying a teammate scores a loss. Rogues have
639no teammates (not even other rogues), so they cannot shoot teammates
640and they do not have a team score.
641
642There are two main styles of play: capture-the-flag and free-for-all.
643In capture-the-flag, each team (except rogues) has a team base and
644each team with at least one player has a team flag. The object is to
645capture an enemy team's flag by bringing it to your team's base. This
646destroys every player on the captured team, subtracts one from that
647team's score, and adds one to your team's score. In free-for-all,
648there are no team flags or team bases. The object is simply to get as
649high a score as possible.")
650 ;; The game is dual-licensed.
651 (license (list license:lgpl2.1 license:mpl2.0))))
652
649220ad 653(define-public cataclysm-dda
b8f5b436
NG
654 (package
655 (name "cataclysm-dda")
a422d9f3 656 (version "0.E-2")
b8f5b436
NG
657 (source
658 (origin
659 (method git-fetch)
660 (uri (git-reference
b0e7b699 661 (url "https://github.com/CleverRaven/Cataclysm-DDA")
b8f5b436
NG
662 (commit version)))
663 (sha256
a422d9f3 664 (base32 "15l6w6lxays7qmsv0ci2ry53asb9an9dh7l7fc13256k085qcg68"))
b8f5b436
NG
665 (file-name (git-file-name name version))))
666 (build-system gnu-build-system)
667 (arguments
668 '(#:make-flags
669 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
670 "USE_HOME_DIR=1" "DYNAMIC_LINKING=1" "RELEASE=1"
671 "LOCALIZE=1" "LANGUAGES=all")
672 #:phases
673 (modify-phases %standard-phases
674 (delete 'configure)
675 (add-after 'build 'build-tiles
676 (lambda* (#:key make-flags outputs #:allow-other-keys)
677 ;; Change prefix directory and enable tile graphics and sound.
678 (apply invoke "make" "TILES=1" "SOUND=1"
679 (string-append "PREFIX="
680 (assoc-ref outputs "tiles"))
681 (cdr make-flags))))
682 (add-after 'install 'install-tiles
683 (lambda* (#:key make-flags outputs #:allow-other-keys)
684 (apply invoke "make" "install" "TILES=1" "SOUND=1"
685 (string-append "PREFIX="
686 (assoc-ref outputs "tiles"))
687 (cdr make-flags)))))
688 ;; TODO: Add libtap++ from https://github.com/cbab/libtappp as a native
689 ;; input in order to support tests.
690 #:tests? #f))
691 (outputs '("out"
692 "tiles")) ;for tile graphics and sound support
693 (native-inputs
694 `(("gettext" ,gettext-minimal)
695 ("pkg-config" ,pkg-config)))
696 (inputs
697 `(("freetype" ,freetype)
698 ("libogg" ,libogg)
699 ("libvorbis" ,libvorbis)
700 ("ncurses" ,ncurses)
701 ("sdl2" ,sdl2)
702 ("sdl2-image" ,sdl2-image)
703 ("sdl2-ttf" ,sdl2-ttf)
704 ("sdl2-mixer" ,sdl2-mixer)))
705 (home-page "https://cataclysmdda.org/")
706 (synopsis "Survival horror roguelike video game")
707 (description
708 "Cataclysm: Dark Days Ahead (or \"DDA\" for short) is a roguelike set
973bd8a6
PN
709in a post-apocalyptic world. Struggle to survive in a harsh, persistent,
710procedurally generated world. Scavenge the remnants of a dead civilization
711for food, equipment, or, if you are lucky, a vehicle with a full tank of gas
712to get you out of Dodge. Fight to defeat or escape from a wide variety of
713powerful monstrosities, from zombies to giant insects to killer robots and
714things far stranger and deadlier, and against the others like yourself, that
715want what you have.")
b8f5b436 716 (license license:cc-by-sa3.0)))
20214f71 717
57b6caef
TL
718(define-public corsix-th
719 (package
720 (name "corsix-th")
a7d74db9 721 (version "0.64")
57b6caef
TL
722 (source
723 (origin
724 (method git-fetch)
725 (uri (git-reference
b0e7b699 726 (url "https://github.com/CorsixTH/CorsixTH")
57b6caef
TL
727 (commit (string-append "v" version))))
728 (file-name (git-file-name name version))
729 (sha256
a7d74db9 730 (base32 "0chh9cv2kdc39sr0x8hclcyzd8dz2y6grgagqzkvr7j570wa5cqh"))))
57b6caef
TL
731 (build-system cmake-build-system)
732 (arguments
733 `(#:phases
734 (modify-phases %standard-phases
735 (add-after 'install 'wrap-binary
736 (lambda _
737 ;; Set Lua module paths and default MIDI soundfont on startup.
738 (let* ((out (assoc-ref %outputs "out"))
739 (fluid (assoc-ref %build-inputs "fluid-3"))
740 (lua-version ,(version-major+minor (package-version lua)))
741 (lua-cpath
742 (map (lambda (lib)
743 (string-append
744 (assoc-ref %build-inputs (string-append "lua-" lib))
745 "/lib/lua/" lua-version "/?.so"))
746 '("filesystem" "lpeg"))))
747 (wrap-program (string-append out "/bin/corsix-th")
748 `("LUA_CPATH" ";" = ,lua-cpath)
749 `("SDL_SOUNDFONTS" ":" suffix
750 (,(string-append fluid "/share/soundfonts/FluidR3Mono_GM.sf3")))))
751 #t)))
752 #:tests? #f)) ; TODO need busted package to run tests
753 ;; Omit Lua-Socket dependency to disable automatic updates.
754 (inputs
755 `(("ffmpeg" ,ffmpeg)
756 ("fluid-3" ,fluid-3)
757 ("freetype" ,freetype)
758 ("lua" ,lua)
759 ("lua-filesystem" ,lua-filesystem)
760 ("lua-lpeg" ,lua-lpeg)
761 ("sdl2" ,sdl2)
762 ("sdl2-mixer" ,sdl2-mixer)))
763 (home-page "https://corsixth.com")
764 (synopsis "Implementation of the @i{Theme Hospital} game engine")
765 (description
766 "This package provides a reimplementation of the 1997 Bullfrog business
767simulation game @i{Theme Hospital}. As well as faithfully recreating the
768original engine, CorsixTH adds support for high resolutions, custom levels and
769more. This package does @emph{not} provide the game assets.")
770 (license (list
771 license:expat ; main license
772 license:bsd-3)))) ; CorsixTH/Src/random.c
773
620b0468
RW
774(define-public cowsay
775 (package
776 (name "cowsay")
46ba5337 777 (version "3.04")
620b0468 778 (source (origin
7afb97fd
EF
779 (method git-fetch)
780 (uri (git-reference
b0e7b699 781 (url "https://github.com/tnalpgge/rank-amateur-cowsay")
7afb97fd
EF
782 (commit (string-append name "-" version))))
783 (file-name (git-file-name name version))
620b0468
RW
784 (sha256
785 (base32
7afb97fd 786 "06455kq37hvq1xb7adyiwrx0djs50arsxvjgixyxks16lm1rlc7n"))))
620b0468
RW
787 (build-system gnu-build-system)
788 (arguments
789 `(#:phases
790 (modify-phases %standard-phases
6c0c1752
TGR
791 (delete 'configure) ; no configure script
792 (delete 'build) ; nothing to be built
793 (replace 'install
620b0468 794 (lambda* (#:key outputs #:allow-other-keys)
482bdf25
RW
795 (invoke "sh" "install.sh"
796 (assoc-ref outputs "out"))))
1ee3079d
EF
797 (delete 'check)
798 (add-after 'install 'check
620b0468 799 (lambda* (#:key outputs #:allow-other-keys)
482bdf25
RW
800 (invoke (string-append (assoc-ref outputs "out")
801 "/bin/cowsay")
802 "We're done!"))))))
620b0468
RW
803 (inputs
804 `(("perl" ,perl)))
805 (home-page (string-append "https://web.archive.org/web/20071026043648/"
46ba5337 806 "http://www.nog.net:80/~tony/warez/cowsay.shtml"))
620b0468
RW
807 (synopsis "Speaking cow text filter")
808 (description "Cowsay is basically a text filter. Send some text into it,
809and you get a cow saying your text. If you think a talking cow isn't enough,
46ba5337
TGR
810cows can think too: all you have to do is run @command{cowthink}. If you're
811tired of cows, a variety of other ASCII-art messengers are available.")
620b0468
RW
812 (license license:gpl3+)))
813
4dbd704d
LP
814(define-public lolcat
815 (let ((commit "35dca3d0a381496d7195cd78f5b24aa7b62f2154")
816 (revision "0"))
817 (package
818 (name "lolcat")
819 (version (git-version "1.0" revision commit))
820 (source
821 (origin
822 (method git-fetch)
823 (uri (git-reference
b0e7b699 824 (url "https://github.com/jaseg/lolcat")
4dbd704d
LP
825 (commit commit)))
826 (sha256
827 (base32
828 "0jjbkqcc2ikjxd1xgdyv4rb0vsw218181h89f2ywg29ffs3ypd8g"))
829 (file-name (git-file-name name version))))
830 (build-system gnu-build-system)
831 (arguments
e712b998
TGR
832 `(#:tests? #f ; no check target
833 #:make-flags
834 (list ,(string-append "CC=" (cc-for-target)))
4dbd704d
LP
835 #:phases
836 (modify-phases %standard-phases
837 (delete 'bootstrap)
838 (delete 'configure)
839 (replace 'install
840 (lambda* (#:key outputs #:allow-other-keys)
841 (let* ((out (assoc-ref outputs "out"))
842 (dest (string-append out "/bin")))
843 (mkdir-p dest)
844 (install-file "lolcat" dest)
845 (install-file "censor" dest)
846 #t))))))
847 (home-page "https://github.com/jaseg/lolcat")
848 (synopsis "Rainbow coloring effect for text console display")
849 (description "@command{lolcat} concatenates files and streams like
850regular @command{cat}, but it also adds terminal escape codes between
851characters and lines resulting in a rainbow effect.")
852 (license license:wtfpl2))))
853
29a2f61e
NG
854(define-public foobillard++
855 ;; Even though this latest revision is old already, stable release is
856 ;; lagging way behind it, and has issues with textures rendering.
857 (let ((svn-revision 170))
858 (package
859 (name "foobillard++")
860 (version (string-append "3.43-r" (number->string svn-revision)))
861 (source
862 (origin
863 (method svn-fetch)
864 (uri (svn-reference
865 (url "svn://svn.code.sf.net/p/foobillardplus/code/")
866 (revision svn-revision)))
867 (file-name (git-file-name name version))
868 (sha256
869 (base32 "00b693ys5zvzjbjzzj3dqfzm5xw64gwjf9m8qv6bkmf0klbhmayk"))
870 (patches
871 (search-patches "foobillard++-pkg-config.patch"))
872 (modules '((guix build utils)))
873 (snippet
874 '(begin
875 ;; Unfortunately, the game includes background music with
876 ;; a non-commercial clause. Delete it.
877 (for-each delete-file (find-files "data/music" "\\.ogg$"))
878 #t))))
879 (build-system gnu-build-system)
880 (arguments
881 `(#:configure-flags
882 (list
883 ;; Install data in a less exotic location.
884 (string-append "--prefix=" (assoc-ref %outputs "out") "/share")
885 ;; Prevent a build error about undefined trigonometric functions.
886 "--enable-fastmath=no")
887 #:phases
888 (modify-phases %standard-phases
889 (add-after 'unpack 'fix-makefile
890 ;; Remove hard-coded directories. Also fix installation
891 ;; rule: it tries to move around non-existent files or
892 ;; files already moved.
893 (lambda* (#:key outputs #:allow-other-keys)
894 (substitute* "Makefile.am"
895 (("/usr") (assoc-ref outputs "out"))
896 (("cp .*?/foobillardplus\\.desktop.*") "")
897 (("cp .*?/foobillardplus\\.(png|xbm) \\$\\(datarootdir\\).*")
898 ""))
899 #t))
900 (add-after 'unpack 'unbundle-font
901 ;; XXX: The package ships with LinBiolinum_aSB.ttf and
902 ;; LinBiolinum_aS.ttf, which are not provided by
903 ;; `font-linuxlibertine' package. Therefore, we cannot replace
904 ;; them yet.
905 (lambda* (#:key inputs #:allow-other-keys)
906 (let ((dejavu (string-append (assoc-ref inputs "font-dejavu")
907 "/share/fonts/truetype/")))
908 (with-directory-excursion "data"
909 (for-each (lambda (f)
910 (delete-file f)
911 (symlink (string-append dejavu f) f))
912 '("DejaVuSans-Bold.ttf" "DejaVuSans.ttf"))))
913 #t))
914 (replace 'bootstrap
915 (lambda _
916 (invoke "aclocal" "--force")
917 (invoke "autoconf" "-f")
918 (invoke "autoheader" "-f")
919 (invoke "automake" "-a" "-c" "-f")))
920 (add-before 'build 'prepare-build
921 ;; Set correct environment for SDL.
922 (lambda* (#:key inputs #:allow-other-keys)
923 (setenv "CPATH"
924 (string-append (assoc-ref inputs "sdl")
925 "/include/SDL:"
926 (or (getenv "CPATH") "")))
927 #t))
928 (add-before 'build 'fix-settings-directory
929 ;; Hide foobillardplus settings directory in $HOME.
930 (lambda _
931 (substitute* "src/history.c"
932 (("/foobillardplus-data") "/.foobillardplus"))
933 #t))
934 (add-before 'install 'create-directories
935 ;; Install process does not create directories before
936 ;; trying to move file in it.
937 (lambda* (#:key outputs #:allow-other-keys)
938 (let ((out (assoc-ref outputs "out")))
939 (mkdir-p (string-append out "/share/icons"))
940 (mkdir-p (string-append out "/share/applications")))
941 #t))
942 (add-after 'install 'symlink-executable
943 ;; Symlink executable to $out/bin.
944 (lambda* (#:key outputs #:allow-other-keys)
945 (let* ((out (assoc-ref outputs "out"))
946 (bin (string-append out "/bin")))
947 (mkdir-p bin)
948 (with-directory-excursion bin
949 (symlink "../share/foobillardplus/bin/foobillardplus"
950 "foobillardplus"))
951 #t))))))
952 (native-inputs
953 `(("autoconf" ,autoconf)
954 ("automake" ,automake)
955 ("pkg-config" ,pkg-config)))
956 (inputs
957 `(("font-dejavu" ,font-dejavu)
958 ("freetype" ,freetype)
959 ("glu" ,glu)
960 ("libpng" ,libpng)
961 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-net)))))
962 (home-page "http://foobillardplus.sourceforge.net/")
963 (synopsis "3D billiard game")
964 (description "FooBillard++ is an advanced 3D OpenGL billiard game
965based on the original foobillard 3.0a sources from Florian Berger.
966You can play it with one or two players or against the computer.
967
968The game features:
969
970@itemize
971@item Wood paneled table with gold covers and gold diamonds.
972@item Reflections on balls.
973@item Zoom in and out, rotation, different angles and bird's eye view.
974@item Different game modes: 8 or 9-ball, Snooker or Carambole.
975@item Tournaments. Compete against other players.
976@item Animated cue with strength and eccentric hit adjustment.
977@item Jump shots and snipping.
978@item Realistic gameplay and billiard sounds.
979@item Red-Green stereo.
980@item And much more.
981@end itemize")
982 (license (list license:gpl2 license:silofl1.1)))))
983
0b5d078f
KK
984(define-public freedoom
985 (package
9303b09a 986 (name "freedoom")
78a3da3d 987 (version "0.12.1")
9303b09a
TGR
988 (source
989 (origin
990 (method git-fetch)
991 (uri (git-reference
b0e7b699 992 (url "https://github.com/freedoom/freedoom")
9303b09a
TGR
993 (commit (string-append "v" version))))
994 (file-name (git-file-name name version))
995 (sha256
78a3da3d 996 (base32 "1mq60lfwaaxmch7hsz8403pwafnlsmsd5z2df2j77ppwndwcrypb"))))
9303b09a
TGR
997 (build-system gnu-build-system)
998 (arguments
999 '(#:make-flags
1000 (list (string-append "prefix=" (assoc-ref %outputs "out")))
9303b09a
TGR
1001 #:tests? #f ; no check target
1002 #:phases
1003 (modify-phases %standard-phases
1004 (delete 'bootstrap)
1005 (replace 'configure
1006 (lambda* (#:key inputs outputs #:allow-other-keys)
78a3da3d 1007 (let* ((freedoom (assoc-ref outputs "out"))
9303b09a 1008 (wad-dir (string-append freedoom "/share/games/doom")))
9303b09a
TGR
1009 ;; Make sure that the install scripts know where to find
1010 ;; the appropriate WAD files.
1011 (substitute* "dist/freedoom"
1012 (("IWAD=freedm.wad")
1013 (string-append "IWAD=" wad-dir "/freedm.wad"))
1014 (("IWAD=freedoom1.wad")
1015 (string-append "IWAD=" wad-dir "/freedoom1.wad"))
1016 (("IWAD=freedoom2.wad")
1017 (string-append "IWAD=" wad-dir "/freedoom2.wad")))
1018 #t))))))
1019 (native-inputs
1020 `(("asciidoc" ,asciidoc)
1021 ("deutex" ,deutex)
78a3da3d
KK
1022 ("python" ,python)
1023 ("python-pillow" ,python-pillow)))
9303b09a
TGR
1024 (home-page "https://freedoom.github.io/")
1025 (synopsis "Free content game based on the Doom engine")
1026 (native-search-paths
1027 (list (search-path-specification
1028 (variable "DOOMWADDIR")
1029 (files '("share/games/doom")))
1030 (search-path-specification
1031 (variable "DOOMWADPATH")
1032 (files '("share/games/doom")))))
1033 (description
1034 "The Freedoom project aims to create a complete free content first person
0b5d078f
KK
1035shooter game. Freedoom by itself is just the raw material for a game: it must
1036be paired with a compatible game engine (such as @code{prboom-plus}) to be
1037played. Freedoom complements the Doom engine with free levels, artwork, sound
1038effects and music to make a completely free game.")
9303b09a 1039 (license license:bsd-3)))
0b5d078f 1040
18995af2
TGR
1041(define-public freedroidrpg
1042 (package
1043 (name "freedroidrpg")
1044 (version "0.16.1")
1045 (source
1046 (origin
1047 (method url-fetch)
1048 (uri (string-append "http://ftp.osuosl.org/pub/freedroid/"
1049 "freedroidRPG-" (version-major+minor version) "/"
1050 "freedroidRPG-" version ".tar.gz"))
1051 (sha256
1052 (base32 "0n4kn38ncmcy3lrxmq8fjry6c1z50z4q1zcqfig0j4jb0dsz2va2"))))
1053 (build-system gnu-build-system)
1054 (arguments
1055 `(#:configure-flags
1056 (list
1057 (string-append "CFLAGS="
1058 "-I" (assoc-ref %build-inputs "sdl-gfx") "/include/SDL "
1059 "-I" (assoc-ref %build-inputs "sdl-image") "/include/SDL "
1060 "-I" (assoc-ref %build-inputs "sdl-mixer") "/include/SDL")
1061 "--enable-opengl")
1062 ;; FIXME: the test suite fails with the following error output:
1063 ;; 4586 Segmentation fault env SDL_VIDEODRIVER=dummy \
1064 ;; SDL_AUDIODRIVER=dummy ./src/freedroidRPG -nb text
1065 #:tests? #f))
1066 (native-inputs
1067 `(("pkg-config" ,pkg-config)))
1068 (inputs
1069 `(("glu" ,glu)
4bd428a7 1070 ("libjpeg" ,libjpeg-turbo)
18995af2
TGR
1071 ("libogg" ,libogg)
1072 ("libpng" ,libpng)
1073 ("libvorbis" ,libvorbis)
1074 ("mesa" ,mesa)
1075 ("python" ,python-wrapper)
1076 ("sdl" ,sdl)
1077 ("sdl-gfx" ,sdl-gfx)
1078 ("sdl-image" ,sdl-image)
1079 ("sdl-mixer" ,sdl-mixer)
1080 ("zlib" ,zlib)))
1081 (home-page "http://www.freedroid.org/")
1082 (synopsis "Isometric role-playing game against killer robots")
1083 (description
1084 "Freedroid RPG is an @dfn{RPG} (Role-Playing Game) with isometric graphics.
1085The game tells the story of a world destroyed by a conflict between robots and
1086their human masters. To restore peace to humankind, the player must complete
1087numerous quests while fighting off rebelling robots---either by taking control
1088of them, or by simply blasting them to pieces with melee and ranged weapons in
1089real-time combat.")
1090 (license (list license:expat ; lua/
1091 license:gpl3 ; src/gen_savestruct.py
1092 license:gpl2+)))) ; the rest
1093
06f5f0b1
KK
1094(define-public golly
1095 (package
1096 (name "golly")
106c6aa5 1097 (version "3.3")
06f5f0b1
KK
1098 (source (origin
1099 (method url-fetch)
04e7b1e7 1100 (uri (string-append "mirror://sourceforge/golly/golly/golly-"
06f5f0b1
KK
1101 version "/golly-" version
1102 "-src.tar.gz"))
1103 (sha256
1104 (base32
106c6aa5 1105 "1j3ksnar4rdam4xiyspgyrs1pifbvxfxkrn65brkwxpx39mpgzc8"))))
06f5f0b1
KK
1106 (build-system gnu-build-system)
1107 (arguments
1108 '(#:make-flags (list "CC=gcc"
1109 (string-append "GOLLYDIR="
1110 (assoc-ref %outputs "out")
1111 "/share/golly"))
1112 #:tests? #f ; no check target
1113 #:phases
1114 (modify-phases %standard-phases
1115 (replace 'configure
1116 (lambda* (#:key inputs #:allow-other-keys)
1117 ;; For some reason, setting the PYTHON_SHLIB make flag doesn't
1118 ;; properly set the path to the Python shared library. This
1119 ;; substitution acheives the same end by different means.
1120 (substitute* "gui-wx/wxprefs.cpp"
1121 (("pythonlib = wxT\\(STRINGIFY\\(PYTHON_SHLIB\\)\\)")
1122 (string-append "pythonlib = \""
1123 (assoc-ref inputs "python")
1124 "/lib/libpython-2.7.so\"")))
1125 #t))
1126 (replace 'build
1127 (lambda* (#:key make-flags outputs #:allow-other-keys)
1128 (with-directory-excursion "gui-wx"
1129 (apply invoke `("make" ,@make-flags "-f" "makefile-gtk")))))
1130 (replace 'install
1131 (lambda* (#:key outputs #:allow-other-keys)
1132 (let* ((out (assoc-ref outputs "out"))
1133 (bin (string-append out "/bin"))
1134 (doc (string-append out "/share/doc/golly"))
1135 (pixmaps (string-append out "/share/pixmaps"))
1136 (share (string-append out "/share/golly")))
1137 (for-each (lambda (binary)
1138 (install-file binary bin))
1139 '("bgolly" "golly"))
1140 (for-each (lambda (document)
1141 (install-file
1142 (string-append "docs/" document ".html")
1143 doc))
1144 '("License" "ReadMe" "ToDo"))
1145 (install-file "gui-wx/icons/appicon.xpm" pixmaps)
1146 (for-each (lambda (folder)
1147 (copy-recursively
1148 folder
1149 (string-append share "/" folder)))
1150 '("Help" "Patterns" "Rules" "Scripts")))
1151 #t)))))
1152 (native-inputs
1153 `(("lua" ,lua)))
1154 (inputs
1155 `(("glu" ,glu)
1156 ("mesa" ,mesa)
1157 ("python" ,python-2)
1158 ("wxwidgets" ,wxwidgets-gtk2)
1159 ("zlib" ,zlib)))
1160 (home-page "http://golly.sourceforge.net/")
1161 (synopsis "Software for exploring cellular automata")
1162 (description
1163 "Golly simulates Conway's Game of Life and many other types of cellular
1164automata. The following features are available:
1165@enumerate
1166@item Support for bounded and unbounded universes, with cells of up to 256
1167 states.
1168@item Support for multiple algorithms, including Bill Gosper's Hashlife
1169 algorithm.
1170@item Loading patterns from BMP, PNG, GIF and TIFF image files.
1171@item Reading RLE, macrocell, Life 1.05/1.06, dblife and MCell files.
1172@item Scriptable via Lua or Python.
1173@item Extracting patterns, rules and scripts from zip files.
1174@item Downloading patterns, rules and scripts from online archives.
1175@item Pasting patterns from the clipboard.
1176@item Unlimited undo/redo.
1177@item Configurable keyboard shortcuts.
1178@item Auto fit option to keep patterns within the view.
1179@end enumerate")
1180 (license license:gpl2+)))
1181
299e15c1
TL
1182(define-public julius
1183 (package
1184 (name "julius")
d7822dc6 1185 (version "1.4.1")
299e15c1
TL
1186 (source
1187 (origin
1188 (method git-fetch)
1189 (uri (git-reference
b0e7b699 1190 (url "https://github.com/bvschaik/julius")
299e15c1
TL
1191 (commit (string-append "v" version))))
1192 (file-name (git-file-name name version))
1193 (sha256
d7822dc6 1194 (base32 "12hhnhdwgz7hd3hlndbnk15pxggm1375qs0764ija4nl1gbpb110"))
527ab312
TL
1195 ;; Remove unused bundled libraries.
1196 (modules '((guix build utils)))
1197 (snippet
1198 '(begin
1199 (with-directory-excursion "ext"
1200 (for-each delete-file-recursively '("dirent" "png" "SDL2" "zlib")))
1201 #t))))
299e15c1
TL
1202 (build-system cmake-build-system)
1203 (inputs
03418561
TL
1204 `(("libpng" ,libpng)
1205 ("sdl2" ,sdl2)
299e15c1
TL
1206 ("sdl2-mixer" ,sdl2-mixer)))
1207 (home-page "https://github.com/bvschaik/julius")
1208 (synopsis "Re-implementation of Caesar III game engine")
1209 (description
1210 "Engine for Caesar III, a city-building real-time strategy game.
1211Julius includes some UI enhancements while preserving the logic (including
1212bugs) of the original game, so that saved games are compatible. This package
1213does not include game data.")
1214 (license (list license:agpl3
299e15c1
TL
1215 license:zlib)))) ; ext/tinyfiledialogs
1216
1b917f99
PN
1217(define-public augustus
1218 (package
1219 (inherit julius)
1220 (name "augustus")
1221 (version (package-version julius))
1222 (source
1223 (origin
1224 (method git-fetch)
1225 (uri (git-reference
1226 (url "https://github.com/Keriew/augustus")
1227 (commit (string-append "v" version))))
1228 (file-name (git-file-name name version))
1229 (sha256
1230 (base32 "0ii0w0iwa9zv5bbqfcps5mxifd796m6fw4gvjf09pkm3yjgqc0ag"))
1231 ;; Remove unused bundled libraries.
1232 (modules '((guix build utils)))
1233 (snippet
1234 '(begin
1235 (with-directory-excursion "ext"
1236 (for-each delete-file-recursively '("dirent" "png" "SDL2" "zlib")))
1237 #t))))
1238 (arguments
1239 ;; No tests. See https://github.com/Keriew/augustus/issues/82.
1240 `(#:tests? #f))
1241 (home-page "https://github.com/Keriew/augustus")
1242 (synopsis "Re-implementation of Caesar III game engine with gameplay changes")
1243 (description
1244 "Fork of Julius, an engine for the a city-building real-time strategy
1245game Caesar III. Gameplay enhancements include:
1246
1247@itemize
1248@item roadblocks;
1249@item market special orders;
1250@item global labour pool;
1251@item partial warehouse storage;
1252@item increased game limits;
1253@item zoom controls.
1254@end itemize\n")))
1255
5145001a
RW
1256(define-public meandmyshadow
1257 (package
1258 (name "meandmyshadow")
b70ff03e 1259 (version "0.5a")
5145001a
RW
1260 (source (origin
1261 (method url-fetch)
1262 (uri (string-append "mirror://sourceforge/meandmyshadow/"
1263 version "/meandmyshadow-" version
1264 "-src.tar.gz"))
1265 (sha256
1266 (base32
b70ff03e 1267 "0i98v6cgmpsxy7mbb0s2y6f6qq6mkwzk2nrv1nz39ncf948aky2h"))))
5145001a
RW
1268 (build-system cmake-build-system)
1269 (arguments
1d9a9d27 1270 `(#:tests? #f)) ; there are no tests
5145001a
RW
1271 (native-inputs
1272 `(("pkg-config" ,pkg-config)))
1273 (inputs
1d9a9d27 1274 `(("curl" ,curl)
5145001a 1275 ("libarchive" ,libarchive)
1d9a9d27
TGR
1276 ("lua" ,lua)
1277 ("sdl" ,(sdl-union (list sdl2
1278 sdl2-image
1279 sdl2-mixer
1280 sdl2-ttf)))))
b590951f 1281 (home-page "https://acmepjz.github.io/meandmyshadow/")
5145001a
RW
1282 (synopsis "Puzzle/platform game")
1283 (description "Me and My Shadow is a puzzle/platform game in which you try
1284to reach the exit by solving puzzles. Spikes, moving blocks, fragile blocks
1285and much more stand between you and the exit. Record your moves and let your
1286shadow mimic them to reach blocks you couldn't reach alone.")
1287 (license license:gpl3+)))
1288
a02ca033
TL
1289(define-public opensurge
1290 (package
1291 (name "opensurge")
1292 (version "0.5.1.2")
1293 (source
1294 (origin
1295 (method git-fetch)
1296 (uri (git-reference
b0e7b699 1297 (url "https://github.com/alemart/opensurge")
a02ca033
TL
1298 (commit (string-append "v" version))))
1299 (file-name (git-file-name name version))
1300 (sha256
1301 (base32 "0ih7hlqjnp9rv0m4lqf7c0s1ai532way5i4pk45jq1gqm8325dbv"))))
1302 (build-system cmake-build-system)
1303 (arguments
1304 `(#:tests? #f ;there are no tests
1305 #:configure-flags
1306 (let* ((out (assoc-ref %outputs "out"))
1307 (share (string-append out "/share")))
1308 (list (string-append "-DCMAKE_INSTALL_PREFIX=" out "/bin")
1309 (string-append "-DGAME_DATADIR=" share "/" ,name)
1310 (string-append "-DDESKTOP_ENTRY_PATH=" share "/applications")
1311 (string-append "-DDESKTOP_ICON_PATH=" share "/pixmaps")
1312 (string-append "-DDESKTOP_METAINFO_PATH=" share "/metainfo")))
1313 #:phases
1314 (modify-phases %standard-phases
1315 (add-after 'unpack 'fix-xdg-open-path
1316 (lambda* (#:key inputs #:allow-other-keys)
1317 ;; Look for xdg-open in the store.
1318 (substitute* "src/core/web.c"
1319 (("/usr(/bin/xdg-open)" _ bin)
1320 (string-append (assoc-ref inputs "xdg-utils") bin)))
1321 #t))
1322 (add-after 'unpack 'unbundle-fonts
1323 (lambda* (#:key inputs #:allow-other-keys)
1324 ;; Replace bundled Roboto fonts with links to the store.
1325 (with-directory-excursion "fonts"
1326 (let ((roboto-dir (string-append
1327 (assoc-ref inputs "font-google-roboto")
1328 "/share/fonts/truetype/")))
1329 (for-each
1330 (lambda (font)
1331 (delete-file font)
1332 (symlink (string-append roboto-dir font) font))
1333 '("Roboto-Black.ttf" "Roboto-Bold.ttf" "Roboto-Medium.ttf")))
1334 #t))))))
1335 (inputs
1336 `(("allegro" ,allegro)
1337 ("font-google-roboto" ,font-google-roboto)
1338 ("surgescript" ,surgescript)
1339 ("xdg-utils" ,xdg-utils)))
1340 (home-page "https://opensurge2d.org")
1341 (synopsis "2D retro side-scrolling game")
1342 (description "@code{Open Surge} is a 2D retro side-scrolling platformer
1343inspired by the Sonic games. The player runs at high speeds through each
1344level while collecting items and avoiding obstacles. The game includes a
1345built-in level editor.")
1346 (license
1347 ;; Code is under GPL 3+, assets are under various licenses.
1348 ;; See src/misc/credits.c for details.
1349 (list license:gpl3+
1350 license:cc0
1351 license:cc-by3.0
1352 license:cc-by-sa3.0
1353 license:expat
1354 license:public-domain
1355 license:silofl1.1))))
1356
02345c96
RW
1357(define-public knights
1358 (package
1359 (name "knights")
1360 (version "025")
1361 (source (origin
1362 (method url-fetch)
1363 (uri (string-append "http://www.knightsgame.org.uk/files/knights_"
1364 version "_src.tar.gz"))
1365 (sha256
1366 (base32
1367 "18vp2ygvn0s0jz8rm585jqf6hjqkam1ximq81k0r9hpmfj7wb88f"))))
1368 (build-system gnu-build-system)
1369 (arguments
1370 '(#:make-flags
6fba1f4d
JG
1371 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
1372 "CXXFLAGS=-lpthread")
02345c96
RW
1373 #:phases
1374 (modify-phases %standard-phases
1375 ;; No configure script.
1376 (delete 'configure))
1377 #:tests? #f)) ;; No check target.
1378 (inputs
1379 `(("boost" ,boost)
1380 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
1381 ("freetype" ,freetype)
1382 ("fontconfig" ,fontconfig)
1383 ("curl" ,curl)))
6730d895
RW
1384 (native-inputs
1385 `(("pkg-config" ,pkg-config)))
02345c96
RW
1386 (home-page "http://www.knightsgame.org.uk/")
1387 (synopsis "Multiplayer dungeon game involving knights and quests")
1388 (description "Knights is a multiplayer game involving several knights who
1389must run around a dungeon and complete various quests. Each game revolves
1390around a quest – for example, you might have to find some items and carry them
1391back to your starting point. This may sound easy, but as there are only
1392enough items in the dungeon for one player to win, you may end up having to
1393kill your opponents to get their stuff! Other quests involve escaping from
1394the dungeon, fighting a duel to the death against the enemy knights, or
1395destroying an ancient book using a special wand.")
1396 ;; This package includes modified sources of lua (X11), enet (Expat), and
1397 ;; guichan (BSD-3). The "Coercri" library is released under the Boost
1398 ;; license. The whole package is released under GPLv3+.
1399 (license license:gpl3+)))
1400
63406c0b
JH
1401(define-public gnome-chess
1402 (package
1403 (name "gnome-chess")
8c07da61 1404 (version "3.36.1")
63406c0b
JH
1405 (source (origin
1406 (method url-fetch)
0c716128 1407 (uri (string-append "mirror://gnome/sources/gnome-chess/"
63406c0b 1408 (version-major+minor version) "/"
0c716128 1409 "gnome-chess-" version ".tar.xz"))
63406c0b
JH
1410 (sha256
1411 (base32
8c07da61 1412 "165bk8s3nngyqbikggspj4rff5nxxfkfcmgzjb4grmsrgbqwk5di"))))
63406c0b
JH
1413 (build-system meson-build-system)
1414 (arguments
1415 '(#:glib-or-gtk? #t
1416 #:phases
1417 (modify-phases %standard-phases
1418 (add-after 'unpack 'skip-gtk-update-icon-cache
1419 ;; Don't create 'icon-theme.cache'.
1420 (lambda _
1421 (substitute* "meson_post_install.py"
1422 (("gtk-update-icon-cache") "true"))
1423 #t)))))
1424 (inputs
1425 `(("gtk+" ,gtk+)
1426 ("librsvg" ,librsvg)))
1427 (native-inputs
1428 `(("gettext" ,gettext-minimal)
1429 ("glib:bin" ,glib "bin") ; for desktop-file-validate and appstream-util
1430 ("itstool" ,itstool)
1431 ("pkg-config" ,pkg-config)
1432 ("vala" ,vala)))
1433 (home-page "https://wiki.gnome.org/Apps/Chess")
1434 (synopsis "Chess board for GNOME")
1435 (description "GNOME Chess provides a 2D board for playing chess games
1436against human or computer players. It supports loading and saving games in
1437Portable Game Notation. To play against a computer, install a chess engine
1438such as chess or stockfish.")
1439 (license license:gpl3+)))
1440
e23f2ff1 1441(define-public gnubg
bf0018cd 1442 (package
e23f2ff1 1443 (name "gnubg")
d5ddb484 1444 (version "1.06.002")
bf0018cd
JD
1445 (source
1446 (origin
1447 (method url-fetch)
d24881e4
GLV
1448 (uri (string-append "mirror://gnu/gnubg/gnubg-release-"
1449 version "-sources.tar.gz"))
bf0018cd
JD
1450 (sha256
1451 (base32
d5ddb484 1452 "11xwhcli1h12k6rnhhyq4jphzrhfik7i8ah3k32pqw803460n6yf"))))
bf0018cd 1453 (build-system gnu-build-system)
fe5a4f57
MB
1454 (inputs `(;; XXX: Build with an older Pango for 'pango_font_get_hb_font' and
1455 ;; 'pango_coverage_get_type'. Try removing this for versions > 1.06.002.
1456 ("pango" ,pango-1.42)
1457
1458 ("glib" ,glib)
bf0018cd
JD
1459 ("readline" ,readline)
1460 ("gtk+" ,gtk+-2)
1461 ("mesa" ,mesa)
6a95024c 1462 ("glu" ,glu)
bf0018cd
JD
1463 ("gtkglext" ,gtkglext)
1464 ("sqlite" ,sqlite)
1465 ("libcanberra" ,libcanberra)))
1466 (native-inputs `(("python-2" ,python-2)
1467 ("pkg-config" ,pkg-config)))
93605bfd
GLV
1468 (arguments
1469 `(#:phases
1470 (modify-phases %standard-phases
1471 (add-after 'install 'install-desktop-file
1472 (lambda* (#:key outputs #:allow-other-keys)
1473 (let* ((out (assoc-ref outputs "out"))
1474 (apps (string-append out "/share/applications")))
1475 (mkdir-p apps)
1476 (with-output-to-file (string-append apps "/gnubg.desktop")
1477 (lambda _
1478 (format #t
1479 "[Desktop Entry]~@
1480 Name=GNU Backgammon~@
1481 Exec=~a/bin/gnubg -w~@
1482 Icon=gnubg~@
1483 Categories=Game;~@
1484 Terminal=false~@
1485 Type=Application~%"
1486 out))))
1487 #t)))))
d24881e4 1488 (home-page "https://www.gnu.org/software/gnubg/")
bf0018cd 1489 (synopsis "Backgammon game")
c97e4d8b
PN
1490 (description "The GNU backgammon application (also known as \"gnubg\") can
1491be used for playing, analyzing and teaching the game. It has an advanced
1492evaluation engine based on artificial neural networks suitable for both
1493beginners and advanced players. In addition to a command-line interface, it
1494also features an attractive, 3D representation of the playing board.")
024e2c17 1495 (license license:gpl3+)))
bf0018cd 1496
490c6528
JD
1497(define-public gnubik
1498 (package
1499 (name "gnubik")
ecc39b3f 1500 (version "2.4.3")
490c6528
JD
1501 (source
1502 (origin
1503 (method url-fetch)
1504 (uri (string-append "mirror://gnu/gnubik/gnubik-"
1505 version ".tar.gz"))
1506 (sha256
1507 (base32
ecc39b3f 1508 "1vlf924mq8hg93bsjj0rzvs0crc6psmlxyc6zn0fr7msnmpx6gib"))))
490c6528 1509 (build-system gnu-build-system)
1abfb4d4
MB
1510 (arguments
1511 '(#:phases (modify-phases %standard-phases
1512 (add-after 'unpack 'skip-gtk-update-icon-cache
1513 (lambda _
1514 ;; Do not attempt to run 'gtk-update-icon-cache', which is
1515 ;; unnecessary and causes a needless dependency on glib.
1516 (substitute* "Makefile.in"
1517 (("gtk-update-icon-cache")
1518 "true"))
1519 #t)))))
490c6528
JD
1520 (inputs `(("gtk+" ,gtk+-2)
1521 ("mesa" ,mesa)
276a8f71 1522 ("glu" ,glu)
490c6528
JD
1523 ("libx11" ,libx11)
1524 ("guile" ,guile-2.0)
1525 ("gtkglext" ,gtkglext)))
b94a6ca0 1526 (native-inputs `(("gettext" ,gettext-minimal)
490c6528
JD
1527 ("pkg-config" ,pkg-config)))
1528 (home-page "https://www.gnu.org/software/gnubik/")
e67f5551
LC
1529 (synopsis "3d Rubik's cube game")
1530 (description
1531 "GNUbik is a puzzle game in which you must manipulate a cube to make
490c6528
JD
1532each of its faces have a uniform color. The game is customizable, allowing
1533you to set the size of the cube (the default is 3x3) or to change the colors.
c5779c93 1534You may even apply photos to the faces instead of colors. The game is
490c6528 1535scriptable with Guile.")
024e2c17 1536 (license license:gpl3+)))
3da5dca3 1537
a20b084a
JD
1538(define-public gnushogi
1539 (package
1540 (name "gnushogi")
1541 (version "1.4.2")
1542 (source
1543 (origin
1544 (method url-fetch)
1545 (uri (string-append "mirror://gnu/gnushogi/gnushogi-"
1546 version ".tar.gz"))
1547 (sha256
1548 (base32
1549 "0a9bsl2nbnb138lq0h14jfc5xvz7hpb2bcsj4mjn6g1hcsl4ik0y"))))
1550 (arguments `(#:tests? #f)) ;; No check target.
1551 (build-system gnu-build-system)
6fd52309 1552 (home-page "https://www.gnu.org/software/gnushogi/")
a20b084a
JD
1553 (synopsis "The game of Shogi (Japanese chess)")
1554 (description "GNU Shogi is a program that plays the game Shogi (Japanese
1555Chess). It is similar to standard chess but this variant is far more complicated.")
1556 (license license:gpl3+)))
1557
e664200c
KK
1558(define-public ltris
1559 (package
1560 (name "ltris")
ec6cf66c 1561 (version "1.2.1")
e664200c
KK
1562 (source
1563 (origin
1564 (method url-fetch)
056db754 1565 (uri (string-append "mirror://sourceforge/lgames/ltris/"
dd0369f4 1566 "ltris-" version ".tar.gz"))
e664200c 1567 (sha256
ec6cf66c 1568 (base32 "0959vvxh5xnxzpdv7i67lpd2b6ghx69z65ldnclj1z6llyfzfs7q"))))
e664200c
KK
1569 (build-system gnu-build-system)
1570 (arguments
1571 '(;; The code in LTris uses traditional GNU semantics for inline functions
1572 #:configure-flags '("CFLAGS=-fgnu89-inline")
1573 #:phases
1574 (modify-phases %standard-phases
1575 (add-after 'set-paths 'set-sdl-paths
1576 (lambda* (#:key inputs #:allow-other-keys)
1577 (setenv "CPATH"
1578 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
1579 "/include/SDL:"
1580 (or (getenv "CPATH") "")))
e664200c
KK
1581 #t)))))
1582 (inputs
1583 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))))
1584 (home-page "http://lgames.sourceforge.net/LTris/")
1585 (synopsis "Tetris clone based on the SDL library")
1586 (description
1587 "LTris is a tetris clone: differently shaped blocks are falling down the
1588rectangular playing field and can be moved sideways or rotated by 90 degree
1589units with the aim of building lines without gaps which then disappear (causing
1590any block above the deleted line to fall down). LTris has three game modes: In
1591Classic you play until the stack of blocks reaches the top of the playing field
1592and no new blocks can enter. In Figures the playing field is reset to a new
1593figure each level and later on tiles and lines suddenly appear. In Multiplayer
1594up to three players (either human or CPU) compete with each other sending
1595removed lines to all opponents. There is also a Demo mode in which you can
1596watch your CPU playing while enjoying a cup of tea!")
1597 (license license:gpl2+)))
3bd0d186
A
1598
1599(define-public nethack
1600 (package
1601 (name "nethack")
9d9da65f 1602 (version "3.6.6")
3bd0d186
A
1603 (source
1604 (origin
1605 (method url-fetch)
a544817e
TGR
1606 (uri
1607 (string-append "https://www.nethack.org/download/" version "/nethack-"
1608 (string-join (string-split version #\.) "") "-src.tgz"))
3bd0d186 1609 (sha256
9d9da65f 1610 (base32 "1liyckjp34j354qnxc1zn9730lh1p2dabrg1hap24z6xnqx0rpng"))))
0ad7e703
VL
1611 (native-inputs
1612 `(("bison" ,bison)
1613 ("flex" ,flex)))
3bd0d186
A
1614 (inputs
1615 `(("ncurses" ,ncurses)
3bd0d186
A
1616 ("less" ,less)))
1617 (build-system gnu-build-system)
1618 (arguments
1619 '(#:make-flags
1620 `(,(string-append "PREFIX=" (assoc-ref %outputs "out")))
1621 #:phases
1622 (modify-phases %standard-phases
1623 (add-before 'configure 'patch-paths
1624 (lambda _
1625 (substitute* "sys/unix/nethack.sh"
1626 (("^ *cd .*$") ""))
1627 (substitute* "sys/unix/Makefile.utl"
1628 (("^YACC *=.*$") "YACC = bison -y\n")
1629 (("^LEX *=.*$") "LEX = flex\n")
1630 (("^# CC = gcc") "CC = gcc"))
1631 (substitute* "sys/unix/hints/linux"
1632 (("/bin/gzip") (string-append
1633 (assoc-ref %build-inputs "gzip")
1634 "/bin/gzip"))
1635 (("^WINTTYLIB=.*") "WINTTYLIB=-lncurses"))
1636 (substitute* "include/config.h"
df35e715
LC
1637 (("^.*define CHDIR.*$") "")
1638 (("^/\\* *#*define *REPRODUCIBLE_BUILD *\\*/")
1639 ;; Honor SOURCE_DATE_EPOCH.
1640 "#define REPRODUCIBLE_BUILD"))
1641
1642 ;; Note: 'makedefs' rejects and ignores dates that are too old
1643 ;; or too new, so we must choose something reasonable here.
1644 (setenv "SOURCE_DATE_EPOCH" "1531865062")
1645
3bd0d186
A
1646 (substitute* "sys/unix/Makefile.src"
1647 (("^# CC = gcc") "CC = gcc"))
1648 #t))
1649 (replace 'configure
1650 (lambda _
1651 (let ((bash (string-append
1652 (assoc-ref %build-inputs "bash")
1653 "/bin/bash")))
1654 (with-directory-excursion "sys/unix"
1655 (substitute* "setup.sh" (("/bin/sh") bash))
1656 (invoke bash "setup.sh" "hints/linux"))
1657 #t)))
1658 (add-after 'install 'fixup-paths
1659 (lambda _
1660 (let* ((output (assoc-ref %outputs "out"))
1661 (nethack-script (string-append output "/bin/nethack")))
1662 (mkdir-p (string-append output "/games/lib/nethackuserdir"))
1663 (for-each
1664 (lambda (file)
1665 (rename-file
1666 (string-append output "/games/lib/nethackdir/" file)
1667 (string-append output "/games/lib/nethackuserdir/"
1668 file)))
1669 '("xlogfile" "logfile" "perm" "record" "save"))
1670 (mkdir-p (string-append output "/bin"))
1671 (call-with-output-file nethack-script
1672 (lambda (port)
1673 (format port "#!~a/bin/sh
1674PATH=~a:$PATH
1675if [ ! -d ~~/.config/nethack ]; then
1676 mkdir -p ~~/.config/nethack
1677 cp -r ~a/games/lib/nethackuserdir/* ~~/.config/nethack
1678 chmod -R +w ~~/.config/nethack
1679fi
1680
1681RUNDIR=$(mktemp -d)
1682
1683cleanup() {
1684 rm -rf $RUNDIR
1685}
1686trap cleanup EXIT
1687
1688cd $RUNDIR
1689for i in ~~/.config/nethack/*; do
1690 ln -s $i $(basename $i)
1691done
1692for i in ~a/games/lib/nethackdir/*; do
1693 ln -s $i $(basename $i)
1694done
1695~a/games/nethack"
1696 (assoc-ref %build-inputs "bash")
1697 (list->search-path-as-string
1698 (list
1699 (string-append
1700 (assoc-ref %build-inputs "coreutils") "/bin")
1701 (string-append
1702 (assoc-ref %build-inputs "less") "/bin"))
1703 ":")
1704 output
1705 output
1706 output)))
1707 (chmod nethack-script #o555)
1708 #t)))
1709 (delete 'check))))
1710 (home-page "https://nethack.org")
1711 (synopsis "Classic dungeon crawl game")
1712 (description "NetHack is a single player dungeon exploration game that runs
1713on a wide variety of computer systems, with a variety of graphical and text
1714interfaces all using the same game engine. Unlike many other Dungeons &
1715Dragons-inspired games, the emphasis in NetHack is on discovering the detail of
1716the dungeon and not simply killing everything in sight - in fact, killing
1717everything in sight is a good way to die quickly. Each game presents a
1718different landscape - the random number generator provides an essentially
1719unlimited number of variations of the dungeon and its denizens to be discovered
1720by the player in one of a number of characters: you can pick your race, your
1721role, and your gender.")
1722 (license
1723 (license:fsdg-compatible
1724 "https://nethack.org/common/license.html"))))
e664200c 1725
82943626
TGR
1726(define-public pipewalker
1727 (package
1728 (name "pipewalker")
1729 (version "0.9.4")
1730 (source
1731 (origin
1732 (method url-fetch)
1733 (uri (string-append "http://downloads.sourceforge.net/pipewalker/"
96848ecc 1734 "pipewalker-" version ".tar.gz"))
82943626 1735 (sha256
96848ecc 1736 (base32 "1x46wgk0s55562pd96cxagxkn6wpgglq779f9b64ff1k3xzp3myn"))))
82943626
TGR
1737 (build-system gnu-build-system)
1738 (arguments
1739 `(#:configure-flags
1740 (list (string-append "--docdir=" (assoc-ref %outputs "out")
1741 "/share/doc/" ,name "-" ,version))
1742 #:phases
1743 (modify-phases %standard-phases
1744 (add-after 'configure 'patch-docdir
1745 ;; Makefile.in ignores configure's ‘--docdir=...’ option. Fix that.
1746 (lambda _
1747 (substitute* "Makefile"
1748 (("(pkgdocdatadir = ).*" _ assignment)
1749 (string-append assignment "$(docdir)\n")))
1750 #t)))))
1751 (inputs
1752 `(("libpng" ,libpng)
1753 ("mesa" ,mesa)
1754 ("sdl" ,sdl)))
1755 (home-page "http://pipewalker.sourceforge.net/")
1756 (synopsis "Logical tile puzzle")
1757 (description
1758 "PipeWalker is a simple puzzle game with many diffent themes: connect all
1759computers to one network server, bring water from a source to the taps, etc.
1760The underlying mechanism is always the same: you must turn each tile in the
1761grid in the right direction to combine all components into a single circuit.
1762Every puzzle has a complete solution, although there may be more than one.")
1763 (license license:gpl3+)))
1764
26a657f0
KK
1765(define-public prboom-plus
1766 (package
1767 (name "prboom-plus")
1768 (version "2.5.1.4")
1769 (source (origin
1770 (method url-fetch)
a8a96bbe
TGR
1771 (uri (string-append "mirror://sourceforge/prboom-plus/prboom-plus/"
1772 version "/prboom-plus-" version ".tar.gz"))
26a657f0 1773 (sha256
a8a96bbe 1774 (base32 "151v6nign86m1a2vqz27krsccpc9m4d1jax4y43v2fa82wfj9qp0"))
26a657f0
KK
1775 (modules '((guix build utils)))
1776 (snippet
6cbee49d
MW
1777 '(begin
1778 (substitute* "src/version.c"
1779 (("__DATE__") "")
1780 (("__TIME__") ""))
1781 #t))))
26a657f0
KK
1782 (build-system gnu-build-system)
1783 (arguments
1784 '(#:configure-flags '("--disable-cpu-opt")
1785 #:make-flags `(,(string-append "gamesdir="
1786 (assoc-ref %outputs "out") "/bin"))
1787 #:phases
1788 (modify-phases %standard-phases
1789 (add-after 'set-paths 'set-sdl'paths
1790 (lambda* (#:key inputs #:allow-other-keys)
1791 (setenv "CPATH"
1792 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
1793 "/include/SDL:"
1794 (or (getenv "CPATH") "")))
26a657f0
KK
1795 #t)))))
1796 (inputs
1797 `(("fluidsynth" ,fluidsynth)
1798 ("glu" ,glu)
1799 ("libmad" ,libmad)
1800 ("libpng" ,libpng)
1801 ("libvorbis" ,libvorbis)
1802 ("pcre" ,pcre)
1803 ("portmidi" ,portmidi)
1804 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-net)))))
1805 (home-page "http://prboom-plus.sourceforge.net/")
1806 (synopsis "Version of the classic 3D shoot'em'up game Doom")
1807 (description
1808 "PrBoom+ is a Doom source port developed from the original PrBoom project.")
1809 (license license:gpl2+)))
1810
519bfc65
KK
1811(define-public retux
1812 (package
1813 (name "retux")
b286e3b3 1814 (version "1.3.6")
519bfc65
KK
1815 (source (origin
1816 (method url-fetch)
1817 (uri (string-append "mirror://savannah/retux/"
1818 (version-major+minor version) "/retux-"
1819 version "-src.tar.gz"))
1820 (sha256
1821 (base32
b286e3b3 1822 "01bidh4zisjp3nc436x0g85v60dvwb3ig37i7y01sa71j8fm4fmb"))))
519bfc65
KK
1823 (build-system python-build-system)
1824 (arguments
1825 `(#:tests? #f ; no check target
1826 #:phases
1827 (modify-phases %standard-phases
1828 ;; no setup.py script
1829 (delete 'build)
1830 (replace 'install
1831 (lambda* (#:key outputs #:allow-other-keys)
1832 (let* ((out (assoc-ref outputs "out"))
1833 (bin (string-append out "/bin"))
1834 (data (string-append out "/share/retux"))
1835 (doc (string-append out "/share/doc/retux")))
1836 (mkdir-p bin)
1837
1838 (substitute* "retux.py"
1839 ;; Use the correct data directory.
1840 (("os\\.path\\.join\\(os\\.path\\.dirname\\(__file__\\), \"data\"\\),")
1841 (string-append "\"" data "\","))
1842 ;; Use Python 3 so the patch-shebangs phase works properly.
1843 ((".*python2.*") "#!/usr/bin/python3"))
1844
1845 (copy-file "retux.py" (string-append bin "/retux"))
1846
1847 (copy-recursively "data" data)
1848
fbc3b802
KK
1849 (install-file "COPYING" doc)
1850 #t))))))
519bfc65
KK
1851 (inputs
1852 `(("python-sge-pygame" ,python-sge-pygame)
1853 ("python-six" ,python-six)
1854 ("python-xsge" ,python-xsge)))
1855 (home-page "http://retux.nongnu.org")
1856 (synopsis "Action platformer game")
1857 (description
1858 "ReTux is an action platformer loosely inspired by the Mario games,
1859utilizing the art assets from the @code{SuperTux} project.")
1860 ;; GPL version 3 or later is the license for the code and some art.
1861 ;; The rest of the licenses are for the art exclusively, as listed in
1862 ;; data/LICENSES.
1863 (license (list license:cc0
1864 license:cc-by3.0
1865 license:cc-by-sa3.0
1866 license:cc-by-sa4.0
1867 license:gpl2+
1868 license:gpl3+))))
07f3b379
KK
1869
1870(define-public roguebox-adventures
1697048f
KK
1871 (package
1872 (name "roguebox-adventures")
98f79040 1873 (version "3.0.1")
1697048f
KK
1874 (source
1875 (origin
1876 (method url-fetch)
1877 (uri (string-append
1878 "http://download.tuxfamily.org/rba/RogueBoxAdventures_v"
1879 (string-join (string-split version #\.) "_") "_Source.zip"))
1880 (file-name (string-append name "-" version ".zip"))
1881 (sha256
1882 (base32
98f79040 1883 "05zd03s5w9kcpklfgcggbaa6rwf59nm0q9vcj6gh9v2lh402k067"))))
1697048f
KK
1884 (build-system python-build-system)
1885 (arguments
1886 `(#:tests? #f ; no check target
1887 #:phases
1888 (modify-phases %standard-phases
1889 (replace 'unpack
1890 (lambda* (#:key source #:allow-other-keys)
1891 (and (invoke "unzip" source)
1892 ;; The actual source is buried a few directories deep.
1893 (chdir (string-append "RogueBoxAdventures_v"
1894 (string-join
1895 (string-split ,version #\.) "_")
1896 "_Source")))))
1897 ;; no setup.py script
1898 (replace 'build
1899 (lambda* (#:key outputs #:allow-other-keys)
1900 (let* ((out (assoc-ref outputs "out"))
1901 (data (string-append
1902 out "/share/games/roguebox-adventures")))
1903 ;; Use the correct data directory.
1904 (substitute* '("main.py" "LIB/getch.py" "LIB/getch_gcwz.py")
1905 (("basic_path + os\\.sep + 'DATA'")
1906 (string-append "'" data "'"))
1907 (("^basic_path.*$")
1908 (string-append "basic_path ='" data "'\n")))
98f79040
KK
1909 (substitute* "LIB/dialog.py"
1910 (("d_path = os\\.path\\.dirname\\(.*\\)\\)")
1911 (string-append "d_path = '" data "'")))
1697048f
KK
1912 (substitute* "LIB/gra_files.py"
1913 (("basic_path = b_path\\.replace\\('/LIB',''\\)")
1914 (string-append "basic_path ='" data "'\n")))
07f3b379 1915
1697048f
KK
1916 ;; The game must save in the user's home directory because
1917 ;; the store is read-only.
1918 (substitute* "main.py"
1919 (("home_save = False") "home_save = True")
1920 (("'icon_small.png'")
1921 (string-append "'" data "/icon_small.png'"))))
1922 #t))
1923 (replace 'install
1924 (lambda* (#:key outputs #:allow-other-keys)
1925 (let* ((out (assoc-ref outputs "out"))
1926 (bin (string-append out "/bin"))
1927 (roguebox-adventures
1928 (string-append bin "/roguebox-adventures"))
1929 (data (string-append
1930 out "/share/games/roguebox-adventures"))
1931 (lib (string-append data "/LIB"))
1932 (doc (string-append
1933 out "/share/doc/roguebox-adventures")))
1934 (mkdir-p bin)
1935 (mkdir-p doc)
07f3b379 1936
1697048f
KK
1937 (for-each (lambda (file)
1938 (copy-recursively file
1939 (string-append data "/" file)))
1940 '("AUDIO" "FONT" "GRAPHIC" "LIB" "LICENSE"
1941 "icon_big.png" "icon_small.png"))
1942 (for-each (lambda (file)
1943 (chmod file #o555)
1944 (install-file file lib))
1945 '("main.py" "run.py"))
07f3b379 1946
1697048f 1947 (copy-recursively "DOC" doc)
07f3b379 1948
1697048f
KK
1949 (call-with-output-file
1950 roguebox-adventures
1951 (lambda (p)
1952 (format p "\
1953#!~a
1954export PYTHONPATH=~a/LIB:~a
1955exec -a \"~a\" ~a \"$@\"\n"
1956 (which "bash") data (getenv "PYTHONPATH")
1957 (which "python3")
1958 (string-append lib "/main.py"))))
1959 (chmod roguebox-adventures #o555))
1960 #t)))))
1961 (native-inputs
1962 `(("unzip" ,unzip)))
1963 (inputs
1964 `(("python-pygame" ,python-pygame)
1965 ("python-tmx" ,python-tmx)))
1966 (home-page "https://rogueboxadventures.tuxfamily.org")
1967 (synopsis "A classical roguelike/sandbox game")
1968 (description
1969 "RogueBox Adventures is a graphical roguelike with strong influences
07f3b379
KK
1970from sandbox games like Minecraft or Terraria. The main idea of RogueBox
1971Adventures is to offer the player a kind of roguelike toy-world. This world
1972can be explored and changed freely.")
1697048f
KK
1973 ;; The GPL3+ is for code, the rest are for art.
1974 (license (list license:cc0
1975 license:cc-by3.0
1976 license:gpl3+
1977 license:silofl1.1))))
519bfc65 1978
6d7ed7c0
NG
1979(define-public seahorse-adventures
1980 (package
1981 (name "seahorse-adventures")
1982 (version "1.2")
1983 (source
1984 (origin
1985 (method git-fetch)
1986 (uri (git-reference
b0e7b699 1987 (url "https://github.com/dulsi/seahorse-adventures")
6d7ed7c0
NG
1988 (commit (string-append "release-" version))))
1989 (file-name (git-file-name name version))
1990 (sha256
1991 (base32 "1rnvk06npaqcpjz5z6xcmssz61i32s422lydp49vrnf3j2g4yimd"))
1992 (modules '((guix build utils)
1993 (ice-9 ftw)
1994 (srfi srfi-1)))
1995 ;; Remove non-free (non-commercial) font.
1996 (snippet
1997 `(begin
1998 (for-each delete-file (find-files "data/fonts" "."))
1999 #t))))
2000 (build-system python-build-system)
2001 (arguments
2002 `(#:tests? #f ;no test
2003 #:phases
2004 (modify-phases %standard-phases
2005 (delete 'build) ;pure Python
2006 (replace 'install ;no install script
2007 (lambda* (#:key outputs #:allow-other-keys)
2008 (let* ((out (assoc-ref outputs "out"))
2009 (bin (string-append out "/bin"))
2010 (share (string-append out "/share"))
2011 (applications (string-append share "/applications"))
2012 (data (string-append share "/seahorse-adventures")))
2013 ;; Install data.
2014 (for-each (lambda (f)
2015 (chmod f #o555)
2016 (install-file f data))
2017 '("leveledit.py" "run_game.py" "tileedit.py"))
2018 (for-each (lambda (dir)
2019 (let ((target (string-append data "/" dir)))
2020 (mkdir-p target)
2021 (copy-recursively dir target)))
2022 '("data" "lib"))
2023 ;; Create executable.
2024 (mkdir-p bin)
2025 (let ((executable (string-append bin "/seahorse-adventures")))
2026 (call-with-output-file executable
2027 (lambda (p)
2028 (format p
2029 "#!~a~@
2030 export PYTHONPATH=~a:~a~@
2031 exec -a \"~a\" ~a \"$@\"~%"
2032 (which "bash") data (getenv "PYTHONPATH")
2033 (which "python3")
2034 (string-append data "/run_game.py"))))
2035 (chmod executable #o555))
2036 ;; Add desktop file.
2037 (mkdir-p applications)
2038 (make-desktop-entry-file
2039 (string-append applications "/seahorse-adventures.desktop")
2040 #:name "Seahorse Adventures"
2041 #:comment
2042 '((#f "Help Barbie the seahorse float on bubbles to the moon"))
2043 #:exec ,name
2044 #:icon ,name
2045 #:categories '("Game" "ActionGame")
2046 #:keywords '("game" "retro" "platform"))
2047 ;; Add icons.
2048 (for-each
2049 (lambda (size)
2050 (let ((dir (string-append share "/icons/hicolor/"
2051 size "x" size "/apps")))
2052 (mkdir-p dir)
2053 (copy-file
2054 (string-append "icon" size ".png")
2055 (string-append dir "/searhorse-adventures.png"))))
2056 '("32" "64" "128")))
2057 #t))
2058 (add-after 'install 'unbundle-fonts
2059 ;; Unbundle Bitstream Vera font and replace deleted one.
2060 (lambda* (#:key outputs inputs #:allow-other-keys)
2061 (let* ((out (assoc-ref outputs "out"))
2062 (data (string-append out "/share/seahorse-adventures"))
2063 (vera (string-append (assoc-ref inputs "font-bitstream-vera")
2064 "/share/fonts/truetype/Vera.ttf")))
2065 (let ((themes-dir (string-append data "/data/themes/")))
2066 (for-each
2067 (lambda (theme)
2068 (let ((target (string-append themes-dir theme "/Vera.ttf")))
2069 (delete-file target)
2070 (symlink vera target)))
2071 '("default" "gray")))
2072 (symlink vera (string-append data "/data/fonts/04B_20__.TTF"))
2073 (substitute* (string-append data "/lib/main.py")
2074 (("f_scale = 0.35") "f_scale = 0.47")))
2075 #t)))))
2076 (inputs
2077 `(("font-bitstream-vera" ,font-bitstream-vera)
2078 ("python-pygame" ,python-pygame)))
2079 (home-page "http://www.imitationpickles.org/barbie/")
2080 (synopsis "Help Barbie the seahorse float on bubbles to the moon")
2081 (description
2082 "Barbie Seahorse Adventures is a retro style platform arcade game.
2083You are Barbie the seahorse who travels through the jungle, up to the
2084volcano until you float on bubbles to the moon. On the way to your
2085final destination you will encounter various enemies, servants of the
2086evil overlord who has stolen the galaxy crystal. Avoid getting hit
2087and defeat them with your bubbles!")
2088 ;; GPL2+ is for code, CC0 is for art.
2089 (license (list license:gpl2+ license:cc0))))
2090
756605ee
TL
2091(define-public superstarfighter
2092 (package
2093 (name "superstarfighter")
2094 (version "0.6.4")
2095 (source
2096 (origin
2097 (method git-fetch)
2098 (uri (git-reference
b0e7b699 2099 (url "https://github.com/notapixelstudio/superstarfighter")
756605ee
TL
2100 (commit (string-append "v" version))))
2101 (file-name (git-file-name name version))
2102 (sha256
2103 (base32 "1fly63yf5ls1xwm15if4lxwy67wi84k4gvjllljpykrl18vw2y0y"))))
2104 (build-system gnu-build-system)
2105 (arguments
2106 `(#:tests? #f ;there are no tests
2107 #:phases
2108 (modify-phases %standard-phases
2109 (replace 'configure
2110 (lambda _
2111 (chdir "godot")
2112 (setenv "HOME" (getcwd))
2113 (with-output-to-file "export_presets.cfg"
2114 (lambda ()
2115 (display
2116 "[preset.0]
2117name=\"Guix\"
2118platform=\"Linux/X11\"
2119runnable=true
2120[preset.0.options]")))
2121 #t))
2122 (replace 'build
2123 (lambda _
2124 (let ((godot (assoc-ref %build-inputs "godot-headless")))
2125 (invoke (string-append godot "/bin/godot_server")
2126 "--export-pack" "Guix"
2127 "superstarfighter.pck" "project.godot"))
2128 #t))
2129 (replace 'install
2130 (lambda* (#:key inputs outputs #:allow-other-keys)
2131 (let* ((out (assoc-ref outputs "out"))
2132 (bin (string-append out "/bin"))
2133 (share (string-append out "/share"))
2134 (data (string-append share "/superstarfighter"))
2135 (icons (string-append share "/icons/hicolor/256x256/apps")))
2136 (install-file "superstarfighter.pck" data)
2137 (mkdir-p bin)
2138 (call-with-output-file (string-append bin "/superstarfighter")
2139 (lambda (port)
2140 (format port
2141 "#!/bin/sh~@
2142 exec ~a/bin/godot --main-pack ~a/superstarfighter.pck~%"
2143 (assoc-ref inputs "godot")
2144 data)
2145 (chmod port #o755)))
2146 (mkdir-p icons)
2147 (copy-file "icon.png" (string-append icons "/" ,name ".png"))
2148 (make-desktop-entry-file
2149 (string-append share "/applications/" ,name ".desktop")
2150 #:name "SuperStarfighter"
2151 #:comment "Fast-paced arcade combat game"
2152 #:exec ,name
2153 #:icon ,name
2154 #:categories '("Game" "ArcadeGame")))
2155 #t)))))
2156 (native-inputs
2157 `(("godot-headless" ,godot "headless")))
2158 (inputs
2159 `(("godot" ,godot)))
2160 (home-page "https://notapixel.itch.io/superstarfighter")
2161 (synopsis "Fast-paced local multiplayer arcade game")
2162 (description "In SuperStarfighter, up to four local players compete in a
21632D arena with fast-moving ships and missiles. Different game types are
2164available, as well as a single-player mode with AI-controlled ships.")
2165 (license (list license:expat ; game
2166 license:silofl1.1)))) ; fonts
2167
0ceb7c19
MB
2168(define %ufoai-commit "a542a87a891f96b1ab2c44d35b2f6f16859a5019")
2169(define %ufoai-revision "0")
2170(define %ufoai-version (git-version "2.6.0_dev" %ufoai-revision %ufoai-commit))
2171(define ufoai-source
2172 (origin
2173 (method git-fetch)
2174 (uri (git-reference
2175 (url "git://git.code.sf.net/p/ufoai/code") ;HTTPS fails mid-clone
2176 (commit %ufoai-commit)))
2177 (file-name (string-append "ufoai-" %ufoai-version "-checkout"))
2178 (sha256
2179 (base32
2180 "024s7b9rcg7iw8i2p72gwnvabk23ljlq0nldws0y4b6hpwzyn1wz"))
2181 (modules '((guix build utils)
2182 (srfi srfi-1)
2183 (ice-9 ftw)))
2184 (snippet
2185 '(begin
2186 ;; Delete ~32MiB of bundled dependencies.
2187 (with-directory-excursion "src/libs"
2188 (for-each delete-file-recursively
2189 (lset-difference equal? (scandir ".")
2190 '("." ".." "gtest" "mumble"))))
2191
2192 ;; Use relative path to Lua headers.
2193 (substitute* "src/common/scripts_lua.h"
2194 (("\\.\\./libs/lua/") ""))
2195
2196 ;; Adjust Makefile targets to not depend on 'ufo2map', since we build
2197 ;; it as a separate package. This way we don't need to make the same
2198 ;; adjustments for 'ufoai-data' and 'ufoai' below.
2199 (substitute* "build/maps.mk"
2200 (("\\./ufo2map") "ufo2map")
2201 (("maps: ufo2map") "maps:"))
2202 (substitute* "build/modules/testall.mk"
2203 (("testall: ufo2map") "testall:"))
2204
2205 ;; If no cURL headers are found, the build system will try to include
2206 ;; the bundled version, even when not required. Prevent that.
2207 (substitute* "build/default.mk"
2208 (("^include src/libs/curl/lib/Makefile\\.inc")
2209 ""))
2210
2211 ;; While here, improve reproducibility by adding the '-X' flag to the
2212 ;; zip command used to create the map files, in order to prevent time
2213 ;; stamps from making it into the generated archives.
2214 (substitute* "build/data.mk"
2215 (("\\$\\(call ZIP\\)")
2216 "$(call ZIP) -X"))
2217 #t))))
2218
2219(define-public ufo2map
2220 (package
2221 (name "ufo2map")
2222 (version %ufoai-version)
2223 (home-page "https://ufoai.org/")
2224 (source ufoai-source)
2225 (build-system gnu-build-system)
2226 (arguments
2227 '(#:configure-flags '("CC=gcc" "CXX=g++"
2228 "--enable-release"
2229 "--enable-ufo2map"
2230 "--disable-uforadiant"
2231 "--disable-cgame-campaign"
2232 "--disable-cgame-multiplayer"
2233 "--disable-cgame-skirmish"
2234 "--disable-game"
2235 "--disable-memory"
2236 "--disable-testall"
2237 "--disable-ufoded"
2238 "--disable-ufo"
2239 "--disable-ufomodel"
2240 "--disable-ufoslicer")
2241 #:tests? #f ;no tests
2242 #:phases (modify-phases %standard-phases
2243 (replace 'configure
2244 (lambda* (#:key (configure-flags '()) #:allow-other-keys)
2245 ;; The home-made configure script does not understand
2246 ;; some of the default flags of gnu-build-system.
2247 (apply invoke "./configure" configure-flags)))
2248 (replace 'install
2249 (lambda* (#:key outputs #:allow-other-keys)
2250 (let ((out (assoc-ref outputs "out")))
2251 (install-file "ufo2map" (string-append out "/bin"))
2252 (install-file "debian/ufo2map.6"
2253 (string-append out "/share/man/man6"))
2254 #t))))))
2255 (native-inputs
2256 `(("pkg-config" ,pkg-config)))
2257 (inputs
2258 `(("libjpeg" ,libjpeg-turbo)
2259 ("libpng" ,libpng)
2260 ("lua" ,lua-5.1)
2261 ("sdl-union" ,(sdl-union (list sdl2 sdl2-mixer sdl2-ttf)))))
2262 (synopsis "UFO: AI map generator")
2263 (description
2264 "This package provides @command{ufo2map}, a program used to generate
2265maps for the UFO: Alien Invasion strategy game.")
2266 (license license:gpl2+)))
2267
2268(define ufoai-data
2269 (package
2270 (name "ufoai-data")
2271 (version %ufoai-version)
2272 (home-page "https://ufoai.org/")
2273 (source ufoai-source)
2274 (build-system gnu-build-system)
2275 (arguments
2276 '(#:tests? #f
2277 #:configure-flags '("CC=gcc" "CXX=g++")
2278 #:phases (modify-phases %standard-phases
2279 (replace 'configure
2280 (lambda* (#:key outputs (configure-flags '()) #:allow-other-keys)
2281 (apply invoke "./configure" configure-flags)))
2282 (replace 'build
2283 (lambda* (#:key (parallel-build? #t) #:allow-other-keys)
2284 (invoke "make"
2285 "-j" (if parallel-build?
2286 (number->string (parallel-job-count))
2287 "1")
2288 "maps")))
2289 (add-after 'build 'pack
2290 (lambda _
2291 (invoke "make" "pk3")))
2292 (replace 'install
2293 (lambda* (#:key outputs #:allow-other-keys)
2294 (let ((out (assoc-ref outputs "out")))
2295 (for-each (lambda (file)
2296 (install-file file out))
2297 (find-files "base" "\\.pk3$"))
2298 #t))))))
2299 (native-inputs
2300 `(("python" ,python-2)
2301 ("ufo2map" ,ufo2map)
2302 ("which" ,which)
2303 ("zip" ,zip)))
2304 (synopsis "UFO: AI data files")
2305 (description
2306 "This package contains maps and other assets for UFO: Alien Invasion.")
2307 ;; Most assets are available under either GPL2 or GPL2+. Some use other
2308 ;; licenses, see LICENSES for details.
2309 (license (list license:gpl2+ license:gpl2 license:cc-by3.0
2310 license:cc-by-sa3.0 license:public-domain))))
2311
2312(define-public ufoai
2313 (package
2314 (name "ufoai")
2315 (version %ufoai-version)
2316 (home-page "https://ufoai.org/")
2317 (source ufoai-source)
2318 (build-system gnu-build-system)
2319 (arguments
2320 `(#:configure-flags
2321 (list (string-append "--prefix=" (assoc-ref %outputs "out"))
2322 (string-append "--datadir=" (assoc-ref %outputs "out")
2323 "/share/games/ufo")
2324 "CC=gcc" "CXX=g++"
2325 "--enable-release"
2326 "--enable-game"
2327 "--disable-ufo2map"
2328 "--disable-dependency-tracking"
2329
2330 ;; Disable hard links to prevent huge NARs.
2331 "--disable-hardlinkedgame"
2332 "--disable-hardlinkedcgame")
2333 #:phases (modify-phases %standard-phases
2334 (add-after 'unpack 'symlink-data-files
2335 (lambda* (#:key inputs #:allow-other-keys)
2336 (let ((data (assoc-ref inputs "ufoai-data")))
2337 ;; Symlink the data files to where the build system
2338 ;; expects to find them. Ultimately these files are
2339 ;; copied to $out/share/games/ufoai/base, losing the
2340 ;; symlinks; we could fix that after install, but it
2341 ;; does not make a big difference in practice due to
2342 ;; deduplication.
2343 (with-directory-excursion "base"
2344 (for-each (lambda (file)
2345 (symlink file (basename file)))
2346 (find-files data "\\.pk3$")))
2347 #t)))
2348 (add-before 'configure 'create-language-files
2349 (lambda _
2350 (invoke "make" "lang")))
2351 (replace 'configure
2352 (lambda* (#:key outputs (configure-flags '()) #:allow-other-keys)
2353 (apply invoke "./configure" configure-flags)))
2354 (replace 'check
2355 (lambda* (#:key tests? #:allow-other-keys)
2356 (if tests?
2357 (invoke "./testall")
2358 (format #t "test suite not run~%"))
2359 #t))
2360 (add-after 'install 'install-man-pages
2361 (lambda* (#:key outputs #:allow-other-keys)
2362 (let* ((out (assoc-ref outputs "out"))
2363 (man6 (string-append out "/share/man/man6")))
2364 (install-file "debian/ufo.6" man6)
2365 (install-file "debian/ufoded.6" man6)
2366 #t))))
2367
2368 ;; TODO: Some map tests occasionally fail because of randomness issues,
2369 ;; e.g. not enough generated aliens. The test runner also fails early
2370 ;; in the build container with 'failed to shutdown server'?
2371 #:tests? #f))
2372 (native-inputs
2373 `(("gettext" ,gettext-minimal)
2374 ("pkg-config" ,pkg-config)
2375 ("python" ,python-2)
2376 ("ufo2map" ,ufo2map)
2377 ("ufoai-data" ,ufoai-data)))
2378 (inputs
2379 `(("curl" ,curl)
2380 ("libjpeg" ,libjpeg-turbo)
2381 ("libogg" ,libogg)
2382 ("libpng" ,libpng)
2383 ("libtheora" ,libtheora)
2384 ("libvorbis" ,libvorbis)
2385 ("libxml2" ,libxml2)
2386 ("lua" ,lua-5.1)
2387 ("mesa" ,mesa)
2388 ("minixml" ,minixml)
2389 ("sdl-union" ,(sdl-union (list sdl2 sdl2-mixer sdl2-ttf)))
2390 ("zlib" ,zlib)))
2391 (synopsis "Turn-based tactical strategy game")
2392 (description
2393 "UFO: Alien Invasion is a tactical strategy game set in the year 2084.
2394You control a secret organisation charged with defending Earth from a brutal
2395alien enemy. Build up your bases, prepare your team, and dive head-first into
2396the fast and flowing turn-based combat.
2397
2398Over the long term you will need to conduct research into the alien threat to
2399figure out their mysterious goals and use their powerful weapons for your own
2400ends. You will produce unique items and use them in combat against your
2401enemies.
2402
2403You can also use them against your friends with the multiplayer functionality.
2404
2405Warning: This is a pre-release version of UFO: AI! Some things may not work
2406properly.")
2407
2408 ;; The game code and most assets are GPL2+, but we use GPL2 only here
2409 ;; because some assets do not use the "or later" clause. Many individual
2410 ;; assets use Creative Commons or Public Domain; see the LICENSE file.
2411 (license (delete license:gpl2+ (package-license ufoai-data)))))
2412
a20b084a
JD
2413(define-public xshogi
2414 (package
2415 (name "xshogi")
2416 (version "1.4.2")
2417 (source
2418 (origin
2419 (method url-fetch)
2420 (uri (string-append "mirror://gnu/gnushogi/xshogi-"
2421 version ".tar.gz"))
2422 (sha256
2423 (base32
2424 "1dns0nhymak44by18sv48m4xb2skiwbi2i3nb9hl6w9iwd2i2brf"))))
2425 (build-system gnu-build-system)
2426 (inputs
2427 `(("libxaw" ,libxaw)
2428 ("libxt" ,libxt)))
6fd52309 2429 (home-page "https://www.gnu.org/software/gnushogi/")
2f1d20a8 2430 (synopsis "User interface for gnushogi")
a20b084a
JD
2431 (description "A graphical user interface for the package @code{gnushogi}.")
2432 ;; Contains a copy of GPLv3 but the licence notices simply
2433 ;; state "GNU General Public Licence" without specifying a version.
2434 (license license:gpl1+)))
2435
649220ad 2436(define-public abbaye
3da5dca3 2437 (package
649220ad 2438 (name "abbaye")
efc12a81 2439 (version "2.0.1")
3da5dca3
DT
2440 (source
2441 (origin
feb50ac6
TGR
2442 (method git-fetch)
2443 (uri (git-reference
b0e7b699 2444 (url "https://github.com/nevat/abbayedesmorts-gpl")
feb50ac6
TGR
2445 (commit (string-append "v" version))))
2446 (file-name (git-file-name name version))
3da5dca3 2447 (sha256
feb50ac6 2448 (base32 "1pwqf7r9bqb2p3xrw9i7y8pgr1401fy3mnnqpb1qkhmdl3gqi9hb"))
efc12a81
AFN
2449 (modules '((guix build utils)))
2450 (snippet
2451 ;; Unbundle fonts.
6cbee49d
MW
2452 '(begin
2453 (delete-file-recursively "fonts")
2454 #t))))
3da5dca3
DT
2455 (build-system gnu-build-system)
2456 (arguments
efc12a81 2457 '(#:make-flags '("CC=gcc")
aec05972
AK
2458 #:phases (modify-phases %standard-phases
2459 (add-after 'set-paths 'set-sdl-paths
61599438
AK
2460 (lambda* (#:key inputs #:allow-other-keys)
2461 (setenv "CPATH"
2462 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
2463 "/include/SDL:"
2464 (or (getenv "CPATH") "")))))
aec05972
AK
2465 (add-after 'patch-source-shebangs 'patch-makefile
2466 (lambda* (#:key outputs #:allow-other-keys)
2467 ;; Replace /usr with package output directory.
efc12a81
AFN
2468 (substitute* "Makefile"
2469 (("/usr") (assoc-ref outputs "out")))))
aec05972
AK
2470 (add-before 'install 'make-install-dirs
2471 (lambda* (#:key outputs #:allow-other-keys)
2472 (let ((prefix (assoc-ref outputs "out")))
2473 ;; Create directories that the makefile assumes exist.
2474 (mkdir-p (string-append prefix "/bin"))
2475 (mkdir-p (string-append prefix "/share/applications"))
2476 (mkdir-p (string-append prefix "/share/pixmaps")))))
2477 ;; No configure script.
2478 (delete 'configure))
3da5dca3
DT
2479 #:tests? #f)) ;; No check target.
2480 (native-inputs `(("pkg-config" ,pkg-config)))
efc12a81
AFN
2481 (inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer)))))
2482 (home-page "https://github.com/nevat/abbayedesmorts-gpl")
3da5dca3
DT
2483 (synopsis "GNU/Linux port of the indie game \"l'Abbaye des Morts\"")
2484 (description "L'Abbaye des Morts is a 2D platform game set in 13th century
2485France. The Cathars, who preach about good Christian beliefs, were being
2486expelled by the Catholic Church out of the Languedoc region in France. One of
2487them, called Jean Raymond, found an old church in which to hide, not knowing
2488that beneath its ruins lay buried an ancient evil.")
efc12a81 2489 (license license:gpl3)))
a83c6a64 2490
b76c94e6
CAW
2491(define-public angband
2492 (package
2493 (name "angband")
4c957744 2494 (version "4.2.1")
b76c94e6
CAW
2495 (source
2496 (origin
2497 (method url-fetch)
d321d35a 2498 (uri (string-append "https://rephial.org/downloads/"
9a0d324a
EF
2499 (version-major+minor version)
2500 "/angband-" version ".tar.gz"))
b76c94e6 2501 (sha256
4c957744 2502 (base32 "03qdavkj2ik02mqjxmlm5bn17ba3yxb1rirp8ghnxy3bsk4kbmxc"))
b76c94e6
CAW
2503 (modules '((guix build utils)))
2504 (snippet
2505 ;; So, some of the sounds/graphics/tilesets are under different
2506 ;; licenses... some of them even nonfree! This is a console-only
2507 ;; version of this package so we just remove them.
2508 ;; In the future, if someone tries to make a graphical variant of
2509 ;; this package, they can deal with that mess themselves. :)
2510 '(begin
6cbee49d
MW
2511 (for-each (lambda (subdir)
2512 (let ((lib-subdir (string-append "lib/" subdir)))
2513 (delete-file-recursively lib-subdir)))
2514 '("fonts" "icons" "sounds" "tiles"))
b76c94e6 2515 (substitute* "lib/Makefile"
e5e24819 2516 ;; And don't try to invoke makefiles in the directories we removed.
b76c94e6 2517 (("gamedata customize help screens fonts tiles sounds icons user")
6cbee49d
MW
2518 "gamedata customize help screens user"))
2519 #t))))
b76c94e6
CAW
2520 (build-system gnu-build-system)
2521 (arguments
aeb6d9a6 2522 `(#:tests? #f ; no check target
b76c94e6
CAW
2523 #:configure-flags (list (string-append "--bindir=" %output "/bin"))
2524 #:phases
2525 (modify-phases %standard-phases
9a0d324a 2526 (replace 'bootstrap
b76c94e6
CAW
2527 (lambda _
2528 (substitute* "acinclude.m4"
2529 (("ncursesw5-config") "ncursesw6-config"))
9a0d324a 2530 (invoke "sh" "autogen.sh"))))))
b76c94e6
CAW
2531 (native-inputs
2532 `(("autoconf" ,autoconf)
2533 ("automake" ,automake)))
2534 (inputs `(("ncurses" ,ncurses)))
d321d35a 2535 (home-page "https://rephial.org/")
b76c94e6
CAW
2536 (synopsis "Dungeon exploration roguelike")
2537 (description "Angband is a Classic dungeon exploration roguelike. Explore
2538the depths below Angband, seeking riches, fighting monsters, and preparing to
2539fight Morgoth, the Lord of Darkness.")
2540 (license license:gpl2)))
2541
a83c6a64
EB
2542(define-public pingus
2543 (package
2544 (name "pingus")
2545 (version "0.7.6")
2546 (source
2547 (origin
472c36bd
EF
2548 (method git-fetch)
2549 (uri (git-reference
4b889d3a 2550 (url "https://gitlab.com/pingus/pingus.git")
472c36bd
EF
2551 (commit (string-append "v" version))))
2552 (file-name (git-file-name name version))
a83c6a64
EB
2553 (sha256
2554 (base32
472c36bd
EF
2555 "0wp06kcmknsnxz7bjnsndb8x062z7r23fb3yrnbfnj68qhz18y74"))
2556 (patches (search-patches "pingus-boost-headers.patch"
2ed626bf
MB
2557 "pingus-sdl-libs-config.patch"))
2558 (modules '((guix build utils)))
2559 (snippet
2560 '(begin
2561 (substitute* "src/pingus/screens/demo_session.cpp"
2562 (("#include <iostream>")
2563 ;; std::function moved to <functional> with C++ 11.
2564 ;; Remove this for versions newer than 0.7.6.
2565 "#include <iostream>\n#include <functional>"))
2566 #t))))
a83c6a64
EB
2567 (build-system gnu-build-system)
2568 (native-inputs `(("pkg-config" ,pkg-config)
3f3f8f49 2569 ("scons-python2" ,scons-python2)))
a83c6a64
EB
2570 (inputs `(("sdl" ,sdl)
2571 ("sdl-image" ,sdl-image)
2572 ("sdl-mixer" ,sdl-mixer)
2573 ("mesa" ,mesa)
00c09300 2574 ("glu" ,glu)
a83c6a64
EB
2575 ("libpng" ,libpng)
2576 ("boost" ,boost)))
2577 (arguments
3f3f8f49
AI
2578 '(#:make-flags (list (string-append "PREFIX=" %output))
2579 #:tests? #f ; no check target
a83c6a64 2580 #:phases
3f127147 2581 (modify-phases %standard-phases
3f3f8f49 2582 (delete 'configure)))) ; no configure script
5f578231 2583 (home-page "https://pingus.seul.org/")
a83c6a64
EB
2584 (synopsis "Lemmings clone")
2585 (description
2586 "Pingus is a free Lemmings-like puzzle game in which the player takes
2587command of a bunch of small animals and has to guide them through levels.
2588Since the animals walk on their own, the player can only influence them by
2589giving them commands, like build a bridge, dig a hole, or redirect all animals
2590in the other direction. Multiple such commands are necessary to reach the
2591level's exit. The game is presented in a 2D side view.")
2592 ;; Some source files are under bsd-3 and gpl2+ licenses.
024e2c17 2593 (license license:gpl3+)))
dff62423
JD
2594
2595(define-public talkfilters
2596 (package
2597 (name "talkfilters")
2598 (version "2.3.8")
2599 (source
2600 (origin
2601 (method url-fetch)
189c0b33
TGR
2602 (uri (string-append "http://www.hyperrealm.com/talkfilters/"
2603 "talkfilters-" version ".tar.gz"))
dff62423
JD
2604 (sha256
2605 (base32 "19nc5vq4bnkjvhk8srqddzhcs93jyvpm9r6lzjzwc1mgf08yg0a6"))))
2606 (build-system gnu-build-system)
6fd52309 2607 (home-page "https://www.gnu.org/software/talkfilters/")
dff62423
JD
2608 (synopsis "Convert English text to humorous dialects")
2609 (description "The GNU Talk Filters are programs that convert English text
2610into stereotyped or otherwise humorous dialects. The filters are provided as
2611a C library, so they can easily be integrated into other programs.")
024e2c17
DT
2612 (license license:gpl2+)))
2613
85182663
VS
2614(define-public taisei
2615 (package
2616 (name "taisei")
2617 (version "1.3.1")
2618 (source
2619 (origin
2620 (method url-fetch)
2621 (uri (string-append "https://github.com/taisei-project/"
2622 "taisei/releases/download/v" version
2623 "/taisei-v" version ".tar.xz"))
2624 (sha256
2625 (base32 "11f9mlqmzy1lszwcc1nsbar9q1hs4ml6pbm52hqfd4q0f4x3ln46"))))
2626 (build-system meson-build-system)
2627 (arguments
2628 `(#:build-type "release" ;comment out for bug-reporting (and cheats)
2629 #:configure-flags
2630 (list "-Dr_default=gles30"
2631 "-Dr_gles20=true"
2632 "-Dr_gles30=true"
2633 "-Dshader_transpiler=true")))
2634 (native-inputs
2635 `(("pkg-config" ,pkg-config)
2636 ("python" ,python)
2637 ("python-docutils" ,python-docutils)
2638 ("python-pygments" ,python-pygments)))
2639 (inputs
2640 `(("freetype" ,freetype)
2641 ("libpng" ,libpng)
2642 ("libwebp" ,libwebp)
2643 ("libzip" ,libzip)
2644 ("mesa" ,mesa)
2645 ("openssl" ,openssl)
2646 ("opusfile" ,opusfile)
2647 ("sdl2" ,sdl2)
2648 ("sdl2-mixer" ,sdl2-mixer)
2649 ("shaderc" ,shaderc)
2650 ("spirv-cross" ,spirv-cross)
2651 ("zlib" ,zlib)))
2652 (home-page "https://taisei-project.org/")
2653 (synopsis "Shoot'em up fangame and libre clone of Touhou Project")
2654 (description
2655 "The player controls a character (one of three: Good, Bad, and Dead),
2656dodges the missiles (lots of it cover the screen, but the character's hitbox
2657is very small), and shoot at the adversaries that keep appear on the screen.")
2658 (license (list ;;game
2659 license:expat
2660 ;;resources/00-taisei.pkgdir/bgm/
2661 ;;atlas/portraits/
2662 license:cc-by4.0
2663 ;;miscellaneous
2664 license:cc0
2665 license:public-domain))))
2666
3cf118a1
CS
2667(define-public cmatrix
2668 (package
2669 (name "cmatrix")
14736727 2670 (version "2.0")
3cf118a1
CS
2671 (source
2672 (origin
14736727
OP
2673 (method git-fetch)
2674 (uri (git-reference
b0e7b699 2675 (url "https://github.com/abishekvashok/cmatrix")
14736727
OP
2676 (commit (string-append "v" version))))
2677 (file-name (git-file-name name version))
3cf118a1
CS
2678 (sha256
2679 (base32
14736727 2680 "1h9jz4m4s5l8c3figaq46ja0km1gimrkfxm4dg7mf4s84icmasbm"))))
3cf118a1 2681 (build-system gnu-build-system)
14736727
OP
2682 (native-inputs
2683 `(("autoconf" ,autoconf)
2684 ("automake" ,automake)))
3cf118a1
CS
2685 (arguments
2686 '(#:phases
3f127147
TGR
2687 (modify-phases %standard-phases
2688 (replace 'configure
2689 (lambda* (#:key outputs #:allow-other-keys)
2690 ;; This old ‘configure’ script doesn't support
2691 ;; variables passed as arguments.
2692 (let ((out (assoc-ref outputs "out")))
2693 (setenv "CONFIG_SHELL" (which "bash"))
a4aca0b8
RW
2694 (invoke "./configure"
2695 (string-append "--prefix=" out))))))))
3cf118a1 2696 (inputs `(("ncurses" ,ncurses)))
07af3e5e 2697 (home-page "http://www.asty.org/cmatrix")
3cf118a1
CS
2698 (synopsis "Simulate the display from \"The Matrix\"")
2699 (description "CMatrix simulates the display from \"The Matrix\" and is
2700based on the screensaver from the movie's website. It works with terminal
2701settings up to 132x300 and can scroll lines all at the same rate or
2702asynchronously and at a user-defined speed.")
024e2c17 2703 (license license:gpl2+)))
ae9cb418
JD
2704
2705(define-public chess
2706 (package
2707 (name "chess")
9f6efa11 2708 (version "6.2.7")
ae9cb418
JD
2709 (source
2710 (origin
2711 (method url-fetch)
2712 (uri (string-append "mirror://gnu/chess/gnuchess-" version
2713 ".tar.gz"))
2714 (sha256
2715 (base32
9f6efa11 2716 "0ilq4bfl0lwyzf11q7n2skydjhalfn3bgxhrp5hjxs5bc5d6fdp5"))))
ae9cb418 2717 (build-system gnu-build-system)
6fd52309 2718 (home-page "https://www.gnu.org/software/chess/")
ae9cb418
JD
2719 (synopsis "Full chess implementation")
2720 (description "GNU Chess is a chess engine. It allows you to compete
2721against the computer in a game of chess, either through the default terminal
2722interface or via an external visual interface such as GNU XBoard.")
dc9b1835
EF
2723 (properties '((upstream-name . "gnuchess")
2724 (ftp-directory . "/chess")))
024e2c17 2725 (license license:gpl3+)))
ae9cb418 2726
a6b55314 2727(define freedink-engine
bb3b71ce
SB
2728 (package
2729 (name "freedink-engine")
2ee05bb9 2730 (version "109.6")
bb3b71ce
SB
2731 (source (origin
2732 (method url-fetch)
2733 (uri (string-append "mirror://gnu/freedink/freedink-" version
2734 ".tar.gz"))
8677e869 2735 (patches (search-patches "freedink-engine-fix-sdl-hints.patch"))
bb3b71ce
SB
2736 (sha256
2737 (base32
2ee05bb9 2738 "00hhk1bjdrc1np2qz44sa5n1mb62qzwxbvsnws3vpms6iyn3a2sy"))))
bb3b71ce 2739 (build-system gnu-build-system)
a9249f58
KK
2740 (arguments
2741 `(#:configure-flags '("--disable-embedded-resources")
2742 #:phases
2743 (modify-phases %standard-phases
2744 (add-after 'unpack 'disable-graphical-tests
2745 (lambda _
2746 ;; These tests require a graphical interface.
2747 (substitute* "src/Makefile.am"
2748 (("test_gfx_fonts TestIOGfxDisplay") ""))
e7e69e56
JG
2749 #t))
2750 (add-before 'bootstrap 'autoreconf
2751 (lambda _
2752 ;; automake is out of date in the source
2753 ;; autoreconf updates the automake scripts
2754 (invoke "autoreconf")
2755 ;; Build fails when autom4te.cache exists.
2756 (delete-file-recursively "autom4te.cache")
a9249f58
KK
2757 #t)))))
2758 (native-inputs `(("autoconf" ,autoconf)
2759 ("automake" ,automake)
2760 ("cxxtest" ,cxxtest)
2761 ("gettext" ,gettext-minimal)
2762 ("help2man" ,help2man)
bb3b71ce 2763 ("pkg-config" ,pkg-config)))
a9249f58
KK
2764 (inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer
2765 sdl2-ttf sdl2-gfx)))
bb3b71ce 2766 ("fontconfig" ,fontconfig)
a9249f58 2767 ("glm" ,glm)))
f9eab0be
EF
2768 (properties '((ftp-directory . "/freedink")
2769 (upstream-name . "freedink")))
6fd52309 2770 (home-page "https://www.gnu.org/software/freedink/")
bb3b71ce
SB
2771 (synopsis "Twisted adventures of young pig farmer Dink Smallwood")
2772 (description
2773 "GNU FreeDink is a free and portable re-implementation of the engine
2774for the role-playing game Dink Smallwood. It supports not only the original
2775game data files but it also supports user-produced game mods or \"D-Mods\".
2776To that extent, it also includes a front-end for managing all of your D-Mods.")
024e2c17 2777 (license license:gpl3+)))
bb3b71ce 2778
a6b55314 2779(define freedink-data
bb3b71ce
SB
2780 (package
2781 (name "freedink-data")
32d92d2c 2782 (version "1.08.20190120")
bb3b71ce
SB
2783 (source (origin
2784 (method url-fetch)
2785 (uri (string-append "mirror://gnu/freedink/freedink-data-"
32d92d2c 2786 version ".tar.gz"))
bb3b71ce
SB
2787 (sha256
2788 (base32
32d92d2c 2789 "17gvryadlxk172mblbsil7hina1z5wahwaxnr6g3mdq57dvl8pvi"))))
bb3b71ce
SB
2790 (build-system gnu-build-system)
2791 (arguments
3f127147
TGR
2792 `(#:phases
2793 (modify-phases %standard-phases
2794 (delete 'configure) ; no configure script
2795 (delete 'check)) ; no tests
bb3b71ce 2796 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))))
151fa926 2797 (properties '((ftp-directory . "/freedink")))
6fd52309 2798 (home-page "https://www.gnu.org/software/freedink/")
bb3b71ce
SB
2799 (synopsis "Game data for GNU Freedink")
2800 (description
2801 "This package contains the game data of GNU Freedink.")
024e2c17 2802 (license license:gpl3+)))
bb3b71ce 2803
2926e950
KK
2804(define-public freedink-dfarc
2805 (package
2806 (name "freedink-dfarc")
2807 (version "3.14")
2808 (source (origin
2809 (method url-fetch)
2810 (uri (string-append "mirror://gnu/freedink/dfarc-"
2811 version ".tar.gz"))
2812 (sha256
2813 (base32
2814 "1yp8n3w426xnlp10xk06vfi2y3k9xrcfyck7s7qs1v0ys7n284d5"))))
2815 (build-system gnu-build-system)
2816 (native-inputs
2817 `(("intltool" ,intltool)))
2818 (inputs
2819 `(("bzip2" ,bzip2)
2820 ("wxwidgets" ,wxwidgets)))
8ca06df5
EF
2821 (properties '((ftp-directory . "/freedink")
2822 (upstream-name . "dfarc")))
2926e950
KK
2823 (home-page "https://www.gnu.org/software/freedink/")
2824 (synopsis "Front-end for managing and playing Dink Modules")
2825 (description "DFArc makes it easy to play and manage the GNU FreeDink game
2826and its numerous D-Mods.")
2827 (license license:gpl3+)))
bb3b71ce 2828
a6b55314
LC
2829(define-public freedink
2830 ;; This is a wrapper that tells the engine where to find the data.
2831 (package (inherit freedink-engine)
2832 (name "freedink")
2833 (build-system trivial-build-system)
2834 (arguments
2835 '(#:builder (begin
2836 (use-modules (guix build utils))
2837
2838 (let* ((output (assoc-ref %outputs "out"))
2839 (bin (string-append output "/bin"))
2840 (executable (string-append bin "/freedink")))
2841 (mkdir-p bin)
2842 (call-with-output-file executable
2843 (lambda (port)
2844 (format port "#!~a/bin/sh
2845exec ~a/bin/freedink -refdir ~a/share/dink\n"
2846 (assoc-ref %build-inputs "bash")
2847 (assoc-ref %build-inputs "engine")
2848 (assoc-ref %build-inputs "data"))
e3cfef22
MW
2849 (chmod port #o777)))
2850 #t))
a6b55314
LC
2851 #:modules ((guix build utils))))
2852 (inputs `(("engine" ,freedink-engine)
2853 ("data" ,freedink-data)
2854 ("bash" ,bash)))
2855 (native-inputs '())))
2856
ae9cb418
JD
2857(define-public xboard
2858 (package
2859 (name "xboard")
9835458f 2860 (version "4.9.1")
ae9cb418
JD
2861 (source
2862 (origin
2863 (method url-fetch)
2864 (uri (string-append "mirror://gnu/xboard/xboard-" version
2865 ".tar.gz"))
2866 (sha256
2867 (base32
9835458f 2868 "1mkh36xnnacnz9r00b5f9ld9309k32jv6mcavklbdnca8bl56bib"))))
ae9cb418 2869 (build-system gnu-build-system)
4e530049
SB
2870 (inputs
2871 `(("gtk+" ,gtk+-2)
2872 ("librsvg" ,librsvg)))
9835458f
EF
2873 (native-inputs
2874 `(("texinfo" ,texinfo)
2875 ("pkg-config" ,pkg-config)))
6fd52309 2876 (home-page "https://www.gnu.org/software/xboard/")
ae9cb418
JD
2877 (synopsis "Graphical user interface for chess programs")
2878 (description "GNU XBoard is a graphical board for all varieties of chess,
2879including international chess, xiangqi (Chinese chess), shogi (Japanese chess)
2880and Makruk. Several lesser-known variants are also supported. It presents a
2881fully interactive graphical interface and it can load and save games in the
2882Portable Game Notation.")
024e2c17 2883 (license license:gpl3+)))
11c38cbe 2884
a21b42e2
SB
2885(define-public gtypist
2886 (package
2887 (name "gtypist")
2888 (version "2.9.5")
2889 (source (origin
2890 (method url-fetch)
2891 (uri (string-append "mirror://gnu/gtypist/gtypist-"
2892 version ".tar.xz"))
2893 (sha256
2894 (base32
2895 "0xzrkkmj0b1dw3yr0m9hml2y634cc4h61im6zwcq57s7285z8fn1"))
2896 (modules '((guix build utils)))
2897 (snippet
2898 ;; We do not provide `ncurses.h' within an `ncursesw'
2899 ;; sub-directory, so patch the source accordingly. See
2900 ;; <http://bugs.gnu.org/19018>.
6cbee49d
MW
2901 '(begin
2902 (for-each (lambda (file)
2903 (substitute* file
2904 (("ncursesw/ncurses.h")
2905 "ncurses.h")))
2906 (find-files "." "configure$|\\.c$"))
2907 #t))))
a21b42e2
SB
2908 (build-system gnu-build-system)
2909 (inputs `(("ncurses" ,ncurses)
2910 ("perl" ,perl)))
6fd52309 2911 (home-page "https://www.gnu.org/software/gtypist/")
a21b42e2
SB
2912 (synopsis "Typing tutor")
2913 (description
2914 "GNU Typist is a universal typing tutor. It can be used to learn and
2915practice touch-typing. Several tutorials are included; in addition to
2916tutorials for the standard QWERTY layout, there are also tutorials for the
2917alternative layouts Dvorak and Colemak, as well as for the numpad. Tutorials
2918are primarily in English, however some in other languages are provided.")
024e2c17 2919 (license license:gpl3+)))
13d18626 2920
024e2c17
DT
2921(define-public irrlicht
2922 (package
2923 (name "irrlicht")
f90b2dbd 2924 (version "1.8.4")
024e2c17
DT
2925 (source (origin
2926 (method url-fetch)
2927 (uri (string-append
2928 "mirror://sourceforge/irrlicht/Irrlicht%20SDK/"
2929 (version-major+minor version)
2930 "/" version "/irrlicht-" version ".zip"))
2931 (sha256
2932 (base32
7b8a7536
EF
2933 "0cz4z4dwrv5ypl19ll67wl6jjpy5k6ly4vr042w4br88qq5jhazl"))
2934 (patches (search-patches "irrlicht-use-system-libs.patch"))
2935 (modules '((guix build utils)))
2936 (snippet
2937 '(begin
2938 (for-each delete-file-recursively
2939 '("bin" ; bundled compiled Windows binaries"
2940 "source/Irrlicht/MacOSX"
2941 "source/Irrlicht/bzip2"
2942 "source/Irrlicht/jpeglib"
2943 "source/Irrlicht/libpng"
2944 "source/Irrlicht/lzma"
2945 "source/Irrlicht/zlib"))
2946 (delete-file "source/Irrlicht/glext.h")
2947 (delete-file "source/Irrlicht/glxext.h")
2948 (delete-file "source/Irrlicht/wglext.h")
2949 #t))))
024e2c17
DT
2950 (build-system gnu-build-system)
2951 (arguments
3f127147
TGR
2952 `(#:phases
2953 (modify-phases %standard-phases
7b8a7536
EF
2954 (add-after 'unpack 'chdir-to-source
2955 (lambda _
2956 ;; The actual source is buried a few directories deep.
2957 (chdir "source/Irrlicht/")
2958 #t))
2959 (add-after 'chdir-to-source 'fix-build-env
3f127147
TGR
2960 (lambda* (#:key outputs #:allow-other-keys)
2961 (let ((out (assoc-ref outputs "out")))
2962 (substitute* "Makefile"
2963 (("INSTALL_DIR = /usr/local/lib")
7b8a7536
EF
2964 (string-append "INSTALL_DIR = " out "/lib"))
2965 ;; Add '-fpermissive' to the CXXFLAGS
2966 (("-Wall") "-Wall -fpermissive")) ; CImageLoaderJPG.cpp
3f127147
TGR
2967 ;; The Makefile assumes these directories exist.
2968 (mkdir-p (string-append out "/lib"))
2969 (mkdir-p (string-append out "/include")))))
3f127147
TGR
2970 (delete 'configure)) ; no configure script
2971 #:tests? #f ; no check target
024e2c17 2972 #:make-flags '("CC=gcc" "sharedlib")))
024e2c17 2973 (inputs
7b8a7536 2974 `(("bzip2" ,bzip2)
4bd428a7 2975 ("libjpeg" ,libjpeg-turbo)
7b8a7536
EF
2976 ("libpng" ,libpng)
2977 ("libx11" ,libx11)
2978 ("libxxf86vm" ,libxxf86vm)
2979 ("mesa" ,mesa)))
024e2c17
DT
2980 (synopsis "3D game engine written in C++")
2981 (description
2982 "The Irrlicht Engine is a high performance realtime 3D engine written in
2983C++. Features include an OpenGL renderer, extensible materials, scene graph
2984management, character animation, particle and other special effects, support
2985for common mesh file formats, and collision detection.")
2986 (home-page "http://irrlicht.sourceforge.net/")
2987 (license license:zlib)))
7e51e5bc 2988
c23c50c7
RW
2989(define-public mars
2990 ;; The latest release on SourceForge relies on an unreleased version of SFML
2991 ;; with a different API, so we take the latest version from the official
2992 ;; repository on Github.
698bd297 2993 (let ((commit "c855d044094a1d92317e38935d81ba938946132e")
c23c50c7
RW
2994 (revision "1"))
2995 (package
2996 (name "mars")
698bd297 2997 (version (string-append "0.7.5." revision "." (string-take commit 7) ))
c23c50c7
RW
2998 (source (origin
2999 (method git-fetch)
3000 (uri (git-reference
b0e7b699 3001 (url "https://github.com/thelaui/M.A.R.S.")
c23c50c7 3002 (commit commit)))
00a82e83 3003 (file-name (git-file-name name version))
c23c50c7
RW
3004 (sha256
3005 (base32
3006 "1r4c5gap1z2zsv4yjd34qriqkxaq4lb4rykapyzkkdf4g36lc3nh"))
fc1adab1
AK
3007 (patches (search-patches "mars-sfml-2.3.patch"
3008 "mars-install.patch"))))
c23c50c7
RW
3009 (build-system cmake-build-system)
3010 (arguments
3011 `(#:tests? #f ; There are no tests
3012 #:phases
3013 (modify-phases %standard-phases
3014 (add-after 'unpack 'fix-install-path
3015 (lambda _
3016 (substitute* "src/CMakeLists.txt"
3017 (("\\$\\{CMAKE_INSTALL_PREFIX\\}/games")
3018 "${CMAKE_INSTALL_PREFIX}/bin"))
3019 #t))
3020 (add-after 'unpack 'fix-data-path
3021 (lambda* (#:key outputs #:allow-other-keys)
3022 (substitute* "src/System/settings.cpp"
3023 (("C_dataPath = \"./data/\";")
3024 (string-append "C_dataPath = \""
3025 (assoc-ref outputs "out")
3026 "/share/games/marsshooter/\";")))
3027 #t)))))
3028 (inputs
3029 `(("mesa" ,mesa)
3030 ("fribidi" ,fribidi)
3031 ("taglib" ,taglib)
3032 ("sfml" ,sfml)))
75c33c88 3033 (home-page "http://mars-game.sourceforge.net/")
c23c50c7
RW
3034 (synopsis "2D space shooter")
3035 (description
3036 "M.A.R.S. is a 2D space shooter with pretty visual effects and
3037attractive physics. Players can battle each other or computer controlled
3038enemies in different game modes such as space ball, death match, team death
3039match, cannon keep, and grave-itation pit.")
3040 (license license:gpl3+))))
3041
6e206ac7
DT
3042(define-public minetest
3043 (package
3044 (name "minetest")
cc7b170d 3045 (version "5.3.0")
6e206ac7 3046 (source (origin
e8d8b485
EF
3047 (method git-fetch)
3048 (uri (git-reference
1fbd7c7f
MB
3049 (url "https://github.com/minetest/minetest")
3050 (commit version)))
e8d8b485 3051 (file-name (git-file-name name version))
6e206ac7
DT
3052 (sha256
3053 (base32
cc7b170d 3054 "03ga3j3cg38w4lg4d4qxasmnjdl8n3lbizidrinanvyfdyvznyh6"))
7fc90282
EF
3055 (modules '((guix build utils)))
3056 (snippet
1fbd7c7f 3057 '(begin
d9580a26
MB
3058 ;; Delete bundled libraries.
3059 (delete-file-recursively "lib")
3060 #t))))
6e206ac7
DT
3061 (build-system cmake-build-system)
3062 (arguments
10903356 3063 '(#:configure-flags
1fbd7c7f
MB
3064 (list "-DRUN_IN_PLACE=0"
3065 "-DENABLE_FREETYPE=1"
3066 "-DENABLE_GETTEXT=1"
3067 "-DENABLE_SYSTEM_JSONCPP=TRUE"
3068 (string-append "-DIRRLICHT_INCLUDE_DIR="
3069 (assoc-ref %build-inputs "irrlicht")
3070 "/include/irrlicht")
3071 (string-append "-DCURL_INCLUDE_DIR="
3072 (assoc-ref %build-inputs "curl")
3073 "/include/curl"))
3074 #:tests? #f)) ;no check target
6e206ac7
DT
3075 (native-search-paths
3076 (list (search-path-specification
3077 (variable "MINETEST_SUBGAME_PATH")
af070955 3078 (files '("share/minetest/games")))))
6e206ac7
DT
3079 (native-inputs
3080 `(("pkg-config" ,pkg-config)))
3081 (inputs
7fc90282 3082 `(("curl" ,curl)
8c064d01 3083 ("freetype" ,freetype)
7fc90282
EF
3084 ("gettext" ,gettext-minimal)
3085 ("gmp" ,gmp)
3086 ("irrlicht" ,irrlicht)
3087 ("jsoncpp" ,jsoncpp)
4bd428a7 3088 ("libjpeg" ,libjpeg-turbo)
7fc90282 3089 ("libpng" ,libpng)
6e206ac7
DT
3090 ("libogg" ,libogg)
3091 ("libvorbis" ,libvorbis)
7fc90282 3092 ("libxxf86vm" ,libxxf86vm)
6e206ac7 3093 ("luajit" ,luajit)
7fc90282 3094 ("mesa" ,mesa)
165dc8bd 3095 ("ncurses" ,ncurses)
7fc90282 3096 ("openal" ,openal)
6e206ac7
DT
3097 ("sqlite" ,sqlite)))
3098 (propagated-inputs
3099 `(("minetest-data" ,minetest-data)))
3100 (synopsis "Infinite-world block sandbox game")
3101 (description
3102 "Minetest is a sandbox construction game. Players can create and destroy
3103various types of blocks in a three-dimensional open world. This allows
3104forming structures in every possible creation, on multiplayer servers or as a
3105single player. Mods and texture packs allow players to personalize the game
3106in different ways.")
b7388a08 3107 (home-page "https://www.minetest.net/")
6e206ac7 3108 (license license:lgpl2.1+)))
77264d15 3109
cc7b170d
JK
3110(define minetest-data
3111 (package
3112 (name "minetest-data")
3113 (version (package-version minetest))
3114 (source (origin
3115 (method git-fetch)
3116 (uri (git-reference
3117 (url "https://github.com/minetest/minetest_game")
3118 (commit version)))
3119 (file-name (git-file-name name version))
3120 (sha256
3121 (base32
3122 "1liciwlh013z5h08ib0psjbwn5wkvlr937ir7kslfk4vly984cjx"))))
3123 (build-system trivial-build-system)
3124 (native-inputs
3125 `(("source" ,source)))
3126 (arguments
3127 `(#:modules ((guix build utils))
3128 #:builder (begin
3129 (use-modules (guix build utils))
3130 (let ((install-dir (string-append
3131 %output
3132 "/share/minetest/games/minetest_game")))
3133 (mkdir-p install-dir)
3134 (copy-recursively
3135 (assoc-ref %build-inputs "source")
3136 install-dir)
3137 #t))))
3138 (synopsis "Main game data for the Minetest game engine")
3139 (description
3140 "Game data for the Minetest infinite-world block sandbox game.")
3141 (home-page "https://www.minetest.net/")
3142 (license license:lgpl2.1+)))
3143
d8fcde01
LP
3144(define-public minetest-mineclone
3145 (package
3146 (name "minetest-mineclone")
3147 (version "0.66.2")
3148 (source (origin
3149 (method git-fetch)
3150 (uri (git-reference
3151 (url "https://git.minetest.land/Wuzzy/MineClone2")
3152 (commit version)))
3153 (file-name (git-file-name name version))
3154 (sha256
3155 (base32
3156 "0miszzlzplpvaj0j1yii9867ydr42wsaqa9g6grxdrci75p05g00"))))
3157 (build-system copy-build-system)
3158 (arguments
3159 `(#:install-plan
3160 '(("." "share/minetest/games/mineclone"))))
3161 (synopsis "Minecraft clone based on Minetest engine")
3162 (description
3163 "MineClone is a Minetest subgame, that aims to recreate Minecraft as
3164closely as the engine allows.")
3165 (home-page "https://content.minetest.net/packages/Wuzzy/mineclone2/")
3166 (license license:gpl3+)))
3167
77264d15
SB
3168(define glkterm
3169 (package
3170 (name "glkterm")
3171 (version "1.0.4")
3172 (source
3173 (origin
3174 (method url-fetch)
3175 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
3176 "glk/implementations/glkterm-104.tar.gz"))
3177 (sha256
3178 (base32
3179 "0zlj9nlnkdlvgbiliczinirqygiq8ikg5hzh5vgcmnpg9pvnwga7"))))
3180 (build-system gnu-build-system)
3181 (propagated-inputs `(("ncurses" ,ncurses))) ; required by Make.glkterm
3182 (arguments
3183 '(#:tests? #f ; no check target
3184 #:phases
3f127147
TGR
3185 (modify-phases %standard-phases
3186 (replace 'install
3187 (lambda* (#:key outputs #:allow-other-keys)
3188 (let* ((out (assoc-ref outputs "out"))
3189 (inc (string-append out "/include"))
3190 (lib (string-append out "/lib")))
3f127147
TGR
3191 (for-each
3192 (lambda (file)
3193 (install-file file inc))
3194 '("glk.h" "glkstart.h" "gi_blorb.h" "gi_dispa.h" "Make.glkterm"))
3f127147
TGR
3195 (install-file "libglkterm.a" lib))
3196 #t))
3197 (delete 'configure)))) ; no configure script
77264d15
SB
3198 (home-page "http://www.eblong.com/zarf/glk/")
3199 (synopsis "Curses Implementation of the Glk API")
3200 (description
3201 "Glk defines a portable API for applications with text UIs. It was
3202primarily designed for interactive fiction, but it should be suitable for many
3203interactive text utilities, particularly those based on a command line.
3204This is an implementation of the Glk library which runs in a terminal window,
dbe7095b 3205using the @code{curses.h} library for screen control.")
77264d15
SB
3206 (license (license:fsf-free "file://README"))))
3207
3208(define-public glulxe
3209 (package
3210 (name "glulxe")
b2e3d59c 3211 (version "0.5.4")
77264d15
SB
3212 (source
3213 (origin
3214 (method url-fetch)
3215 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
b2e3d59c 3216 "glulx/interpreters/glulxe/glulxe-054.tar.gz"))
77264d15
SB
3217 (sha256
3218 (base32
b2e3d59c 3219 "0vipydg6ra90yf9b3ipgppwxyb2xdhcxwvirgjy0v20wlf56zhhz"))))
77264d15
SB
3220 (build-system gnu-build-system)
3221 (inputs `(("glk" ,glkterm)))
3222 (arguments
3f127147 3223 '(#:tests? #f ; no check target
77264d15
SB
3224 #:make-flags
3225 (let* ((glk (assoc-ref %build-inputs "glk")))
3226 (list (string-append "GLKINCLUDEDIR=" glk "/include")
3227 (string-append "GLKLIBDIR=" glk "/lib")
3228 (string-append "GLKMAKEFILE=" "Make.glkterm")))
3229 #:phases
3f127147
TGR
3230 (modify-phases %standard-phases
3231 (replace 'install
3232 (lambda* (#:key outputs #:allow-other-keys)
3233 (let* ((out (assoc-ref outputs "out"))
3234 (bin (string-append out "/bin")))
3f127147
TGR
3235 (install-file "glulxe" bin))
3236 #t))
3237 (delete 'configure)))) ; no configure script
bac03797 3238 (home-page "https://www.eblong.com/zarf/glulx/")
77264d15
SB
3239 (synopsis "Interpreter for Glulx VM")
3240 (description
3241 "Glulx is a 32-bit portable virtual machine intended for writing and
3242playing interactive fiction. It was designed by Andrew Plotkin to relieve
3243some of the restrictions in the venerable Z-machine format. This is the
92bdf777 3244reference interpreter, using the Glk API.")
b2e3d59c 3245 (license license:expat)))
72b703cd 3246
ce94fcfd
CB
3247(define-public fifechan
3248 (package
3249 (name "fifechan")
3250 (version "0.1.5")
3251 (source (origin
3252 (method url-fetch)
3253 (uri (string-append "https://codeload.github.com/fifengine/"
3254 "fifechan/tar.gz/" version))
3255 (file-name (string-append name "-" version ".tar.gz"))
3256 (sha256
3257 (base32
3258 "0wxs9vz5x9y8chghd8vp7vfk089lfb0qnzggi17zrqkrngs5zgi9"))))
3259 (build-system cmake-build-system)
3260 (inputs
3261 `(("sdl2" ,sdl2)
3262 ("sdl2-image" ,sdl2-image)
3263 ("mesa" ,mesa)))
3264 (arguments
3265 '(#:tests? #f)) ; No included tests
3266 (home-page "https://fifengine.github.io/fifechan/")
3267 (synopsis "Cross platform GUI library specifically for games")
3268 (description
3269 "Fifechan is a lightweight cross platform GUI library written in C++
3270specifically designed for games. It has a built in set of extendable GUI
3271Widgets, and allows users to create more.")
3272 (license license:lgpl2.1+)))
3273
2372a5f9
CB
3274(define-public fifengine
3275 (package
3276 (name "fifengine")
3277 (version "0.4.2")
3278 (source (origin
3279 (method url-fetch)
3280 (uri (string-append "https://codeload.github.com/fifengine/"
3281 "fifengine/tar.gz/" version))
3282 (file-name (string-append name "-" version ".tar.gz"))
5afffbef 3283 (patches (search-patches "fifengine-swig-compat.patch"))
2372a5f9
CB
3284 (sha256
3285 (base32
3286 "1y4grw25cq5iqlg05rnbyxw1njl11ypidnlsm3qy4sm3xxdvb0p8"))))
3287 (build-system cmake-build-system)
3288 (arguments
3289 `(#:tests? #f ; TODO The test running fails to run some tests.
3290 #:modules ((srfi srfi-1)
3291 (guix build cmake-build-system)
3292 (guix build utils))
3293 #:configure-flags
3294 (list
3295 (string-append "-DOPENALSOFT_INCLUDE_DIR="
3296 (assoc-ref %build-inputs "openal")
3297 "/include/AL")
3298 (string-append "-DPYTHON_SITE_PACKAGES="
3299 (assoc-ref %outputs "out")
5afffbef
MB
3300 "/lib/python"
3301 ,(version-major+minor (package-version python))
3302 "/site-packages"))
2372a5f9
CB
3303 #:phases
3304 (modify-phases %standard-phases
3305 (add-after 'unpack 'patch-run_tests.py
3306 (lambda _
3307 ;; Patch the test runner to exit with a status of 1 if any test
3308 ;; fails, to allow detecting failures.
3309 (substitute* "run_tests.py"
3310 (("ERROR\\. One or more tests failed!'\\)")
3311 "ERROR. One or more tests failed!')
3312\t\texit(1)"))
3313 #t))
3314 ;; Run tests after installation so that we can make use of the built
3315 ;; python modules.
3316 (delete 'check)
3317 (add-after 'install 'check
3318 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
3319 (define python-version
3320 (let* ((version (last (string-split
3321 (assoc-ref inputs "python")
3322 #\-)))
3323 (components (string-split version #\.))
3324 (major+minor (take components 2)))
3325 (string-join major+minor ".")))
3326
3327 (when tests?
3328 ;; Set PYTHONPATH so that python finds the installed modules.
3329 (setenv "PYTHONPATH"
3330 (string-append (getenv "PYTHONPATH") ":"
3331 (assoc-ref outputs "out")
3332 "/lib/python"
3333 python-version
3334 "/site-packages"))
3335 ;; The tests require an X server.
3336 (system "Xvfb :1 &")
3337 (setenv "DISPLAY" ":1")
3338 (setenv "XDG_RUNTIME_DIR" "/tmp")
3339 ;; Run tests
3340 (chdir ,(string-append "../" name "-" version))
3341 (invoke "python3" "run_tests.py" "-a"))
3342 #t)))))
3343 (inputs
3344 `(("sdl2" ,sdl2)
3345 ("sdl2-image" ,sdl2-image)
3346 ("sdl2-ttf" ,sdl2-ttf)
3347 ("tinyxml" ,tinyxml)
3348 ("openal" ,openal)
3349 ("libogg" ,libogg)
3350 ("glew" ,glew)
3351 ("libvorbis" ,libvorbis)
3352 ("boost" ,boost)
3353 ("fifechan" ,fifechan)
3354 ("swig" ,swig)
3355 ("python" ,python)))
3356 (native-inputs
3357 `(("python" ,python)
3358 ("swig" ,swig)
3359 ("xvfb" ,xorg-server)))
3360 (propagated-inputs
3361 `(("python-future" ,python-future)))
3362 (home-page "https://www.fifengine.net/")
3363 (synopsis "FIFE is a multi-platform isometric game engine written in C++")
3364 (description
3365 "@acronym{FIFE, Flexible Isometric Free Engine} is a multi-platform
3366isometric game engine. Python bindings are included allowing users to create
3367games using Python as well as C++.")
3368 (license license:lgpl2.1+)))
3369
35481e8b
SB
3370(define-public fizmo
3371 (package
3372 (name "fizmo")
50e1d36c 3373 (version "0.8.5")
35481e8b
SB
3374 (source (origin
3375 (method url-fetch)
6ad191ba 3376 (uri (string-append "https://fizmo.spellbreaker.org/source/"
07178276 3377 "fizmo-" version ".tar.gz"))
35481e8b
SB
3378 (sha256
3379 (base32
50e1d36c 3380 "1amyc4n41jf08kxmdgkk30bzzx54miaxa97w28f417qwn8lrl98w"))))
35481e8b
SB
3381 (build-system gnu-build-system)
3382 (arguments
3383 '(#:configure-flags
3384 (let ((libjpeg (assoc-ref %build-inputs "libjpeg"))
3385 (ncurses (assoc-ref %build-inputs "ncurses")))
50e1d36c 3386 (list (string-append "--with-jpeg-includedir=" libjpeg "/include")))))
35481e8b
SB
3387 (native-inputs
3388 `(("pkg-config" ,pkg-config)))
3389 (inputs
32199e9a 3390 `(("freetype" ,freetype)
4bd428a7 3391 ("libjpeg" ,libjpeg-turbo)
35481e8b
SB
3392 ("libpng" ,libpng)
3393 ("libsndfile" ,libsndfile)
3394 ("libxml2" ,libxml2)
3395 ("ncurses" ,ncurses)
32199e9a 3396 ("sdl2" ,sdl2)))
6ad191ba 3397 (home-page "https://fizmo.spellbreaker.org/")
35481e8b
SB
3398 (synopsis "Z-machine interpreter")
3399 (description
3400 "Fizmo is a console-based Z-machine interpreter. It is used to play
e881752c 3401interactive fiction, also known as text adventures, which were implemented
35481e8b
SB
3402either by Infocom or created using the Inform compiler.")
3403 (license license:bsd-3)))
3404
fc936b65
DH
3405(define-public gnugo
3406 (package
3407 (name "gnugo")
3408 (version "3.8")
3409 (source (origin
3410 (method url-fetch)
3411 (uri (string-append "mirror://gnu/gnugo/gnugo-" version
3412 ".tar.gz"))
3413 (sha256
3414 (base32
3415 "0wkahvqpzq6lzl5r49a4sd4p52frdmphnqsfdv7gdp24bykdfs6s"))))
3416 (build-system gnu-build-system)
3417 (inputs `(("readline" ,readline)))
4cc78cb3 3418 (synopsis "Play the game of Go")
7c125ce0
AK
3419 (description
3420 "GNU Go is a program that plays the game of Go, in which players
3421place stones on a grid to form territory or capture other stones. While
3422it can be played directly from the terminal, rendered in ASCII characters,
3423it is also possible to play GNU Go with 3rd party graphical interfaces or
3424even in Emacs. It supports the standard game storage format (SGF, Smart
3425Game Format) and inter-process communication format (GMP, Go Modem
3426Protocol).")
6fd52309 3427 (home-page "https://www.gnu.org/software/gnugo/")
fc936b65 3428 (license license:gpl3+)))
67fa7a27
CAW
3429
3430(define-public extremetuxracer
3431 (package
3432 (name "extremetuxracer")
c2d468a1 3433 (version "0.8.0")
67fa7a27
CAW
3434 (source (origin
3435 (method url-fetch)
3436 (uri (string-append
966a543b 3437 "mirror://sourceforge/extremetuxracer/releases/"
67fa7a27
CAW
3438 version "/etr-" version ".tar.xz"))
3439 (sha256
3440 (base32
c2d468a1 3441 "05ysaxvsgps9fxc421kdifsxmc1sn6n79cjaa0k0i3fs9qqrja2b"))))
67fa7a27
CAW
3442 (build-system gnu-build-system)
3443 (native-inputs
3444 `(("pkg-config" ,pkg-config)))
3445 (inputs
b8a35cce
RW
3446 `(("glu" ,glu)
3447 ("sfml" ,sfml)))
5bc0ac96
TGR
3448 (synopsis "High-speed arctic racing game based on Tux Racer")
3449 ;; Snarfed straight from Debian.
67fa7a27
CAW
3450 (description "Extreme Tux Racer, or etracer as it is called for short, is
3451a simple OpenGL racing game featuring Tux, the Linux mascot. The goal of the
3452game is to slide down a snow- and ice-covered mountain as quickly as possible,
3453avoiding the trees and rocks that will slow you down.
3454
3455Collect herrings and other goodies while sliding down the hill, but avoid fish
3456bones.
3457
3458This game is based on the GPL version of the famous game TuxRacer.")
3b3b60d0 3459 (home-page "https://sourceforge.net/projects/extremetuxracer/")
67fa7a27 3460 (license license:gpl2+)))
7a4d0509 3461
1a0633e7
RW
3462(define-public supertuxkart
3463 (package
3464 (name "supertuxkart")
3747ecb1 3465 (version "1.1")
1a0633e7
RW
3466 (source
3467 (origin
3468 (method url-fetch)
3469 (uri (string-append "mirror://sourceforge/supertuxkart/SuperTuxKart/"
3470 version "/supertuxkart-" version "-src.tar.xz"))
3471 (sha256
3472 (base32
3747ecb1 3473 "1s0ai07g3sswck9mr0142989mrgzzq1njc1qxk5als5b245jpc79"))
1a0633e7
RW
3474 (modules '((guix build utils)))
3475 (snippet
3476 ;; Delete bundled library sources
3477 '(begin
56a48582
PL
3478 ;; Supertuxkart uses modified versions of the Irrlicht engine
3479 ;; and the bullet library. The developers gave an explanation
3480 ;; here: http://forum.freegamedev.net/viewtopic.php?f=17&t=3906
3747ecb1 3481 ;; FIXME: try to unbundle angelscript and libraqm
1a0633e7
RW
3482 (for-each delete-file-recursively
3483 '("lib/zlib"
3484 "lib/libpng"
3485 "lib/jpeglib"
3486 "lib/glew"
56a48582
PL
3487 "lib/wiiuse"
3488 "lib/enet"))
1a0633e7
RW
3489 #t))))
3490 (build-system cmake-build-system)
3491 (arguments
3492 `(#:tests? #f ; no check target
3493 #:configure-flags
3494 (list "-DUSE_WIIUSE=0"
56a48582 3495 ;; Do not use the bundled zlib, glew and enet.
1a0633e7 3496 "-DNO_IRR_COMPILE_WITH_ZLIB_=TRUE"
56a48582
PL
3497 "-DUSE_SYSTEM_GLEW=TRUE"
3498 "-DUSE_SYSTEM_ENET=TRUE"
3747ecb1
KK
3499 ;; In order to use the system ENet library, IPv6 support (added in
3500 ;; SuperTuxKart version 1.1) must be disabled.
3501 "-DUSE_IPV6=FALSE"
17c3f776
RH
3502 ;; FIXME: needs libopenglrecorder
3503 "-DBUILD_RECORDER=0"
1a0633e7 3504 ;; Irrlicht returns an integer instead of a boolean
56a48582 3505 "-DCMAKE_C_FLAGS=-fpermissive")))
1a0633e7
RW
3506 (inputs
3507 `(("glew" ,glew)
3508 ("zlib" ,zlib)
3509 ("openal" ,openal)
3510 ("libvorbis" ,libvorbis)
3511 ("freetype" ,freetype)
3512 ("fribidi" ,fribidi)
3747ecb1 3513 ("harfbuzz" ,harfbuzz)
1a0633e7
RW
3514 ("mesa" ,mesa)
3515 ("libx11" ,libx11)
3516 ("libxrandr" ,libxrandr)
3517 ("curl" ,curl)
3518 ;; The following input is needed to build the bundled and modified
3519 ;; version of irrlicht.
4bd428a7 3520 ("libjpeg" ,libjpeg-turbo)
56a48582
PL
3521 ("openssl" ,openssl)
3522 ("enet" ,enet)))
1a0633e7
RW
3523 (native-inputs
3524 `(("pkg-config" ,pkg-config)))
3747ecb1 3525 (home-page "https://supertuxkart.net/Main_Page")
1a0633e7
RW
3526 (synopsis "3D kart racing game")
3527 (description "SuperTuxKart is a 3D kart racing game, with a focus on
3528having fun over realism. You can play with up to 4 friends on one PC, racing
3529against each other or just trying to beat the computer; single-player mode is
3530also available.")
3531 (license license:gpl3+)))
3532
a1c1943b
CB
3533(define-public unknown-horizons
3534 (package
3535 (name "unknown-horizons")
3536 (version "2019.1")
3537 (source (origin
3538 (method url-fetch)
3539 (uri (string-append "https://codeload.github.com/unknown-horizons/"
3540 "unknown-horizons/tar.gz/" version))
3541 (file-name (string-append name "-" version ".tar.gz"))
3542 (sha256
3543 (base32
4c7d16c5
TGR
3544 "1n747p7h0qp48szgp262swg0xh8kxy1bw8ag1qczs4i26hyzs5x4"))
3545 (patches (search-patches "unknown-horizons-python-3.8-distro.patch"))))
a1c1943b
CB
3546 (build-system python-build-system)
3547 (arguments
3548 '(#:phases
3549 (modify-phases %standard-phases
3550 (add-before 'build 'set-HOME
3551 (lambda _
5c83e8ec
TGR
3552 (setenv "HOME" "/tmp")
3553 #t))
a1c1943b
CB
3554 (add-after 'build 'build-extra
3555 (lambda _
3556 (invoke "python3" "./setup.py" "build_i18n")
3557 (invoke "python3" "horizons/engine/generate_atlases.py" "2048")
3558 #t))
3559 (add-after 'install 'patch
3560 (lambda* (#:key outputs #:allow-other-keys)
3561 (let ((out (assoc-ref outputs "out")))
3562 (substitute* (string-append out "/bin/unknown-horizons")
3563 (("os\\.chdir\\(get\\_content\\_dir\\_parent_path\\(\\)\\)")
3564 (string-append "os.chdir(\""
3565 (assoc-ref outputs "out")
3566 "/share/unknown-horizons\")"))))
3567 #t))
4c7d16c5
TGR
3568 (add-before 'check 'fix-tests-with-pytest>=4
3569 (lambda _
3570 (substitute* "tests/conftest.py"
3571 (("pytest_namespace")
3572 "pytest_configure")
3573 (("get_marker")
3574 "get_closest_marker"))
3575 #t))
a1c1943b
CB
3576 ;; TODO: Run GUI tests as well
3577 (replace 'check
3578 (lambda _
3579 (substitute* "horizons/constants.py"
3580 (("IS_DEV_VERSION = False")
3581 "IS_DEV_VERSION = True"))
3582 (invoke "pytest" "tests")
3583 (substitute* "horizons/constants.py"
3584 (("IS_DEV_VERSION = True")
3585 "IS_DEV_VERSION = False"))
3586 #t)))))
3587 (inputs
3588 `(("fifengine" ,fifengine)
3589 ("python:tk" ,python "tk")
3590 ("python-pillow" ,python-pillow)
3591 ("python-pyyaml" ,python-pyyaml)))
3592 (native-inputs
3593 `(("intltool" ,intltool)
4c7d16c5 3594 ("python-distro" ,python-distro)
a1c1943b
CB
3595
3596 ;; Required for tests
3597 ("python-greenlet" ,python-greenlet)
3598 ("python-polib" ,python-polib)
3599 ("python-pytest" ,python-pytest)
3600 ("python-pytest-mock" ,python-pytest-mock)))
3601 (home-page "http://unknown-horizons.org/")
3602 (synopsis "Isometric realtime strategy, economy and city building simulation")
3603 (description
3604 "Unknown Horizons is a 2D realtime strategy simulation with an emphasis
3605on economy and city building. Expand your small settlement to a strong and
3606wealthy colony, collect taxes and supply your inhabitants with valuable
3607goods. Increase your power with a well balanced economy and with strategic
3608trade and diplomacy.")
3609 (license (list
3610 license:gpl2+ ; Covers code
3611 license:expat ; tests/dummy.py, ext/polib.py
3612 license:cc-by-sa3.0 ; Covers some media content
3613 license:cc-by3.0 ; Covers some media content
3614 license:bsd-3)))) ; horizons/ext/speaklater.py
3615
7a4d0509
SB
3616(define-public gnujump
3617 (package
3618 (name "gnujump")
3619 (version "1.0.8")
3620 (source (origin
3621 (method url-fetch)
3622 (uri (string-append "mirror://gnu/gnujump/gnujump-"
3623 version ".tar.gz"))
3624 (sha256
3625 (base32
3626 "05syy9mzbyqcfnm0hrswlmhwlwx54f0l6zhcaq8c1c0f8dgzxhqk"))))
3627 (build-system gnu-build-system)
3628 (arguments
3629 '(#:phases
3630 (modify-phases %standard-phases
3631 (add-before
3632 'configure 'link-libm
18a613fb
EF
3633 (lambda _ (setenv "LIBS" "-lm")))
3634 (add-after 'install 'create-desktop-entry
3635 (lambda* (#:key outputs #:allow-other-keys)
3636 (let* ((out (assoc-ref outputs "out"))
3637 (apps (string-append out "/share/applications")))
3638 (mkdir-p apps)
3639 (with-output-to-file
3640 (string-append apps "/gnujump.desktop")
3641 (lambda _
3642 (format #t
3643 "[Desktop Entry]~@
3644 Name=GNUjump~@
3645 Comment=Jump up the tower to survive~@
3646 Exec=~a/bin/gnujump~@
3647 Terminal=false~@
3648 Type=Application~@
3649 Categories=Game;ArcadeGame~%"
3650 out)))))))))
7a4d0509
SB
3651 (inputs
3652 `(("glu" ,glu)
b3546174 3653 ("mesa" ,mesa)
7a4d0509
SB
3654 ("sdl" ,sdl)
3655 ("sdl-image" ,sdl-image)
3656 ("sdl-mixer" ,sdl-mixer)))
3657 (home-page "http://gnujump.es.gnu.org/")
3658 (synopsis
3659 "Game of jumping to the next floor, trying not to fall")
3660 (description
3661 "GNUjump is a simple, yet addictive game in which you must jump from
3662platform to platform to avoid falling, while the platforms drop at faster rates
3663the higher you go. The game features multiplayer, unlimited FPS, smooth floor
3664falling, themeable graphics and sounds, and replays.")
3665 (license license:gpl3+)))
159093a7 3666
649220ad 3667(define-public wesnoth
159093a7 3668 (package
649220ad 3669 (name "wesnoth")
85c4364c 3670 (version "1.14.13")
159093a7
SB
3671 (source (origin
3672 (method url-fetch)
de67e922 3673 (uri (string-append "mirror://sourceforge/wesnoth/wesnoth-"
0c2e055e
TGR
3674 (version-major+minor version)
3675 "/wesnoth-" version "/"
3676 "wesnoth-" version ".tar.bz2"))
159093a7
SB
3677 (sha256
3678 (base32
85c4364c 3679 "1pmqj4rah0256qi9w394ksb9apid723i5f5agkg6x1lahb1ac91q"))))
159093a7
SB
3680 (build-system cmake-build-system)
3681 (arguments
53402d43 3682 `(#:tests? #f)) ;no check target
159093a7 3683 (native-inputs
b94a6ca0 3684 `(("gettext" ,gettext-minimal)
159093a7
SB
3685 ("pkg-config" ,pkg-config)))
3686 (inputs
3687 `(("boost" ,boost)
3688 ("dbus" ,dbus)
3689 ("fribidi" ,fribidi)
3690 ("libvorbis" ,libvorbis)
e554d43d 3691 ("openssl" ,openssl)
159093a7 3692 ("pango" ,pango)
e554d43d
AI
3693 ("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
3694 (home-page "https://www.wesnoth.org/")
159093a7
SB
3695 (synopsis "Turn-based strategy game")
3696 (description
3697 "The Battle for Wesnoth is a fantasy, turn based tactical strategy game,
3698with several single player campaigns, and multiplayer games (both networked and
3699local).
3700
3701Battle for control on a range of maps, using variety of units which have
3702advantages and disadvantages against different types of attacks. Units gain
3703experience and advance levels, and are carried over from one scenario to the
3704next campaign.")
3705 (license license:gpl2+)))
c449a076 3706
649220ad 3707(define-public wesnoth-server
75abd864 3708 (package
649220ad
NG
3709 (inherit wesnoth)
3710 (name "wesnoth-server")
75abd864
AI
3711 (inputs
3712 `(("boost" ,boost)
e554d43d
AI
3713 ("icu4c" ,icu4c)
3714 ("openssl" ,openssl)
3715 ("sdl2" ,sdl2)))
75abd864 3716 (arguments
e554d43d
AI
3717 `(#:configure-flags '("-DENABLE_GAME=OFF")
3718 ,@(package-arguments wesnoth)))
75abd864
AI
3719 (synopsis "Dedicated @emph{Battle for Wesnoth} server")
3720 (description "This package contains a dedicated server for @emph{The
3721Battle for Wesnoth}.")))
3722
c449a076
EB
3723(define-public gamine
3724 (package
3725 (name "gamine")
87683add 3726 (version "1.6")
c449a076
EB
3727 (source (origin
3728 (method url-fetch)
3729 (uri (string-append "mirror://sourceforge/gamine-game/"
3730 "gamine-" version ".tar.gz"))
3731 (sha256
3732 (base32
87683add 3733 "1sc6f4445ciigd6yw0ri92746k4hk6ps0bvj9fm1gbp3c3fslk5n"))))
c449a076
EB
3734 (build-system gnu-build-system)
3735 (native-inputs
3736 `(("pkg-config" ,pkg-config)
3737 ("intltool" ,intltool)))
3738 (inputs
3739 `(("gstreamer" ,gstreamer)
87683add
TGR
3740 ("gst-plugins-base" ,gst-plugins-base) ; playbin plugin
3741 ("gst-plugins-good" ,gst-plugins-good) ; for wav playback
c449a076
EB
3742 ("gtk+" ,gtk+)))
3743 (arguments
3744 `(#:tests? #f
3745 #:make-flags
3746 (let ((out (assoc-ref %outputs "out")))
3747 (list (string-append "PREFIX=" out)
3748 (string-append "SYSCONFDIR=" out "/etc")))
3749 #:phases
3750 (modify-phases %standard-phases
3751 (delete 'configure)
3752 (add-after
3753 'install 'wrap-gamine
3754 (lambda* (#:key outputs #:allow-other-keys)
3755 (let ((out (assoc-ref outputs "out"))
3756 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
3757 (wrap-program (string-append out "/bin/gamine")
3758 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))))
3759 #t)))))
3760 (home-page "http://gamine-game.sourceforge.net/")
3761 (synopsis "Mouse and keyboard discovery for children")
3762 (description
3763 "Gamine is a game designed for young children who are learning to use the
3764mouse and keyboard. The child uses the mouse to draw colored dots and lines
3765on the screen and keyboard to display letters.")
3766 ;; Most files under gpl2+ or gpl3+, but eat.wav under gpl3
3767 (license license:gpl3)))
3768
2e2ed3cb
AK
3769(define-public manaplus
3770 (package
3771 (name "manaplus")
2b744c21 3772 (version "1.9.3.23")
2e2ed3cb
AK
3773 (source (origin
3774 (method url-fetch)
3775 (uri (string-append
074dd909 3776 "https://repo.manaplus.org/manaplus/download/"
2e2ed3cb
AK
3777 version "/manaplus-" version ".tar.xz"))
3778 (sha256
3779 (base32
2b744c21 3780 "1ky182p4svwdqm6cf7jbns85hidkhkhq4s17cs2p381f0klapfjz"))))
2e2ed3cb
AK
3781 (build-system gnu-build-system)
3782 (arguments
3783 '(#:configure-flags
3784 (list (string-append "CPPFLAGS=-I"
3785 (assoc-ref %build-inputs "sdl-union")
3786 "/include/SDL"))))
3787 (native-inputs
3788 `(("pkg-config" ,pkg-config)))
3789 (inputs
3790 `(("glu" ,glu)
3791 ("curl" ,curl)
3792 ("libxml2" ,libxml2)
3793 ("mesa" ,mesa)
2e2ed3cb 3794 ("sdl-union" ,(sdl-union))))
074dd909 3795 (home-page "https://manaplus.org")
2e2ed3cb
AK
3796 (synopsis "Client for 'The Mana World' and similar games")
3797 (description
3798 "ManaPlus is a 2D MMORPG client for game servers. It is the only
3799fully supported client for @uref{http://www.themanaworld.org, The mana
3800world}, @uref{http://evolonline.org, Evol Online} and
3801@uref{http://landoffire.org, Land of fire}.")
3802 ;; "src/debug/*" and "src/sdl2gfx/*" are under Zlib.
3803 ;; "data/themes/{golden-delicious,jewelry}/*" are under CC-BY-SA.
3804 ;; The rest is under GPL2+.
3805 (license (list license:gpl2+ license:zlib license:cc-by-sa4.0))))
03d521f9 3806
e9687748
AS
3807(define openttd-engine
3808 (package
3809 (name "openttd-engine")
842a9d8f 3810 (version "1.10.0")
e9687748
AS
3811 (source
3812 (origin (method url-fetch)
842a9d8f 3813 (uri (string-append "https://cdn.openttd.org/openttd-releases/"
e9687748
AS
3814 version "/openttd-" version "-source.tar.xz"))
3815 (sha256
3816 (base32
842a9d8f 3817 "0lz2y2rjc23k0d97y65cqhy2splw9cmrbvhgz0iqps8xkan1m8hv"))))
e9687748
AS
3818 (build-system gnu-build-system)
3819 (arguments
3820 `(#:tests? #f ; no "check" target
3821 #:phases
3822 (modify-phases %standard-phases
3823 ;; The build process fails if the configure script is passed the
3824 ;; option "--enable-fast-install".
3825 (replace 'configure
857b2f53
AI
3826 (lambda* (#:key inputs outputs (configure-flags '())
3827 #:allow-other-keys)
e9687748
AS
3828 (let ((out (assoc-ref outputs "out"))
3829 (lzo (assoc-ref inputs "lzo")))
369a91d9
RW
3830 (apply invoke "./configure"
3831 (string-append "--prefix=" out)
3832 ;; Provide the "lzo" path.
3833 (string-append "--with-liblzo2="
3834 lzo "/lib/liblzo2.a")
3835 ;; Put the binary in 'bin' instead of 'games'.
3836 "--binary-dir=bin"
3837 configure-flags)))))))
e9687748
AS
3838 (native-inputs `(("pkg-config" ,pkg-config)))
3839 (inputs
3a48d055 3840 `(("allegro" ,allegro)
e9687748
AS
3841 ("fontconfig" ,fontconfig)
3842 ("freetype" ,freetype)
3843 ("icu4c" ,icu4c)
3844 ("libpng" ,libpng)
3845 ("lzo" ,lzo)
3846 ("sdl" ,sdl)
3847 ("xz" ,xz)
3848 ("zlib" ,zlib)))
4cb0b5bf 3849 (synopsis "Transportation economics simulator game")
e9687748
AS
3850 (description "OpenTTD is a game in which you transport goods and
3851passengers by land, water and air. It is a re-implementation of Transport
3852Tycoon Deluxe with many enhancements including multiplayer mode,
3853internationalization support, conditional orders and the ability to clone,
b81b8943
KK
3854autoreplace and autoupdate vehicles. This package only includes the game
3855engine. When you start it you will be prompted to download a graphics set.")
532dba49 3856 (home-page "https://www.openttd.org/")
e9687748
AS
3857 ;; This package is GPLv2, except for a few files located in
3858 ;; "src/3rdparty/" which are under the 3-clause BSD, LGPLv2.1+ and Zlib
3859 ;; licenses. In addition, this software contains an in-game downloader
3860 ;; from which the user may find non-functional data licensed under
3861 ;; different terms.
3862 (license (list license:bsd-3 license:gpl2 license:lgpl2.1+ license:zlib))))
3863
4df9495e
KK
3864(define openttd-opengfx
3865 (package
3866 (name "openttd-opengfx")
c492b23f 3867 (version "0.6.0")
4df9495e
KK
3868 (source
3869 (origin
3870 (method url-fetch)
c492b23f 3871 (uri (string-append "https://cdn.openttd.org/opengfx-releases/"
4df9495e
KK
3872 version "/opengfx-" version "-source.tar.xz"))
3873 (sha256
3874 (base32
c492b23f 3875 "0qxc6gl2gxcrn1np88dnjgbaaakkkx96b13rcmy1spryc8c09hyr"))))
4df9495e
KK
3876 (build-system gnu-build-system)
3877 (arguments
3878 '(#:make-flags (list "CC=gcc"
3879 (string-append "INSTALL_DIR="
3880 (assoc-ref %outputs "out")
857b2f53 3881 "/share/games/openttd/baseset/opengfx"))
4df9495e
KK
3882 #:phases
3883 (modify-phases %standard-phases
3884 (replace 'configure
3885 (lambda _
3886 ;; Make sure HOME is writable for GIMP.
3887 (setenv "HOME" (getcwd))
3888
3889 ;; Redirect stdout, not stderr, to /dev/null. This prevents
3890 ;; dos2unix from receiving its version information as a flag.
3891 (substitute* "Makefile"
3892 (("\\$\\(UNIX2DOS\\) -q --version 2>/dev/null")
3893 "$(UNIX2DOS) -q --version 1>/dev/null")))))
3894 ;; The check phase for this package only checks the md5sums of the built
3895 ;; GRF files against the md5sums of the release versions. Because we use
3896 ;; different software versions than upstream does, some of the md5sums
3897 ;; are different. However, the package is still reproducible, it's safe
3898 ;; to disable this test.
c0959cc9
AI
3899 #:tests? #f
3900 #:parallel-build? #f))
4df9495e
KK
3901 (native-inputs `(("dos2unix" ,dos2unix)
3902 ("gimp" ,gimp)
3903 ("grfcodec" ,grfcodec)
3904 ("nml" ,nml)
c492b23f 3905 ("which" ,which)
4df9495e
KK
3906 ("python" ,python-2)))
3907 (home-page "http://dev.openttdcoop.org/projects/opengfx")
3908 (synopsis "Base graphics set for OpenTTD")
3909 (description
3910 "The OpenGFX projects is an implementation of the OpenTTD base grahics
3911set that aims to ensure the best possible out-of-the-box experience.
3912
3913OpenGFX provides you with...
3914@enumerate
3915@item All graphics you need to enjoy OpenTTD.
3916@item Uniquely drawn rail vehicles for every climate.
3917@item Completely snow-aware rivers.
3918@item Different river and sea water.
3919@item Snow-aware buoys.
3920@end enumerate")
3921 (license license:gpl2)))
3922
c17b0790
AI
3923(define openttd-opensfx
3924 (package
3925 (name "openttd-opensfx")
3926 (version "0.2.3")
3927 (source
3928 (origin
3929 (method url-fetch)
3930 (uri (string-append
3931 "https://binaries.openttd.org/extra/opensfx/"
3932 version "/opensfx-" version "-source.tar.gz"))
3933 (sha256
3934 (base32
3935 "03jxgp02ks31hmsdh4xh0xcpkb70ds8jakc9pfc1y9vdrdavh4p5"))))
3936 (build-system gnu-build-system)
3937 (native-inputs
3938 `(("catcodec" ,catcodec)
61506fe5 3939 ("python" ,python-2)))
c17b0790
AI
3940 (arguments
3941 `(#:make-flags
3942 (list (string-append "INSTALL_DIR=" %output
3943 "/share/games/openttd/baseset/opensfx"))
3944 #:phases
3945 (modify-phases %standard-phases
3946 (add-after 'unpack 'make-reproducible
3947 (lambda _
3948 ;; Remove the time dependency of the installed tarball by setting
3949 ;; the modification times if its members to 0.
3950 (substitute* "scripts/Makefile.def"
3951 (("-cf") " --mtime=@0 -cf"))
3952 #t))
3953 (delete 'configure))))
3954 (home-page "http://dev.openttdcoop.org/projects/opensfx")
3955 (synopsis "Base sounds for OpenTTD")
3956 (description "OpenSFX is a set of free base sounds for OpenTTD which make
3957it possible to play OpenTTD without requiring the proprietary sound files from
3958the original Transport Tycoon Deluxe.")
3959 (license license:cc-sampling-plus-1.0)))
3960
823e1218
AI
3961(define openttd-openmsx
3962 (package
3963 (name "openttd-openmsx")
3964 (version "0.3.1")
3965 (source
3966 (origin
3967 (method url-fetch)
3968 (uri (string-append
3969 "https://binaries.openttd.org/extra/openmsx/"
3970 version "/openmsx-" version "-source.tar.gz"))
3971 (sha256
3972 (base32
3973 "0nskq97a6fsv1v6d62zf3yb8whzhqnlh3lap3va3nzvj7csjgf7c"))))
3974 (build-system gnu-build-system)
3975 (native-inputs
61506fe5 3976 `(("python" ,python-2)))
823e1218
AI
3977 (arguments
3978 `(#:make-flags
3979 (list (string-append "INSTALL_DIR=" %output
3980 "/share/games/openttd/baseset"))
3981 #:phases
3982 (modify-phases %standard-phases
3983 (delete 'configure)
3984 (add-after 'install 'post-install
3985 ;; Rename openmsx-version to openmsx
3986 (lambda* (#:key outputs #:allow-other-keys)
3987 (let ((install-directory (string-append (assoc-ref outputs "out")
3988 "/share/games/openttd/baseset")))
3989 (rename-file (string-append install-directory "/openmsx-" ,version)
3990 (string-append install-directory "/openmsx"))
3991 #t))))))
3992 (home-page "http://dev.openttdcoop.org/projects/openmsx")
3993 (synopsis "Music set for OpenTTD")
3994 (description "OpenMSX is a music set for OpenTTD which makes it possible
3995to play OpenTTD without requiring the proprietary music from the original
3996Transport Tycoon Deluxe.")
3997 (license license:gpl2)))
3998
e9687748
AS
3999(define-public openttd
4000 (package
4001 (inherit openttd-engine)
ca508f1c
KK
4002 (name "openttd")
4003 (arguments
857b2f53
AI
4004 `(#:configure-flags
4005 (list (string-append "--with-midi=" (assoc-ref %build-inputs "timidity++")
4006 "/bin/timidity"))
4007 ,@(substitute-keyword-arguments (package-arguments openttd-engine)
4008 ((#:phases phases)
4009 `(modify-phases ,phases
4010 (add-after 'install 'install-data
4011 (lambda* (#:key inputs outputs #:allow-other-keys)
4012 (for-each
4013 (lambda (input)
4014 (copy-recursively (assoc-ref inputs input)
4015 (assoc-ref outputs "out")))
4016 (list "opengfx" "openmsx" "opensfx"))
4017 #t)))))))
4018 (inputs
4019 `(("timidity++" ,timidity++)
4020 ,@(package-inputs openttd-engine)))
ca508f1c
KK
4021 (native-inputs
4022 `(("opengfx" ,openttd-opengfx)
857b2f53
AI
4023 ("openmsx" ,openttd-openmsx)
4024 ("opensfx" ,openttd-opensfx)
ca508f1c 4025 ,@(package-native-inputs openttd-engine)))))
e9687748 4026
0c6ade0b
RH
4027(define openrct2-title-sequences
4028 (package
4029 (name "openrct2-title-sequences")
4030 (version "0.1.2")
4031 (source
4032 (origin
4033 (method url-fetch)
4034 (uri (string-append "https://github.com/OpenRCT2/title-sequences/releases/download/v"
4035 version "/title-sequence-v" version ".zip"))
4036 (file-name (string-append name "-" version ".zip"))
4037 (sha256
4038 (base32
4039 "0qbyxrsw8hlgaq0r5d7lx7an3idy4qbfv7yiw9byhldk763n9cfw"))))
4040 (build-system trivial-build-system)
4041 (native-inputs
4042 `(("bash" ,bash)
4043 ("coreutils" ,coreutils)
4044 ("unzip" ,unzip)))
4045 (arguments
4046 `(#:modules ((guix build utils))
4047 #:builder
4048 (begin
4049 (use-modules (guix build utils))
4050 (let* ((out (assoc-ref %outputs "out"))
4051 (openrct2-title-sequences (string-append out
4052 "/share/openrct2/title-sequences"))
4053 (source (assoc-ref %build-inputs "source"))
4054 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
4055 (copy-file source (string-append ,name "-" ,version ".zip"))
4056 (invoke unzip (string-append ,name "-" ,version ".zip"))
4057 (delete-file (string-append ,name "-" ,version ".zip"))
4058 (mkdir-p openrct2-title-sequences)
4059 (copy-recursively "."
4060 openrct2-title-sequences)
4061 #t))))
4062 (home-page "https://github.com/OpenRCT2/OpenRCT2")
4063 (synopsis "Title sequences for OpenRCT2")
4064 (description
4065 "openrct2-title-sequences is a set of title sequences for OpenRCT2.")
4066 (license license:gpl3+)))
4067
4068(define openrct2-objects
4069 (package
4070 (name "openrct2-objects")
924e6993 4071 (version "1.0.9")
0c6ade0b
RH
4072 (source
4073 (origin
4074 (method url-fetch)
4075 (uri (string-append "https://github.com/OpenRCT2/objects/releases/download/v"
4076 version "/objects.zip"))
4077 (file-name (string-append name "-" version ".zip"))
4078 (sha256
924e6993 4079 (base32 "02apb8h553m7d6jvysgb1zahvxc1yzyygfca2iclb21b3fhpsas4"))))
0c6ade0b
RH
4080 (build-system trivial-build-system)
4081 (native-inputs
4082 `(("bash" ,bash)
4083 ("coreutils" ,coreutils)
4084 ("unzip" ,unzip)))
4085 (arguments
4086 `(#:modules ((guix build utils))
4087 #:builder
4088 (begin
4089 (use-modules (guix build utils))
4090 (let* ((out (assoc-ref %outputs "out"))
4091 (openrct2-objects (string-append out
4092 "/share/openrct2/objects"))
4093 (source (assoc-ref %build-inputs "source"))
4094 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
4095 (copy-file source (string-append ,name "-" ,version ".zip"))
4096 (invoke unzip (string-append ,name "-" ,version ".zip"))
4097 (delete-file (string-append ,name "-" ,version ".zip"))
4098 (mkdir-p openrct2-objects)
4099 (copy-recursively "."
4100 openrct2-objects)
4101 #t))))
4102 (home-page "https://github.com/OpenRCT2/OpenRCT2")
4103 (synopsis "Objects for OpenRCT2")
4104 (description
4105 "openrct2-objects is a set of objects for OpenRCT2.")
4106 (license license:gpl3+)))
4107
7aafb3b3
RH
4108(define-public openrct2
4109 (package
4110 (name "openrct2")
afc46f22 4111 (version "0.2.6")
7aafb3b3
RH
4112 (source
4113 (origin
2e5a0690
TGR
4114 (method git-fetch)
4115 (uri (git-reference
b0e7b699 4116 (url "https://github.com/OpenRCT2/OpenRCT2")
2e5a0690
TGR
4117 (commit (string-append "v" version))))
4118 (file-name (git-file-name name version))
7aafb3b3 4119 (sha256
afc46f22 4120 (base32 "1vikbkg3wh5ngzdfilb6irbh6nqinf138qpdz8wz9izlvl8s36k4"))))
7aafb3b3
RH
4121 (build-system cmake-build-system)
4122 (arguments
940c2c5c
RH
4123 `(#:configure-flags (list "-DDOWNLOAD_OBJECTS=OFF"
4124 "-DDOWNLOAD_TITLE_SEQUENCES=OFF")
6457509c 4125 #:tests? #f ; tests require network access
7aafb3b3 4126 #:phases
6457509c
TGR
4127 (modify-phases %standard-phases
4128 (add-after 'unpack 'fix-usr-share-paths&add-data
4129 (lambda* (#:key inputs outputs #:allow-other-keys)
4130 (let ((titles (assoc-ref inputs "openrct2-title-sequences"))
4131 (objects (assoc-ref inputs "openrct2-objects")))
4132 ;; Fix some references to /usr/share.
4133 (substitute* "src/openrct2/platform/Platform.Linux.cpp"
4134 (("/usr/share")
4135 (string-append (assoc-ref %outputs "out") "/share")))
4136 (copy-recursively
4137 (string-append titles "/share/openrct2/title-sequences")
4138 "data/title")
4139 (copy-recursively
4140 (string-append objects "/share/openrct2/objects")
4141 "data/object"))))
8c14f7f8 4142 (add-before 'configure 'get-rid-of-errors
6457509c
TGR
4143 (lambda _
4144 ;; Don't treat warnings as errors.
4145 (substitute* "CMakeLists.txt"
8c14f7f8
MB
4146 (("-Werror") ""))
4147 #t)))))
c695fb76
TGR
4148 (inputs `(("curl" ,curl)
4149 ("fontconfig" ,fontconfig)
4150 ("freetype" ,freetype)
0c6ade0b 4151 ("icu4c" ,icu4c)
c695fb76
TGR
4152 ("jansson" ,jansson)
4153 ("libpng" ,libpng)
4154 ("libzip" ,libzip)
4155 ("mesa" ,mesa)
0c6ade0b
RH
4156 ("openrct2-objects" ,openrct2-objects)
4157 ("openrct2-title-sequences" ,openrct2-title-sequences)
c695fb76
TGR
4158 ("openssl" ,openssl)
4159 ("sdl2" ,sdl2)
4160 ("speexdsp" ,speexdsp)
4161 ("zlib" ,zlib)))
7aafb3b3 4162 (native-inputs
63d4ef52 4163 `(("pkg-config" ,pkg-config)))
7aafb3b3
RH
4164 (home-page "https://github.com/OpenRCT2/OpenRCT2")
4165 (synopsis "Free software re-implementation of RollerCoaster Tycoon 2")
4166 (description "OpenRCT2 is a free software re-implementation of
4167RollerCoaster Tycoon 2 (RCT2). The gameplay revolves around building and
4168maintaining an amusement park containing attractions, shops and facilities.
4169
4170Note that this package does @emph{not} provide the game assets (sounds,
4171images, etc.)")
4172 ;; See <https://github.com/OpenRCT2/OpenRCT2/wiki/Required-RCT2-files>
4173 ;; regarding assets.
4174 (license license:gpl3+)))
4175
e3f755f4
EB
4176(define-public pinball
4177 (package
4178 (name "pinball")
4179 (version "0.3.1")
4180 (source
4181 (origin (method url-fetch)
4182 (uri (string-append "mirror://sourceforge/pinball/pinball/"
4183 "pinball-" version "/"
4184 "pinball-" version ".tar.gz"))
4185 (sha256
4186 (base32
4187 "1f2whlrfidwfh8lvr8cspcyirc6840r5d1ajm7x99qmngygrhixs"))
fc1adab1
AK
4188 (patches (search-patches "pinball-const-fix.patch"
4189 "pinball-cstddef.patch"
4190 "pinball-missing-separators.patch"
4191 "pinball-src-deps.patch"
4192 "pinball-system-ltdl.patch"))))
e3f755f4
EB
4193 (build-system gnu-build-system)
4194 (inputs
4195 `(("glu" ,glu)
4196 ("mesa" ,mesa)
4197 ("sdl" ,sdl)
4198 ("sdl-image" ,sdl-image)
4199 ("sdl-mixer" ,sdl-mixer)))
4200 (arguments
4201 '(#:configure-flags
4202 (list (string-append "CPPFLAGS=-I"
4203 (assoc-ref %build-inputs "sdl-image")
4204 "/include/SDL -I"
4205 (assoc-ref %build-inputs "sdl-mixer")
4206 "/include/SDL"))))
4207 (home-page "http://pinball.sourceforge.net")
4208 (synopsis "Pinball simulator")
4209 (description "The Emilia Pinball Project is a pinball simulator. There
4210are only two levels to play with, but they are very addictive.")
4211 (license license:gpl2)))
7e2e1155
RF
4212
4213(define-public pioneers
4214 (package
4215 (name "pioneers")
f2922d9e 4216 (version "15.6")
7e2e1155
RF
4217 (source (origin
4218 (method url-fetch)
505ceff6 4219 (uri (string-append "https://downloads.sourceforge.net/pio/"
7e2e1155
RF
4220 "pioneers-" version ".tar.gz"))
4221 (sha256
4222 (base32
f2922d9e 4223 "07b3xdd81n8ybsb4fzc5lx0813y9crzp1hj69khncf4faj48sdcs"))))
7e2e1155 4224 (build-system gnu-build-system)
59e8a57d
TGR
4225 (inputs `(("avahi" ,avahi)
4226 ("gtk+" ,gtk+)
4227 ("librsvg" ,librsvg)))
7e2e1155 4228 (native-inputs `(("intltool" ,intltool)
59e8a57d
TGR
4229 ("itstool" ,itstool)
4230 ("libxml2" ,libxml2)
7e2e1155
RF
4231 ("pkg-config" ,pkg-config)))
4232 (synopsis "Board game inspired by The Settlers of Catan")
4233 (description "Pioneers is an emulation of the board game The Settlers of
4234Catan. It can be played on a local network, on the internet, and with AI
4235players.")
4236 (home-page "http://pio.sourceforge.net/")
8763fdf8 4237 (license license:gpl2+)))
fea1f275 4238
d7c4619b
AE
4239(define-public einstein
4240 (package
4241 (name "einstein")
4242 (version "2.0")
4243 (source (origin
4244 (method url-fetch)
d4cf5b01 4245 (uri (string-append "mirror://debian/pool/main/e/"
d7c4619b
AE
4246 "einstein/einstein_2.0.dfsg.2.orig.tar.gz"))
4247 (sha256
4248 (base32
4249 "1hxrlv6n8py48j487i6wbb4n4vd55w0na69r7ccmmr9vmrsw5mlk"))
fc1adab1 4250 (patches (search-patches "einstein-build.patch"))))
d7c4619b
AE
4251 (build-system gnu-build-system)
4252 (inputs
4253 `(("freetype" ,freetype)
4254 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf)))
4255 ("zlib" ,zlib)))
4256 (native-inputs
4257 `(("font-dejavu" ,font-dejavu)))
4258 (arguments
4259 `(#:tests? #f ; no check target
4260 #:phases
4261 (modify-phases %standard-phases
4262 (replace 'configure
4263 (lambda* (#:key outputs inputs #:allow-other-keys)
4264 (let ((out (assoc-ref outputs "out"))
4265 (dejavu (string-append (assoc-ref inputs "font-dejavu")
4266 "/share/fonts/truetype/DejaVuSans.ttf")))
4267 (substitute* "Makefile"
4268 (("PREFIX=/usr/local") (string-append "PREFIX=" out)))
4269 ;; The patch above registers a free font for use by the binary,
4270 ;; but the font is copied during the compile phase into a
4271 ;; resources file, so we need to make the ttf file available.
4272 (symlink dejavu "res/DejaVuSans.ttf")
4273 #t))))))
4274 (synopsis "Logic puzzle game")
4275 (description "The goal of this logic game is to open all cards in a 6x6
4276grid, using a number of hints as to their relative position. The game idea
4277is attributed to Albert Einstein.")
4278 ;; The original home page has disappeared.
4279 (home-page (string-append "http://web.archive.org/web/20120521062745/"
4280 "http://games.flowix.com/en/index.html"))
4281 ;; License according to
4282 ;; http://web.archive.org/web/20150222180355/http://www.babichev.info/en/projects/index.html
4283 ;; The source code is a DFSG-sanitized tarball and does not contain any
4284 ;; license information.
4285 (license license:gpl3+)))
4286
d381962f 4287(define-public powwow
4288 (package
4289 (name "powwow")
90d37add 4290 (version "1.2.19")
d381962f 4291 (source (origin
4292 (method url-fetch)
4293 (uri (string-append
cc30a472 4294 "https://www.hoopajoo.net/static/projects/powwow-"
d381962f 4295 version ".tar.gz"))
d381962f 4296 (sha256
4297 (base32
90d37add 4298 "10rjl63hmf62qslyhzqrbw3i2zf09dgxv65avhj0iiz0m4pbc9wy"))))
d381962f 4299 (inputs
4300 `(("ncurses" ,ncurses)))
4301 (build-system gnu-build-system)
36aff81a 4302 (home-page "https://www.hoopajoo.net/projects/powwow.html")
d381962f 4303 (synopsis "MUD and telnet client")
4304 (description
4305 "POWWOW is a client software which can be used for telnet as well as for
4306@dfn{Multi-User Dungeon} (MUD). Additionally it can serve as a nice client for
4307the chat server psyced with the specific config located at
4308http://lavachat.symlynx.com/unix/")
4309 (license license:gpl2+)))
158f5734 4310
5ef819cc 4311(define-public red-eclipse
7fa9a685
KK
4312 (let ((release "2.0.0")
4313 (revision 0))
158f5734 4314 (package
5b8a8543 4315 (name "red-eclipse")
42abb842
AFN
4316 (version (if (zero? revision)
4317 release
4318 (string-append release "-"
4319 (number->string revision))))
bb7c071b
TGR
4320 (source
4321 (origin
4322 (method git-fetch)
4323 (uri (git-reference
b0e7b699 4324 (url "https://github.com/redeclipse/base")
7fa9a685
KK
4325 (commit (string-append "v" release))
4326 (recursive? #t))) ; for game data
bb7c071b
TGR
4327 (file-name (git-file-name name version))
4328 (sha256
dc4469e9
KK
4329 (base32 "0sz0mqhwx8r9n4mk3qrxw420nlsm3y0n48gd0lazgd64lfqjh3ab"))
4330 (modules '((guix build utils)))
4331 (snippet
4332 ;; Remove proprietary libraries and other pre-compiled binaries.
4333 '(begin
4334 (delete-file-recursively "bin")
4335 #t))))
158f5734
KY
4336 (build-system gnu-build-system)
4337 (arguments
4338 `(#:tests? #f ; no check target
4339 #:make-flags (list "CC=gcc" "-Csrc"
4340 (string-append "INSTDIR="
42abb842
AFN
4341 (assoc-ref %outputs "out") "/bin")
4342 (string-append "prefix="
4343 (assoc-ref %outputs "out")))
158f5734
KY
4344 #:phases
4345 (modify-phases %standard-phases
7fa9a685 4346 (add-after 'unpack 'add-store-data-package-path-as-default
42abb842
AFN
4347 (lambda* (#:key outputs #:allow-other-keys)
4348 (substitute* "src/engine/server.cpp"
7fa9a685
KK
4349 (("data = \"data\"")
4350 (string-append "data = \""
42abb842 4351 (assoc-ref outputs "out")
7fa9a685 4352 "/share/redeclipse/data\"")))
42abb842 4353 #t))
158f5734
KY
4354 (delete 'configure) ; no configure script
4355 (add-after 'set-paths 'set-sdl-paths
4356 (lambda* (#:key inputs #:allow-other-keys)
4357 (setenv "CPATH"
4358 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
4359 "/include/SDL2:"
4360 (or (getenv "CPATH") "")))
158f5734
KY
4361 #t))
4362 (add-after 'install 'copy-data
4363 (lambda* (#:key outputs #:allow-other-keys)
4364 (let ((out (assoc-ref outputs "out")))
4365 (copy-recursively "config"
4366 (string-append out "/config"))
66c65aaf
KK
4367 (copy-file "doc/examples/servinit.cfg"
4368 (string-append out "/config/servinit.cfg"))
158f5734 4369 (copy-recursively "data"
42abb842
AFN
4370 (string-append out "/share/redeclipse/data"))
4371 (mkdir-p (string-append out "/lib/redeclipse"))
49c97ea4
KK
4372 (symlink (string-append out "/share/redeclipse/data")
4373 (string-append out "/lib/redeclipse/data")))
158f5734
KY
4374 #t))
4375 (add-after 'copy-data 'wrap-program
4376 (lambda* (#:key inputs outputs #:allow-other-keys)
4377 (let* ((out (assoc-ref outputs "out"))
4378 (bin (string-append out "/bin")))
4379 (with-directory-excursion bin
4380 (rename-file "redeclipse_linux"
4381 ".redeclipse_linux-real")
4382 (rename-file "redeclipse_server_linux"
4383 ".redeclipse_server_linux-real")
4384 (call-with-output-file "redeclipse_linux"
4385 (lambda (port)
4386 (format port "#!~a/bin/sh
4387# Run the thing from its home, otherwise it just bails out.
4388cd \"~a\"
4389exec -a \"$0\" ~a/.redeclipse_linux-real~%"
4390 (assoc-ref inputs "bash") ;implicit input
4391 (string-append out)
4392 (string-append bin))))
4393 (call-with-output-file "redeclipse_server_linux"
4394 (lambda (port)
4395 (format port "#!~a/bin/sh
4396# Run the thing from its home, otherwise it just bails out.
4397cd \"~a\"
4398exec -a \"$0\" ~a/.redeclipse_server_linux-real~%"
4399 (assoc-ref inputs "bash") ;implicit input
4400 (string-append out)
4401 (string-append bin))))
4402 (chmod "redeclipse_linux" #o555)
4403 (chmod "redeclipse_server_linux" #o555)))
4404 #t)))))
631b20f9
TGR
4405 (native-inputs
4406 `(("pkg-config" ,pkg-config)))
158f5734
KY
4407 (inputs
4408 `(("curl" ,curl)
7fa9a685 4409 ("freetype" ,freetype)
158f5734 4410 ("glu" ,glu)
14b865dc
KK
4411 ("sdl-union" ,(sdl-union (list sdl2
4412 sdl2-image
7fa9a685 4413 sdl2-mixer)))))
dc4469e9 4414 (home-page "https://redeclipse.net/")
158f5734
KY
4415 (synopsis "Arena shooter derived from the Cube 2 engine")
4416 (description
4417 "Red Eclipse is an arena shooter, created from the Cube2 engine.
4418Offering an innovative parkour system and distinct but all potent weapons,
4419Red Eclipse provides fast paced and accessible gameplay.")
4420 ;; The engine is under Zlib; data files are covered by the other
dc4469e9 4421 ;; licenses. More details at file:///doc/all-licenses.txt.
158f5734
KY
4422 (license (list license:expat
4423 license:zlib
dc4469e9 4424 license:cc-by-sa4.0
158f5734
KY
4425 license:cc-by-sa3.0
4426 license:cc-by3.0
dc4469e9
KK
4427 license:cc0
4428 license:public-domain
4429 license:silofl1.1)))))
bcd2982f 4430
0fb9a15b
LC
4431(define-public grue-hunter
4432 (package
4433 (name "grue-hunter")
4434 (version "1.0")
4435 (source (origin
4436 (method url-fetch)
c41b2ffb 4437 (uri (string-append "https://jxself.org/grue-hunter.tar.gz"))
0fb9a15b
LC
4438 (sha256
4439 (base32
4440 "1hjcpy5439qs3v2zykis7hsi0i17zjs62gks3zd8mnfw9ni4i2h3"))))
4441 (build-system trivial-build-system) ; no Makefile.PL
4442 (arguments `(#:modules ((guix build utils))
4443 #:builder
4444 (begin
4445 (use-modules (guix build utils))
4446 (use-modules (srfi srfi-1))
4447
4448 (let* ((tarball (assoc-ref %build-inputs "tarball"))
4449 (perl (string-append (assoc-ref %build-inputs
4450 "perl")
4451 "/bin"))
5edf2f05 4452 (gzip (string-append (assoc-ref %build-inputs
0fb9a15b 4453 "gzip")
5edf2f05 4454 "/bin/gzip"))
0fb9a15b
LC
4455 (tar (string-append (assoc-ref %build-inputs
4456 "tar")
4457 "/bin/tar"))
4458 (out (assoc-ref %outputs "out"))
4459 (bin (string-append out "/bin"))
6d57723a
TGR
4460 (doc (string-append out
4461 "/share/doc/grue-hunter")))
e3cfef22
MW
4462 (copy-file tarball "grue-hunter.tar.gz")
4463 (invoke gzip "-d" "grue-hunter.tar.gz")
4464 (invoke tar "xvf" "grue-hunter.tar")
0fb9a15b 4465
e3cfef22
MW
4466 (mkdir-p bin)
4467 (copy-file "grue-hunter/gh.pl"
4468 (string-append bin "/grue-hunter"))
4469 (patch-shebang (string-append bin "/grue-hunter")
4470 (list perl))
4471
4472 (install-file "grue-hunter/AGPLv3.txt" doc)
0fb9a15b 4473
e3cfef22 4474 #t))))
0fb9a15b
LC
4475 (inputs `(("perl" ,perl)
4476 ("tar" ,tar)
4477 ("gzip" ,gzip)
4478 ("tarball" ,source)))
6c82576e 4479 (home-page "https://jxself.org/grue-hunter.shtml")
0fb9a15b
LC
4480 (synopsis "Text adventure game")
4481 (description
4482 "Grue Hunter is a text adventure game written in Perl. You must make
4483your way through an underground cave system in search of the Grue. Can you
4484capture it and get out alive?")
4485 (license license:agpl3+)))
f317aeb4 4486
ffed9eab
MB
4487(define-public lierolibre
4488 (package
4489 (name "lierolibre")
4490 (version "0.5")
4491 (source (origin
4492 (method url-fetch)
4493 (uri (string-append "https://launchpad.net/lierolibre/trunk/"
4494 version "/+download/lierolibre-"
4495 version ".tar.xz"))
4496 (sha256
4497 (base32
4498 "1cf1gvsn4qq190lrf9k5bpjnqwlcfw7pajvdnh7z5r4jqw0rsbl9"))
4499 (patches
4500 (search-patches "lierolibre-check-unaligned-access.patch"
4501 "lierolibre-try-building-other-arch.patch"
4502 "lierolibre-remove-arch-warning.patch"
4503 "lierolibre-newer-libconfig.patch"
4504 "lierolibre-is-free-software.patch"))
4505 (modules '((guix build utils)))
4506 (snippet
4507 '(begin
4508 ;; Delete pre-compiled files.
4509 (delete-file "data/LIERO.CHR")
4510 (delete-file "data/LIERO.SND")
4511 #t))))
4512 (build-system gnu-build-system)
4513 (native-inputs
4514 `(("imagemagick" ,imagemagick)
4515 ("pkg-config" ,pkg-config)
4516 ("util-linux" ,util-linux)
4517 ("sox" ,sox)))
4518 (inputs
4519 `(("boost" ,boost)
4520 ("libconfig" ,libconfig)
4521 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
4522 ("zlib" ,zlib)))
4523 (home-page "https://gitlab.com/lierolibre/lierolibre")
4524 (synopsis "Old-school earthworm action game")
4525 (description
4526 "lierolibre is an earthworm action game where you fight another player
4527(or the computer) underground using a wide array of weapons.
4528
4529Features:
4530@itemize
4531@item 2 worms, 40 weapons, great playability, two game modes: Kill'em All
4532and Game of Tag, plus AI-players without true intelligence!
4533@item Dat nostalgia.
4534@item Extensions via a hidden F1 menu:
4535@itemize
4536@item Replays
4537@item Game controller support
4538@item Powerlevel palettes
4539@end itemize
4540@item Ability to write game variables to plain text files.
4541@item Ability to load game variables from both EXE and plain text files.
4542@item Scripts to extract and repack graphics, sounds and levels.
4543@end itemize
4544
4545To switch between different window sizes, use F6, F7 and F8, to switch to
4546fullscreen, use F5 or Alt+Enter.")
4547 ;; Code mainly BSD-2, some parts under Boost 1.0. All assets are WTFPL2.
4548 (license (list license:bsd-2 license:boost1.0 license:wtfpl2))))
4549
5258c416
NG
4550(define-public tennix
4551 (package
4552 (name "tennix")
4553 (version "1.3.1")
4554 (source
4555 (origin
4556 (method git-fetch)
4557 (uri (git-reference
4558 (url "https://repo.or.cz/tennix.git")
4559 (commit (string-append "tennix-" version))))
4560 (file-name (git-file-name name version))
4561 (sha256
4562 (base32 "02cj4lrdrisal5s9pnbf2smx7qz9czczjzndfkhfx0qy67b957sk"))
4563 ;; Remove non-free images.
4564 (modules '((guix build utils)))
4565 (snippet
4566 '(begin
4567 (for-each delete-file
4568 '("data/loc_training_camp.png"
4569 "data/loc_austrian_open.png"
4570 "data/loc_olympic_green_tennis.png"))
4571 #t))))
4572 (build-system gnu-build-system)
4573 (arguments
4574 `(#:tests? #f ;no test
4575 #:phases
4576 (modify-phases %standard-phases
4577 (add-after 'unpack 'fix-include
4578 (lambda _
4579 (substitute* '("src/graphics.h" "src/sound.h")
4580 (("#include \"(SDL_(image|ttf|mixer)\\.h)\"" _ header)
4581 (string-append "#include \"SDL/" header "\"")))
4582 (substitute* '("src/tennix.h" "src/network.h" "src/SDL_rotozoom.h")
4583 (("#include <SDL.h>") "#include <SDL/SDL.h>")
4584 (("#include <SDL_net.h>") "#include <SDL/SDL_net.h>"))
4585 #t))
4586 (add-after 'unpack 'locate-install
4587 ;; Build process cannot expand "$(INSTALL)" in Makefile.
4588 (lambda _
4589 (substitute* "makefile"
4590 (("^CONFIGURE_OUTPUT :=.*" all)
4591 (string-append "INSTALL := install -c\n" all)))
4592 #t))
4593 (replace 'configure
4594 ;; The "configure" script is picky about the arguments it
4595 ;; gets. Call it ourselves.
4596 (lambda _
4597 (invoke "./configure" "--prefix" (assoc-ref %outputs "out")))))))
4598 (native-inputs
4599 `(("which" ,which)))
4600 (inputs
4601 `(("python" ,python-wrapper)
4602 ("sdl" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf sdl-net)))))
4603 (home-page "http://icculus.org/tennix/")
4604 (synopsis "Play tennis against the computer or a friend")
4605 (description "Tennix is a 2D tennis game. You can play against the
4606computer or against another player using the keyboard. The game runs
4607in-window at 640x480 resolution or fullscreen.")
4608 ;; Project is licensed under GPL2+ terms. It includes images
4609 ;; released under Public Domain terms, and SDL_rotozoom, released
4610 ;; under LGPL2.1 terms.
4611 (license (list license:gpl2+ license:public-domain license:lgpl2.1))))
4612
f317aeb4
KK
4613(define-public warzone2100
4614 (package
4615 (name "warzone2100")
adaff1a4 4616 (version "3.4.1")
d8f4aefe
TGR
4617 (source
4618 (origin
4619 (method url-fetch)
7dd2005f
PN
4620 (uri (string-append "mirror://sourceforge/warzone2100/releases/"
4621 version
4622 "/warzone2100_src.tar.xz"))
d8f4aefe 4623 (sha256
adaff1a4 4624 (base32 "0savalmw1kp1sf8vg5aqrl5hc77p4jacxy5y9qj8k2hi2vqdfb7a"))
7dd2005f
PN
4625 (modules '((guix build utils)))
4626 (snippet
4627 '(begin
4628 (with-directory-excursion "3rdparty"
4629 (for-each
4630 delete-file-recursively
4631 '("discord-rpc"
4632 "miniupnp"
4633 "utfcpp")))
4634 #t))))
4635 (build-system cmake-build-system)
f317aeb4 4636 (arguments
7dd2005f
PN
4637 `(#:configure-flags '("-DWZ_DISTRIBUTOR=Guix"
4638 "-DENABLE_DISCORD=off")
4639 #:tests? #f ; TODO: Tests seem to be broken, configure.ac is missing.
f475b90c 4640 #:phases
c5d17d50 4641 (modify-phases %standard-phases
7dd2005f
PN
4642 (add-after 'unpack 'fix-utfcpp-include
4643 (lambda _
4644 (substitute* "lib/framework/wzstring.cpp"
4645 (("<utfcpp/source/utf8.h>") "<utf8.h>"))
4646 #t))
c5d17d50
RW
4647 (add-after 'unpack 'link-tests-with-qt
4648 (lambda _
7dd2005f 4649 (substitute* "tests/Makefile.am"
c5d17d50
RW
4650 (("(framework_linktest_LDADD|maptest_LDADD) = " prefix)
4651 (string-append prefix "$(QT5_LIBS) ")))
4652 #t))
f475b90c 4653 (add-after 'unpack 'fix-ivis-linktest
77c729ba 4654 (lambda _
f475b90c
KK
4655 (substitute* "tests/ivis_linktest.cpp"
4656 (("iV_DrawTextRotated.*;")
4657 (string-append "iV_DrawTextRotated(\"Press ESC to exit.\", "
4658 "100, 100, 0.0f, font_regular);")))
c5d17d50 4659 #t)))))
7dd2005f
PN
4660 (native-inputs `(("asciidoc" ,asciidoc)
4661 ("asciidoctor" ,ruby-asciidoctor)
4662 ("gettext" ,gettext-minimal)
f475b90c 4663 ("pkg-config" ,pkg-config)
f317aeb4 4664 ("unzip" ,unzip)
7dd2005f
PN
4665 ;; 7z is used to create .zip archive, not `zip' as in version 3.2.*.
4666 ("p7zip" ,p7zip)))
4667 (inputs `(("curl" ,curl)
4668 ("fontconfig" ,fontconfig)
f317aeb4 4669 ("freetype" ,freetype)
f317aeb4 4670 ("glew" ,glew)
f475b90c 4671 ("harfbuzz" ,harfbuzz)
f317aeb4
KK
4672 ("libtheora" ,libtheora)
4673 ("libvorbis" ,libvorbis)
4674 ("libxrandr" ,libxrandr)
7dd2005f
PN
4675 ("libsodium" ,libsodium)
4676 ("miniupnpc" ,miniupnpc)
f317aeb4
KK
4677 ("openal" ,openal)
4678 ("physfs" ,physfs)
77c729ba
RW
4679 ("qtbase" ,qtbase)
4680 ("qtscript" ,qtscript)
c5d17d50 4681 ("openssl" ,openssl)
7dd2005f
PN
4682 ("sdl2" ,sdl2)
4683 ("utfcpp" ,utfcpp)))
d3eae3f1 4684 (home-page "https://wz2100.net")
f317aeb4
KK
4685 (synopsis "3D Real-time strategy and real-time tactics game")
4686 (description
4687 "Warzone 2100 offers campaign, multi-player, and single-player skirmish
7dd2005f 4688modes. An extensive tech tree with over 400 different technologies, combined
f317aeb4
KK
4689with the unit design system, allows for a wide variety of possible units and
4690tactics.")
7dd2005f 4691 ;; Everything is GPLv2+ unless otherwise specified in COPYING.NONGPL
f317aeb4
KK
4692 (license (list license:bsd-3
4693 license:cc0
4694 license:cc-by-sa3.0
4695 license:expat
4696 license:gpl2+
4697 license:lgpl2.1+))))
4b670539 4698
9299da13
AEFG
4699(define-public widelands
4700 (package
4701 (name "widelands")
500ee354 4702 (version "21")
9299da13
AEFG
4703 (source
4704 (origin
4705 (method url-fetch)
4706 (uri (string-append "https://launchpad.net/widelands/"
4707 "build" version "/build" version "/+download/"
500ee354 4708 "widelands-build" version "-source.tar.gz"))
9299da13 4709 (sha256
500ee354 4710 (base32 "0mz3jily0w1zxxqbnkqrp6hl88xhrwzbil9crq7gpcwidx60w7k0"))
9299da13
AEFG
4711 (modules '((guix build utils)))
4712 (snippet
4713 '(begin
4714 (delete-file-recursively "src/third_party/minizip")
4715 #t))
4716 (patches
4717 ;; Use system Minizip. Patch is provided by Debian, and discussed
4718 ;; upstream at <https://github.com/widelands/widelands/issues/399>.
4719 (search-patches "widelands-system-wide_minizip.patch"))))
4720 (build-system cmake-build-system)
4721 (arguments
4722 `(#:configure-flags
4723 (let* ((out (assoc-ref %outputs "out"))
4724 (share (string-append out "/share")))
4725 (list (string-append "-DCMAKE_INSTALL_PREFIX=" out "/bin")
4726 (string-append "-DWL_INSTALL_BASEDIR=" share "/widelands")
4727 (string-append "-DWL_INSTALL_DATADIR=" share "/widelands")
4728 "-DOPTION_BUILD_WEBSITE_TOOLS=OFF"
4729 ;; CMakeLists.txt does not handle properly RelWithDebInfo build
4730 ;; type. When used, no game data is installed!
4731 "-DCMAKE_BUILD_TYPE=Release"))
4732 #:phases
4733 (modify-phases %standard-phases
9299da13
AEFG
4734 (add-after 'unpack 'unbundle-fonts
4735 ;; Unbundle fonts already packaged in Guix. XXX: missing fonts are
4736 ;; amiri, Culmus, mmrCensus, Nakula, and Sinhala.
4737 (lambda* (#:key inputs #:allow-other-keys)
4738 (with-directory-excursion "data/i18n/fonts"
4739 (for-each (lambda (font)
4740 (delete-file-recursively font)
4741 (symlink (string-append (assoc-ref inputs font)
4742 "/share/fonts/truetype")
4743 font))
4744 '("DejaVu" "MicroHei")))
4745 #t)))))
4746 (native-inputs
4747 `(("gettext" ,gettext-minimal)
4748 ("python" ,python-wrapper)))
4749 (inputs
4750 `(("boost" ,boost)
4751 ("glew" ,glew)
4752 ("icu4c" ,icu4c)
4753 ("libpng" ,libpng)
4754 ("minizip" ,minizip)
4755 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
4756 ("zlib" ,zlib)
4757 ;; Fonts for the ‘unbundle-fonts’ phase. Case matters in name!
4758 ("DejaVu" ,font-dejavu)
4759 ("MicroHei" ,font-wqy-microhei)))
4760 (home-page "https://www.widelands.org/")
4761 (synopsis "Fantasy real-time strategy game")
4762 (description
4763 "In Widelands, you are the regent of a small clan. You start out with
4764nothing but your headquarters, where all your resources are stored.
4765
4766In the course of the game, you will build an ever growing settlement. Every
4767member of your clan will do his or her part to produce more resources---wood,
4768food, iron, gold and more---to further this growth. The economic network is
4769complex and different in the four tribes (Barbarians, Empire, Atlanteans, and
4770Frisians).
4771
4772As you are not alone in the world, you will meet other clans sooner or later.
4773Some of them may be friendly and you may eventually trade with them. However,
4774if you want to rule the world, you will have to train soldiers and fight.
4775
4776Widelands offers single-player mode with different campaigns; the campaigns
4777all tell stories of tribes and their struggle in the Widelands universe!
4778However, settling really starts when you unite with friends over the Internet
4779or LAN to build up new empires together---or to crush each other in the dusts
4780of war. Widelands also offers an Artificial Intelligence to challenge you.")
4781 ;; Game is released as GPL2+. Some parts, e.g., art, are released under
4782 ;; different licenses.
4783 (license (list license:gpl2+
4784 license:expat ;src/third_party/eris
4785 license:silofl1.1 ;Widelands.ttf
4786 license:cc-by-sa3.0)))) ;some music files
4787
649220ad 4788(define-public starfighter
4b670539 4789 (package
649220ad 4790 (name "starfighter")
dcb74405 4791 (version "2.3.1")
4b670539 4792 (source (origin
8172ab2d
KK
4793 (method url-fetch)
4794 (uri (string-append
4795 "https://github.com/pr-starfighter/starfighter/releases"
4796 "/download/v" version "/starfighter-"
6ebf3009 4797 version "-src.tar.gz"))
4b670539
SB
4798 (sha256
4799 (base32
dcb74405 4800 "13396hvsj4cswlrw52kwqn37dadxps00vhr0hrqgm87fl4ih5yyx"))))
4b670539 4801 (build-system gnu-build-system)
4b670539 4802 (native-inputs
8172ab2d 4803 `(("pkg-config" ,pkg-config)))
4b670539 4804 (inputs
1fe84f5d
KK
4805 `(("pango" ,pango)
4806 ("sdl2" ,sdl2)
4b670539 4807 ("sdl2-image" ,sdl2-image)
1fe84f5d
KK
4808 ("sdl2-mixer" ,sdl2-mixer)
4809 ("sdl2-ttf" ,sdl2-ttf)))
4810 (home-page "https://pr-starfighter.github.io/")
4b670539
SB
4811 (synopsis "2D scrolling shooter game")
4812 (description
4813 "In the year 2579, the intergalactic weapons corporation, WEAPCO, has
4814dominated the galaxy. Guide Chris Bainfield and his friend Sid Wilson on
4815their quest to liberate the galaxy from the clutches of WEAPCO. Along the
4816way, you will encounter new foes, make new allies, and assist local rebels
4817in strikes against the evil corporation.")
4818 ;; gfx and music are under CC-BY 3.0, CC-BY-SA 3.0, CC0 or Public Domain.
4819 (license (list license:gpl3+
4820 license:cc-by3.0
4821 license:cc-by-sa3.0
4822 license:cc0
4823 license:public-domain))))
35e2e495
KK
4824
4825(define-public chromium-bsu
4826 (package
4827 (name "chromium-bsu")
08722837 4828 (version "0.9.16.1")
35e2e495
KK
4829 (source (origin
4830 (method url-fetch)
e464bd60 4831 (uri (string-append "mirror://sourceforge/chromium-bsu"
35e2e495 4832 "/Chromium B.S.U. source code/"
e464bd60 4833 "chromium-bsu-" version ".tar.gz"))
35e2e495
KK
4834 (sha256
4835 (base32
08722837 4836 "0jk2w5b6s6nkzri585bbz16cif2fhqcnl5l1mq3rd98r9nil3hd1"))))
35e2e495 4837 (build-system gnu-build-system)
35e2e495 4838 (native-inputs `(("pkg-config" ,pkg-config)))
7c90d0f4 4839 (inputs `(("gettext" ,gettext-minimal)
08722837 4840 ("glu" ,glu)
35e2e495
KK
4841 ("quesoglc" ,quesoglc)
4842 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))))
4843 (home-page "http://chromium-bsu.sourceforge.net/")
4844 (synopsis "Fast-paced, arcade-style, top-scrolling space shooter")
4845 (description
4846 "In this game you are the captain of the cargo ship Chromium B.S.U. and
4847are responsible for delivering supplies to the troops on the front line. Your
4848ship has a small fleet of robotic fighters which you control from the relative
4849safety of the Chromium vessel.")
4850 ;; Clarified Artistic License for everything but sound, which is covered
4851 ;; by the Expat License.
4852 (license (list license:clarified-artistic license:expat))))
9b1ada4e
EB
4853
4854(define-public tuxpaint
4855 (package
4856 (name "tuxpaint")
c6aa2ee2 4857 (version "0.9.23") ;keep VER_DATE below in sync
9b1ada4e
EB
4858 (source
4859 (origin
4860 (method url-fetch)
4861 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint/"
4862 version "/tuxpaint-" version ".tar.gz"))
4863 (sha256
4864 (base32
c6aa2ee2 4865 "09k9pxi88r3dx6dyjwf9h85d4qpva4i29qz63dc558hg9v21k69l"))
9b1ada4e
EB
4866 (modules '((guix build utils)))
4867 (snippet
4868 '(begin
4869 ;; Remove win32 directory which contains binary dll's and the
4870 ;; deprecated visualc directory.
4871 (for-each delete-file-recursively '("win32" "visualc"))
4872 (substitute* "Makefile"
4873 ;; Do not rely on $(GPERF) being an absolute file name
4874 (("\\[ -x \\$\\(GPERF\\) \\]")
6cbee49d
MW
4875 "$(GPERF) --version >/dev/null 2>&1"))
4876 #t))
9b1ada4e
EB
4877 (patches (search-patches "tuxpaint-stamps-path.patch"))))
4878 (build-system gnu-build-system)
4879 (native-inputs
4880 `(("gperf" ,gperf)
4881 ("pkg-config" ,pkg-config)))
4882 (inputs
4883 `(("cairo" ,cairo)
4884 ("fribidi" ,fribidi)
b94a6ca0 4885 ("gettext" ,gettext-minimal)
9b1ada4e
EB
4886 ("libpng" ,libpng)
4887 ("librsvg" ,librsvg)
4888 ("libpaper" ,libpaper)
4889 ("netpbm" ,netpbm)
4890 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf sdl-image)))))
4891 ;; TODO: Use system fonts rather than those in data/fonts
4892 (arguments
c6aa2ee2 4893 `(#:make-flags `("VER_DATE=2018-09-02"
9b1ada4e
EB
4894 "GPERF=gperf" "CC=gcc"
4895 "SDL_PCNAME=sdl SDL_image SDL_mixer SDL_ttf"
4896 ,(string-append "PREFIX=" %output)
f88c0ab8
EB
4897 "KDE_PREFIX=$(PREFIX)/share/applications"
4898 "KDE_ICON_PREFIX=$(PREFIX)/share/icons/"
9b1ada4e 4899 "COMPLETIONDIR=$(PREFIX)/etc/bash_completion.d")
72529642 4900 #:parallel-build? #f ;fails on some systems
9b1ada4e
EB
4901 #:tests? #f ;No tests
4902 #:phases (modify-phases %standard-phases
4903 (delete 'configure) ;no configure phase
f88c0ab8
EB
4904 (add-before 'install 'no-sys-cache
4905 (lambda _ ;do not rebuild system conf cache
4906 (substitute* "Makefile"
4907 (("kbuildsycoca4") ""))
4908 #t))
9b1ada4e
EB
4909 (add-after 'install 'fix-import
4910 (lambda* (#:key inputs outputs #:allow-other-keys)
4911 (let* ((out (assoc-ref outputs "out"))
4912 (net (assoc-ref inputs "netpbm"))
4913 (tpi (string-append out "/bin/tuxpaint-import")))
4914 (substitute* tpi
4915 ;; Point to installation prefix so that the default
4916 ;; configure file is found.
4917 (("/usr/local") out))
4918 ;; tuxpaint-import uses a bunch of programs from
4919 ;; netpbm, so make sure it knows where those are
4920 (wrap-program tpi
4921 `("PATH" ":" prefix
4922 (,(string-append net "/bin"))))))))))
4923 (native-search-paths
4924 (list (search-path-specification
4925 (variable "TUXPAINT_STAMPS_PATH")
4926 (files '("share/tuxpaint/stamps")))))
4927 (home-page "http://www.tuxpaint.org")
4928 (synopsis "Drawing software for children")
4929 (description
4930 "Tux Paint is a free drawing program designed for young children (kids
4931ages 3 and up). It has a simple, easy-to-use interface; fun sound effects;
4932and an encouraging cartoon mascot who helps guide children as they use the
4933program. It provides a blank canvas and a variety of drawing tools to help
4934your child be creative.")
4935 (license license:gpl2+)))
c3d850f2
EB
4936
4937(define-public tuxpaint-stamps
4938 (package
4939 (name "tuxpaint-stamps")
6ade82c2 4940 (version "2018.09.01")
c3d850f2
EB
4941 (source
4942 (origin
4943 (method url-fetch)
4944 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-stamps/"
4945 (string-map (λ (x) (if (eq? x #\.) #\- x)) version)
4946 "/tuxpaint-stamps-" version ".tar.gz"))
4947 (sha256
4948 (base32
6ade82c2 4949 "1skr23k27yj3vgwfazpzxp90lb2a278gxrkr3bxw7az6zpkmb3yp"))))
c3d850f2
EB
4950 (build-system trivial-build-system)
4951 (native-inputs
4952 `(("tar" ,tar)
4953 ("gzip" ,gzip)))
4954 (arguments
4955 `(#:modules ((guix build utils))
4956 #:builder (begin
4957 (use-modules (guix build utils))
4958 (setenv "PATH"
4959 (string-append
4960 (assoc-ref %build-inputs "tar") "/bin" ":"
4961 (assoc-ref %build-inputs "gzip") "/bin"))
e3cfef22 4962 (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
c3d850f2
EB
4963 (chdir (string-append ,name "-" ,version))
4964 (let ((dir (string-append %output "/share/tuxpaint/stamps")))
4965 (mkdir-p dir)
e3cfef22
MW
4966 (copy-recursively "stamps" dir))
4967 #t)))
c3d850f2
EB
4968 (home-page (package-home-page tuxpaint))
4969 (synopsis "Stamp images for Tux Paint")
4970 (description
4971 "This package contains a set of \"Rubber Stamp\" images which can be used
4972with the \"Stamp\" tool within Tux Paint.")
4973 (license license:gpl2+)))
d2563973
EB
4974
4975(define-public tuxpaint-config
4976 (package
4977 (name "tuxpaint-config")
7b05e957 4978 (version "0.0.14") ;keep VER_DATE below in sync
d2563973
EB
4979 (source
4980 (origin
4981 (method url-fetch)
4982 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-config/"
4983 version "/tuxpaint-config-" version ".tar.gz"))
4984 (sha256
4985 (base32
7b05e957 4986 "0zkgxk436nqcp43zghkfmh397c7dvh5bwn2as7gwvv208bzyij6g"))))
d2563973
EB
4987 (build-system gnu-build-system)
4988 (native-inputs
b94a6ca0 4989 `(("gettext" ,gettext-minimal)))
d2563973
EB
4990 (inputs
4991 `(("fltk" ,fltk)
4992 ("libpaper" ,libpaper)
4993 ;; TODO: Should the following be propagated by fltk?
4994 ("libx11" ,libx11)
4995 ("libxft" ,libxft)
4996 ("mesa" ,mesa)))
4997 (arguments
7b05e957 4998 `(#:make-flags `("VER_DATE=2018-09-01"
d2563973
EB
4999 "CONFDIR=/etc/tuxpaint" ;don't write to store
5000 ,(string-append "PREFIX=" %output)
5001 "GNOME_PREFIX=$(PREFIX)")
5895ca7b 5002 #:parallel-build? #f ;race conditions
d2563973
EB
5003 #:tests? #f ;no tests
5004 #:phases (modify-phases %standard-phases
5005 (delete 'configure) ;no configure phase
5006 (add-before 'install 'gzip-no-name
5007 (lambda* _
5008 (substitute* "Makefile"
5009 ;; tuxpaint-config compresses its own documentation;
5010 ;; make sure it uses flags for reproducibility.
5011 (("gzip") "gzip --no-name"))))
5012 (add-before 'install 'make-install-dirs
5013 (lambda* (#:key outputs #:allow-other-keys)
5014 (let ((out (assoc-ref outputs "out")))
5015 (mkdir-p (string-append out "/bin"))
5016 #t))))))
5017 (home-page (package-home-page tuxpaint))
5018 (synopsis "Configure Tux Paint")
5019 (description
5020 "Tux Paint Config is a graphical configuration editor for Tux Paint.")
5021 (license license:gpl2))) ;no "or later" present
826a3ca2 5022
5023(define-public supertux
5024 (package
5025 (name "supertux")
f2e99d98 5026 (version "0.6.2")
826a3ca2 5027 (source (origin
5028 (method url-fetch)
d910d584
RW
5029 (uri (string-append "https://github.com/SuperTux/supertux/"
5030 "releases/download/v" version "/SuperTux-v"
5031 version "-Source.tar.gz"))
8698d986 5032 (file-name (string-append name "-" version ".tar.gz"))
826a3ca2 5033 (sha256
5034 (base32
f2e99d98 5035 "167m3z4m8n76dvbv42m1fnvabpbpsxvr28zk9641916jl9pfba96"))
8698d986 5036 (patches
57d87f43 5037 (search-patches "supertux-unbundle-squirrel.patch"))))
d910d584
RW
5038 (arguments
5039 '(#:tests? #f
5040 #:configure-flags '("-DINSTALL_SUBDIR_BIN=bin"
8698d986
KK
5041 "-DUSE_SYSTEM_PHYSFS=ON")
5042 #:phases
5043 (modify-phases %standard-phases
5044 (add-after 'unpack 'patch-squirrel-path
5045 (lambda* (#:key inputs #:allow-other-keys)
5046 (let ((squirrel (assoc-ref inputs "squirrel")))
5047 (substitute* "CMakeLists.txt"
5048 (("set\\(SQUIRREL_PREFIX.*")
5049 (string-append "set(SQUIRREL_PREFIX " squirrel ")"))
5050 (("add_dependencies\\(supertux2_lib squirrel\\)") "")
5051 (("\\$\\{SQUIRREL_PREFIX\\}/include")
5052 (string-append "${SQUIRREL_PREFIX}/include/squirrel"))))
5053 #t)))))
826a3ca2 5054 (build-system cmake-build-system)
5055 (inputs `(("sdl2" ,sdl2)
5056 ("sdl2-image" ,sdl2-image)
5057 ("sdl2-mixer" ,sdl2-mixer)
5058 ("openal" ,openal)
5059 ("mesa" ,mesa)
5060 ("glew" ,glew)
5061 ("libvorbis" ,libvorbis)
5062 ("libogg" ,libogg)
5063 ("physfs" ,physfs)
5064 ("curl" ,curl)
8698d986
KK
5065 ("boost" ,boost)
5066 ("freetype" ,freetype)
5067 ("squirrel" ,squirrel)))
8b03b1a1
NG
5068 (native-inputs
5069 `(("pkg-config" ,pkg-config)))
826a3ca2 5070 (synopsis "2D platformer game")
8b03b1a1
NG
5071 (description "SuperTux is a classic 2D jump'n run sidescroller game in
5072a style similar to the original Super Mario games.")
cac6c3ba 5073 (home-page "https://supertux.org/")
826a3ca2 5074 (license license:gpl3+)))
b3de5ff2 5075
751c7040 5076(define-public tintin++
5077 (package
5078 (name "tintin++")
2c674796 5079 (version "2.02.02")
fffe4870
TGR
5080 (source
5081 (origin
5082 (method url-fetch)
5083 (uri (string-append "mirror://sourceforge/tintin/TinTin++ Source Code/"
23174b49 5084 (string-drop-right version 1)
fffe4870
TGR
5085 "/tintin-" version ".tar.gz"))
5086 (sha256
2c674796 5087 (base32 "11ylbp8ip7dwmh4gzb53z147pcfxkl3lwhyy8ngyn2zc634vdn65"))))
751c7040 5088 (inputs
5089 `(("gnutls" ,gnutls)
5090 ("pcre" ,pcre)
5091 ("readline" ,readline)
5092 ("zlib" ,zlib)))
5093 (arguments
fffe4870 5094 '(#:tests? #f ; no test suite
751c7040 5095 #:phases
5096 (modify-phases %standard-phases
5097 ;; The source is in tt/src.
5098 (add-before 'configure 'chdir
5099 (lambda _
5100 (chdir "src")
5101 #t)))))
5102 (build-system gnu-build-system)
23174b49 5103 (home-page "https://tintin.mudhalla.net/")
751c7040 5104 (synopsis "MUD client")
5105 (description
5b9c2690
KK
5106 "TinTin++ is a MUD client which supports MCCP (Mud Client Compression
5107Protocol), MMCP (Mud Master Chat Protocol), xterm 256 colors, most TELNET
5108options used by MUDs, as well as those required to login via telnet on
5109Linux / Mac OS X servers, and an auto mapper with a VT100 map display.")
23174b49 5110 (license license:gpl3+)))
751c7040 5111
b3de5ff2
JN
5112(define-public laby
5113 (package
5114 (name "laby")
5115 (version "0.6.4")
5116 (source
6484b091
EF
5117 (origin (method git-fetch)
5118 (uri (git-reference
b0e7b699 5119 (url "https://github.com/sgimenez/laby")
6484b091
EF
5120 (commit (string-append name "-" version))))
5121 (file-name (git-file-name name version))
b3de5ff2
JN
5122 (sha256
5123 (base32
6484b091 5124 "12fq9hhrxpzgfinmj9ra9ckss9yficwdlrmgjvvsq7agvh3sgyl1"))
b3de5ff2
JN
5125 (patches (search-patches "laby-make-install.patch"))))
5126 (build-system gnu-build-system)
5127 (inputs
5128 `(("lablgtk" ,lablgtk)
5129 ("ocaml" ,ocaml)
a8f52ad7
TGR
5130 ("ocaml-findlib" ,ocaml-findlib)
5131 ("ocamlbuild" ,ocamlbuild)))
b3de5ff2
JN
5132 (arguments
5133 '(#:phases
5134 (modify-phases %standard-phases
5135 (delete 'configure)
a8f52ad7
TGR
5136 (add-before 'build 'allow-unsafe-strings
5137 ;; Fix a build failure with ocaml >=4.06.0.
5138 ;; See <https://github.com/sgimenez/laby/issues/53>.
5139 (lambda _
5140 (setenv "OCAMLPARAM" "safe-string=0,_")
5141 #t))
5142 (add-before 'build 'set-library-path
b3de5ff2
JN
5143 (lambda* (#:key inputs #:allow-other-keys)
5144 (let ((lablgtk (assoc-ref inputs "lablgtk")))
5145 (setenv "LD_LIBRARY_PATH"
5146 (string-append lablgtk "/lib/ocaml/stublibs"))))))
5147 #:tests? #f ; no 'check' target
5148 #:make-flags
5149 (list (string-append "PREFIX=" (assoc-ref %outputs "out")) "all")))
5150 (home-page "https://sgimenez.github.io/laby/")
5151 (synopsis "Programming game")
5152 (description "Learn programming, playing with ants and spider webs ;-)
5153Your robot ant can be programmed in many languages: OCaml, Python, C, C++,
5154Java, Ruby, Lua, JavaScript, Pascal, Perl, Scheme, Vala, Prolog. Experienced
5155programmers may also add their own favorite language.")
5156 (license license:gpl3+)))
b0488fe5
EF
5157
5158(define-public bambam
5159 (package
5160 (name "bambam")
8e77da0d 5161 (version "1.0.0")
b0488fe5
EF
5162 (source
5163 (origin
63e708f4
TGR
5164 (method git-fetch)
5165 (uri (git-reference
5166 (url "https://github.com/porridge/bambam")
8e77da0d 5167 (commit (string-append "v" version))))
63e708f4 5168 (file-name (git-file-name name version))
b0488fe5 5169 (sha256
8e77da0d 5170 (base32 "18cwd1wpyyx8y61cags9bkdhx9x858xicc4y1c9c2s0xjmgzhl3i"))))
b0488fe5
EF
5171 (build-system python-build-system)
5172 (arguments
8e77da0d 5173 `(#:tests? #f ; no tests
b0488fe5
EF
5174 #:phases
5175 (modify-phases %standard-phases
8e77da0d 5176 (delete 'build) ; nothing to build
b0488fe5
EF
5177 (replace 'install
5178 (lambda* (#:key outputs #:allow-other-keys)
5179 (let* ((out (assoc-ref outputs "out"))
5180 (bin (string-append out "/bin"))
5181 (share (string-append out "/share")))
5182 (mkdir-p bin)
5183 (copy-file "bambam.py" (string-append bin "/bambam"))
5184 (install-file "bambam.6" (string-append share "/man/man6"))
5185 (copy-recursively "data" (string-append share "/bambam/data")))
b0488fe5
EF
5186 #t)))))
5187 (inputs
5188 `(("python-pygame" ,python-pygame)))
5189 (home-page "https://github.com/porridge/bambam")
46a06224 5190 (synopsis "Keyboard mashing and doodling game for babies")
b0488fe5
EF
5191 (description "Bambam is a simple baby keyboard (and gamepad) masher
5192application that locks the keyboard and mouse and instead displays bright
5193colors, pictures, and sounds.")
5194 (license license:gpl3+)))
6b87c10f 5195
3110c74b
TGR
5196(define-public mrrescue
5197 (package
5198 (name "mrrescue")
5199 (version "1.02e")
5200 (source (origin
5201 (method url-fetch)
5202 (uri (string-append
5203 "https://github.com/SimonLarsen/mrrescue/releases/"
ed9bcf50 5204 "download/" version "/mrrescue" version ".love"))
3110c74b
TGR
5205 (file-name (string-append name "-" version ".love"))
5206 (sha256
5207 (base32
5208 "0jwzbwkgp1l5ia6c7s760gmdirbsncp6nfqp7vqdqsfb63la9gl2"))))
5209 (build-system trivial-build-system)
5210 (arguments
8893218a 5211 `(#:modules ((guix build utils))
3110c74b
TGR
5212 #:builder
5213 (begin
5214 (use-modules (guix build utils))
8893218a
TGR
5215 (let* ((out (assoc-ref %outputs "out"))
5216 (script (string-append out "/bin/" ,name))
5217 (data (string-append out "/share/" ,name))
5218 (source (assoc-ref %build-inputs "source"))
5219 (unzip (string-append (assoc-ref %build-inputs "unzip")
5220 "/bin/unzip"))
5221 (patch (string-append (assoc-ref %build-inputs "patch")
5222 "/bin/patch"))
5223 (bash (string-append (assoc-ref %build-inputs "bash")
5224 "/bin/bash"))
5225 (love (string-append (assoc-ref %build-inputs "love")
5226 "/bin/love")))
5227
5228 (mkdir-p (dirname script))
5229 (with-output-to-file script
3110c74b
TGR
5230 (lambda ()
5231 (format #t "#!~a~%" bash)
8893218a
TGR
5232 (format #t "exec -a ~a \"~a\" \"~a\"~%" ,name love data)))
5233 (chmod script #o755)
5234
5235 ;; The better way to package this game would be to install *only* the
5236 ;; script above, pointing to the unextracted .love file in the store.
5237 ;; However, mrrescue 1.02e needs to be patched to work with Love 11.
5238 ;; Instead of extracting the .love file, patching it, and re-zipping
5239 ;; it to the store, simply point the script to the extracted patched
5240 ;; data directory directly.
5241 (mkdir-p data)
5242 (with-directory-excursion data
5243 (invoke unzip source)
5244 (invoke patch "-p1" "-i"
5245 (assoc-ref %build-inputs "love-11.patch")))
3110c74b 5246 #t))))
8893218a
TGR
5247 (native-inputs
5248 `(("unzip" ,unzip)
5249 ("patch" ,patch)
5250 ("love-11.patch" ,(search-patch "mrrescue-support-love-11.patch"))))
3110c74b
TGR
5251 (inputs
5252 `(("bash" ,bash)
5253 ("love" ,love)))
e2f28609 5254 (home-page "https://tangramgames.dk/games/mrrescue")
3110c74b
TGR
5255 (synopsis "Arcade-style fire fighting game")
5256 (description
5257 "Mr. Rescue is an arcade styled 2d action game centered around evacuating
d6331fca
TGR
5258civilians from burning buildings. The game features fast-paced fire
5259extinguishing action, intense boss battles, a catchy soundtrack, and lots of
3110c74b
TGR
5260throwing people around in pseudo-randomly generated buildings.")
5261 (license (list license:zlib ; for source code
5262 license:cc-by-sa3.0)))) ; for graphics and music assets
5263
cd1869cd
KK
5264(define-public hyperrogue
5265 (package
5266 (name "hyperrogue")
edd3a256 5267 (version "11.3a")
f8279ba4
KK
5268 ;; When updating this package, be sure to update the "hyperrogue-data"
5269 ;; origin in native-inputs.
cd1869cd
KK
5270 (source (origin
5271 (method url-fetch)
5272 (uri (string-append
a01aea7d
TGR
5273 "https://www.roguetemple.com/z/hyper/hyperrogue"
5274 (string-join (string-split version #\.) "")
f8279ba4 5275 "-src.tgz"))
cd1869cd
KK
5276 (sha256
5277 (base32
edd3a256 5278 "1yxabbswq02fc5frigvs43f83m5vlxybc7n5mynkwzj2c70lfp2k"))))
cd1869cd
KK
5279 (build-system gnu-build-system)
5280 (arguments
f8279ba4 5281 `(#:tests? #f ; no check target
82402f76
KK
5282 #:make-flags '("HYPERROGUE_USE_GLEW=1"
5283 "HYPERROGUE_USE_PNG=1")
cd1869cd
KK
5284 #:phases
5285 (modify-phases %standard-phases
5286 (add-after 'set-paths 'set-sdl-paths
5287 (lambda* (#:key inputs #:allow-other-keys)
5288 (setenv "CPATH"
18caa6f5 5289 (string-append (or (getenv "CPATH") "") ":"
b6c2805c 5290 (assoc-ref inputs "sdl-union")
cd1869cd 5291 "/include/SDL"))))
cd1869cd
KK
5292 (replace 'configure
5293 (lambda* (#:key inputs outputs #:allow-other-keys)
f8279ba4
KK
5294 (let* ((out (assoc-ref outputs "out"))
5295 (share-dir (string-append out "/share/hyperrogue"))
5296 (dejavu-dir (string-append
5297 (assoc-ref inputs "font-dejavu")
5298 "/share/fonts/truetype"))
5299 (dejavu-font "DejaVuSans-Bold.ttf")
5300 (music-file "hyperrogue-music.txt"))
1bb962b4 5301 ;; Fix font and music paths.
89c9445a 5302 (substitute* "basegraph.cpp"
f8279ba4
KK
5303 ((dejavu-font)
5304 (string-append dejavu-dir "/" dejavu-font)))
f8279ba4
KK
5305 (substitute* music-file
5306 (("\\*/")
82402f76
KK
5307 (string-append share-dir "/sounds/")))
5308 (substitute* "sound.cpp"
5309 (("musicfile = \"\"")
5310 (string-append "musicfile = \""
5311 share-dir "/" music-file "\"")))
5312 ;; Disable build machine CPU optimizations and warnings treated
5313 ;; as errors.
5314 (substitute* "Makefile"
5315 (("-march=native") "")
5316 (("-Werror") "")))
cd1869cd
KK
5317 #t))
5318 (replace 'install
5319 (lambda* (#:key inputs outputs #:allow-other-keys)
5320 (let* ((out (assoc-ref outputs "out"))
5321 (bin (string-append out "/bin"))
5322 (share-dir (string-append out "/share/hyperrogue")))
5323 (mkdir-p bin)
82402f76 5324 (install-file "hyperrogue" bin)
f8279ba4
KK
5325 (install-file "hyperrogue-music.txt" share-dir))
5326 #t))
5327 (add-after 'install 'install-data
5328 (lambda* (#:key inputs outputs #:allow-other-keys)
5329 (let* ((data (assoc-ref inputs "hyperrogue-data"))
5330 (out (assoc-ref outputs "out"))
5331 (sounds (string-append out "/share/hyperrogue/sounds"))
5332 (unzip (string-append (assoc-ref inputs "unzip") "/bin/unzip")))
1bb962b4
KK
5333 ;; Extract media license information into sounds directory.
5334 (invoke unzip "-j" data
5335 (string-append
5336 "hyperrogue"
5337 (string-join (string-split ,version #\.) "")
5338 "/sounds/credits.txt") "-d" sounds)
5339 ;; Extract sounds and music into sounds directory.
5340 (invoke "unzip" "-j" data
5341 (string-append
5342 "hyperrogue"
5343 (string-join (string-split ,version #\.) "")
5344 "/*.ogg") "-d" sounds)))))))
f8279ba4
KK
5345 (native-inputs
5346 `(("hyperrogue-data"
5347 ,(origin
5348 (method url-fetch)
5349 (uri
5350 (string-append
07de94d6 5351 "https://www.roguetemple.com/z/hyper/hyperrogue"
f8279ba4
KK
5352 (string-join (string-split version #\.) "")
5353 "-win.zip"))
5354 (sha256
5355 (base32
edd3a256 5356 "11yhbia45f1w9z0j67h9nynwjqmvakr9l6rnrmdrdkzin6lvzzj4"))))
f8279ba4 5357 ("unzip" ,unzip)))
cd1869cd
KK
5358 (inputs
5359 `(("font-dejavu" ,font-dejavu)
5360 ("glew" ,glew)
5361 ("libpng" ,libpng)
5362 ("sdl-union" ,(sdl-union (list sdl
5363 sdl-gfx
5364 sdl-mixer
5365 sdl-ttf)))))
4cae7e67 5366 (home-page "https://www.roguetemple.com/z/hyper/")
cd1869cd
KK
5367 (synopsis "Non-euclidean graphical rogue-like game")
5368 (description
5369 "HyperRogue is a game in which the player collects treasures and fights
5370monsters -- rogue-like but for the fact that it is played on the hyperbolic
5371plane and not in euclidean space.
5372
5373In HyperRogue, the player can move through different parts of the world, which
a53a6b6f
TGR
5374are home to particular creatures and may be subject to their own rules of
5375\"physics\".
cd1869cd 5376
a53a6b6f
TGR
5377While the game can use ASCII characters to display the the classical rogue
5378symbols, it still needs graphics to render the non-euclidean world.")
f8279ba4
KK
5379 (license (list license:bsd-3 ; glew.c, mtrand.*
5380 license:cc-by-sa3.0 ; music
5381 license:cc-by-sa4.0 ; sounds
5382 license:cc0
5383 license:public-domain ; direntx.*, some sounds
5384 license:zlib ; savepng.*
cd1869cd 5385 license:gpl2+)))) ; remaining files
a56145e1
SW
5386
5387(define-public kobodeluxe
5388 (package
5389 (name "kobodeluxe")
5390 (version "0.5.1")
5391 (source (origin
5392 (method url-fetch)
5393 (uri (string-append "http://olofson.net/kobodl/download/KoboDeluxe-"
5394 version ".tar.bz2"))
5395 (sha256
5396 (base32
5397 "0b2wvdpnmaibsy419c16dfwj5kvd3pccby2aaqvm964x74592yqg"))
5398 (patches (search-patches
5399 "kobodeluxe-const-charp-conversion.patch"
5400 "kobodeluxe-enemies-pipe-decl.patch"
5401 "kobodeluxe-graphics-window-signed-char.patch"
5402 "kobodeluxe-manpage-minus-not-hyphen.patch"
5403 "kobodeluxe-midicon-segmentation-fault.patch"
5404 "kobodeluxe-paths.patch"))))
5405 (build-system gnu-build-system)
5406 (arguments
5407 '(#:configure-flags
5408 (list (string-append "CPPFLAGS=-I"
5409 (assoc-ref %build-inputs "sdl-union")
5410 "/include/SDL"))))
cf07ec20
MB
5411 (inputs
5412 `(("glu" ,glu)
5413 ("sdl-union" ,(sdl-union (list sdl sdl-image)))))
a56145e1
SW
5414 (synopsis "Shooter with space station destruction")
5415 (description
5416 "Kobo Deluxe is an enhanced version of Akira Higuchi's XKobo graphical game
5417for Un*x systems with X11.")
5418 (home-page "http://olofson.net/kobodl/")
5419 (license license:gpl2+)))
5430dbd9
AI
5420
5421(define-public freeciv
5422 (package
5423 (name "freeciv")
4445b3a7 5424 (version "2.6.2")
5430dbd9
AI
5425 (source
5426 (origin
5427 (method url-fetch)
b92e8da0
EF
5428 (uri (list (string-append
5429 "http://files.freeciv.org/stable/freeciv-"
5430 version ".tar.bz2")
5431 (string-append
5432 "mirror://sourceforge/freeciv/Freeciv%20"
5433 (version-major+minor version) "/" version
5434 "/freeciv-" version ".tar.bz2")))
5430dbd9 5435 (sha256
4445b3a7 5436 (base32 "13vc2xg1cf19rhbnr7k38b56b2hdapqymq5vma1l69kn7hyyz0b1"))))
5430dbd9
AI
5437 (build-system gnu-build-system)
5438 (inputs
5439 `(("curl" ,curl)
5440 ("cyrus-sasl" ,cyrus-sasl)
5441 ("gtk+" ,gtk+)
5442 ("sdl-mixer" ,sdl-mixer)
5443 ("zlib" ,zlib)))
5444 (native-inputs
5445 `(("pkg-config" ,pkg-config)))
5446 (home-page "http://www.freeciv.org/")
d6ca9faf
TGR
5447 (synopsis "Turn-based empire building strategy game")
5448 (description "Freeciv is a turn-based empire building strategy game
5430dbd9
AI
5449inspired by the history of human civilization. The game commences in
5450prehistory and your mission is to lead your tribe from the Stone Age
d6ca9faf 5451into the Space Age.")
5430dbd9 5452 (license license:gpl2+)))
345504c7 5453
5454(define-public no-more-secrets
5455 (package
5456 (name "no-more-secrets")
4c4f1871 5457 (version "0.3.3")
345504c7 5458 (source
5459 (origin
146a4459
TGR
5460 (method git-fetch)
5461 (uri (git-reference
b0e7b699 5462 (url "https://github.com/bartobri/no-more-secrets")
146a4459
TGR
5463 (commit (string-append "v" version))))
5464 (file-name (git-file-name name version))
345504c7 5465 (sha256
146a4459 5466 (base32 "1zfv4qabikf8w9winsr4brxrdvs3f0d7xvydksyx8bydadsm2v2h"))))
345504c7 5467 (build-system gnu-build-system)
5468 (arguments
5469 `(#:tests? #f
5470 #:make-flags (list "CC=gcc" "all-ncurses"
5471 (string-append "prefix="
5472 (assoc-ref %outputs "out")))
5473 #:phases
5474 (modify-phases %standard-phases
5475 (delete 'configure))))
5476 (inputs
5477 `(("ncurses" ,ncurses)))
5478 (home-page "https://github.com/bartobri/no-more-secrets")
5479 (synopsis "Recreation of data decryption effect in \"Sneakers\"")
5480 (description
5481 "@code{No More Secrets} provides a command line tool called \"nms\"
5482that recreates the famous data decryption effect seen on screen in the 1992
5483movie \"Sneakers\".
5484
5485This command works on piped data. Pipe any ASCII or UTF-8 text to nms, and
5486it will apply the hollywood effect, initially showing encrypted data, then
5487starting a decryption sequence to reveal the original plaintext characters.")
5488 (license license:expat)))
fb731c92
AI
5489
5490(define-public megaglest-data
5491 (package
5492 (name "megaglest-data")
5493 (version "3.13.0")
5494 (source
5495 (origin
5496 (method url-fetch)
5497 (uri (string-append
5498 "https://github.com/MegaGlest/megaglest-data"
5499 "/releases/download/" version "/megaglest-data-"
5500 version ".tar.xz"))
5501 (sha256
5502 (base32
5503 "0ipgza33z89fw3si32iafm981f3fvm0zldvbxj29whghd2k3rpj3"))))
5504 (build-system cmake-build-system)
5505 (arguments
5506 `(#:tests? #f))
5507 (home-page "https://megaglest.org/")
5508 (synopsis "Data files for MegaGlest")
5509 (description "This package contains the data files required for MegaGlest.")
5510 (license license:cc-by-sa3.0)))
0b608ec4
AI
5511
5512(define-public megaglest
5513 (package
5514 (name "megaglest")
5515 (version "3.13.0")
5516 (source
5517 (origin
5518 (method url-fetch)
5519 (uri (string-append
5520 "https://github.com/MegaGlest/megaglest-source"
5521 "/releases/download/" version "/megaglest-source-"
5522 version ".tar.xz"))
5523 (sha256
5524 (base32
5525 "1ffck3ii1wp5k3nn5p0ga06jgp7pzk4zw0xln3xim2w7qrxzdzh9"))))
5526 (build-system cmake-build-system)
5527 (inputs
5528 `(("curl" ,curl)
5529 ("fontconfig" ,fontconfig)
5530 ("ftgl" ,ftgl)
5531 ("glew" ,glew)
5532 ("libjpeg-turbo" ,libjpeg-turbo)
5533 ("megaglest-data" ,megaglest-data)
5534 ("mesa" ,mesa)
5535 ("miniupnpc" ,miniupnpc)
5536 ("openal" ,openal)
5537 ("libircclient" ,libircclient)
5538 ("libpng" ,libpng)
5539 ("libvorbis" ,libvorbis)
5540 ("lua" ,lua)
5541 ("sdl2" ,sdl2)
5542 ("wxwidgets" ,wxwidgets)))
5543 (native-inputs
5544 `(("cppunit" ,cppunit)
5545 ("pkg-config" ,pkg-config)))
5546 (arguments
5547 `(#:configure-flags
5548 (list (string-append "-DCUSTOM_DATA_INSTALL_PATH="
5549 (assoc-ref %build-inputs "megaglest-data")
5550 "/share/megaglest")
5551 "-DBUILD_MEGAGLEST_TESTS=ON")
5552 #:phases
5553 (modify-phases %standard-phases
5554 (add-after 'unpack 'fix-ini-search-path
5555 (lambda* (#:key outputs #:allow-other-keys)
5556 (substitute* "source/glest_game/global/config.cpp"
5557 (("/usr/share/megaglest/")
5558 (string-append (assoc-ref outputs "out")
5559 "/share/megaglest/"))))))
5560 #:test-target "megaglest_tests"))
5561 (home-page "https://megaglest.org/")
5562 (synopsis "3D real-time strategy (RTS) game")
5563 (description "MegaGlest is a cross-platform 3D real-time strategy (RTS)
5564game, where you control the armies of one of seven different factions: Tech,
5565Magic, Egypt, Indians, Norsemen, Persian or Romans.")
5566 (license license:gpl2+)))
6bb9c854
RW
5567
5568(define-public freegish
5569 (let ((commit "8795cd7adc95957883f2d3465eb9036a774667a7")
5570 (revision "1"))
5571 (package
5572 (name "freegish")
5573 (version (string-append "0-" revision "." (string-take commit 9)))
5574 (source (origin
5575 (method git-fetch)
5576 (uri (git-reference
b0e7b699 5577 (url "https://github.com/freegish/freegish")
6bb9c854 5578 (commit commit)))
661ad6f0 5579 (file-name (git-file-name name version))
6bb9c854
RW
5580 (sha256
5581 (base32
5582 "1p1zf5qqagmcpi1db2bs02cnalpy3qiymp6yzan7k1bhmv859gsx"))
5583 (modules '((guix build utils)))
5584 ;; The audio files in the "music" directory are licensed under
5585 ;; CC-BY-NC, so we delete them.
5586 (snippet
5587 '(begin
5588 (delete-file-recursively "music")
5589 #t))))
5590 (build-system cmake-build-system)
5591 (arguments
5592 `(#:tests? #f ; no tests included
5593 #:configure-flags
5594 (list "-DCMAKE_INSTALL_FHS=ON")
5595 #:phases
5596 (modify-phases %standard-phases
5597 (add-after 'unpack 'set-DATAPATH
5598 (lambda* (#:key outputs #:allow-other-keys)
5599 (substitute* "CMakeLists.txt"
5600 (("^option\\(INSTALL_FHS" line)
5601 (string-append "add_definitions(-DDATAPATH=\""
5602 (assoc-ref outputs "out") "/share/freegish\")\n"
5603 line)))
5604 #t)))))
5605 (inputs
5606 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))
5607 ("openal" ,openal)
5608 ("libvorbis" ,libvorbis)
5609 ("libogg" ,libogg)
5610 ("mesa" ,mesa)
5611 ("libpng" ,libpng)
5612 ("zlib" ,zlib)))
5613 (home-page "https://github.com/freegish/freegish")
5614 (synopsis "Side-scrolling physics platformer with a ball of tar")
5615 (description "In FreeGish you control Gish, a ball of tar who lives
5616happily with his girlfriend Brea, until one day a mysterious dark creature
5617emerges from a sewer hole and pulls her below ground.")
5618 ;; The textures are available under the Expat license. All other assets
5619 ;; (including levels) are covered under CC-BY-SA or public domain. The
5620 ;; source code is under GPLv2+.
5621 (license (list license:gpl2+
5622 license:expat
5623 license:public-domain
5624 license:cc-by-sa3.0)))))
f0f7bf95
RW
5625
5626(define-public cdogs-sdl
6e65eb3c
TGR
5627 (package
5628 (name "cdogs-sdl")
0c82f6ad
NG
5629 (version "0.8.0")
5630 (source
5631 (origin
5632 (method git-fetch)
5633 (uri (git-reference
b0e7b699 5634 (url "https://github.com/cxong/cdogs-sdl")
0c82f6ad
NG
5635 (commit version)))
5636 (file-name (git-file-name name version))
5637 (sha256
5638 (base32 "0vx37zb2iw7sfw5a2bs97ydlmb301nvy485ybdm8g46c5hn9s13c"))))
6e65eb3c
TGR
5639 (build-system cmake-build-system)
5640 (arguments
5641 `(#:configure-flags
5642 (list (string-append "-DCDOGS_DATA_DIR="
5643 (assoc-ref %outputs "out")
5644 "/share/cdogs-sdl/"))))
0c82f6ad
NG
5645 (native-inputs
5646 `(("pkg-config" ,pkg-config)))
6e65eb3c 5647 (inputs
0c82f6ad
NG
5648 `(("gtk+" ,gtk+)
5649 ("mesa" ,mesa)
6e65eb3c
TGR
5650 ("sdl2" ,sdl2)
5651 ("sdl2-image" ,sdl2-image)
5652 ("sdl2-mixer" ,sdl2-mixer)))
5653 (home-page "https://cxong.github.io/cdogs-sdl/")
5654 (synopsis "Classic overhead run-and-gun game")
5655 (description "C-Dogs SDL is a classic overhead run-and-gun game,
f0f7bf95
RW
5656supporting up to 4 players in co-op and deathmatch modes. Customize your
5657player, choose from many weapons, and blast, slide and slash your way through
5658over 100 user-created campaigns.")
6e65eb3c
TGR
5659 ;; GPLv2+ for code (includes files under BSD-2 and BSD-3),
5660 ;; CC0/CC-BY/CC-BY-SA for assets.
5661 (license (list license:gpl2+
5662 license:bsd-2
5663 license:bsd-3
5664 license:cc0
5665 license:cc-by3.0
5666 license:cc-by-sa3.0))))
bd71525b 5667
649220ad 5668(define-public kiki
bd71525b 5669 (package
649220ad 5670 (name "kiki")
bd71525b
RW
5671 (version "1.0.2")
5672 (source (origin
5673 (method url-fetch)
5674 (uri (string-append "mirror://sourceforge/kiki/kiki-src/"
5675 version "/kiki-" version "-src.tgz"))
5676 (sha256
5677 (base32
5678 "0ihjdsxbn8z3cz0gpcprafiipcqaiskgdnh1rhmw4qff8dszalbn"))
5679 (modules '((guix build utils)))
5680 (snippet
5681 '(begin
5682 (for-each delete-file (find-files "." "\\.dll$"))
5683 #t))
5684 (patches
5685 (search-patches "kiki-level-selection-crash.patch"
5686 "kiki-makefile.patch"
5687 "kiki-missing-includes.patch"
5688 "kiki-portability-64bit.patch"))))
5689 (build-system gnu-build-system)
5690 (arguments
5691 `(#:tests? #f ; there are no tests
5692 #:make-flags '("CXX=g++")
5693 #:phases
5694 (modify-phases %standard-phases
5695 (replace 'configure
5696 (lambda* (#:key inputs outputs #:allow-other-keys)
5697 (setenv "CPLUS_INCLUDE_PATH"
5698 (string-append (assoc-ref inputs "sdl-union")
5699 "/include/SDL:"
5700 (assoc-ref inputs "python")
7cf79d7a
MB
5701 "/include/python2.7:"
5702 (or (getenv "CPLUS_INCLUDE_PATH") "")))
bd71525b
RW
5703 (substitute* "src/main/main.cpp"
5704 (("#include <SDL.h>" line)
5705 (string-append line "
5706#define K_INCLUDE_GLUT
5707#include \"KIncludeTools.h\""))
5708 (("// initialize SDL" line)
5709 (string-append "glutInit(&argc,argv);\n" line)))
5710 (substitute* "src/main/KikiController.cpp"
5711 (("getenv\\(\"KIKI_HOME\"\\)")
5712 (string-append "\"" (assoc-ref outputs "out") "/share/kiki/\"")))
5713 (substitute* "linux/Makefile"
5714 (("CXXOPTS =" line)
5715 (string-append line " -fpermissive"))
5716 (("PYTHON_VERSION=.*") "PYTHON_VERSION=2.7")
5717 (("PYTHONHOME =.*")
5718 (string-append "PYTHONHOME = "
5719 (assoc-ref inputs "python")
5720 "/lib/python2.7/"))
5721 (("\\$\\(GLLIBS\\)" line)
5722 (string-append line " -lm -lpython2.7")))
5723 (substitute* "src/main/KikiPythonWidget.h"
5724 (("#define __KikiPythonWidget" line)
5725 (string-append line "\n#include \"KikiPython.h\"")))
5726 #t))
5727 (add-before 'build 'build-kodilib
5728 (lambda* (#:key make-flags #:allow-other-keys)
5729 (with-directory-excursion "kodilib/linux"
ff61aee8 5730 (apply invoke "make" make-flags))))
bd71525b
RW
5731 (add-after 'build-kodilib 'chdir
5732 (lambda _ (chdir "linux") #t))
5733 (replace 'install
5734 (lambda* (#:key outputs #:allow-other-keys)
5735 (let* ((out (assoc-ref outputs "out"))
5736 (bin (string-append out "/bin"))
5737 (share (string-append out "/share/kiki")))
5738 (mkdir-p bin)
5739 (mkdir-p share)
5740 (install-file "kiki" bin)
5741 (copy-recursively "../py" (string-append share "/py"))
5742 (copy-recursively "../sound" (string-append share "/sound"))
5743 #t))))))
5744 (inputs
5745 `(("glu" ,glu)
5746 ;; Kiki builds fine with freeglut 3.0.0 but segfaults on start.
5747 ("freeglut" ,freeglut-2.8)
5748 ("sdl-union" ,(sdl-union (list sdl
5749 sdl-mixer
5750 sdl-image)))
5751 ("python" ,python-2)))
5752 (native-inputs
5753 `(("swig" ,swig)))
5754 (home-page "http://kiki.sourceforge.net/")
5755 (synopsis "3D puzzle game")
5756 (description "Kiki the nano bot is a 3D puzzle game. It is basically a
5757mixture of the games Sokoban and Kula-World. Your task is to help Kiki, a
5758small robot living in the nano world, repair its maker.")
5759 ;; See <http://metadata.ftp-master.debian.org/changelogs/main/k/
5760 ;; kiki-the-nano-bot/kiki-the-nano-bot_1.0.2+dfsg1-4_copyright>
5761 ;; for a statement from the author.
5762 (license license:public-domain)))
b77e3a1c
RW
5763
5764(define-public teeworlds
5765 (package
5766 (name "teeworlds")
53b9cdd5 5767 (version "0.7.5")
b77e3a1c 5768 (source (origin
f9e5caf9
AV
5769 (method git-fetch)
5770 (uri (git-reference
b0e7b699 5771 (url "https://github.com/teeworlds/teeworlds")
f9e5caf9
AV
5772 (commit version)))
5773 (file-name (git-file-name name version))
b77e3a1c
RW
5774 (sha256
5775 (base32
53b9cdd5 5776 "169dl83q08zl4h813az8hjs4rs3dms9yjn6bnsld4fjcj0imvvc6"))
f9e5caf9
AV
5777 (modules '((guix build utils)
5778 (ice-9 ftw)
5779 (ice-9 regex)
5780 (srfi srfi-1)
5781 (srfi srfi-26)))
5782 (snippet ; remove bundled libraries except md5
5783 '(let ((base-dir "src/engine/external/"))
5784 (for-each (compose (cut delete-file-recursively <>)
5785 (cut string-append base-dir <>))
5786 (remove (cut string-match "(^.)|(^md5$)" <>)
5787 (scandir base-dir)))
b74f7f06 5788 #t))))
b77e3a1c
RW
5789 (build-system gnu-build-system)
5790 (arguments
7aed8b8a 5791 `(#:tests? #f ; no tests included
f9e5caf9
AV
5792 #:modules ((guix build gnu-build-system)
5793 (guix build utils)
5794 (srfi srfi-26))
b77e3a1c
RW
5795 #:phases
5796 (modify-phases %standard-phases
5797 (replace 'configure
5798 (lambda* (#:key outputs #:allow-other-keys)
5799 ;; Embed path to assets.
5800 (substitute* "src/engine/shared/storage.cpp"
5801 (("#define DATA_DIR.*")
5802 (string-append "#define DATA_DIR \""
5803 (assoc-ref outputs "out")
5804 "/share/teeworlds/data"
5805 "\"")))
5806
5807 ;; Bam expects all files to have a recent time stamp.
f9e5caf9 5808 (for-each (cut utime <> 1 1)
b77e3a1c
RW
5809 (find-files "."))
5810
5811 ;; Do not use bundled libraries.
5812 (substitute* "bam.lua"
f9e5caf9
AV
5813 (("local json = Compile.+$")
5814 "local json = nil
5815settings.link.libs:Add(\"jsonparser\")")
5816 (("local png = Compile.+$")
5817 "local png = nil
5818settings.link.libs:Add(\"pnglite\")")
5819 (("local wavpack = Compile.+$")
5820 "local wavpack = nil
5821settings.link.libs:Add(\"wavpack\")")
5822 (("if config\\.zlib\\.value == 1")
5823 "if config.zlib.value"))
5824 (substitute* "src/engine/client/graphics_threaded.cpp"
5825 (("engine/external/pnglite/pnglite\\.h")
5826 "pnglite.h"))
b77e3a1c 5827 (substitute* "src/engine/client/sound.cpp"
f9e5caf9
AV
5828 (("engine/external/wavpack/wavpack\\.h")
5829 "wavpack/wavpack.h"))
b77e3a1c
RW
5830 #t))
5831 (replace 'build
5832 (lambda _
f9e5caf9 5833 (invoke "bam" "-a" "-v" "conf=release")))
b77e3a1c
RW
5834 (replace 'install
5835 (lambda* (#:key outputs #:allow-other-keys)
f9e5caf9
AV
5836 (let* ((arch ,(system->linux-architecture
5837 (or (%current-target-system)
5838 (%current-system))))
076fe846
OP
5839 (build (string-append "build/" (if (string=? arch "i386")
5840 "x86" arch)
5841 "/release/"))
f9e5caf9
AV
5842 (data-built (string-append build "data/"))
5843 (out (assoc-ref outputs "out"))
5844 (bin (string-append out "/bin/"))
5845 (data (string-append out "/share/teeworlds/data/")))
5846 (for-each (cut install-file <> bin)
5847 (map (cut string-append build <>)
5848 '("teeworlds" "teeworlds_srv")))
5849 (copy-recursively data-built data)
b77e3a1c 5850 #t))))))
b77e3a1c
RW
5851 (inputs
5852 `(("freetype" ,freetype)
5853 ("glu" ,glu)
f9e5caf9 5854 ("json-parser" ,json-parser)
b77e3a1c 5855 ("mesa" ,mesa)
f9e5caf9
AV
5856 ("pnglite" ,pnglite)
5857 ("sdl2" ,sdl2)
5858 ("sdl2-image" ,sdl2-image)
5859 ("sdl2-mixer" ,sdl2-mixer)
b77e3a1c
RW
5860 ("wavpack" ,wavpack)
5861 ("zlib" ,zlib)))
5862 (native-inputs
5863 `(("bam" ,bam)
f9e5caf9 5864 ("python" ,python-wrapper)
e402a66b 5865 ("pkg-config" ,pkg-config)))
b77e3a1c
RW
5866 (home-page "https://www.teeworlds.com")
5867 (synopsis "2D retro multiplayer shooter game")
5868 (description "Teeworlds is an online multiplayer game. Battle with up to
586916 players in a variety of game modes, including Team Deathmatch and Capture
5870The Flag. You can even design your own maps!")
5871 (license license:bsd-3)))
e02f1663 5872
162a4a03
RW
5873(define-public enigma
5874 (package
5875 (name "enigma")
5876 (version "1.21")
5877 (source (origin
5878 (method url-fetch)
5879 (uri (string-append "mirror://sourceforge/enigma-game/"
5880 "Release%20" version "/enigma-"
5881 version ".tar.gz"))
5882 (sha256
5883 (base32
5884 "00ffh9pypj1948pg3q9sjp1nmiabh52p5c8wpg9n1dcfgl3cywnq"))))
5885 (build-system gnu-build-system)
5886 (arguments
5887 `(#:configure-flags
5888 (list "--with-system-enet")
5889 #:phases
5890 (modify-phases %standard-phases
0b95f51e
MB
5891 (add-after 'unpack 'fix-build-with-new-gcc
5892 (lambda _
5893 ;; Fix build with GCC6 and later by avoiding comparing ifstream
5894 ;; to NULL. Can be removed for versions > 1.21.
5895 (substitute* "src/lev/Proxy.cc"
5896 (("ifs != NULL")
5897 "ifs"))
5898 #t))
162a4a03
RW
5899 (add-after 'unpack 'find-sdl
5900 (lambda _
5901 (substitute* "configure"
5902 (("SDL_ttf.h") "SDL/SDL_ttf.h"))
5903 (substitute* '("tools/ttf2bmf.cc"
5904 "lib-src/enigma-core/ecl_font.cc"
5905 "lib-src/enigma-core/ecl_video.cc"
5906 "lib-src/enigma-core/ecl_buffer.hh"
5907 "src/SoundEngine.cc"
5908 "src/SoundEngine.hh"
5909 "src/MusicManager.cc"
5910 "src/MusicManager.hh"
5911 "src/d_models.cc"
5912 "src/main.cc"
5913 "src/network.cc")
5914 (("#include \"SDL_(image|ttf|mixer|types|syswm|mutex).h\"" line header)
5915 (string-append "#include \"SDL/SDL_" header ".h\"")))
5916 (substitute* "src/main.cc"
5917 (("#include <SDL_(image|ttf|mixer).h>" line header)
5918 (string-append "#include \"SDL/SDL_" header ".h\"")))
5919 #t)))))
5920 (inputs
5921 `(("xerces-c" ,xerces-c)
5922 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
5923 ("curl" ,curl)
5924 ("enet" ,enet)))
5925 (native-inputs
5926 `(("pkg-config" ,pkg-config)
5927 ("imagemagick" ,imagemagick)))
340978d7 5928 (home-page "https://www.nongnu.org/enigma")
162a4a03
RW
5929 (synopsis "Puzzle game with a dexterity component")
5930 (description "Enigma is a puzzle game with 550 unique levels. The object
5931of the game is to find and uncover pairs of identically colored ‘Oxyd’ stones.
5932Simple? Yes. Easy? Certainly not! Hidden traps, vast mazes, laser beams,
5933and most of all, countless hairy puzzles usually block your direct way to the
5934Oxyd stones. Enigma’s game objects (and there are hundreds of them, lest you
5935get bored) interact in many unexpected ways, and since many of them follow the
5936laws of physics (Enigma’s special laws of physics, that is), controlling them
5937with the mouse isn’t always trivial.")
5938 (license license:gpl2+)))
5939
10d53153
CLW
5940(define-public chroma
5941 (package
5942 (name "chroma")
9cf65f05 5943 (version "1.17")
10d53153
CLW
5944 (source (origin
5945 (method url-fetch)
5946 (uri (string-append "http://level7.org.uk/chroma/download/chroma-"
5947 version ".tar.bz2"))
5948 (sha256
5949 (base32
9cf65f05 5950 "047sf00x71xbmi8bqrhfbmr9bk89l2gbykkqsfpw4wz6yfjscs6y"))))
10d53153
CLW
5951 (build-system gnu-build-system)
5952 (arguments
982a6e79
JG
5953 `(#:tests? #f ; no tests included
5954 #:configure-flags '("CFLAGS=-fgnu89-inline"))) ; fix inlines
10d53153
CLW
5955 (inputs
5956 `(("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
5957 ("freetype" ,freetype)
5958 ("ncurses" ,ncurses)
5959 ("fontconfig" ,fontconfig)
5960 ("libxft" ,libxft)))
5961 (native-inputs
5962 `(("pkg-config" ,pkg-config)))
5963 (home-page "http://level7.org.uk/chroma/")
5964 (synopsis "Abstract puzzle game")
5965 (description "Chroma is an abstract puzzle game. A variety of colourful
5966shapes are arranged in a series of increasingly complex patterns, forming
371a647e
NG
5967fiendish traps that must be disarmed and mysterious puzzles that must be
5968manipulated in order to give up their subtle secrets. Initially so
5969straightforward that anyone can pick it up and begin to play, yet gradually
5970becoming difficult enough to tax even the brightest of minds.")
10d53153
CLW
5971 (license license:gpl2+)))
5972
649220ad 5973(define-public fillets-ng
e02f1663 5974 (package
649220ad 5975 (name "fillets-ng")
e02f1663
RW
5976 (version "1.0.1")
5977 (source (origin
5978 (method url-fetch)
5979 (uri (string-append "mirror://sourceforge/fillets/"
5980 "Fish%20Fillets%20-%20Next%20Generation/"
5981 version "/fillets-ng-" version ".tar.gz"))
5982 (sha256
5983 (base32
5984 "1nljp75aqqb35qq3x7abhs2kp69vjcj0h1vxcpdyn2yn2nalv6ij"))))
5985 (build-system gnu-build-system)
5986 (arguments
5987 `(#:configure-flags
5988 (list (string-append "--with-lua="
5989 (assoc-ref %build-inputs "lua")))
5990 #:make-flags
5991 (list (string-append "CFLAGS=-I"
5992 (assoc-ref %build-inputs "sdl-union")
5993 "/include/SDL")
5994 (string-append "CXXFLAGS=-I"
5995 (assoc-ref %build-inputs "sdl-union")
5996 "/include/SDL"))
5997 #:phases
5998 (modify-phases %standard-phases
5999 ;; Lua 5.1 does not provide it.
6000 (add-after 'unpack 'do-not-link-with-lualib
6001 (lambda _
6002 (substitute* "configure"
6003 (("-llualib") ""))
6004 #t))
6005 (add-after 'install 'install-data
6006 (lambda* (#:key inputs outputs #:allow-other-keys)
6007 (let ((data (string-append (assoc-ref outputs "out")
6008 "/share/games/fillets-ng")))
6009 (mkdir-p data)
f08d34a0
RW
6010 (invoke "tar" "-xvf"
6011 (assoc-ref inputs "fillets-ng-data")
6012 "--strip-components=1"
6013 "-C" data)))))))
e02f1663
RW
6014 (inputs
6015 `(("sdl-union" ,(sdl-union (list sdl
6016 sdl-mixer
6017 sdl-image
6018 sdl-ttf)))
6019 ("fribidi" ,fribidi)
6020 ("libx11" ,libx11)
6021 ("lua" ,lua-5.1)))
6022 (native-inputs
6023 `(("pkg-config" ,pkg-config)
6024 ("fillets-ng-data"
6025 ,(origin
6026 (method url-fetch)
6027 (uri (string-append "mirror://sourceforge/fillets/"
6028 "Fish%20Fillets%20-%20Next%20Generation/"
6029 version "/fillets-ng-data-" version ".tar.gz"))
6030 (sha256
6031 (base32
6032 "169p0yqh2gxvhdilvjc2ld8aap7lv2nhkhkg4i1hlmgc6pxpkjgh"))))))
6033 (home-page "http://fillets.sourceforge.net/")
6034 (synopsis "Puzzle game")
6035 (description "Fish Fillets NG is strictly a puzzle game. The goal in
6036every of the seventy levels is always the same: find a safe way out. The fish
6037utter witty remarks about their surroundings, the various inhabitants of their
6038underwater realm quarrel among themselves or comment on the efforts of your
6039fish. The whole game is accompanied by quiet, comforting music.")
6040 (license license:gpl2+)))
dd37a545 6041
649220ad 6042(define-public crawl
dd37a545 6043 (package
649220ad 6044 (name "crawl")
7fc273fe 6045 (version "0.25.0")
dd37a545 6046 (source
6047 (origin
6048 (method url-fetch)
6049 (uri (list
6050 ;; Older releases get moved into a versioned directory
6051 (string-append "http://crawl.develz.org/release/"
6052 (version-major+minor version) "/stone_soup-"
6053 version "-nodeps.tar.xz")
6054 ;; Only the latest release is in this directory
6055 (string-append "http://crawl.develz.org/release/stone_soup-"
6056 version "-nodeps.tar.xz")))
6057 (sha256
7fc273fe
CLW
6058 (base32 "0rn1wjxdqw33caiwisfypm1j8cid3c9pz01ahicl17144zs29z3d"))
6059 (patches (search-patches "crawl-upgrade-saves.patch"))
6060 ;; The 0.25.0 -nodeps.tar.xz was built from an OSX machine; normally
6061 ;; apparently it's built from a Debian machine before the Debian
6062 ;; packages are made. These ._* files are binary and have the string
6063 ;; "Mac OS X" in them... removing these seems to result in compilation
6064 ;; again.
6065 (modules '((guix build utils)))
6066 (snippet
6067 '(begin
6068 (for-each delete-file (find-files "." "^\\._"))
6069 #t))))
dd37a545 6070 (build-system gnu-build-system)
6071 (inputs
6072 `(("lua51" ,lua-5.1)
6073 ("ncurses" ,ncurses)
6074 ("sqlite" ,sqlite)
6075 ("zlib" ,zlib)))
6076 (native-inputs
6077 `(("bison" ,bison)
6078 ("flex" ,flex)
6079 ("perl" ,perl)
fc7d6bc6 6080 ("python" ,python-wrapper)
e366521a 6081 ("python-pyyaml" ,python-pyyaml)
dd37a545 6082 ("pkg-config" ,pkg-config)))
6083 (arguments
a5c8460a 6084 `(#:make-flags
dd37a545 6085 (let* ((sqlite (assoc-ref %build-inputs "sqlite"))
6086 (out (assoc-ref %outputs "out")))
6087 (list (string-append "SQLITE_INCLUDE_DIR=" sqlite "/include")
6088 (string-append "prefix=" out)
6089 "SAVEDIR=~/.crawl"
564df7e5 6090 ;; Don't compile with SSE on systems which don't have it.
a5c8460a
EF
6091 ,@(match (%current-system)
6092 ((or "i686-linux" "x86_64-linux")
6093 '())
6094 (_ '("NOSSE=TRUE")))
dd37a545 6095 ;; don't build any bundled dependencies
6096 "BUILD_LUA="
6097 "BUILD_SQLITE="
6098 "BUILD_ZLIB="
6099 "-Csource"))
6100 #:phases
6101 (modify-phases %standard-phases
606c1987
EF
6102 (add-after 'unpack 'find-SDL-image
6103 (lambda _
6104 (substitute* "source/windowmanager-sdl.cc"
6105 (("SDL_image.h") "SDL2/SDL_image.h"))
6106 #t))
dd37a545 6107 (delete 'configure)
e366521a 6108 (replace 'check
dd37a545 6109 (lambda* (#:key inputs outputs make-flags #:allow-other-keys)
6110 (setenv "HOME" (getcwd))
6111 ;; Fake a terminal for the test cases.
6112 (setenv "TERM" "xterm-256color")
e366521a
KK
6113 ;; Run the tests that don't require a debug build.
6114 (apply invoke "make" "nondebugtest"
d59a8ac6
RW
6115 (format #f "-j~d" (parallel-job-count))
6116 ;; Force command line build for test cases.
6117 (append make-flags '("GAME=crawl" "TILES="))))))))
dd37a545 6118 (synopsis "Roguelike dungeon crawler game")
36a0b5b4
PN
6119 (description "Dungeon Crawl Stone Soup (also known as \"Crawl\" or DCSS
6120for short) is a roguelike adventure through dungeons filled with dangerous
6121monsters in a quest to find the mystifyingly fabulous Orb of Zot.")
dd37a545 6122 (home-page "https://crawl.develz.org")
6123 (license (list license:gpl2+
6124 license:bsd-2
6125 license:bsd-3
6126 license:cc0
6127 license:expat
6128 license:zlib
6129 license:asl2.0))))
cae491ab 6130
1243aaac 6131;; The linter here claims that patch file names should start with the package
6132;; name. But, in this case, the patches are inherited from crawl with the
6133;; "crawl-" prefix instead of "crawl-tiles-".
649220ad 6134(define-public crawl-tiles
ae548434 6135 (package
649220ad
NG
6136 (inherit crawl)
6137 (name "crawl-tiles")
ae548434 6138 (arguments
6139 (substitute-keyword-arguments
6140 (package-arguments crawl)
6141 ((#:make-flags flags)
6142 `(let ((dejavu (assoc-ref %build-inputs "font-dejavu")))
6143 (cons*
6144 (string-append "PROPORTIONAL_FONT=" dejavu
6145 "/share/fonts/truetype/DejaVuSans.ttf")
6146 (string-append "MONOSPACED_FONT=" dejavu
6147 "/share/fonts/truetype/DejaVuSansMono.ttf")
6148 "TILES=y"
6149 ;; Rename the executable to allow parallel installation with crawl.
6150 "GAME=crawl-tiles"
6151 ,flags)))))
6152 (inputs
6153 `(,@(package-inputs crawl)
6154 ("font-dejavu" ,font-dejavu)
6155 ("freetype6" ,freetype)
6156 ("glu" ,glu)
6157 ("libpng" ,libpng)
6158 ("sdl2" ,sdl2)
6159 ("sdl2-image" ,sdl2-image)
6160 ("sdl2-mixer" ,sdl2-mixer)))
6161 (native-inputs
6162 `(,@(package-native-inputs crawl)
6438a468 6163 ("pngcrush" ,pngcrush)
ae548434 6164 ("which" ,which)))
6165 (synopsis "Graphical roguelike dungeon crawler game")))
6166
cae491ab
JL
6167(define-public lugaru
6168 (package
6169 (name "lugaru")
6170 (version "1.2")
6171 (source (origin
6172 (method url-fetch)
6173 (uri (string-append "https://bitbucket.org/osslugaru/lugaru/downloads/"
30b8b201 6174 "lugaru-" version ".tar.xz"))
cae491ab
JL
6175 (sha256
6176 (base32
6177 "15zgcshy22q51rm72zi6y9z7qlgnz5iw3gczjdlir4bqmxy4gspk"))))
6178 (build-system cmake-build-system)
6179 (arguments
6180 `(#:configure-flags
6181 (list "-DSYSTEM_INSTALL=ON")
6182 ;; no test target
6183 #:tests? #f))
6184 (native-inputs
6185 `(("pkg-config" ,pkg-config)))
6186 (inputs
6187 `(("sdl2" ,sdl2)
6188 ("glu" ,glu)
6189 ("libjpeg" ,libjpeg-turbo)
6190 ("libpng" ,libpng)
6191 ("openal" ,openal)
6192 ("vorbis" ,libvorbis)
6193 ("zlib" ,zlib)))
6194 (home-page "https://osslugaru.gitlab.io")
6195 (synopsis "Cross-platform third-person action game")
6196 (description "Lugaru is a third-person action game. The main character,
6197Turner, is an anthropomorphic rebel bunny rabbit with impressive combat skills.
6198In his quest to find those responsible for slaughtering his village, he uncovers
6199a far-reaching conspiracy involving the corrupt leaders of the rabbit republic
6200and the starving wolves from a nearby den. Turner takes it upon himself to
6201fight against their plot and save his fellow rabbits from slavery.")
6202 (license (list license:gpl2+ ; code
6203 ;; assets:
6204 license:cc-by-sa3.0
6205 license:cc-by-sa4.0))))
bff33e6c
CL
6206
6207(define-public 0ad-data
6208 (package
6209 (name "0ad-data")
8c00379c 6210 (version "0.0.23b-alpha")
bff33e6c
CL
6211 (source
6212 (origin
6213 (method url-fetch)
706d6190 6214 (uri (string-append "https://releases.wildfiregames.com/0ad-"
bff33e6c
CL
6215 version "-unix-data.tar.xz"))
6216 (file-name (string-append name "-" version ".tar.xz"))
6217 (sha256
6218 (base32
8c00379c 6219 "04x7729hk6zw1xj3n4s4lvaviijsnbjf5rhzvjxlr5fygvg4l6z1"))
bff33e6c
CL
6220 (modules '((guix build utils)))
6221 (snippet
6222 #~(begin
6cbee49d
MW
6223 (for-each (lambda (name)
6224 (let* ((dir (string-append "binaries/data/mods/" name))
6225 (file (string-append dir "/" name ".zip"))
6226 (unzip #$(file-append unzip "/bin/unzip")))
6715e1c2 6227 (invoke unzip "-d" dir file)
6cbee49d
MW
6228 (delete-file file)))
6229 '("mod" "public"))
bff33e6c
CL
6230 #t))))
6231 (build-system trivial-build-system)
6232 (native-inputs `(("tar" ,tar)
6233 ("xz" ,xz)))
6234 (arguments
6235 `(#:modules ((guix build utils))
6236 #:builder
6237 (begin
6238 (use-modules (guix build utils))
6239 (let ((out (assoc-ref %outputs "out"))
6240 (source (assoc-ref %build-inputs "source"))
6241 (tar (string-append (assoc-ref %build-inputs "tar") "/bin/tar"))
6242 (xz-path (string-append (assoc-ref %build-inputs "xz") "/bin")))
6243 (setenv "PATH" xz-path)
6244 (mkdir out)
e3cfef22 6245 (invoke tar "xvf" source "-C" out "--strip=3")))))
bff33e6c
CL
6246 (synopsis "Data files for 0ad")
6247 (description "0ad-data provides the data files required by the game 0ad.")
6248 (home-page "https://play0ad.com")
6249 (license (list (license:fsdg-compatible
6250 "http://tavmjong.free.fr/FONTS/ArevCopyright.txt"
88042154
LC
6251 "Similar to the license of the Bitstream Vera fonts.")
6252 (license:fsdg-compatible
6253 "https://www.gnome.org/fonts/#Final_Bitstream_Vera_Fonts")
bff33e6c
CL
6254 license:cc-by-sa3.0
6255 license:expat
6256 license:gfl1.0
6257 license:gpl2+
6258 license:gpl3+))))
6259
6260(define-public 0ad
6261 (package
6262 (name "0ad")
8c00379c 6263 (version "0.0.23b-alpha")
bff33e6c
CL
6264 (source
6265 (origin
6266 (method url-fetch)
706d6190 6267 (uri (string-append "https://releases.wildfiregames.com/0ad-"
bff33e6c
CL
6268 version "-unix-build.tar.xz"))
6269 (file-name (string-append name "-" version ".tar.xz"))
6270 (sha256
6271 (base32
8c00379c 6272 "0draa53xg69i5qhqym85658m45xhwkbiimaldj4sr3703rjgggq1"))))
bff33e6c
CL
6273 ;; A snippet here would cause a build failure because of timestamps
6274 ;; reset. See https://bugs.gnu.org/26734.
bff33e6c
CL
6275 (inputs
6276 `(("0ad-data" ,0ad-data)
6277 ("curl" ,curl)
6278 ("enet" ,enet)
6279 ("gloox" ,gloox)
6280 ("icu4c" ,icu4c)
6281 ("libpng" ,libpng)
706d6190 6282 ("libsodium" ,libsodium)
bff33e6c
CL
6283 ("libvorbis" ,libvorbis)
6284 ("libxcursor" ,libxcursor)
6285 ("libxml2" ,libxml2)
6286 ("miniupnpc" ,miniupnpc)
6287 ("mozjs-38" ,mozjs-38)
6288 ("openal" ,openal)
6289 ("sdl2" ,sdl2)
6290 ("wxwidgets" ,wxwidgets)
6291 ("zlib" ,zlib)))
6292 (native-inputs
6293 `(("boost" ,boost)
c69959f0 6294 ("cmake" ,cmake-minimal)
bff33e6c
CL
6295 ("mesa" ,mesa)
6296 ("pkg-config" ,pkg-config)
6297 ("python-2" ,python-2)))
6298 (build-system gnu-build-system)
6299 (arguments
809b8842
CB
6300 `(#:make-flags '("config=release" "verbose=1" "-C" "build/workspaces/gcc")
6301 #:phases
bff33e6c
CL
6302 (modify-phases %standard-phases
6303 (add-after 'unpack 'delete-bundles
6304 (lambda _
6305 (delete-file-recursively "libraries/source/spidermonkey")
6306 #t))
6307 (add-after 'unpack 'fix-x11-includes
6308 (lambda _
6309 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
6310 (("<Xlib.h>") "<X11/Xlib.h>"))
6311 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
6312 (("<Xatom.h>") "<X11/Xatom.h>"))
6313 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
6314 (("<Xcursor/Xcursor.h>") "<X11/Xcursor/Xcursor.h>"))
6315 #t))
6316 (replace 'configure
6317 (lambda* (#:key inputs outputs #:allow-other-keys)
6318 (let* ((jobs (number->string (parallel-job-count)))
6319 (out (assoc-ref outputs "out"))
6320 (lib (string-append out "/lib"))
6321 (data (string-append out "/share/0ad")))
6322 (setenv "JOBS" (string-append "-j" jobs))
6323 (setenv "CC" "gcc")
6324 (with-directory-excursion "build/workspaces"
7b67bb1f
RW
6325 (invoke "./update-workspaces.sh"
6326 (string-append "--libdir=" lib)
6327 (string-append "--datadir=" data)
6328 ;; TODO: "--with-system-nvtt"
6329 "--with-system-mozjs38")))))
bff33e6c
CL
6330 (delete 'check)
6331 (replace 'install
6332 (lambda* (#:key inputs outputs #:allow-other-keys)
809b8842 6333 (chdir "binaries")
bff33e6c
CL
6334 (let* ((out (assoc-ref outputs "out"))
6335 (bin (string-append out "/bin"))
6336 (lib (string-append out "/lib"))
6337 (data (string-append out "/share/0ad"))
6338 (applications (string-append out "/share/applications"))
6339 (pixmaps (string-append out "/share/pixmaps"))
6340 (0ad-data (assoc-ref inputs "0ad-data")))
6341 ;; data
6342 (copy-recursively "data" data)
6343 (for-each (lambda (file)
6344 (symlink (string-append 0ad-data "/" file)
6345 (string-append data "/" file)))
6346 '("config" "mods/mod" "mods/public" "tools"))
6347 ;; libraries
6348 (for-each (lambda (file)
6349 (install-file file lib))
6350 (find-files "system" "\\.so$"))
6351 ;; binaries
6352 (install-file "system/pyrogenesis" bin)
6353 (with-directory-excursion bin
6354 (symlink "pyrogenesis" "0ad"))
6355 ;; resources
6356 (with-directory-excursion "../build/resources"
6357 (install-file "0ad.desktop" applications)
6358 (install-file "0ad.png" pixmaps))
6359 #t)))
6360 (add-after 'install 'check
6361 (lambda _
6362 (with-directory-excursion "system"
7b67bb1f 6363 (invoke "./test")))))))
bff33e6c
CL
6364 (home-page "https://play0ad.com")
6365 (synopsis "3D real-time strategy game of ancient warfare")
6366 (description "0 A.D. is a real-time strategy (RTS) game of ancient
6367warfare. It's a historically-based war/economy game that allows players to
6368relive or rewrite the history of twelve ancient civilizations, each depicted
6369at their peak of economic growth and military prowess.
6370
63710ad needs a window manager that supports 'Extended Window Manager Hints'.")
6372 (license (list license:bsd-2
6373 license:bsd-3
6374 license:expat
6375 license:gpl2+
6376 license:ibmpl1.0
6377 license:isc
6378 license:lgpl2.1
6379 license:lgpl3
6380 license:mpl2.0
6381 license:zlib))))
dec63df4 6382
6383;; There have been no official releases.
6384(define-public open-adventure
be6e2c30 6385 (let* ((commit "d43854f0f6bb8e9eea7fbce80348150e7e7fc34d")
6386 (revision "2"))
dec63df4 6387 (package
6388 (name "open-adventure")
6389 (version (string-append "2.5-" revision "." (string-take commit 7)))
6390 (source (origin
6391 (method git-fetch)
6392 (uri (git-reference
6393 (url "https://gitlab.com/esr/open-adventure")
6394 (commit commit)))
6395 (file-name (string-append name "-" version "-checkout"))
6396 (sha256
6397 (base32
be6e2c30 6398 "08bwrvf4axb1rsfd6ia1fddsky9pc1p350vjskhaakg2czc6dsk0"))))
dec63df4 6399 (build-system gnu-build-system)
6400 (arguments
6401 `(#:make-flags (list "CC=gcc")
6402 #:parallel-build? #f ; not supported
6403 #:phases
6404 (modify-phases %standard-phases
be6e2c30 6405 (replace 'configure
6406 (lambda* (#:key inputs outputs #:allow-other-keys)
6b1c3efa 6407 ;; Linenoise is meant to be included, so we have to
6408 ;; copy it into the working directory.
be6e2c30 6409 (let* ((linenoise (assoc-ref inputs "linenoise"))
6410 (noisepath (string-append linenoise "/include/linenoise"))
6411 (out (assoc-ref outputs "out")))
6412 (copy-recursively noisepath "linenoise"))
6413 #t))
dec63df4 6414 (add-before 'build 'use-echo
6415 (lambda _
6416 (substitute* "tests/Makefile"
6417 (("/bin/echo") (which "echo")))
6418 #t))
6419 (add-after 'build 'build-manpage
6420 (lambda _
6421 ;; This target is missing a dependency
6422 (substitute* "Makefile"
be6e2c30 6423 ((".adoc.6:" line)
6424 (string-append line " advent.adoc")))
27cd31e6 6425 (invoke "make" ".adoc.6")))
dec63df4 6426 ;; There is no install target
6427 (replace 'install
6428 (lambda* (#:key outputs #:allow-other-keys)
6429 (let* ((out (assoc-ref outputs "out"))
6430 (bin (string-append out "/bin"))
6431 (man (string-append out "/share/man/man6")))
6432 (install-file "advent" bin)
6433 (install-file "advent.6" man))
6434 #t)))))
6435 (native-inputs
be6e2c30 6436 `(("asciidoc" ,asciidoc)
6437 ("linenoise" ,linenoise)
6438 ("python" ,python)
6439 ("python-pyyaml" ,python-pyyaml)))
dec63df4 6440 (home-page "https://gitlab.com/esr/open-adventure")
6441 (synopsis "Colossal Cave Adventure")
6442 (description "The original Colossal Cave Adventure from 1976 was the
6443origin of all text adventures, dungeon-crawl (computer) games, and
6444computer-hosted roleplaying games. This is the last version released by
6445Crowther & Woods, its original authors, in 1995. It has been known as
6446\"adventure 2.5\" and \"430-point adventure\".")
6447 (license license:bsd-2))))
1f88f189 6448
649220ad 6449(define-public tome4
1f88f189 6450 (package
649220ad 6451 (name "tome4")
f894ffd8 6452 (version "1.6.7")
1f88f189
OP
6453 (synopsis "Single-player, RPG roguelike game set in the world of Eyal")
6454 (source
6455 (origin
6456 (method url-fetch)
6457 (uri (string-append "https://te4.org/dl/t-engine/t-engine4-src-"
6458 version ".tar.bz2"))
6459 (sha256
f894ffd8 6460 (base32 "0283hvms5hr29zr0grd6gq059k0hg8hcz3fsmwjmysiih8790i68"))
1f88f189
OP
6461 (modules '((guix build utils)))
6462 (snippet
6cbee49d
MW
6463 '(begin
6464 (substitute* '("src/music.h" "src/tSDL.h")
6465 (("#elif defined(__FreeBSD__)" line)
6466 (string-append
6467 line " || defined(__GNUC__)")))
19c0cdb9
OP
6468 (substitute* '("src/tgl.h")
6469 (("#include <GL/glext.h>") ""))
6cbee49d 6470 #t))))
1f88f189
OP
6471 (build-system gnu-build-system)
6472 (native-inputs
6473 `(("unzip" ,unzip)))
6474 (inputs
6475 `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
6476 ("glu" ,glu)
6477 ("premake4" ,premake4)
6478 ("openal" ,openal)
6479 ("vorbis" ,libvorbis)
6480 ("luajit" ,luajit)))
6481 (arguments
6482 `(#:make-flags '("CC=gcc" "config=release")
ba73c434
MB
6483 ;; XXX: Building in parallel occasionally causes this build failure:
6484 ;; ../src/luajit2/src/host/buildvm.c:73:10: fatal error: buildvm_arch.h:
6485 ;; No such file or directory
6486 #:parallel-build? #f
1f88f189 6487 #:phases (modify-phases %standard-phases
972b87b1 6488 (delete 'bootstrap)
1f88f189
OP
6489 (replace 'configure
6490 (lambda _
13a504af 6491 (invoke "premake4" "gmake")
1f88f189
OP
6492 #t))
6493 (add-after 'set-paths 'set-sdl-paths
6494 (lambda* (#:key inputs #:allow-other-keys)
6495 (setenv "CPATH"
6496 (string-append (assoc-ref inputs "sdl-union")
fa0d5854 6497 "/include/SDL2:"
f27b1cf0 6498 (or (getenv "CPATH") "")))
1f88f189
OP
6499 #t))
6500 (delete 'check)
6501 ;; premake doesn't provide install target
6502 (replace 'install
6503 (lambda* (#:key inputs outputs #:allow-other-keys)
6504 (let* ((out (assoc-ref outputs "out"))
6505 (usr (string-append out "/usr"))
6506 (bin (string-append out "/bin"))
6507 (licenses (string-append out "/share/licenses"))
6508 (documents (string-append out "/share/doc"))
6509 (pixmaps (string-append out "/share/pixmaps"))
6510 (icon "te4-icon.png")
6511 (data (string-append out "/share/" ,name))
6512 (applications (string-append
6513 out "/share/applications"))
6514 (unzip (string-append
6515 (assoc-ref inputs "unzip") "/bin/unzip"))
6516 (wrapper (string-append bin "/" ,name)))
6517 ;; icon
6518 (mkdir-p pixmaps)
26d52476
OP
6519 (invoke unzip "-j"
6520 (string-append
6521 "game/engines/te4-" ,version ".teae")
6522 (string-append
6523 "data/gfx/" icon) "-d" pixmaps)
1f88f189
OP
6524 ;; game executable
6525 (install-file "t-engine" data)
6526 (mkdir-p bin)
6527 (with-output-to-file wrapper
6528 (lambda ()
6529 (display
6530 (string-append
6531 "#!/bin/sh\n"
6532 ;; No bootstrap code found,
6533 ;; defaulting to working directory
6534 ;; for engine code!
6535 "cd " data "\n"
6536 "exec -a tome4 ./t-engine \"$@\"\n"))))
6537 (chmod wrapper #o555)
6538 ;; licenses
6539 (for-each (lambda (file)
6540 (install-file file licenses))
6541 '("COPYING" "COPYING-MEDIA"))
6542 ;; documents
6543 (for-each (lambda (file)
6544 (install-file file documents))
6545 '("CONTRIBUTING" "CREDITS"))
6546 ;; data
6547 (copy-recursively "bootstrap" (string-append
6548 data "/bootstrap"))
6549 (copy-recursively "game" (string-append data "/game"))
6550 ;; launcher
6551 (mkdir-p applications)
96a320e5
PN
6552 (make-desktop-entry-file
6553 (string-append applications "/" ,name ".desktop")
6554 #:name "ToME4"
6555 #:comment ,synopsis
6556 #:exec ,name
6557 #:icon icon
6558 #:categories '("Game" "RolePlaying")))
1f88f189
OP
6559 #t)))))
6560 (home-page "https://te4.org")
6561 (description "Tales of Maj’Eyal (ToME) RPG, featuring tactical turn-based
6562combat and advanced character building. Play as one of many unique races and
6563classes in the lore-filled world of Eyal, exploring random dungeons, facing
6564challenging battles, and developing characters with your own tailored mix of
6565abilities and powers. With a modern graphical and customisable interface,
6566intuitive mouse control, streamlined mechanics and deep, challenging combat,
6567Tales of Maj’Eyal offers engaging roguelike gameplay for the 21st century.")
6568 (license license:gpl3+)))
7a070f02 6569
6570(define-public quakespasm
6571 (package
6572 (name "quakespasm")
18bbaf67 6573 (version "0.93.2")
7a070f02 6574 (source
6575 (origin
6576 (method url-fetch)
6577 (uri (string-append "mirror://sourceforge/quakespasm/Source/quakespasm-"
6578 version ".tgz"))
6579 (sha256
18bbaf67 6580 (base32 "0qm0j5drybvvq8xadfyppkpk3rxqsxbywzm6iwsjwdf0iia3gss5"))))
7a070f02 6581 (arguments
6582 `(#:tests? #f
6583 #:make-flags '("CC=gcc"
6584 "MP3LIB=mpg123"
6585 "USE_CODEC_FLAC=1"
6586 "USE_CODEC_MIKMOD=1"
6587 "USE_SDL2=1"
6588 "-CQuake")
6589 #:phases (modify-phases %standard-phases
6590 (delete 'configure)
6591 (add-after 'unpack 'fix-makefile-paths
6592 (lambda* (#:key outputs #:allow-other-keys)
6593 (let ((out (assoc-ref outputs "out")))
6594 (mkdir-p (string-append out "/bin"))
6595 (substitute* "Quake/Makefile"
6596 (("/usr/local/games")
6597 (string-append out "/bin")))
6598 #t))))))
6599 (build-system gnu-build-system)
6600 (inputs `(("libmikmod" ,libmikmod)
6601 ("libvorbis" ,libvorbis)
6602 ("flac" ,flac)
6603 ("mesa" ,mesa)
6604 ("mpg123" ,mpg123)
6605 ("sdl2" ,sdl2)))
6606 (synopsis "First person shooter engine for Quake 1")
6607 (description "Quakespasm is a modern engine for id software's Quake 1.
6608It includes support for 64 bit CPUs, custom music playback, a new sound driver,
6609some graphical niceities, and numerous bug-fixes and other improvements.")
6610 (home-page "http://quakespasm.sourceforge.net/")
6611 (license license:gpl2+)))
916bb947 6612
7a6be5b9
RH
6613(define-public vkquake
6614 (package
6615 (inherit quakespasm)
6616 (name "vkquake")
3e7b376e 6617 (version "1.01.0")
7a6be5b9
RH
6618 (source
6619 (origin
f5e1a0e5
TGR
6620 (method git-fetch)
6621 (uri (git-reference
b0e7b699 6622 (url "https://github.com/Novum/vkQuake")
f5e1a0e5
TGR
6623 (commit version)))
6624 (file-name (git-file-name name version))
7a6be5b9 6625 (sha256
f5e1a0e5 6626 (base32 "1iwin8j5kbyrknbkhjgpy8nmm7pxqzr0daa9gn7p38qhg2mh0a39"))))
7a6be5b9
RH
6627 (arguments
6628 `(#:make-flags
6629 (let ((vulkanlib (string-append (assoc-ref %build-inputs
e6fcf903 6630 "vulkan-loader") "/lib")))
7a6be5b9
RH
6631 (list "CC=gcc"
6632 "MP3LIB=mpg123"
6633 "USE_CODEC_FLAC=1"
6634 "USE_CODEC_MIKMOD=1"
6635 "USE_SDL2=1"
6636 (string-append "LDFLAGS=-Wl,-rpath=" vulkanlib)
6637 "-CQuake"))
6638 #:phases (modify-phases %standard-phases
51f3b349
MB
6639 (add-after 'unpack 'patch-for-new-vulkan
6640 (lambda _
6641 ;; Mimic upstream commit a869a22d9b51c68e for
6642 ;; compatibility with newer vulkan-headers.
6643 (substitute* "Quake/gl_rmisc.c"
6644 (("VK_DYNAMIC_STATE_RANGE_SIZE")
6645 "3"))
6646 #t))
7a6be5b9
RH
6647 (delete 'configure)
6648 (add-after 'unpack 'fix-makefile-paths
6649 (lambda* (#:key outputs #:allow-other-keys)
6650 (let ((vulkan (assoc-ref %build-inputs
e6fcf903 6651 "vulkan-loader"))
7a6be5b9
RH
6652 (out (assoc-ref outputs "out")))
6653 (mkdir-p (string-append out "/bin"))
6654 (substitute* "Quake/Makefile" ((" /usr")
6655 (string-append " " out)))
6656 (substitute* "Quake/Makefile" (("/games")
6657 (string-append "/bin")))
6658 (substitute* "Quake/Makefile" (("..VULKAN_SDK.") vulkan))
6659 #t))))
6660 ,@(strip-keyword-arguments '(#:make-flags #:phases)
6661 (package-arguments quakespasm))))
4108886b
RH
6662 (inputs `(("vulkan-headers" ,vulkan-headers)
6663 ("vulkan-loader" ,vulkan-loader)
7a6be5b9
RH
6664 ,@(package-inputs quakespasm)))
6665 (description "vkquake is a modern engine for id software's Quake 1.
6666It includes support for 64 bit CPUs, custom music playback, a new sound driver,
6667some graphical niceities, and numerous bug-fixes and other improvements.")
6668 (home-page "https://github.com/Novum/vkQuake")))
6669
916bb947 6670(define-public yamagi-quake2
6671 (package
6672 (name "yamagi-quake2")
6673 (version "7.10")
6674 (source
6675 (origin
6676 (method url-fetch)
6677 (uri (string-append "https://deponie.yamagi.org/quake2/quake2-"
6678 version ".tar.xz"))
6679 (sha256
6680 (base32
6681 "0psinbg25mysd58k99s1n34w31w5hj1vppb39gdjb0zqi6sl6cps"))))
6682 (build-system gnu-build-system)
6683 (arguments
6684 `(#:tests? #f
6685 #:make-flags
6686 (list "CC=gcc"
6687 ;; link openAL instead of using dlopen at runtime
6688 "DLOPEN_OPENAL=\"no\""
6689 ;; an optional directory where it will look for quake2 data files
6690 ;; in addition to the current working directory
6691 "WITH_SYSTEMWIDE=yes"
6692 "WITH_SYSTEMDIR=\"/opt/quake2\"")
6693 #:phases
6694 (modify-phases %standard-phases
6695 (delete 'configure)
6696 (replace 'install
6697 (lambda* (#:key outputs #:allow-other-keys)
6698 (let ((out (assoc-ref outputs "out")))
6699 (mkdir-p (string-append out "/lib"))
6700 (mkdir-p (string-append out "/bin"))
6701 ;; The yamagi-quake2 binary must be in the same directory
6702 ;; as it's engine libraries, but symlinking it to /bin is okay
6703 ;; https://github.com/yquake2/yquake2/blob/master/stuff/packaging.md
6704 (copy-recursively "release"
6705 (string-append out "/lib/yamagi-quake2"))
6706 (symlink (string-append out "/lib/yamagi-quake2/quake2")
6707 (string-append out "/bin/yamagi-quake2"))
6708 (symlink (string-append out "/lib/yamagi-quake2/q2ded")
6709 (string-append out "/bin/yamagi-q2ded"))))))))
6710 (inputs `(("sdl2" ,sdl2)
6711 ("mesa" ,mesa)
6712 ("libvorbis" ,libvorbis)
6713 ("zlib" ,zlib)
6714 ("openal" ,openal)))
6715 (native-inputs `(("pkg-config" ,pkg-config)))
6716 (synopsis "First person shooter engine based on quake2")
6717 (description "Yamagi Quake II is an enhanced client for id Software's Quake II.
6718The main focus is an unchanged single player experience like back in 1997,
6719thus the gameplay and the graphics are unaltered. However the user may use one
6720of the unofficial retexturing packs. In comparison with the official client,
6721over 1000 bugs were fixed and an extensive code audit done,
6722making Yamagi Quake II one of the most solid Quake II implementations available.")
6723 (home-page "https://www.yamagi.org/quake2/")
6724 (license (list license:gpl2+ ; game and server
6725 (license:non-copyleft ; info-zip
6726 "file://LICENSE"
6727 "See Info-Zip section.")
6728 license:public-domain)))) ; stb
c1228231 6729
e7448859
MIP
6730(define-public nudoku
6731 (package
6732 (name "nudoku")
6733 (version "1.0.0")
6734 (source (origin
6735 (method url-fetch)
6736 (uri (string-append "https://github.com/jubalh/nudoku/"
6737 "releases/download/" version
6738 "/nudoku-" version ".tar.xz"))
6739 (sha256
6740 (base32
6741 "0nr2j2z07nxk70s8xnmmpzccxicf7kn5mbwby2kg6aq8paarjm8k"))))
6742 (build-system gnu-build-system)
6743 (inputs `(("ncurses" ,ncurses)))
6744 (home-page "https://jubalh.github.io/nudoku/")
6745 (synopsis "Sudoku for your terminal")
6746 (description "Nudoku is a ncurses-based Sudoku game for your terminal.")
6747 (license license:gpl3+)))
6748
c1228231
NG
6749(define-public the-butterfly-effect
6750 (package
6751 (name "the-butterfly-effect")
6752 (version "0.9.3.1")
6753 (source
6754 (origin
089c6b00
EF
6755 (method git-fetch)
6756 (uri (git-reference
b0e7b699 6757 (url "https://github.com/the-butterfly-effect/tbe")
089c6b00
EF
6758 (commit (string-append "v" version))))
6759 (file-name (git-file-name name version))
c1228231
NG
6760 (sha256
6761 (base32
089c6b00 6762 "1ag2cp346f9bz9qy6za6q54id44d2ypvkyhvnjha14qzzapwaysj"))))
c1228231
NG
6763 (build-system gnu-build-system)
6764 (arguments
6765 `(#:phases
6766 (modify-phases %standard-phases
6767 (delete 'configure)
6768 ;; There is no "install" phase. By default, tbe is installed
6769 ;; in the build directory. Provide our own installation.
6770 (replace 'install
6771 (lambda* (#:key outputs #:allow-other-keys)
6772 (let* ((out (assoc-ref outputs "out"))
6773 (bin (string-append out "/bin"))
6774 (share (string-append out "/share")))
6775 (install-file "usr/games/tbe" bin)
6776 (mkdir-p share)
6777 (copy-recursively "usr/share" share)
6778 #t))))
6779 ;; Test suite requires a running Xorg server. Even when
6780 ;; provided, it fails with "D-Bus library appears to be
6781 ;; incorrectly set up; failed to read machine uuid: Failed to
6782 ;; open "/etc/machine-id": No such file or directory" along
6783 ;; with multiple "QPainter:: ... Painter not active" warnings.
6784 #:tests? #f))
6785 (inputs
6786 `(("qtbase" ,qtbase)
6787 ("qtsvg" ,qtsvg)))
6788 (native-inputs
c69959f0 6789 `(("cmake" ,cmake-minimal)
c1228231
NG
6790 ("gettext-minimal" ,gettext-minimal)
6791 ("qttools" ,qttools)))
6792 (synopsis "Realistic physics puzzle game")
6793 (description "The Butterfly Effect (tbe) is a game that uses
6794realistic physics simulations to combine lots of simple mechanical
6795elements to achieve a simple goal in the most complex way possible.")
6796 (home-page "http://the-butterfly-effect.org/")
6797 ;; Main license is GPL2-only. However, artwork is distributed
6798 ;; under various licenses, listed here.
6799 (license (list license:gpl2 license:public-domain license:expat
6800 license:cc-by-sa3.0 license:gpl3+ license:wtfpl2))))
aac1aa75
EB
6801
6802(define-public pioneer
6803 (package
6804 (name "pioneer")
8f33b76e 6805 (version "20200203")
aac1aa75 6806 (source (origin
6a03ccf4
EB
6807 (method git-fetch)
6808 (uri (git-reference
b0e7b699 6809 (url "https://github.com/pioneerspacesim/pioneer")
6a03ccf4
EB
6810 (commit version)))
6811 (file-name (git-file-name name version))
aac1aa75
EB
6812 (sha256
6813 (base32
8f33b76e 6814 "1011xsi94jhw98mhm8kryq8ajig0qfbrdx5xdasi92bd4nk7lcp8"))))
ed3e7b72 6815 (build-system cmake-build-system)
aac1aa75 6816 (native-inputs
ed3e7b72 6817 `(("pkg-config" ,pkg-config)))
aac1aa75
EB
6818 (inputs
6819 `(("assimp" ,assimp)
6820 ("curl" ,curl)
6821 ("freetype" ,freetype)
ed3e7b72 6822 ("glew" ,glew)
aac1aa75
EB
6823 ("glu" ,glu)
6824 ("libpng" ,libpng)
6825 ("libsigc++" ,libsigc++)
6826 ("libvorbis" ,libvorbis)
6827 ("lua" ,lua-5.2) ;not compatible with 5.3
6828 ("mesa" ,mesa)
6829 ("sdl" ,(sdl-union (list sdl2 sdl2-image)))))
6830 (arguments
6831 `(#:tests? #f ;tests are broken
ed3e7b72
EB
6832 #:configure-flags (list "-DUSE_SYSTEM_LIBLUA:BOOL=YES"
6833 (string-append "-DPIONEER_DATA_DIR="
6834 %output "/share/games/pioneer"))))
61d399c5 6835 (home-page "https://pioneerspacesim.net")
aac1aa75
EB
6836 (synopsis "Game of lonely space adventure")
6837 (description
6838 "Pioneer is a space adventure game set in our galaxy at the turn of the
683931st century. The game is open-ended, and you are free to eke out whatever
6840kind of space-faring existence you can think of. Look for fame or fortune by
6841exploring the millions of star systems. Turn to a life of crime as a pirate,
6842smuggler or bounty hunter. Forge and break alliances with the various
6843factions fighting for power, freedom or self-determination. The universe is
6844whatever you make of it.")
6845 (license license:gpl3)))
57f9671d 6846
6847(define-public badass
6848 (let ((commit "3c3cd669b4fc8f73a102e3702788f7b28dc47dbb")
6849 (revision "0"))
6850 (package
6851 (name "badass")
6852 (version (git-version "0.0" revision commit))
6853 (source (origin
6854 (method git-fetch)
6855 (uri (git-reference
b0e7b699 6856 (url "https://github.com/umayr/badass")
57f9671d 6857 (commit commit)))
6858 (file-name (git-file-name name version))
6859 (sha256
6860 (base32
6861 "05c9vdcb5ym3z0n5ll3v39mw4yl9jcjnlydmn0yl89ai9pv71zb6"))))
6862 (build-system go-build-system)
6863 (arguments
6864 '(#:import-path "github.com/umayr/badass"))
6865 (synopsis "Hacking contribution graphs in git")
6866 (description
6867 "Badass generates false commits for a range of dates, essentially
6868hacking the gamification of contribution graphs on platforms such as
6869Github or Gitlab.")
6870 (home-page "https://github.com/umayr/badass")
6871 (license license:expat))))
fa7d8ea1
NG
6872
6873(define-public colobot
6874 (package
6875 (name "colobot")
2dad4c91 6876 (version "0.1.12-alpha")
fa7d8ea1
NG
6877 (source
6878 (origin
2dad4c91
NG
6879 (method git-fetch)
6880 (uri (git-reference
b0e7b699 6881 (url "https://github.com/colobot/colobot")
2dad4c91
NG
6882 (commit (string-append "colobot-gold-" version))
6883 (recursive? #t))) ;for "data/" subdir
6884 (file-name (git-file-name name version))
fa7d8ea1
NG
6885 (sha256
6886 (base32
2dad4c91 6887 "1c181cclkrnspgs07lvndg2c81cjq3smkv7qim8c470cj88rcrp2"))))
fa7d8ea1
NG
6888 (build-system cmake-build-system)
6889 (arguments
6890 `(#:tests? #f ;no test
6891 #:phases
6892 (modify-phases %standard-phases
2dad4c91
NG
6893 (add-after 'unpack 'make-git-checkout-writable
6894 (lambda _
6895 (for-each make-file-writable (find-files "."))
6896 #t))
6897 (add-after 'unpack 'fix-directories
6898 (lambda _
6899 (substitute* "CMakeLists.txt"
6900 (("(\\$\\{CMAKE_INSTALL_PREFIX\\})/games" _ prefix)
6901 (string-append prefix "/bin"))
6902 (("(\\$\\{CMAKE_INSTALL_PREFIX\\}/share)/games/colobot" _ prefix)
6903 (string-append prefix "/colobot")))
6904 #t))
6905 (add-after 'fix-directories 'install-music
6906 ;; Retrieve and install music files.
fa7d8ea1
NG
6907 (lambda* (#:key inputs #:allow-other-keys)
6908 ;; Installation process tries to download music files using
2dad4c91
NG
6909 ;; "wget" if not already present. Since we are going another
6910 ;; route, skip "wget" command check.
fa7d8ea1
NG
6911 (substitute* "data/music/CMakeLists.txt"
6912 (("find_program\\(WGET wget\\)") ""))
2dad4c91 6913 ;; Populate "music/" directory.
fa7d8ea1 6914 (let ((data (assoc-ref inputs "colobot-music")))
2dad4c91
NG
6915 (invoke "tar" "-xvf" data "-Cdata/music"))
6916 #t)))))
fa7d8ea1 6917 (native-inputs
2dad4c91 6918 `(("colobot-music"
fa7d8ea1
NG
6919 ,(origin
6920 (method url-fetch)
6921 (uri (string-append "https://colobot.info/files/music/"
6922 "colobot-music_ogg_" version ".tar.gz"))
6923 (sha256
6924 (base32
6925 "1s86cd36rwkff329mb1ay1wi5qqyi35564ppgr3f4qqz9wj9vs2m"))))
6926 ("gettext" ,gettext-minimal)
6927 ("librsvg" ,librsvg)
6928 ("po4a" ,po4a)
6929 ("python" ,python-wrapper)))
6930 (inputs
6931 `(("boost" ,boost)
6932 ("glew" ,glew)
6933 ("libogg" ,libogg)
6934 ("libpng" ,libpng)
6935 ("libsndfile" ,libsndfile)
6936 ("libvorbis" ,libvorbis)
6937 ("openal" ,openal)
6938 ("physfs" ,physfs)
6939 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-ttf)))))
6940 (synopsis "Educational programming strategy game")
6941 (description "Colobot: Gold Edition is a real-time strategy game, where
6942you can program your units (bots) in a language called CBOT, which is similar
6943to C++ and Java. Your mission is to find a new planet to live and survive.
6944You can save humanity and get programming skills!")
6945 (home-page "https://colobot.info")
6946 (license license:gpl3+)))
2922852e 6947
6948(define-public gzdoom
6949 (package
6950 (name "gzdoom")
570b89f4
TGR
6951 (version "4.3.2")
6952 (source
6953 (origin
6954 (method git-fetch)
6955 (uri (git-reference
b0e7b699 6956 (url "https://github.com/coelckers/gzdoom")
570b89f4
TGR
6957 (commit (string-append "g" version))))
6958 (file-name (git-file-name name version))
6959 (sha256
6960 (base32 "0i4hyg72z84fc6ca2ic9q82q5cbgrbd7bynl3kpkypxvyasq08wz"))
6961 (patches (search-patches "gzdoom-search-in-installed-share.patch"
6962 "gzdoom-find-system-libgme.patch"))
6963 (modules '((guix build utils)))
6964 (snippet
6965 '(begin
6966 ;; Remove some bundled libraries. XXX There are more, but removing
6967 ;; them would require, at least, patching the build system.
6968 (with-directory-excursion "libraries"
6969 (delete-file-recursively "bzip2")
6970 (delete-file-recursively "game-music-emu")
6971 (delete-file-recursively "jpeg")
6972 (delete-file-recursively "zlib"))
6973 #t))))
2922852e 6974 (arguments
6975 '(#:tests? #f
6976 #:configure-flags
6977 (let ((out (assoc-ref %outputs "out")))
6978 (list
6979 (string-append
6980 "-DCMAKE_CXX_FLAGS:="
6981 "-DSHARE_DIR=\\\"" out "/share/\\\" "
6982 "-DGUIX_OUT_PK3=\\\"" out "/share/games/doom\\\"")
570b89f4
TGR
6983
6984 ;; The build requires some extra convincing not to use the bundled
6985 ;; libgme previously deleted in the soure snippet.
6986 "-DFORCE_INTERNAL_GME=OFF"
6987
6988 ;; Link libraries at build time instead of loading them at run time.
2922852e 6989 "-DDYN_OPENAL=OFF"
6990 "-DDYN_FLUIDSYNTH=OFF"
6991 "-DDYN_GTK=OFF"
6992 "-DDYN_MPG123=OFF"
6993 "-DDYN_SNDFILE=OFF"))
6994 #:phases
6995 (modify-phases %standard-phases
6996 (add-before 'configure 'fix-referenced-paths
6997 (lambda* (#:key inputs outputs #:allow-other-keys)
6998 (let ((fluid-3 (assoc-ref inputs "fluid-3"))
6999 (timidity++ (assoc-ref inputs "timidity++"))
7000 (out (assoc-ref outputs "out")))
7001
7002 (substitute*
7003 "src/CMakeLists.txt"
7004 (("COMMAND /bin/sh")
7005 (string-append "COMMAND " (which "sh"))))
7006
7007 (substitute*
570b89f4 7008 "libraries/zmusic/mididevices/music_fluidsynth_mididevice.cpp"
2922852e 7009 (("/usr/share/sounds/sf2/FluidR3_GM.sf2")
7010 (string-append fluid-3 "/share/soundfonts/FluidR3Mono_GM.sf3")))
7011
7012 (substitute*
570b89f4 7013 "libraries/zmusic/mididevices/music_timiditypp_mididevice.cpp"
2922852e 7014 (("exename = \"timidity\"")
7015 (string-append "exename = \"" timidity++ "/bin/timidity\"")))
7016 #t))))))
7017 (build-system cmake-build-system)
7018 (inputs `(("bzip2" ,bzip2)
7019 ("fluid-3" ,fluid-3)
570b89f4 7020 ("fluidsynth" ,fluidsynth)
2922852e 7021 ("gtk+3" ,gtk+)
7022 ("libgme" ,libgme)
4bd428a7 7023 ("libjpeg" ,libjpeg-turbo)
2922852e 7024 ("libsndfile" ,libsndfile)
7025 ("mesa" ,mesa)
7026 ("mpg123" ,mpg123)
7027 ("openal" ,openal)
7028 ("sdl2" ,sdl2)
7029 ("timidity++" ,timidity++)
7030 ("zlib" ,zlib)))
7031 (native-inputs `(("pkg-config" ,pkg-config)
7032 ("unzip" ,unzip)))
7033 (synopsis "Modern Doom 2 source port")
7034 (description "GZdoom is a port of the Doom 2 game engine, with a modern
7035renderer. It improves modding support with ZDoom's advanced mapping features
7036and the new ZScript language. In addition to Doom, it supports Heretic, Hexen,
7037Strife, Chex Quest, and fan-created games like Harmony, Hacx and Freedoom.")
7038 (home-page "https://zdoom.org/index")
642b195a
EF
7039 ;; The source uses x86 assembly
7040 (supported-systems '("x86_64-linux" "i686-linux"))
2922852e 7041 (license (list license:gpl3+ ; gzdoom game
7042 license:lgpl3+ ; gzdoom renderer
7043 license:expat ; gdtoa
7044 (license:non-copyleft ; modified dumb
7045 "file://dumb/licence.txt"
7046 "Dumb license, explicitly GPL compatible.")))))
b1642338 7047
6f565d6c
P
7048(define-public odamex
7049 (package
7050 (name "odamex")
5448b16e 7051 (version "0.8.1")
6f565d6c
P
7052 (source
7053 (origin
7054 (method url-fetch)
7055 (uri (string-append
7056 "mirror://sourceforge/odamex/Odamex/" version "/"
7057 "odamex-src-" version ".tar.gz"))
7058 (sha256
5448b16e 7059 (base32 "1ywbqkfacc9fc5di3dn95y5ah2ys9i241j64q3f37a73x92llw1i"))))
6f565d6c 7060 (build-system cmake-build-system)
5448b16e 7061 (arguments `(#:tests? #f)) ; no tests
6f565d6c
P
7062 (inputs
7063 `(("sdl" ,sdl)
7064 ("sdl-mixer" ,sdl-mixer)
7065 ("zlib" ,zlib)
7066 ("libpng" ,libpng)
7067 ("alsa-lib" ,alsa-lib)))
7068 (home-page "https://odamex.net/")
7069 (synopsis "Multiplayer Doom port")
7070 (description "Odamex is a modification of the Doom engine that
7071allows players to easily join servers dedicated to playing Doom
7072online.")
7073 (license license:gpl2+)))
7074
fc16bbb7
JK
7075(define-public chocolate-doom
7076 (package
7077 (name "chocolate-doom")
a7ca42ff 7078 (version "3.0.1")
fc16bbb7
JK
7079 (source (origin
7080 (method url-fetch)
7081 (uri (string-append "https://www.chocolate-doom.org/downloads/"
7082 version
7083 "/chocolate-doom-"
7084 version
7085 ".tar.gz"))
7086 (sha256
7087 (base32
a7ca42ff 7088 "1iy8rx7kjvi1zjiw4zh77szzmd1sgpqajvbhprh1sj93fhbxcdfl"))))
fc16bbb7
JK
7089 (build-system gnu-build-system)
7090 (inputs `(("sdl2-net" ,sdl2-net)
7091 ("sdl2-mixer" , sdl2-mixer)
7092 ("sdl2" ,sdl2)))
7093 (native-inputs
7094 `(("pkg-config" ,pkg-config)))
7095 (synopsis "Doom source port preserving the look, feel, and bugs of vanilla
7096Doom")
7097 (description
7098 "Chocolate Doom takes a different approach to other source ports. Its
7099aim is to accurately reproduce the experience of playing Vanilla Doom. It is
7100a conservative, historically accurate Doom source port, which is compatible
7101with the thousands of mods and levels that were made before the Doom source
7102code was released. Rather than flashy new graphics, Chocolate Doom's main
7103features are its accurate reproduction of the game as it was played in the
71041990s. The project is developed around a carefully-considered philosophy that
7105intentionally restricts which features may be added (and rejects any that
7106affect gameplay).")
7107 (home-page "https://www.chocolate-doom.org/wiki/index.php/Chocolate_Doom")
7108 (license license:gpl2)))
7109
3f9a027c
DF
7110(define-public crispy-doom
7111 (package
7112 (inherit chocolate-doom)
7113 (name "crispy-doom")
4b50aaad 7114 (version "5.8.0")
3f9a027c
DF
7115 (source (origin
7116 (method git-fetch)
7117 (uri (git-reference
b0e7b699 7118 (url "https://github.com/fabiangreffrath/crispy-doom")
3f9a027c
DF
7119 (commit (string-append "crispy-doom-" version))))
7120 (file-name (git-file-name name version))
7121 (sha256
4b50aaad 7122 (base32 "1b6gn0dysv631jynh769whww9xcss1gms78sz3nrn855q1dsvcb4"))))
3f9a027c
DF
7123 (native-inputs
7124 (append
7125 (package-native-inputs chocolate-doom)
7126 `(("automake" ,automake)
7127 ("autoreconf" ,autoconf))))
7128 (arguments
7129 `(#:phases
7130 (modify-phases %standard-phases
7131 (replace 'bootstrap
17cb06a6 7132 ;; The bundled autogen.sh script unconditionally runs ./configure.
3f9a027c
DF
7133 (lambda _ (invoke "autoreconf" "-vif"))))))
7134 (synopsis "Limit-removing enhanced-resolution Doom source port based on
7135Chocolate Doom")
7136 (description
7137 "Crispy Doom is a friendly fork of Chocolate Doom that provides a higher
7138display resolution, removes the static limits of the Doom engine and offers
7139further optional visual, tactical and physical enhancements while remaining
7140entirely config file, savegame, netplay and demo compatible with the
7141original.")
7142 (home-page "https://www.chocolate-doom.org/wiki/index.php/Crispy_Doom")))
7143
64b47a29
OP
7144(define shlomif-cmake-modules
7145 (origin
7146 (method url-fetch)
7147 (uri (string-append "https://bitbucket.org/shlomif/shlomif-cmake-modules/"
7148 "raw/c505713d7a7cda608f97f01577e5868a711b883e/"
7149 "shlomif-cmake-modules/Shlomif_Common.cmake"))
7150 (sha256
7151 (base32 "0kx9s1qqhhzprp1w3b67xmsns0n0v506bg5hgrshxaxpy6lqiwb2"))))
c5799025
OP
7152
7153(define-public rinutils
7154 (package
7155 (name "rinutils")
7156 (version "0.2.0")
7157 (source (origin
7158 (method git-fetch)
7159 (uri (git-reference
b0e7b699 7160 (url "https://github.com/shlomif/rinutils")
c5799025
OP
7161 (commit version)))
7162 (file-name (git-file-name name version))
7163 (sha256
7164 (base32
7165 "1fpxyg86ggv0h7j8aarjjxrvwlj7jycd3bw066c0dwkq2fszxsf2"))))
7166 (native-inputs
7167 `(("perl" ,perl)
7168 ;; The following is only needed for tests.
7169 ("perl-file-find-object" ,perl-file-find-object)
7170 ("perl-test-differences" ,perl-test-differences)
7171 ("perl-class-xsaccessor" ,perl-class-xsaccessor)
7172 ("perl-io-all" ,perl-io-all)
7173 ("perl-test-runvalgrind" ,perl-test-runvalgrind)
7174 ("cmake-rules" ,shlomif-cmake-modules)
7175 ("pkg-config" ,pkg-config)))
7176 (inputs
7177 `(("cmocka" ,cmocka)
7178 ("perl-env-path", perl-env-path)
7179 ("perl-inline" ,perl-inline)
7180 ("perl-inline-c" ,perl-inline-c)
7181 ("perl-string-shellquote" ,perl-string-shellquote)
7182 ("perl-test-trailingspace" ,perl-test-trailingspace)
7183 ("perl-file-find-object-rule" ,perl-file-find-object-rule)
7184 ("perl-text-glob" ,perl-text-glob)
7185 ("perl-number-compare" ,perl-number-compare)
7186 ("perl-moo" ,perl-moo)))
7187 (arguments
7188 `(#:phases
7189 (modify-phases %standard-phases
7190 (add-after 'unpack 'fix-build-env
7191 (lambda* (#:key inputs #:allow-other-keys)
7192 (use-modules (guix build utils))
7193 (let* ((cmake-rules (assoc-ref inputs "cmake-rules")))
7194 (copy-file cmake-rules
7195 (string-append "cmake/"
7196 (strip-store-file-name cmake-rules)))
7197 #t)))
7198 (replace 'check
7199 (lambda _
7200 (with-directory-excursion "../source"
7201 (setenv "FCS_TEST_BUILD" "1")
7202 (setenv "RINUTILS_TEST_BUILD" "1")
7203 ;; TODO: Run tests after setting RINUTILS_TEST_TIDY to `1',
7204 ;; which requires tidy-all.
7205 ;; (setenv "RINUTILS_TEST_TIDY" "1")
7206 (invoke "perl" "CI-testing/continuous-integration-testing.pl")))))))
7207 (build-system cmake-build-system)
7208 (home-page "https://www.shlomifish.org/open-source/projects/")
7209 (synopsis "C11 / gnu11 utilities C library")
7210 (description "This package provides C11 / gnu11 utilities C library")
7211 (license license:expat)))
7212
b1642338
PN
7213(define-public fortune-mod
7214 (package
7215 (name "fortune-mod")
6b490fff 7216 (version "2.28.0")
7e1d376d
TGR
7217 (source
7218 (origin
7219 (method git-fetch)
7220 (uri (git-reference
7221 (url "https://github.com/shlomif/fortune-mod")
a6ac8e0b 7222 (commit (string-append "fortune-mod-" version))))
7e1d376d
TGR
7223 (file-name (git-file-name name version))
7224 (sha256
6b490fff 7225 (base32 "1ppzgnffgdcmq6fq4gmdq2ig10ip2bnfgklkb3i8nc6bdxm7pb89"))))
b1642338
PN
7226 (build-system cmake-build-system)
7227 (arguments
7228 `(#:test-target "check"
7229 #:phases
7230 (modify-phases %standard-phases
7231 (add-after 'unpack 'fix-build-env
7232 (lambda* (#:key inputs #:allow-other-keys)
7233 (use-modules (guix build utils))
7234 (let* ((cmake-rules (assoc-ref inputs "cmake-rules")))
7235 (copy-file cmake-rules
7236 (string-append "fortune-mod/cmake/"
7237 (strip-store-file-name cmake-rules)))
abf06df2 7238 (chdir "fortune-mod")
61857323
PN
7239 ;; TODO: Valgrind tests fail for some reason.
7240 ;; Similar issue: https://github.com/shlomif/fortune-mod/issues/21 (?)
7241 (delete-file "tests/t/valgrind.t")
abf06df2 7242 #t)))
b1642338 7243 (add-after 'install 'fix-install-directory
b1642338 7244 (lambda* (#:key outputs #:allow-other-keys)
e08474d6
TGR
7245 ;; Move binary from "games/" to "bin/" and remove the latter. This
7246 ;; is easier than patching CMakeLists.txt since the tests hard-code
7247 ;; the location as well.
7248 (let* ((out (assoc-ref outputs "out"))
7249 (bin (string-append out "/bin"))
7250 (games (string-append out "/games")))
7251 (rename-file (string-append games "/fortune")
7252 (string-append bin "/fortune"))
7253 (rmdir games)
b1642338
PN
7254 #t))))))
7255 (inputs `(("recode" ,recode)))
7256 (native-inputs
7257 `(("perl" ,perl)
7258 ;; The following is only needed for tests.
7259 ("perl-file-find-object" ,perl-file-find-object)
7260 ("perl-test-differences" ,perl-test-differences)
7261 ("perl-class-xsaccessor" ,perl-class-xsaccessor)
7262 ("perl-io-all" ,perl-io-all)
7263 ("perl-test-runvalgrind" ,perl-test-runvalgrind)
815e12f3
OP
7264 ("cmake-rules" ,shlomif-cmake-modules)
7265 ("rinutils" ,rinutils)))
6ef143ef 7266 (home-page "https://www.shlomifish.org/open-source/projects/fortune-mod/")
b1642338
PN
7267 (synopsis "The Fortune Cookie program from BSD games")
7268 (description "Fortune is a command-line utility which displays a random
7269quotation from a collection of quotes.")
7270 (license license:bsd-4)))
dc70ff2a 7271
7272(define xonotic-data
7273 (package
7274 (name "xonotic-data")
7275 (version "0.8.2")
7276 (source
7277 (origin
7278 (method url-fetch)
7279 (uri (string-append "http://dl.xonotic.org/xonotic-"
7280 version ".zip"))
7281 (file-name (string-append name "-" version ".zip"))
7282 (sha256
7283 (base32
7284 "1mcs6l4clvn7ibfq3q69k2p0z6ww75rxvnngamdq5ic6yhq74bx2"))))
7285 (build-system trivial-build-system)
7286 (native-inputs
7287 `(("unzip" ,unzip)))
7288 (arguments
7289 `(#:modules ((guix build utils))
7290 #:builder
7291 (begin
7292 (use-modules (guix build utils))
7293 (let* ((out (assoc-ref %outputs "out"))
7294 (xonotic (string-append out "/share/xonotic"))
7295 (source (assoc-ref %build-inputs "source"))
7296 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
7297 (copy-file source (string-append ,name "-" ,version ".zip"))
7298 (invoke unzip (string-append ,name "-" ,version ".zip"))
7299 (mkdir-p out)
7300 (mkdir-p xonotic)
7301 (chdir "Xonotic")
7302 (copy-recursively "data"
7303 (string-append xonotic "/data"))
7304 (copy-recursively "server"
7305 (string-append xonotic "/server"))
7306 (install-file "key_0.d0pk" xonotic)))))
7307 (home-page "http://xonotic.org")
7308 (synopsis "Data files for Xonotic")
7309 (description
7310 "Xonotic-data provides the data files required by the game Xonotic.")
7311 (license (list license:gpl2+
9b9db6c4 7312 (license:x11-style "file://server/rcon.pl")))))
dc70ff2a 7313
7314(define-public xonotic
7315 (package
7316 (name "xonotic")
7317 (version "0.8.2")
7318 (source
7319 (origin
7320 (method url-fetch)
7321 (uri (string-append "http://dl.xonotic.org/xonotic-"
7322 version "-source.zip"))
7323 (file-name (string-append name "-" version ".zip"))
7324 (sha256
7325 (base32
7326 "0axxw04fyz6jlfqd0kp7hdrqa0li31sx1pbipf2j5qp9wvqicsay"))))
7327 (build-system gnu-build-system)
7328 (arguments
7329 `(#:configure-flags (list (string-append "--prefix="
7330 (assoc-ref %outputs "out"))
7331 "--disable-rijndael")
7332 #:phases
7333 (modify-phases %standard-phases
7334 (add-before 'configure 'make-darkplaces
7335 (lambda* (#:key outputs #:allow-other-keys)
7336 (let* ((out (assoc-ref outputs "out"))
7337 (sharedir (string-append out "/share/xonotic/")))
7338 (invoke "make" "-C" "source/darkplaces"
7339 (string-append "DP_FS_BASEDIR="
7340 sharedir)
7341 "DP_LINK_TO_LIBJPEG=1"
7342 "DP_SOUND_API=ALSA"
7343 "CC=gcc"
7344 "-f" "makefile"
7345 "cl-release")
7346 (invoke "make" "-C" "source/darkplaces"
7347 (string-append "DP_FS_BASEDIR="
7348 sharedir)
7349 "DP_LINK_TO_LIBJPEG=1"
7350 "DP_SOUND_API=ALSA"
7351 "CC=gcc"
7352 "-f" "makefile"
7353 "sdl-release")
7354 (invoke "make" "-C" "source/darkplaces"
7355 (string-append "DP_FS_BASEDIR="
7356 sharedir)
7357 "DP_LINK_TO_LIBJPEG=1"
7358 "DP_SOUND_API=ALSA"
7359 "CC=gcc"
7360 "-f" "makefile"
7361 "sv-release"))))
7362 (add-before 'configure 'bootstrap
7363 (lambda _
7364 (chdir "source/d0_blind_id")
7365 (invoke "sh" "autogen.sh")))
7366 (add-after 'build 'install-desktop-entry
7367 (lambda* (#:key outputs #:allow-other-keys)
7368 ;; Add .desktop files for the 2 variants and the symlink
7369 (let* ((output (assoc-ref outputs "out"))
7370 (apps (string-append output "/share/applications")))
7371 (mkdir-p apps)
7372 (with-output-to-file
7373 (string-append apps "/xonotic-glx.desktop")
7374 (lambda _
7375 (format #t
7376 "[Desktop Entry]~@
7377 Name=xonotic-glx~@
7378 Comment=Xonotic glx~@
7379 Exec=~a/bin/xonotic-glx~@
7380 TryExec=~@*~a/bin/xonotic-glx~@
c834bd3b
P
7381 Icon=xonotic~@
7382 Categories=Game~@
dc70ff2a 7383 Type=Application~%"
7384 output)))
7385 (with-output-to-file
7386 (string-append apps "/xonotic-sdl.desktop")
7387 (lambda _
7388 (format #t
7389 "[Desktop Entry]~@
7390 Name=xonotic-sdl~@
7391 Comment=Xonotic sdl~@
7392 Exec=~a/bin/xonotic-sdl~@
7393 TryExec=~@*~a/bin/xonotic-sdl~@
c834bd3b
P
7394 Icon=xonotic~@
7395 Categories=Game~@
dc70ff2a 7396 Type=Application~%"
7397 output)))
7398 (with-output-to-file
7399 (string-append apps "/xonotic.desktop")
7400 (lambda _
7401 (format #t
7402 "[Desktop Entry]~@
7403 Name=xonotic~@
7404 Comment=Xonotic~@
7405 Exec=~a/bin/xonotic-glx~@
7406 TryExec=~@*~a/bin/xonotic~@
c834bd3b
P
7407 Icon=xonotic~@
7408 Categories=Game~@
dc70ff2a 7409 Type=Application~%"
7410 output)))
7411 #t)))
7412 (add-after 'install-desktop-entry 'install-icons
7413 (lambda* (#:key outputs #:allow-other-keys)
7414 (let ((out (assoc-ref outputs "out")))
7415 (with-directory-excursion "../../misc/logos/icons_png/"
7416 (for-each
7417 (lambda (file)
7418 (let* ((size (string-filter char-numeric? file))
7419 (icons (string-append out "/share/icons/hicolor/"
7420 size "x" size "/apps")))
7421 (mkdir-p icons)
7422 (copy-file file (string-append icons "/xonotic.png"))))
7423 '("xonotic_16.png" "xonotic_22.png" "xonotic_24.png"
7424 "xonotic_32.png" "xonotic_48.png" "xonotic_64.png"
7425 "xonotic_128.png" "xonotic_256.png" "xonotic_512.png"))))))
7426 (add-after 'install-icons 'install-binaries
7427 (lambda* (#:key outputs #:allow-other-keys)
7428 (let ((out (assoc-ref outputs "out")))
7429 (define (install src dst)
7430 (let ((dst (string-append out dst)))
7431 (mkdir-p (dirname dst))
7432 (copy-file src dst)))
7433 (mkdir-p (string-append out "/bin"))
7434 (install "../darkplaces/darkplaces-dedicated"
7435 "/bin/xonotic-dedicated")
7436 (install "../darkplaces/darkplaces-glx"
7437 "/bin/xonotic-glx")
7438 (install "../darkplaces/darkplaces-sdl"
7439 "/bin/xonotic-sdl")
7440 ;; Provide a default xonotic executable, defaulting to SDL.
7441 (symlink (string-append out "/bin/xonotic-sdl")
7442 (string-append out "/bin/xonotic"))
7443 #t)))
7444 (add-after 'install-binaries 'install-data
7445 (lambda* (#:key outputs inputs #:allow-other-keys)
7446 (let* ((out (assoc-ref outputs "out"))
7447 (data (assoc-ref inputs "xonotic-data")))
cc661cb3
P
7448 (symlink (string-append data "/share/xonotic")
7449 (string-append out "/share/xonotic"))
dc70ff2a 7450 #t)))
7451 (add-after 'install-binaries 'wrap-binaries
7452 (lambda* (#:key outputs inputs #:allow-other-keys)
7453 ;; Curl and libvorbis need to be wrapped so that we get
7454 ;; sound and networking.
7455 (let* ((out (assoc-ref outputs "out"))
7456 (bin (string-append out "/bin/xonotic"))
7457 (bin-sdl (string-append out "/bin/xonotic-sdl"))
7458 (bin-glx (string-append out "/bin/xonotic-glx"))
7459 (bin-dedicated (string-append out "/bin/xonotic-dedicated"))
7460 (curl (assoc-ref inputs "curl"))
7461 (vorbis (assoc-ref inputs "libvorbis")))
7462 (wrap-program bin
7463 `("LD_LIBRARY_PATH" ":" prefix
7464 (,(string-append curl "/lib:" vorbis "/lib"))))
7465 (wrap-program bin-sdl
7466 `("LD_LIBRARY_PATH" ":" prefix
7467 (,(string-append curl "/lib:" vorbis "/lib"))))
7468 (wrap-program bin-glx
7469 `("LD_LIBRARY_PATH" ":" prefix
7470 (,(string-append curl "/lib:" vorbis "/lib"))))
7471 (wrap-program bin-dedicated
7472 `("LD_LIBRARY_PATH" ":" prefix
7473 (,(string-append curl "/lib:" vorbis "/lib"))))
7474 #t))))))
7475 (inputs
7476 `(("xonotic-data" ,xonotic-data)
7477 ("alsa-lib" ,alsa-lib)
7478 ("curl" ,curl)
4bd428a7 7479 ("libjpeg" ,libjpeg-turbo)
dc70ff2a 7480 ("libmodplug" ,libmodplug)
7481 ("libvorbis" ,libvorbis)
7482 ("libogg" ,libogg)
7483 ("libxpm" ,libxpm)
7484 ("libxxf86dga" ,libxxf86dga)
7485 ("libxxf86vm" ,libxxf86vm)
7486 ("libx11" ,libx11)
7487 ("libxext" ,libxext)
7488 ("libxau" ,libxau)
7489 ("libxdmcp" ,libxdmcp)
7490 ("mesa" ,mesa)
7491 ("glu" ,glu)
7492 ("freetype" ,freetype)
7493 ("sdl2" ,sdl2)
7494 ("libpng" ,libpng)
7495 ("hicolor-icon-theme" ,hicolor-icon-theme)))
7496 (native-inputs
7497 `(("unzip" ,unzip)
7498 ("autoconf" ,autoconf)
7499 ("automake" ,automake)
7500 ("pkg-config" ,pkg-config)
7501 ("libtool" ,libtool)
7502 ("gmp" ,gmp)))
083b24e2 7503 (home-page "https://xonotic.org")
dc70ff2a 7504 (synopsis "Fast-paced first-person shooter game")
7505 (description
7506 "Xonotic is a free, fast-paced first-person shooter.
7507The project is geared towards providing addictive arena shooter
7508gameplay which is all spawned and driven by the community itself.
7509Xonotic is a direct successor of the Nexuiz project with years of
7510development between them, and it aims to become the best possible
7511open-source FPS of its kind.")
7512 (license (list license:gpl2+
7513 license:bsd-3 ; /source/d0_blind_id folder and others
9b9db6c4 7514 (license:x11-style "" "See file rcon.pl.")))))
39b5d8fd
BS
7515
7516(define-public frotz
7517 (package
7518 (name "frotz")
7519 (version "2.44")
7520 (source (origin
7521 (method url-fetch)
7522 (uri (list (string-append
7523 "http://www.ifarchive.org/if-archive/infocom/interpreters/"
e2c9f9de 7524 "frotz/frotz-" version ".tar.gz")
39b5d8fd
BS
7525 (string-append
7526 "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
e2c9f9de 7527 "frotz/frotz-" version ".tar.gz")))
39b5d8fd
BS
7528 (sha256
7529 (base32
7530 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
7531 (build-system gnu-build-system)
7532 (arguments
7533 `(#:tests? #f ; there are no tests
7534 #:phases
7535 (modify-phases %standard-phases
7536 (delete 'configure)
7537 (add-before 'build 'curses
7538 (lambda _
7539 (substitute* "Makefile"
7540 (("lcurses") "lncurses"))
7541 #t))
7542 (replace 'install
7543 (lambda* (#:key outputs #:allow-other-keys)
7544 (let* ((out (assoc-ref outputs "out"))
7545 (bin (string-append out "/bin"))
7546 (man (string-append out "/share/man/man6")))
7547 (install-file "frotz" bin)
7548 (mkdir-p man)
7549 (install-file "doc/frotz.6" man)
7550 #t))))))
7551 (inputs `(("libmodplug" ,libmodplug)
7552 ("libsamplerate" ,libsamplerate)
7553 ("libsndfile" ,libsndfile)
7554 ("libvorbis" ,libvorbis)
7555 ("ncurses" ,ncurses)))
7556 (synopsis "Portable Z-machine interpreter (ncurses version) for text adventure games")
7557 (description "Frotz is an interpreter for Infocom games and other Z-machine
7558games in the text adventure/interactive fiction genre. This version of Frotz
7559complies with standard 1.0 of Graham Nelson's specification. It plays all
7560Z-code games V1-V8, including V6, with sound support through libao, and uses
7561ncurses for text display.")
7562 (home-page "http://frotz.sourceforge.net")
7563 (license license:gpl2+)))
7564
7565(define-public frotz-dumb-terminal
7566 (package
7567 (name "frotz-dumb-terminal")
7568 (version "2.44")
7569 (source (origin
7570 (method url-fetch)
7571 (uri (list (string-append
7572 "http://www.ifarchive.org/if-archive/infocom/interpreters/"
98e27db5 7573 "frotz/frotz-" version ".tar.gz")
39b5d8fd
BS
7574 (string-append
7575 "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
98e27db5 7576 "frotz/frotz-" version ".tar.gz")))
39b5d8fd
BS
7577 (sha256
7578 (base32
7579 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
7580 (build-system gnu-build-system)
7581 (arguments
7582 `(#:tests? #f ; there are no tests
7583 #:phases
7584 (modify-phases %standard-phases
7585 (delete 'configure)
7586 (replace 'build
7587 (lambda _
7588 (invoke "make" "dumb")))
7589 (replace 'install
7590 (lambda* (#:key outputs #:allow-other-keys)
7591 (let* ((out (assoc-ref outputs "out"))
7592 (bin (string-append out "/bin"))
7593 (man (string-append out "/share/man/man6")))
7594 (install-file "dfrotz" bin)
7595 (mkdir-p man)
7596 (install-file "doc/dfrotz.6" man)
7597 #t))))))
7598 (synopsis "Portable Z-machine dumb interpreter for text adventure games")
7599 (description "Frotz is an interpreter for Infocom games and
7600other Z-machine games in the text adventure/interactive fiction genre.
7601dfrotz is the dumb interface version. You get no screen control; everything
7602is just printed to the terminal line by line. The terminal handles all the
7603scrolling. Maybe you'd like to experience what it's like to play Adventure on
7604a teletype. A much cooler use for compiling Frotz with the dumb interface is
7605that it can be wrapped in CGI scripting, PHP, and the like to allow people
7606to play games on webpages. It can also be made into a chat bot.")
7607 (home-page "http://frotz.sourceforge.net")
7608 (license license:gpl2+)))
7609
7610(define-public frotz-sdl
7611 (let* ((commit "4de8c34f2116fff554af6216c30ec9d41bf50b24"))
7612 (package
7613 (name "frotz-sdl")
7614 (version "2.45pre")
7615 (source (origin
7616 (method git-fetch)
7617 (uri (git-reference
7618 (url "https://gitlab.com/DavidGriffith/frotz")
7619 (commit commit)))
7620 (sha256
7621 (base32
7622 "18ms21pcrl7ipcnyqnf8janamkryzx78frsgd9kfk67jvbj0z2k8"))
7623 (file-name (git-file-name name version))))
7624 (build-system gnu-build-system)
7625 (arguments
7626 `(#:tests? #f ; there are no tests
7627 #:phases
7628 (modify-phases %standard-phases
7629 (delete 'configure)
7630 (add-before 'build 'patch-makefile
7631 (lambda _
7632 (substitute* "Makefile"
7633 (("lcurses") "lncurses")
7634 (("^BUILD_DATE_TIME =.*$")
7635 "BUILD_DATE_TIME = \"2.45pre-20180907.00000\"\n"))
7636 #t))
7637 (replace 'build
7638 (lambda _
7639 (invoke "make" "sdl")))
7640 (replace 'install
7641 (lambda* (#:key outputs #:allow-other-keys)
7642 (let* ((out (assoc-ref outputs "out"))
7643 (bin (string-append out "/bin"))
7644 (man (string-append out "/share/man/man6")))
7645 (install-file "sfrotz" bin)
7646 (mkdir-p man)
7647 (install-file "doc/sfrotz.6" man)
7648 #t))))))
7649 (native-inputs
7650 `(("pkg-config" ,pkg-config)
7651 ("which" ,which)
7652 ("perl" ,perl)))
7653 (inputs `(("sdl2" ,sdl2)
7654 ("sdl2-mixer" ,sdl2-mixer)
7655 ("libmodplug" ,libmodplug)
7656 ("libsamplerate" ,libsamplerate)
7657 ("libsndfile" ,libsndfile)
7658 ("libvorbis" ,libvorbis)
7659 ("ncurses" ,ncurses)
7660 ("freetype" ,freetype)
7661 ("libjpeg-turbo" ,libjpeg-turbo)))
7662 (synopsis "Portable Z-machine interpreter (SDL port) for text adventure games")
7663 (description "Frotz is an interpreter for Infocom games and other Z-machine
7664games in the text adventure/interactive fiction genre. This version of Frotz
7665using SDL fully supports all these versions of the Z-Machine including the
7666graphical version 6. Graphics and sound are created through the use of the SDL
7667libraries. AIFF sound effects and music in MOD and OGG formats are supported
7668when packaged in Blorb container files or optionally from individual files.")
7669 (home-page "http://frotz.sourceforge.net")
7670 (license license:gpl2+))))
18ebaa9e 7671
ce84582b
NG
7672(define-public frozen-bubble
7673 ;; Last official release is very outdated (2010). Use latest commit (2017).
7674 (let ((commit "d6a029110ad6ab9e4960052e175addc98807fb7e")
7675 (revision "1"))
7676 (package
7677 (name "frozen-bubble")
7678 (version (git-version "2.2.1" revision commit))
7679 (source
7680 (origin
7681 (method git-fetch)
7682 (uri (git-reference
b0e7b699 7683 (url "https://github.com/kthakore/frozen-bubble")
ce84582b
NG
7684 (commit commit)))
7685 (file-name (git-file-name name version))
7686 (sha256
7687 (base32 "1rfrcym5lf4qac2qdklikb1ywijyxypq298azzxahy461dadl6cx"))))
7688 (build-system perl-build-system)
7689 (arguments
7690 `(#:phases
7691 (modify-phases %standard-phases
7692 ;; Build process needs to create files in the "server"
7693 ;; directory.
7694 (add-after 'unpack 'fix-permissions
7695 (lambda _
7696 (for-each make-file-writable
7697 (find-files "server" "." #:directories? #t))))
7698 ;; By default, build stops at warnings.
7699 (add-after 'unpack 'prevent-build-error
7700 (lambda _
7701 (substitute* "inc/My/Builder.pm"
7702 (("-Werror") ""))
7703 #t))
7704 (add-after 'install 'install-desktop-file-and-icons
7705 (lambda* (#:key outputs #:allow-other-keys)
7706 (let* ((share (string-append (assoc-ref outputs "out") "/share"))
7707 (hicolor (string-append share "/icons/hicolor")))
7708 ;; Create desktop entry.
7709 (make-desktop-entry-file
7710 (string-append share "/applications/" ,name ".desktop")
7711 #:name "Frozen Bubble"
7712 #:comment "Frozen Bubble arcade game"
7713 #:exec ,name
7714 #:icon ,name
7715 #:categories '("Game" "ArcadeGame"))
7716 ;; Add icons.
7717 (with-directory-excursion "share/icons"
7718 (for-each
7719 (lambda (size)
7720 (let* ((dim (string-append size "x" size))
7721 (dir (string-append hicolor "/" dim "/apps")))
7722 (mkdir-p dir)
7723 (copy-file
7724 (string-append "frozen-bubble-icon-" dim ".png")
7725 (string-append dir "/frozen-bubble.png"))))
7726 '("16" "32" "48" "64"))))
7727 #t))
7728 (add-after 'install 'wrap-perl-libs
7729 (lambda* (#:key outputs #:allow-other-keys)
7730 (let ((out (assoc-ref outputs "out"))
7731 (perl5lib (getenv "PERL5LIB")))
7732 (for-each (lambda (prog)
7733 (wrap-program (string-append out "/" prog)
7734 `("PERL5LIB" ":" prefix
7735 (,(string-append perl5lib ":" out
7736 "/lib/perl5/site_perl")))))
7737 (find-files "bin" ".")))
7738 #t)))))
7739 (native-inputs
7740 `(("perl-alien-sdl" ,perl-alien-sdl)
7741 ("perl-capture-tiny" ,perl-capture-tiny)
7742 ("perl-locale-maketext-lexicon" ,perl-locale-maketext-lexicon)
7743 ("perl-module-build" ,perl-module-build)
7744 ("pkg-config" ,pkg-config)))
7745 (inputs
7746 `(("glib" ,glib)
7747 ("perl-compress-bzip2" ,perl-compress-bzip2)
7748 ("perl-file-sharedir" ,perl-file-sharedir)
7749 ("perl-file-slurp" ,perl-file-slurp)
7750 ("perl-file-which" ,perl-file-which)
7751 ("perl-ipc-system-simple" ,perl-ipc-system-simple)
7752 ("perl-sdl" ,perl-sdl)
7753 ("sdl" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-pango sdl-ttf)))))
7754 (home-page "http://frozen-bubble.org/")
7755 (synopsis "Puzzle with bubbles")
7756 (description
7757 "Frozen-Bubble is a clone of the popular Puzzle Bobble game, in which
7758you attempt to shoot bubbles into groups of the same color to cause them to
7759pop.
7760
7761Players compete as penguins and must use the arrow keys to aim a colored
7762bubble at groups of bubbles. The objective is to clear all the bubbles off
7763the screen before a bubble passes below a line at the bottom.
7764
7765It features 100 single-player levels, a two-player mode, music and striking
7766graphics. A level editor is also included to allow players to create and play
7767their own levels.")
7768 (license license:gpl2))))
7769
18ebaa9e
EB
7770(define-public libmanette
7771 (package
7772 (name "libmanette")
6b87881c 7773 (version "0.2.4")
18ebaa9e
EB
7774 (source (origin
7775 (method url-fetch)
5b35bdaa 7776 (uri (string-append "mirror://gnome/sources/libmanette/"
18ebaa9e 7777 (version-major+minor version) "/"
5b35bdaa 7778 "libmanette-" version ".tar.xz"))
18ebaa9e
EB
7779 (sha256
7780 (base32
6b87881c 7781 "1xrc6rh73v5w3kbkflzv1yg8sbxk4wf06hfk95raxhxlssza9q2g"))))
18ebaa9e
EB
7782 (build-system meson-build-system)
7783 (native-inputs
7784 `(("glib" ,glib "bin") ; for glib-compile-resources
7785 ("gobject-introspection" ,gobject-introspection)
7786 ("pkg-config" ,pkg-config)
7787 ("vala" ,vala)))
7788 (inputs
7789 `(("libevdev" ,libevdev)
7790 ("libgudev" ,libgudev)))
7791 (home-page "https://wiki.gnome.org/Apps/Games")
7792 (synopsis "Game controller library")
7793 (description "Libmanette is a small GObject library giving you simple
7794access to game controllers. It supports the de-facto standard gamepads as
7795defined by the W3C standard Gamepad specification or as implemented by the SDL
7796GameController.")
7797 (license license:lgpl2.1+)))
39c676c4
EB
7798
7799(define-public quadrapassel
7800 (package
7801 (name "quadrapassel")
2f648809 7802 (version "3.36.02")
39c676c4
EB
7803 (source (origin
7804 (method url-fetch)
49598564 7805 (uri (string-append "mirror://gnome/sources/quadrapassel/"
39c676c4 7806 (version-major+minor version) "/"
49598564 7807 "quadrapassel-" version ".tar.xz"))
39c676c4
EB
7808 (sha256
7809 (base32
2f648809 7810 "0c80pzipxricyh4wydffsc94wj6ymnanqr9bg6wdx51hz1mmmilb"))))
8a5bfb26
KK
7811 (build-system meson-build-system)
7812 (arguments
7813 '(#:glib-or-gtk? #t
7814 #:phases
7815 (modify-phases %standard-phases
7816 (add-after 'unpack 'skip-gtk-update-icon-cache
7817 ;; Don't create 'icon-theme.cache'.
7818 (lambda _
7819 (substitute* "build-aux/meson_post_install.py"
7820 (("gtk-update-icon-cache") (which "true")))
7821 #t)))))
39c676c4
EB
7822 (native-inputs
7823 `(("desktop-file-utils" ,desktop-file-utils) ;for desktop-file-validate
f2d97d57 7824 ("gettext" ,gettext-minimal)
39c676c4
EB
7825 ("glib" ,glib "bin") ;for glib-compile-resources
7826 ("itstool" ,itstool)
7827 ("libxml2" ,libxml2) ;for xmllint
7828 ("pkg-config" ,pkg-config)
7829 ("vala" ,vala)))
7830 (inputs
7831 `(("clutter" ,clutter)
7832 ("clutter-gtk" ,clutter-gtk)
2f648809 7833 ("gsound" ,gsound)
39c676c4
EB
7834 ("gtk+" ,gtk+)
7835 ("libcanberra" ,libcanberra)
7836 ("libmanette" ,libmanette)
7837 ("librsvg" ,librsvg)))
7838 (home-page "https://wiki.gnome.org/Apps/Quadrapassel")
7839 (synopsis "GNOME version of Tetris")
7840 (description "Quadrapassel comes from the classic falling-block game,
7841Tetris. The goal of the game is to create complete horizontal lines of
7842blocks, which will disappear. The blocks come in seven different shapes made
7843from four blocks each: one straight, two L-shaped, one square, and two
7844S-shaped. The blocks fall from the top center of the screen in a random
7845order. You rotate the blocks and move them across the screen to drop them in
7846complete lines. You score by dropping blocks fast and completing lines. As
7847your score gets higher, you level up and the blocks fall faster.")
7848 (license license:gpl2+)))
560df540
EF
7849
7850(define-public endless-sky
7851 (package
7852 (name "endless-sky")
e3bf2a66 7853 (version "0.9.12")
560df540
EF
7854 (source
7855 (origin
7856 (method git-fetch)
7857 (uri (git-reference
7858 (url "https://github.com/endless-sky/endless-sky")
7859 (commit (string-append "v" version))))
7860 (file-name (git-file-name name version))
7861 (sha256
e3bf2a66 7862 (base32 "18nkl4s3r5sy3sd9lhbdg9160c7fggklklprx0d5azifc8g6k0wj"))))
560df540
EF
7863 (build-system scons-build-system)
7864 (arguments
7865 `(#:scons ,scons-python2
7866 #:scons-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
7867 #:tests? #f ; no tests
7868 #:phases
7869 (modify-phases %standard-phases
7870 (add-after 'unpack 'patch-resource-locations
7871 (lambda* (#:key outputs #:allow-other-keys)
7872 (substitute* "source/Files.cpp"
7873 (("/usr/local/")
7874 (string-append (assoc-ref outputs "out") "/")))
7875 #t))
7876 (add-after 'unpack 'patch-scons
7877 (lambda _
7878 (substitute* "SConstruct"
7879 ;; Keep environmental variables
7880 (("Environment\\(\\)")
7881 "Environment(ENV = os.environ)")
7882 ;; Install into %out/bin
7883 (("games\"") "bin\""))
7884 #t)))))
7885 (inputs
7886 `(("glew" ,glew)
7887 ("libjpeg" ,libjpeg-turbo)
7888 ("libmad" ,libmad)
7889 ("libpng" ,libpng)
7890 ("openal" ,openal)
7891 ("sdl2" ,sdl2)))
7892 (home-page "https://endless-sky.github.io/")
7893 (synopsis "2D space trading and combat game")
7894 (description "Endless Sky is a 2D space trading and combat game. Explore
7895other star systems. Earn money by trading, carrying passengers, or completing
7896missions. Use your earnings to buy a better ship or to upgrade the weapons and
7897engines on your current one. Blow up pirates. Take sides in a civil war. Or
7898leave human space behind and hope to find friendly aliens whose culture is more
7899civilized than your own.")
7900 (license (list license:gpl3+
7901 license:cc-by-sa3.0
7902 license:cc-by-sa4.0
7903 license:public-domain))))
1faf0a04
NG
7904
7905(define-public stepmania
7906 (package
7907 (name "stepmania")
7908 (version "5.1.0-b2")
7909 (source
7910 (origin
7911 (method git-fetch)
7912 (uri (git-reference
b0e7b699 7913 (url "https://github.com/stepmania/stepmania")
1faf0a04
NG
7914 (commit (string-append "v" version))))
7915 (file-name (git-file-name name version))
7916 (sha256
7917 (base32
7918 "0a7y9l7xm510vgnpmj1is7p9m6d6yd0fcaxrjcickz295k5w3rdn"))
7919 (modules '((guix build utils)))
7920 (snippet
7921 '(begin
7922 ;; Remove song files, which are licensed under a non-commercial
7923 ;; clause, and a course pointing to them.
7924 (for-each delete-file-recursively
7925 '("Songs/StepMania 5/Goin' Under"
7926 "Songs/StepMania 5/MechaTribe Assault"
7927 "Songs/StepMania 5/Springtime"))
7928 (for-each delete-file '("Courses/Default/Jupiter.crs"
7929 "Courses/Default/Jupiter.png"))
7930 ;; Unbundle libpng.
7931 (substitute* "extern/CMakeLists.txt"
7932 (("include\\(CMakeProject-png.cmake\\)") ""))
7933 (delete-file-recursively "extern/libpng")
7934 #t))))
7935 (build-system cmake-build-system)
7936 (arguments
7937 `(#:tests? #f ;FIXME: couldn't find how to run tests
7938 #:build-type "Release"
7939 #:out-of-source? #f ;for the 'install-desktop' phase
7940 #:configure-flags
7941 (list "-DWITH_SYSTEM_FFMPEG=1"
296c8484
EF
7942 ;; SSE instructions are available on Intel systems only.
7943 ,@(if (any (cute string-prefix? <> (or (%current-target-system)
7944 (%current-system)))
7945 '("x64_64" "i686"))
7946 '()
7947 '("-DWITH_SSE2=NO"))
1faf0a04
NG
7948 ;; Configuration cannot find GTK2 without the two following
7949 ;; flags.
7950 (string-append "-DGTK2_GDKCONFIG_INCLUDE_DIR="
7951 (assoc-ref %build-inputs "gtk+")
7952 "/lib/gtk-2.0/include")
7953 (string-append "-DGTK2_GLIBCONFIG_INCLUDE_DIR="
7954 (assoc-ref %build-inputs "glib")
7955 "/lib/glib-2.0/include"))
7956 #:phases
7957 (modify-phases %standard-phases
47746772 7958 (add-after 'unpack 'ensure-application-files-can-be-found
45aba232 7959 (lambda* (#:key outputs #:allow-other-keys)
47746772
RW
7960 (let ((out (assoc-ref outputs "out")))
7961 (substitute* "src/arch/LoadingWindow/LoadingWindow_Gtk.cpp"
7962 (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\" \\+ \"GtkModule.so\"")
7963 (string-append "\"" out
7964 "/share/stepmania/GtkModule.so\"")))
7965 (substitute* "src/arch/ArchHooks/ArchHooks_Unix.cpp"
7966 (("Root = sDirOfExecutable")
7967 (string-append "Root = \"" out "/share/stepmania/\""))
7968 (("sDirOfExecutable \\+ \"/(Packages|Songs)\"" _ dir)
7969 (string-append "\"" out "/share/stepmania/" dir "\"")))
7970 (substitute* "src/RageFileManager.cpp"
7971 (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\"")
7972 (string-append "\"" out "/share/stepmania/\""))))
45aba232 7973 #t))
1faf0a04
NG
7974 (add-after 'unpack 'fix-install-subdir
7975 ;; Installation would be done in "%out/stepmania-X.Y", but we
7976 ;; prefer the more common layout "%out/share/stepmania".
7977 (lambda _
7978 (substitute* "src/CMakeLists.txt"
7979 (("\"stepmania-.*?\"") "\"share/stepmania\""))
7980 #t))
7981 (add-after 'unpack 'unbundle-libpng
7982 (lambda* (#:key inputs #:allow-other-keys)
7983 (substitute* "src/CMakeLists.txt"
7984 (("\\$\\{SM_EXTERN_DIR\\}/libpng/include")
7985 (string-append (assoc-ref inputs "libpng") "/include")))
7986 #t))
7987 (add-after 'install 'install-executable
7988 (lambda* (#:key outputs #:allow-other-keys)
7989 (let* ((out (assoc-ref outputs "out"))
7990 (bin (string-append out "/bin"))
7991 (exe (string-append out "/share/stepmania/stepmania")))
7992 (mkdir-p bin)
7993 (symlink exe (string-append bin "/stepmania"))
7994 #t)))
7995 (add-after 'install-executable 'install-desktop
7996 (lambda* (#:key outputs #:allow-other-keys)
7997 (let* ((out (assoc-ref outputs "out"))
7998 (share (string-append out "/share"))
7999 (applications (string-append share "/applications"))
8000 (icons (string-append share "/icons")))
8001 (install-file "stepmania.desktop" applications)
8002 (mkdir-p icons)
8003 (copy-recursively "icons" icons)
8004 #t)))
8005 ;; Move documentation in a more usual place, i.e.,
8006 ;; "%out/share/doc/stepmania/".
8007 (add-after 'install-desktop 'install-doc
8008 (lambda* (#:key outputs #:allow-other-keys)
8009 (let* ((out (assoc-ref outputs "out"))
8010 (share (string-append out "/share")))
8011 (with-directory-excursion share
8012 (mkdir-p "doc")
8013 (symlink "../stepmania/Docs" "doc/stepmania"))
8014 #t))))))
8015 (native-inputs
8016 `(("pkg-config" ,pkg-config)
8017 ("yasm" ,yasm)))
8018 (inputs
8019 `(("alsa-lib" ,alsa-lib)
8020 ;; Per upstream, StepMania is only guaranteed to work with a very
8021 ;; specific FFmpeg version, which is included in the repository as
8022 ;; a Git submodule. This particular version requirement usually
8023 ;; changes every few years.
8024 ("ffmpeg" ,ffmpeg-for-stepmania)
8025 ("glib" ,glib)
8026 ("glew" ,glew)
8027 ("gtk+" ,gtk+-2)
8028 ("jsoncpp" ,jsoncpp)
8029 ("libpng" ,libpng)
96738cb1 8030 ("libjpeg" ,libjpeg-turbo)
1faf0a04
NG
8031 ("libmad" ,libmad)
8032 ("libogg" ,libogg)
8033 ("libva" ,libva)
8034 ("libvorbis" ,libvorbis)
8035 ("libxinerama" ,libxinerama)
8036 ("libxrandr" ,libxrandr)
8037 ("mesa" ,mesa)
8038 ("pcre" ,pcre)
8039 ("pulseaudio" ,pulseaudio)
8040 ("sdl" ,sdl2)
8041 ("udev" ,eudev)
8042 ("zlib" ,zlib)))
8043 (synopsis "Advanced rhythm game designed for both home and arcade use")
8044 (description "StepMania is a dance and rhythm game. It features 3D
8045graphics, keyboard and dance pad support, and an editor for creating your own
8046steps.
8047
8048This package provides the core application, but no song is shipped. You need
8049to download and install them in @file{$HOME/.stepmania-X.Y/Songs} directory.")
8050 (home-page "https://www.stepmania.com")
8051 (license license:expat)))
8052
649220ad 8053(define-public btanks
ca32afac 8054 (package
649220ad 8055 (name "btanks")
ca32afac
RW
8056 (version "0.9.8083")
8057 (source
8058 (origin
8059 (method url-fetch)
8060 (uri (string-append "mirror://sourceforge/btanks/btanks-source/"
8061 "btanks-" version ".tar.bz2"))
8062 (sha256
8063 (base32
8064 "0ha35kxc8xlbg74wsrbapfgxvcrwy6psjkqi7c6adxs55dmcxliz"))))
8065 (build-system scons-build-system)
8066 (arguments
8067 `(#:tests? #f ; there are none
8068 #:scons ,scons-python2
8069 #:scons-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
8070 #:phases
8071 (modify-phases %standard-phases
8072 (add-after 'unpack 'replace-removed-scons-syntax
8073 (lambda _
8074 (substitute* "SConstruct"
8075 (("Options") "Variables")
8076 (("opts.Add\\(BoolOption.*") "opts.Add('gcc_visibility', 'gcc visibility', 'true')")
8077 (("opts.Add\\(EnumOption.*") "opts.Add('mode', 'build mode', 'release')"))
8078 #t))
8079 (add-after 'set-paths 'set-sdl-paths
8080 (lambda* (#:key inputs #:allow-other-keys)
8081 (setenv "CPATH"
8082 (string-append (assoc-ref inputs "sdl")
5ba856ab
MB
8083 "/include/SDL:"
8084 (or (getenv "CPATH") "")))
ca32afac
RW
8085 #t))
8086 (add-after 'unpack 'fix-compilation-errors
8087 (lambda _
8088 (substitute* "mrt/base_file.h"
8089 (("#include <string>" m)
8090 (string-append m "\n#include <sys/types.h>")))
8091 (substitute* '("engine/sl08/sl08.h"
8092 "engine/sl08/sl08.py")
8093 (("signal = NULL") "signal = 0")
8094 (("object\\(NULL\\)") "object(0)")
8095 (("func\\(NULL\\)") "func(0)")
8096 ((" connect\\(signal_ref\\)")
8097 " this->connect(signal_ref)"))
8098 (substitute* "math/range_list.h"
8099 ((" lower_bound\\(value\\)")
8100 " this->lower_bound(value)")
8101 ((" erase\\(i\\)")
8102 " this->erase(i)"))
8103 (substitute* "clunk/source.cpp"
8104 (("using namespace clunk" m)
8105 (string-append "# define pow10f(x) exp10f(x)\n" m)))
8106 #t))
8107 (add-after 'unpack 'find-lua
8108 (lambda _
8109 (substitute* "engine/SConscript"
8110 (("lua5.1") "lua-5.1")
8111 (("bt_libs.append\\(lua\\)")
8112 "bt_libs.append(\"lua\")"))
8113 #t)))))
8114 (inputs
8115 `(("expat" ,expat)
8116 ("glu" ,glu)
8117 ("libsmpeg" ,libsmpeg-with-sdl1)
8118 ("libvorbis" ,libvorbis)
8119 ("lua51" ,lua-5.1)
8120 ("sdl" ,(sdl-union (list sdl
8121 sdl-mixer
8122 sdl-image
8123 sdl-ttf)))
8124 ("zlib" ,zlib)))
8125 (native-inputs
8126 `(("pkg-config" ,pkg-config)
8127 ("zip" ,zip)))
8128 (home-page "http://btanks.sourceforge.net")
8129 (synopsis "Multiplayer tank battle game")
b1aee9fc
PN
8130 (description "Battle Tanks (also known as \"btanks\") is a funny battle
8131game, where you can choose one of three vehicles and eliminate your enemy
8132using the whole arsenal of weapons. It has original cartoon-like graphics and
8133cool music, it’s fun and dynamic, it has several network modes for deathmatch
8134and cooperative.")
ca32afac
RW
8135 ;; Some parts (e.g. mrt/b64.cpp) are LGPLv2.1+, but the whole package is
8136 ;; released under GPLv2 or later. It comes with extra exceptions for the
8137 ;; developers.
8138 (license (list license:gpl2+ license:lgpl2.1+))))
c06709b8
RW
8139
8140(define-public slingshot
8141 (package
8142 (name "slingshot")
8143 (version "0.9")
8144 (source
8145 (origin
8146 (method git-fetch)
8147 (uri (git-reference
b0e7b699 8148 (url "https://github.com/ryanakca/slingshot")
c06709b8
RW
8149 (commit version)))
8150 (file-name (git-file-name name version))
8151 (sha256
8152 (base32
8153 "19m8b6nsi786bc6gmkp185mwri3r5y249gjmqd5qsc23nnfhgrs1"))))
8154 (build-system python-build-system)
8155 (arguments
8156 `(#:python ,python-2))
8157 (inputs
8158 `(("python-pygame" ,python2-pygame)))
8159 (home-page "https://github.com/ryanakca/slingshot")
8160 (synopsis "Simple 2D shooting strategy game set in space")
8161 (description "Slingshot is a two-dimensional strategy game where two
8162players attempt to shoot one another through a section of space populated by
8163planets. The main feature of the game is that the shots, once fired, are
8164affected by the gravity of the planets.")
8165 (license license:gpl2+)))
8ada024b
RW
8166
8167(define-public 4dtris
8168 (package
8169 (name "4dtris")
8170 (version "0.4.3")
8171 (source
8172 (origin
8173 (method url-fetch)
8174 (uri (string-append "https://launchpad.net/4dtris/"
8175 (version-major+minor version)
8176 "/" version "/+download/4dtris_"
8177 version ".orig.tar.gz"))
8178 (sha256
8179 (base32
8180 "1nfkhcm0l89jyw8yr65na97g4l385zhjf7whkyg47c3v5sdqq2g7"))))
8181 (build-system gnu-build-system)
8182 (arguments
8183 `(#:phases
8184 (modify-phases %standard-phases
8185 (add-after 'unpack 'fix-install-directories
8186 (lambda* (#:key outputs #:allow-other-keys)
8187 (let ((out (assoc-ref outputs "out")))
8188 (substitute* "Makefile.in"
8189 (("bindir = /usr/games")
8190 (string-append "bindir = " out "/bin"))
8191 (("/usr/share/applications")
8192 (string-append out "/share/applications"))
8193 (("/usr/share/games/4dtris")
8194 (string-append out "/share/4dtris"))))
8195 #t))
8196 (add-after 'set-paths 'set-sdl-paths
8197 (lambda* (#:key inputs #:allow-other-keys)
8198 (setenv "CPATH"
8199 (string-append (assoc-ref inputs "sdl")
5ba856ab
MB
8200 "/include/SDL:"
8201 (or (getenv "CPATH") "")))
8ada024b
RW
8202 #t)))))
8203 (inputs
8204 `(("fontconfig" ,fontconfig)
8205 ("freeglut" ,freeglut)
8206 ("sdl" ,(sdl-union (list sdl sdl-ttf)))))
8207 (home-page "https://launchpad.net/4dtris/")
8208 (synopsis "4D Tetris")
8209 (description "4D-TRIS is an alteration of the well-known Tetris game. The
8210game field is extended to 4D space, which has to filled up by the gamer with
82114D hyper cubes.")
8212 (license license:gpl3)))
8213
8044e584
PN
8214(define-public arx-libertatis
8215 (package
8216 (name "arx-libertatis")
8217 (version "1.1.2")
8218 (source
8219 (origin
8220 (method url-fetch)
8221 (uri (string-append "http://arx-libertatis.org/files/arx-libertatis-"
8222 version ".tar.xz"))
8223 (sha256
8224 (base32
8225 "0hjfxlsmp8wwqr06snv2dlly2s79ra0d9aw49gkp6rn8m50b9bc2"))))
8226 (build-system cmake-build-system)
8227 (outputs '("out" "installer"))
8228 (arguments
8229 '(#:tests? #f ; No tests.
8230 #:phases
8231 (modify-phases %standard-phases
8232 (add-after 'unpack 'fix-install-helper-paths
8233 (lambda* (#:key inputs #:allow-other-keys)
8234 (let ((p7zip (assoc-ref inputs "p7zip"))
8235 (innoextract (assoc-ref inputs "innoextract"))
8236 (wget (assoc-ref inputs "wget"))
8237 (zenity (assoc-ref inputs "zenity")))
8238 (substitute* "scripts/arx-install-data"
8239 (("have innoextract")
8240 (string-append "have " innoextract "/bin/innoextract"))
8241 (("then innoextract")
8242 (string-append "then " innoextract "/bin/innoextract"))
8243 (("else innoextract")
8244 (string-append "else " innoextract "/bin/innoextract"))
8245 (("for _extract_zip_sz in 7za 7z")
8246 (string-append "for _extract_zip_sz in " p7zip "/bin/7za"))
8247 (("else if have 7z")
8248 (string-append "else if have " p7zip "/bin/7za"))
8249 (("7z x -tiso")
8250 (string-append p7zip "/bin/7z x -tiso"))
8251 (("if have wget")
8252 (string-append "if have " wget "/bin/wget"))
8253 (("wget -O")
8254 (string-append wget "/bin/wget -O"))
8255 (("for backend in \\$preferred zenity")
8256 (string-append "for backend in $preferred " zenity "/bin/zenity"))
8257 (("zenity +--title")
8258 (string-append zenity "/bin/zenity --title"))
8259 (("^zenity\\)")
8260 (string-append zenity "/bin/zenity)"))))
8261 #t))
8262 (add-after 'install 'move-installer
8263 (lambda* (#:key outputs #:allow-other-keys)
8264 (let ((out (assoc-ref outputs "out"))
8265 (installer (assoc-ref outputs "installer")))
8266 (mkdir-p (string-append installer "/bin"))
8267 (rename-file (string-append out "/bin/arx-install-data")
8268 (string-append installer "/bin/arx-install-data"))))))))
8269 (inputs
8270 `(("sdl" ,sdl) ; Switch to sdl2 in >1.1.2.
8271 ("mesa" ,mesa) ; Switch to libepoxy in >1.1.2.
8272 ("glew" ,glew)
8273 ("openal" ,openal)
8274 ("zlib" ,zlib)
8275 ("boost" ,boost)
8276 ("glm" ,glm)
8277 ("freetype" ,freetype)
8278 ;; The following are only needed by the arx-install-data script.
8279 ("p7zip" ,p7zip) ; Install-helper uses it to extract ISO and .cab archives.
8280 ("zenity" ,zenity) ; GUI for install-helper.
8281 ("wget" ,wget) ; Used by the install-helper to download the patch.
8282 ;; The install-helper needs it to extract the patch.
8283 ("innoextract" ,innoextract)))
8284 (home-page "https://arx-libertatis.org/")
8285 (synopsis "Port of Arx Fatalis, a first-person role-playing game")
37e47aa7
MB
8286 (description "Arx Libertatis is a cross-platform port of Arx Fatalis, a 2002
8287first-person role-playing game / dungeon crawler developed by Arkane Studios.
8288This port however does not include the game data, so you need to obtain a copy
8289of the original Arx Fatalis or its demo to play Arx Libertatis. Arx Fatalis
8290features crafting, melee and ranged combat, as well as a unique casting system
8291where the player draws runes in real time to effect the desired spell.")
8044e584 8292 (license license:gpl3+)))
47903653 8293
649220ad 8294(define-public edgar
47903653 8295 (package
649220ad 8296 (name "edgar")
d4d9f882 8297 (version "1.33")
47903653 8298 (source
8299 (origin
8300 (method url-fetch)
8301 (uri
8302 (string-append "https://github.com/riksweeney/edgar/releases/download/"
8303 version "/edgar-" version "-1.tar.gz"))
8304 (sha256
d4d9f882 8305 (base32 "1mbx7dvizdca4g1blcv3bdh6yxd13k47rkya4rdzg0nvvz24m175"))))
47903653 8306 (build-system gnu-build-system)
067826ab 8307 (arguments '(#:tests? #f ; there are no tests
47903653 8308 #:make-flags
8309 (list "CC=gcc"
8310 (string-append "PREFIX=" (assoc-ref %outputs "out"))
8311 (string-append "BIN_DIR=" (assoc-ref %outputs "out") "/bin/"))
8312 #:phases
8313 (modify-phases %standard-phases
8314 (delete 'configure)
8315 (add-before 'build 'fix-env
8316 (lambda* (#:key inputs #:allow-other-keys)
067826ab
TGR
8317 (setenv "CPATH"
8318 (string-append (assoc-ref inputs "sdl2-union")
5ba856ab
MB
8319 "/include/SDL2:"
8320 (or (getenv "CPATH") "")))
47903653 8321 #t)))))
067826ab
TGR
8322 (inputs
8323 `(("sdl2-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
8324 ("zlib" ,zlib)))
47903653 8325 (native-inputs
8326 `(("pkg-config" ,pkg-config)
8327 ("autoconf" ,autoconf)
8328 ("automake" ,automake)
f2d97d57 8329 ("gnu-gettext" ,gettext-minimal)
47903653 8330 ("libtool" ,libtool)
8331 ("which" ,which)))
8332 (synopsis "2d action platformer game")
8333 (description "The Legend of Edgar is a 2D platform game with a persistent world.
8334When Edgar's father fails to return home after venturing out one dark and stormy night,
8335Edgar fears the worst: he has been captured by the evil sorcerer who lives in
8336a fortress beyond the forbidden swamp.")
8337 (home-page "https://www.parallelrealities.co.uk/games/edgar/")
8338 (license license:gpl2+)))
f95e33a7 8339
4e43e317
NG
8340(define-public openclonk
8341 (package
8342 (name "openclonk")
8343 (version "8.1")
8344 (source (origin
8345 (method url-fetch)
8346 (uri (string-append
8347 "https://www.openclonk.org/builds/release/" version "/"
8348 "openclonk-" version "-src.tar.bz2"))
8349 (sha256
8350 (base32
8351 "0imkqjp8lww5p0cnqf4k4mb2v682mnsas63qmiz17rspakr7fxik"))))
8352 (build-system cmake-build-system)
8353 (arguments
8354 `(#:configure-flags '("-DAudio_TK=OpenAL")
8355 #:test-target "tests"
8356 #:phases
8357 (modify-phases %standard-phases
8358 (add-after 'unpack 'prepare-gmock
8359 (lambda* (#:key inputs #:allow-other-keys)
8360 (mkdir "gmock")
8361 (copy-recursively (assoc-ref inputs "googlemock") "gmock")
8362 (substitute* "tests/CMakeLists.txt"
8363 (("/usr/src/gmock")
8364 (string-append (getcwd) "/gmock/googlemock"))
8365 (("/usr/src/gtest")
8366 (string-append (getcwd) "/gmock/googletest"))
8367 (("PATH_SUFFIXES \"src\" \"gtest\"")
8368 "PATH_SUFFIXES \"src\""))
8369 #t))
ee9eafc1
MB
8370 (add-after 'unpack 'adjust-backward-cpp-includes
8371 (lambda _
8372 ;; XXX: The bundled backward-cpp exports a CMake "interface"
8373 ;; that includes external libraries such as libdl from glibc.
8374 ;; By default, CMake interface includes are treated as "system
8375 ;; headers", and GCC behaves poorly when glibc is passed as a
8376 ;; system header (causing #include_next failures).
8377
8378 ;; Here we prevent targets that consume the Backward::Backward
8379 ;; interface from treating it as "system includes".
8380 (substitute* "CMakeLists.txt"
8381 (("target_link_libraries\\((.+) Backward::Backward\\)" all target)
8382 (string-append "set_property(TARGET " target " PROPERTY "
8383 "NO_SYSTEM_FROM_IMPORTED true)\n"
8384 all)))
8385 #t))
4e43e317
NG
8386 (add-after 'unpack 'add-libiberty
8387 ;; Build fails upon linking executables without this.
8388 (lambda _
8389 (substitute* "thirdparty/backward-cpp/BackwardConfig.cmake"
8390 (("set\\(LIBBFD_LIBRARIES (.*?)\\)" _ libraries)
8391 (string-append "set(LIBBFD_LIBRARIES " libraries " iberty)")))
8392 #t))
8393 (add-after 'add-libiberty 'lax-freealut-requirement
8394 ;; TODO: We provide freealut 1.1.0, but pkg-config somehow detects
8395 ;; it as 1.0.1. Force minimal version.
8396 (lambda _
8397 (substitute* "cmake/FindAudio.cmake"
8398 (("freealut>=1.1.0") "freealut>=1.0.1"))
8399 #t))
8400 (add-after 'lax-freealut-requirement 'fix-directories
8401 ;; Prefer "$out/share/openclonk" over
8402 ;; "$out/share/games/openclonk". Also install "openclonk"
8403 ;; binary in "bin/", not "games/".
8404 (lambda _
8405 (substitute* "CMakeLists.txt"
8406 (("share/games/openclonk") "share/openclonk")
8407 (("TARGETS openclonk DESTINATION games")
8408 "TARGETS openclonk DESTINATION bin"))
8409 #t)))))
8410 (native-inputs
8411 `(("googlemock" ,(package-source googletest))
8412 ("googletest" ,googletest)
8413 ("pkg-config" ,pkg-config)))
8414 (inputs
8415 `(("freealut" ,freealut)
8416 ("freetype" ,freetype)
8417 ("glew" ,glew)
8418 ("libiberty" ,libiberty)
8419 ("libjpeg" ,libjpeg-turbo)
8420 ("libogg" ,libogg)
8421 ("libpng" ,libpng)
8422 ("libvorbis" ,libvorbis)
8423 ("libxrandr" ,libxrandr)
8424 ("mesa" ,mesa)
8425 ("miniupnpc" ,miniupnpc)
8426 ("openal" ,openal)
8427 ("qtbase" ,qtbase)
8428 ("readline" ,readline)
8429 ("sdl" ,sdl2)
8430 ("tinyxml" ,tinyxml)
8431 ("zlib" ,zlib)))
8432 (home-page "https://www.openclonk.org/")
8433 (synopsis
8434 "Multiplayer action game where you control small and nimble humanoids")
8435 (description "OpenClonk is a multiplayer action/tactics/skill game. It is
8436often referred to as a mixture of The Settlers and Worms. In a simple 2D
6018d26b 8437antfarm-style landscape, the player controls a crew of Clonks, small but
4e43e317
NG
8438robust humanoid beings. The game encourages free play but the normal goal is
8439to either exploit valuable resources from the earth by building a mine or
8440fight each other on an arena-like map.")
8441 ;; Software as a whole is licensed under ISC, artwork under CC-BY.
8442 (license (list license:isc license:cc-by3.0))))
ad4f6442
NG
8443
8444(define-public flare-engine
8445 (package
8446 (name "flare-engine")
f9622ec7 8447 (version "1.11")
ad4f6442
NG
8448 (source (origin
8449 (method git-fetch)
8450 (uri (git-reference
b0e7b699 8451 (url "https://github.com/flareteam/flare-engine")
ad4f6442
NG
8452 (commit (string-append "v" version))))
8453 (file-name (git-file-name name version))
8454 (sha256
8455 (base32
f9622ec7 8456 "1mqr1s72p5bdh4kq2a8hg72dk8lwnddicjnd2cdp1sbfa9lmjym8"))))
ad4f6442
NG
8457 (build-system cmake-build-system)
8458 (arguments
8459 `(#:tests? #f ;no test
8460 #:configure-flags '("-DBINDIR=bin" "-DDATADIR=share/flare")))
8461 (inputs
8462 `(("hicolor-icon-theme" ,hicolor-icon-theme)
8463 ("python" ,python-wrapper)
8464 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
8465 (home-page "http://www.flarerpg.org/")
8466 (synopsis "Action Roleplaying Engine")
8467 (description "Flare (Free Libre Action Roleplaying Engine) is a simple
8468game engine built to handle a very specific kind of game: single-player 2D
8469action RPGs.")
8470 (license license:gpl3+)))
8471
8472(define-public flare-game
8473 (package
8474 (name "flare-game")
ffbaefc7 8475 (version "1.11")
ad4f6442
NG
8476 (source (origin
8477 (method git-fetch)
8478 (uri (git-reference
b0e7b699 8479 (url "https://github.com/flareteam/flare-game")
ad4f6442
NG
8480 (commit (string-append "v" version))))
8481 (file-name (git-file-name name version))
8482 (sha256
8483 (base32
ffbaefc7 8484 "0bd5g7sd89a9176ilr408hdqzdfv4j7wj0idd685c1n6s01c3h6p"))))
ad4f6442
NG
8485 (build-system cmake-build-system)
8486 (arguments
8487 `(#:tests? #f ;no test
8488 #:configure-flags '("-DDATADIR=share/flare")
8489 #:phases
8490 (modify-phases %standard-phases
8491 ;; Flare expects the mods to be located in the same folder.
8492 ;; Yet, "default" mod is in the engine, whereas the others
8493 ;; are in the current package. Merge everything here with
8494 ;; a symlink.
8495 (add-after 'install 'add-default-mod
8496 (lambda* (#:key inputs outputs #:allow-other-keys)
8497 (let* ((out (assoc-ref outputs "out"))
8498 (mods (string-append out "/share/flare/mods")))
8499 (with-directory-excursion mods
8500 (symlink (string-append (assoc-ref inputs "flare-engine")
8501 "/share/flare/mods/default")
8502 "default")))
8503 #t))
8504 (add-after 'install 'install-executable
8505 ;; The package only provides assets for the game, the
8506 ;; executable coming from "flare-engine". Since more than
8507 ;; one game may use the engine, we create a new executable,
8508 ;; "flare-game", which launches the engine with appropriate
8509 ;; parameters.
8510 (lambda* (#:key inputs outputs #:allow-other-keys)
8511 (let* ((out (assoc-ref outputs "out"))
8512 (bash (string-append (assoc-ref inputs "bash")
8513 "/bin/bash"))
8514 (flare (string-append (assoc-ref inputs "flare-engine")
8515 "/bin/flare"))
8516 (script (string-append out "/bin/flare-game")))
8517 (mkdir-p (dirname script))
8518 (call-with-output-file script
8519 (lambda (port)
8520 (format port
8521 "#!~a
8522exec ~a --data-path=~a/share/flare --mods=empyrean_campaign~%"
8523 bash
8524 flare
8525 out)))
8526 (chmod script #o755))
8527 #t)))))
8528 (inputs
8529 `(("flare-engine" ,flare-engine)))
8530 (home-page "http://www.flarerpg.org/")
8531 (synopsis "Fantasy action RPG using the FLARE engine")
8532 (description "Flare is a single-player 2D action RPG with
8533fast-paced action and a dark fantasy style.")
8534 (license license:cc-by-sa3.0)))
660e0050
NG
8535
8536(define-public meritous
8537 (package
8538 (name "meritous")
8539 (version "1.5")
8540 (source (origin
8541 (method git-fetch)
8542 (uri (git-reference
8543 (url "https://gitlab.com/meritous/meritous.git")
8544 (commit (string-append "v" version))))
8545 (file-name (git-file-name name version))
8546 (sha256
8547 (base32
8548 "0n5jm4g0arjllgqmd2crv8h02i6hs3hlh1zyc7ng7yfpg1mbd8p8"))))
8549 (build-system gnu-build-system)
8550 (arguments
8551 `(#:tests? #f ;no test
8552 #:make-flags
8553 (list "CC=gcc"
8554 (string-append "prefix=" (assoc-ref %outputs "out")))
8555 #:phases
8556 (modify-phases %standard-phases
8557 (delete 'configure)
8558 (add-after 'unpack 'fix-sdl-path
8559 ;; XXX: For some reason, `sdl-config' reports stand-alone SDL
8560 ;; directory, not SDL-union provided as an input to the package.
8561 ;; We force the latter with "--prefix=" option.
8562 (lambda* (#:key inputs #:allow-other-keys)
8563 (substitute* "Makefile"
8564 (("sdl-config" command)
8565 (string-append command " --prefix=" (assoc-ref inputs "sdl"))))
8566 #t))
8567 (add-after 'unpack 'fix-crash
8568 ;; XXX: Songs are not present in the repository, due to licensing
8569 ;; issues. Yet, the game tries to load them, and, since it cannot
8570 ;; find them, crashes. Users cannot add them back, the store being
8571 ;; read-only, so we turn off background music altogether.
8572 (lambda _
8573 (substitute* "src/audio.c"
8574 (("PlayBackgroundMusic\\(new_track\\);" all)
8575 (string-append "// " all)))
8576 #t)))))
8577 (native-inputs
8578 `(("intltool" ,intltool)))
8579 (inputs
8580 `(("sdl" ,(sdl-union (list sdl sdl-image sdl-mixer)))
8581 ("zlib" ,zlib)))
8582 (home-page "https://gitlab.com/meritous/meritous")
8583 (synopsis "Action-adventure dungeon crawl game")
8584 (description "Far below the surface of the planet is a place of limitless
8585power. Those that seek to control such a utopia will soon bring an end to
8586themselves. Seeking an end to the troubles that plague him, PSI user Merit
8587journeys into the hallowed Orcus Dome in search of answers.
8588
8589Meritous is a action-adventure game with simple controls but a challenge to
8590find a balance of power versus recovery time during real-time battles. Set in
8591a procedurally generated world, the player can explore thousands of rooms in
8592search of powerful artifacts, tools to help them, and to eventually free the
8593Orcus Dome from evil.")
8594 (license license:gpl3+)))
472af999
RW
8595
8596(define-public marble-marcher
8597 (let ((commit "e580460a0c3826f9b28ab404607942a8ecb625d7")
8598 (revision "1"))
8599 (package
8600 (name "marble-marcher")
8601 (version (git-version "0" revision commit))
8602 (source (origin
8603 (method git-fetch)
8604 (uri (git-reference
b0e7b699 8605 (url "https://github.com/HackerPoet/MarbleMarcher")
472af999
RW
8606 (commit commit)))
8607 (file-name (git-file-name name version))
8608 (sha256
8609 (base32
8610 "0jjv832hl1v170n6gryp2sr3lgqndi9ab841qvgqk68bks8701mx"))))
8611 (build-system cmake-build-system)
8612 (arguments
8613 `(#:tests? #f ; there are none
8614 #:phases
8615 (modify-phases %standard-phases
8616 (add-after 'unpack 'embed-asset-directory
8617 (lambda* (#:key outputs #:allow-other-keys)
8618 (let ((assets (string-append (assoc-ref outputs "out")
8619 "/share/marble-marcher/assets/")))
8620 ;; Some of the files we're patching are
8621 ;; ISO-8859-1-encoded, so choose it as the default
8622 ;; encoding so the byte encoding is preserved.
8623 (with-fluids ((%default-port-encoding #f))
8624 (substitute* "src/Resource.rc"
8625 (("../assets/icon.ico")
8626 (string-append assets "icon.ico")))
8627 (substitute* "src/Res.h"
8628 (("assets/") assets))))
8629 #t))
8630 (replace 'install
8631 (lambda* (#:key outputs #:allow-other-keys)
8632 (let* ((out (assoc-ref outputs "out"))
8633 (assets (string-append out "/share/marble-marcher/assets"))
8634 (bin (string-append out "/bin/")))
8635 (mkdir-p bin)
8636 (mkdir-p assets)
8637 (copy-recursively "../source/assets" assets)
8638 (install-file "MarbleMarcher" bin))
8639 #t)))))
8640 (inputs
8641 `(("eigen" ,eigen)
8642 ("mesa" ,mesa)
8643 ("sfml" ,sfml)))
8644 (native-inputs
8645 `(("pkg-config" ,pkg-config)))
8646 (home-page "https://codeparade.itch.io/marblemarcher")
8647 (synopsis "Guide a marble across fractal landscapes")
8648 (description "Marble Marcher is a video game that uses a fractal physics
8649engine and fully procedural rendering to produce beautiful and unique
8650gameplay. The game is played on the surface of evolving fractals. The goal
8651of the game is to get your marble to the flag as quickly as possible. But be
8652careful not to fall off the level or get crushed by the fractal! There are 24
8653levels to unlock.")
8654 ;; Code is under GPLv2+, assets are under CC-BY-SA 3.0 and OFL 1.1.
8655 (license (list license:gpl2+
8656 license:silofl1.1
8657 license:cc-by-sa3.0)))))
20185e4f 8658
a84510f9 8659;; This must be updated together with flightgear.
20185e4f
RW
8660(define simgear
8661 (package
8662 (name "simgear")
8a3d0416
NG
8663 (version "2018.3.5")
8664 (source
8665 (origin
8666 (method url-fetch)
8667 (uri (string-append "mirror://sourceforge/flightgear/release-"
8668 (version-major+minor version) "/"
8669 "simgear-" version ".tar.bz2"))
8670 (sha256
8671 (base32 "1vkqm66r1205k3hdjmx5wmx5kvmsb0dgfzrs8n5gqnxj8szs42dl"))))
20185e4f
RW
8672 (build-system cmake-build-system)
8673 (arguments
8674 `(#:phases
8675 (modify-phases %standard-phases
8676 (replace 'check
8677 (lambda _
8678 ;; Skip tests that require internet access.
8679 (invoke "ctest" "-E" "(http|dns)"))))))
8680 (inputs
8a3d0416 8681 `(("boost" ,boost-for-mysql) ; fails with 1.69
20185e4f
RW
8682 ("curl" ,curl)
8683 ("expat" ,expat)
8684 ("mesa" ,mesa)
8685 ("openal" ,openal)
8686 ("openscenegraph" ,openscenegraph-3.4)
8687 ("zlib" ,zlib)))
8688 (home-page "https://home.flightgear.org/")
8689 (synopsis "Libraries for 3D simulations and games")
8690 (description "SimGear is a set of libraries designed to be used as
8691building blocks for quickly assembling 3D simulations, games, and
8692visualization applications. SimGear is developed by the FlightGear project
8693and also provides the base for the FlightGear Flight Simulator.")
8694 (license license:lgpl2.0+)))
a84510f9
RW
8695
8696(define-public flightgear
8697 (package
8698 (name "flightgear")
8699 (version (package-version simgear))
8a3d0416
NG
8700 (source
8701 (origin
8702 (method url-fetch)
8703 (uri (string-append "mirror://sourceforge/flightgear/release-"
8704 (version-major+minor version) "/"
8705 "flightgear-" version ".tar.bz2"))
8706 (sha256
8707 (base32 "0ya3vb539kwi1qrifqhsj5j3k4w6s06hrllp2vdzxf6id7cgf0hc"))
8708 (modules '((guix build utils)))
8709 (snippet
8710 '(begin
8711 ;; There are some bundled libraries.
8712 (for-each delete-file-recursively
8713 '("3rdparty/sqlite3/"))
8714 #t))))
a84510f9
RW
8715 (build-system cmake-build-system)
8716 (arguments
8717 `(#:configure-flags
8718 (list "-DSYSTEM_SQLITE=ON"
8719 (string-append "-DFG_DATA_DIR="
8720 (assoc-ref %outputs "out")
8721 "/share/flightgear"))
8722 ;; TODO: test cannot be run because the "run_test_suite" executable
8723 ;; does not seem to be built.
8724 #:tests? #f
8725 #:phases
8726 (modify-phases %standard-phases
8727 (add-after 'install 'wrap-executable
8728 (lambda* (#:key inputs outputs #:allow-other-keys)
8729 (let ((out (assoc-ref outputs "out")))
8730 (wrap-program (string-append out "/bin/fgfs")
8731 `("QT_PLUGIN_PATH" ":" prefix
8732 ,(map (lambda (label)
8733 (string-append (assoc-ref inputs label)
8734 "/lib/qt5/plugins"))
8735 '("qtbase" "qtdeclarative" "qtsvg")))
8736 `("QML2_IMPORT_PATH" ":" prefix
8737 ,(map (lambda (label)
8738 (string-append (assoc-ref inputs label)
8739 "/lib/qt5/qml"))
8740 '("qtdeclarative" "qtsvg"))))
8741 #t)))
8742 (add-after 'install 'install-data
8743 (lambda* (#:key inputs outputs #:allow-other-keys)
8744 (let ((share (string-append (assoc-ref outputs "out") "/share/flightgear")))
8745 (mkdir-p share)
8746 (with-directory-excursion share
8747 (invoke "tar" "xf" (assoc-ref inputs "flightgear-data")
8748 "--strip-components=1")))
8749 #t)))))
8750 (inputs
8751 `(("boost" ,boost-for-mysql) ; same as simgear
8752 ("dbus" ,dbus)
8753 ("eudev" ,eudev)
8754 ("freeglut" ,freeglut)
8755 ("freetype" ,freetype)
8756 ("glew" ,glew)
8757 ("libpng" ,libpng)
8758 ("openal" ,openal)
8759 ("openscenegraph" ,openscenegraph-3.4)
8760 ("plib" ,plib)
8761 ("qtbase" ,qtbase)
8762 ("qtdeclarative" ,qtdeclarative)
8763 ("qtsvg" ,qtsvg)
8764 ("simgear" ,simgear)
8765 ("speexdsp" ,speexdsp)
8766 ("sqlite" ,sqlite)
8767 ("zlib" ,zlib)))
8768 (native-inputs
8769 `(("cppunit" ,cppunit)
8770 ("pkg-config" ,pkg-config)
8771 ("qttools" ,qttools)
8772 ("flightgear-data"
8773 ,(origin
8774 (method url-fetch)
8775 (uri (string-append "mirror://sourceforge/flightgear/release-"
8776 (version-major+minor version) "/"
8777 "FlightGear-" version "-data.tar.bz2"))
8778 (sha256
8779 (base32
8a3d0416 8780 "04fv9za5zlyxlyfh6jx78y42l3jazvzl9dq2y6rzxqlcc9g5swhk"))))))
a84510f9
RW
8781 (home-page "https://home.flightgear.org/")
8782 (synopsis "Flight simulator")
8783 (description "The goal of the FlightGear project is to create a
8784sophisticated flight simulator framework for use in research or academic
8785environments, pilot training, as an industry engineering tool, for DIY-ers to
8786pursue their favorite interesting flight simulation idea, and last but
8787certainly not least as a fun, realistic, and challenging desktop flight
8788simulator.")
8789 (license license:gpl2+)))
e8a0696d
NG
8790
8791(define-public jumpnbump
8792 (package
8793 (name "jumpnbump")
60d2aaa5 8794 (version "1.61")
e8a0696d
NG
8795 (source (origin
8796 (method git-fetch)
8797 (uri (git-reference
8798 (url "https://gitlab.com/LibreGames/jumpnbump.git")
8799 (commit version)))
8800 (file-name (git-file-name name version))
8801 (sha256
8802 (base32
60d2aaa5 8803 "12lwl5sl5n009nb83r8l4lakb9286csqdf1ynpmwwydy17giqsdp"))))
e8a0696d
NG
8804 (build-system gnu-build-system)
8805 (arguments
8806 `(#:make-flags
8807 (list "CC=gcc"
8808 (string-append "PREFIX=" (assoc-ref %outputs "out")))
8809 #:tests? #f ;no test
8810 #:phases
8811 (modify-phases %standard-phases
8812 (delete 'configure) ;no configure script
8813 (add-after 'unpack 'fix-sdl-path
8814 ;; XXX: For some reason, `sdl2-config' reports stand-alone SDL
8815 ;; directory, not SDL-union provided as an input to the package.
8816 ;; We force the latter with "--prefix=" option.
8817 (lambda* (#:key inputs #:allow-other-keys)
8818 (substitute* "Makefile"
8819 (("sdl2-config" command)
8820 (string-append command " --prefix=" (assoc-ref inputs "sdl"))))
8821 #t)))))
8822 (inputs
8823 `(("bzip2" ,bzip2)
8824 ("sdl" ,(sdl-union (list sdl2 sdl2-mixer sdl2-net)))
8825 ("zlib" ,zlib)))
8826 (native-inputs
8827 `(("gettext" ,gettext-minimal))) ;for msgfmt
8828 (home-page "https://gitlab.com/LibreGames/jumpnbump")
8829 (synopsis "Multiplayer platform game with bunnies")
8830 (description "You, as a bunny, have to jump on your opponents to make them
8831explode. It is a true multiplayer game; you cannot play this alone. You can
8832play with up to four players simultaneously. It has network support.")
8833 (license license:gpl2+)))
a3d4a631
NG
8834
8835(define-public hedgewars
8836 (package
8837 (name "hedgewars")
ea042113 8838 (version "1.0.0")
a3d4a631
NG
8839 (source (origin
8840 (method url-fetch)
8841 (uri (string-append "https://www.hedgewars.org/download/releases/"
8842 "hedgewars-src-" version ".tar.bz2"))
8843 (sha256
8844 (base32
ea042113 8845 "0nqm9w02m0xkndlsj6ys3wr0ik8zc14zgilq7k6fwjrf3zk385i1"))))
a3d4a631
NG
8846 (build-system cmake-build-system)
8847 (arguments
8848 ;; XXX: Engine is built as Pascal source code, requiring Free Pascal
8849 ;; Compiler, which we haven't packaged yet. With the flag below, we use
8850 ;; a Pascal to C translator and Clang instead.
8851 `(#:configure-flags (list "-DBUILD_ENGINE_C=ON")
8852 #:phases
8853 (modify-phases %standard-phases
a3d4a631 8854 (replace 'check
0fc715f9
TL
8855 (lambda _ (invoke "ctest")))
8856 (add-after 'install 'install-icon
8857 (lambda _
8858 ;; Install icon for the desktop file.
8859 (let* ((out (assoc-ref %outputs "out"))
8860 (icons (string-append out "/share/icons/hicolor/512x512/apps")))
8861 (with-directory-excursion (string-append "../hedgewars-src-" ,version)
8862 (install-file "misc/hedgewars.png" icons)))
8863 #t)))))
a3d4a631
NG
8864 (inputs
8865 `(("ffmpeg" ,ffmpeg)
8866 ("freeglut" ,freeglut)
8867 ("ghc-entropy" ,ghc-entropy)
8868 ("ghc-hslogger" ,ghc-hslogger)
8869 ("ghc-network" ,ghc-network)
8870 ("ghc-random" ,ghc-random)
8871 ("ghc-regex-tdfa" ,ghc-regex-tdfa)
8872 ("ghc-sandi" ,ghc-sandi)
8873 ("ghc-sha" ,ghc-sha)
8874 ("ghc-utf8-string" ,ghc-utf8-string)
8875 ("ghc-vector" ,ghc-vector)
8876 ("ghc-zlib" ,ghc-zlib)
8877 ("glew" ,glew)
8878 ("libpng" ,libpng)
8879 ("lua" ,lua-5.1)
8880 ("physfs" ,physfs)
8881 ("qtbase" ,qtbase)
8882 ("sdl" ,(sdl-union
8883 (list sdl2 sdl2-mixer sdl2-net sdl2-ttf sdl2-image)))))
8884 (native-inputs
8885 `(("clang" ,clang)
8886 ("ghc" ,ghc)
8887 ("pkg-config" ,pkg-config)
8888 ("qttools" ,qttools)))
8889 (home-page "https://hedgewars.org/")
8890 (synopsis "Turn-based artillery game featuring fighting hedgehogs")
8891 (description
8892 "Hedgewars is a turn based strategy, artillery, action and comedy game,
8893featuring the antics of pink hedgehogs with attitude as they battle from the
8894depths of hell to the depths of space.
8895
8896As commander, it's your job to assemble your crack team of hedgehog soldiers
8897and bring the war to your enemy.")
8898 ;; Software as a whole is licensed under GPL-2 terms. Artwork and
8899 ;; scripts are distributed under various terms.
8900 (license (list license:gpl2
8901 license:bsd-2 license:bsd-3 license:cc-by3.0 license:cc0
8902 license:expat license:fdl1.3+ license:public-domain
8903 license:zlib))))
1bba3e8c
JL
8904
8905(define-public harmonist
8906 (package
8907 (name "harmonist")
9f5cb517 8908 (version "0.3.0")
1bba3e8c
JL
8909 (source (origin
8910 (method git-fetch)
8911 (uri (git-reference
8912 (url "https://git.tuxfamily.org/harmonist/harmonist.git")
8913 (commit (string-append "v" version))))
8914 (file-name (git-file-name name version))
8915 (sha256
8916 (base32
9f5cb517 8917 "146wiyanag0zqj6fhyll2sw6sydnnll8mgxhhqf9sjqsl2rx4s5r"))))
1bba3e8c
JL
8918 (build-system go-build-system)
8919 (arguments
8920 '(#:import-path "git.tuxfamily.org/harmonist/harmonist"))
8921 (inputs
8922 `(("go-github.com-nsf-termbox-go" ,go-github.com-nsf-termbox-go)))
8923 (home-page "https://harmonist.tuxfamily.org/")
8924 (synopsis "Stealth coffee-break roguelike game")
8925 (description "Harmonist: Dayoriah Clan Infiltration is a stealth
8926coffee-break roguelike game. The game has a heavy focus on tactical
8927positioning, light and noise mechanisms, making use of various terrain types
8928and cones of view for monsters. Aiming for a replayable streamlined experience,
8929the game avoids complex inventory management and character building, relying
8930on items and player adaptability for character progression.")
8931 (license license:isc)))
e93352d6 8932
453365bc
JL
8933(define-public harmonist-tk
8934 (package
8935 (inherit harmonist)
8936 (name "harmonist-tk")
8937 (arguments
8938 (append
8939 (package-arguments harmonist)
8940 `(#:phases
8941 (modify-phases %standard-phases
8942 (replace 'build
8943 (lambda _
8944 (invoke "go" "install" "-v" "-x" "--tags" "tk"
8945 "git.tuxfamily.org/harmonist/harmonist")))
8946 (replace 'check
8947 (lambda _
8948 (invoke "go" "test" "--tags" "tk"
8949 "git.tuxfamily.org/harmonist/harmonist")))))))
8950 (inputs
8951 `(("go-github.com-nsf-gothic" ,go-github.com-nsf-gothic)))))
8952
e93352d6
NG
8953(define-public drascula
8954 (package
8955 (name "drascula")
8956 (version "1.0")
8957 (source (origin
8958 (method url-fetch)
8959 (uri (string-append "mirror://sourceforge/scummvm/extras/"
8960 "Drascula_%20The%20Vampire%20Strikes%20Back/"
8961 "drascula-" version ".zip"))
8962 (sha256
8963 (base32
8964 "1pj29rpb754sn6a56f8brfv6f2m1p5qgaqik7d68pfi2bb5zccdp"))))
8965 (build-system trivial-build-system)
8966 (arguments
8967 `(#:modules ((guix build utils))
8968 #:builder
8969 (begin
8970 (use-modules (guix build utils)
8971 (ice-9 match))
8972 (let* ((out (assoc-ref %outputs "out"))
8973 (share (string-append out "/share/drascula"))
8974 (scummvm (assoc-ref %build-inputs "scummvm")))
8975 ;; Install data.
8976 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
8977 "/bin/unzip"))
8978 (doc (string-append out "/share/doc/" ,name "-" ,version)))
8979 (for-each
8980 (lambda (input)
8981 (invoke unzip
8982 "-j"
8983 (assoc-ref %build-inputs input)
8984 "-x" "__MACOSX")
8985 ;; Every input provides "readme.txt", and we want to
8986 ;; preserve them all. Therefore we rename them first.
8987 (match input
8988 ("drascula-int"
8989 (rename-file "readme.txt" "readme-international.txt"))
8990 ("drascula-audio"
8991 (rename-file "readme.txt" "readme-audio.txt"))
8992 (_ #f))
8993 ;; Install documentation.
8994 (for-each (lambda (f) (install-file f doc))
8995 (find-files "." "\\.(txt|doc)$"))
8996 ;; Install data.
8997 (for-each (lambda (f) (install-file f share))
8998 (find-files "." "\\.(ogg|00[0-9])$")))
8999 '("drascula-audio" "drascula-int" "source")))
9000 ;; Create standalone executable.
9001 (let* ((bin (string-append out "/bin"))
9002 (executable (string-append bin "/drascula"))
9003 (bash (string-append (assoc-ref %build-inputs "bash")
9004 "/bin/bash")))
9005 (mkdir-p bin)
9006 (with-output-to-file executable
9007 (lambda ()
9008 (format #t "#!~a~%" bash)
9009 (format #t
9010 "exec ~a/bin/scummvm --path=~a drascula~%"
9011 scummvm share)))
9012 (chmod executable #o755))
9013 ;; Create desktop file. There is no dedicated icon for the
9014 ;; game, so we borrow SCUMMVM's.
9015 (let ((apps (string-append out "/share/applications")))
9016 (mkdir-p apps)
47f4df15
PN
9017 (make-desktop-entry-file
9018 (string-append apps "/drascula.desktop")
9019 #:name "Drascula: The Vampire Strikes Back"
9020 #:generic-name "Drascula"
9021 #:exec (string-append out "/bin/drascula")
9022 #:icon (string-append scummvm "/share/icons/hicolor/scalable/apps/scummvm.svg")
9023 #:categories '("AdventureGame" "Game" "RolePlaying")
9024 #:keywords '("game" "adventure" "roleplaying" "2D" "fantasy")
9025 #:comment '((#f "Classic 2D point and click adventure game")
9026 ("de" "Klassisches 2D-Abenteuerspiel in Zeigen-und-Klicken-Manier")
9027 ("fr" "Jeu classique d'aventure pointer-et-cliquer en 2D")
9028 ("it" "Gioco classico di avventura punta e clicca 2D"))))
e93352d6
NG
9029 #t))))
9030 (native-inputs
9031 `(("bash" ,bash)
9032 ("unzip" ,unzip)))
9033 (inputs
9034 `(("scummvm" ,scummvm)
9035 ("drascula-int"
9036 ,(let ((version "1.1"))
9037 (origin
9038 (method url-fetch)
9039 (uri (string-append "mirror://sourceforge/scummvm/extras/"
9040 "Drascula_%20The%20Vampire%20Strikes%20Back/"
9041 "drascula-int-" version ".zip"))
9042 (sha256
9043 (base32
9044 "12236i7blamal92p1i8dgp3nhp2yicics4whsl63v682bj999n14")))))
9045 ("drascula-audio"
9046 ,(let ((version "2.0"))
9047 (origin
9048 (method url-fetch)
9049 (uri (string-append "mirror://sourceforge/scummvm/extras/"
9050 "Drascula_%20The%20Vampire%20Strikes%20Back/"
9051 "drascula-audio-" version ".zip"))
9052 (sha256
9053 (base32
9054 "00g4izmsqzxb8ry1vhfx6jrygl58lvlij09nw01ds4zddsiznsky")))))))
9055 (home-page "https://www.scummvm.org")
9056 (synopsis "Classic 2D point and click adventure game")
9057 (description "Drascula: The Vampire Strikes Back is a classic humorous 2D
9058point and click adventure game.
9059
9060In Drascula you play the role of John Hacker, a British estate agent, that
9061gets to meet a gorgeous blond girl who is kidnapped by the notorious vampire
9062Count Drascula and embark on a fun yet dangerous quest to rescue her.
9063Unfortunately, Hacker is not aware of Drascula's real ambitions: DOMINATING
9064the World and demonstrating that he is even more evil than his brother Vlad.")
9065 ;; Drascula uses a BSD-like license.
9066 (license (license:non-copyleft "file:///readme.txt"))))
08c2fb8f 9067
e7db97db
NG
9068(define (make-lure-package name language hash)
9069 (package
9070 (name name)
9071 (version "1.1")
9072 (source
9073 (origin
9074 (method url-fetch)
9075 (uri (string-append
9076 "mirror://sourceforge/scummvm/extras/"
9077 "Lure%20of%20the%20Temptress/"
9078 name "-" version ".zip"))
9079 (sha256
9080 (base32 hash))))
9081 (build-system trivial-build-system)
9082 (arguments
9083 `(#:modules ((guix build utils))
9084 #:builder
9085 (begin
9086 (use-modules (guix build utils))
9087 (let* ((out (assoc-ref %outputs "out"))
9088 (share (string-append out "/share"))
eca528cc 9089 (data (string-append share "/" ,name "/" ,language))
e7db97db
NG
9090 (apps (string-append share "/applications"))
9091 (bin (string-append out "/bin"))
9092 (executable (string-append bin "/" ,name))
9093 (scummvm (assoc-ref %build-inputs "scummvm")))
9094 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
9095 "/bin/unzip")))
9096 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
eca528cc 9097 (let ((doc (string-append share "/doc/" ,name "-" ,version)))
e7db97db
NG
9098 (for-each (lambda (f) (install-file f doc))
9099 (find-files "." "\\.(txt|PDF|pdf)$")))
9100 (for-each (lambda (f) (install-file f data))
9101 (find-files "." "\\.(vga|VGA)$"))
9102 ;; Build the executable.
9103 (mkdir-p bin)
9104 (let ((bash (assoc-ref %build-inputs "bash")))
9105 (with-output-to-file executable
9106 (lambda ()
9107 (format #t "#!~a/bin/bash~%" bash)
9108 (format #t "exec ~a/bin/scummvm -q ~a -p ~a lure~%"
9109 scummvm ,language data))))
9110 (chmod executable #o755)
9111 ;; Create desktop file. There is no dedicated
9112 ;; icon for the game, so we borrow SCUMMVM's.
9113 (mkdir-p apps)
9114 (with-output-to-file (string-append apps "/" ,name ".desktop")
9115 (lambda _
9116 (format #t
9117 "[Desktop Entry]~@
9118 Name=Lure of the Temptress~@
9119 GenericName=Lure~@
9120 Exec=~a~@
9121 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
9122 Categories=AdventureGame;Game;RolePlaying;~@
9123 Keywords=game;adventure;roleplaying;2D,fantasy;~@
9124 Comment=Classic 2D point and click adventure game~@
9125 Comment[de]=klassisches 2D-Abenteuerspiel in Zeigen-und-Klicken-Manier~@
9126 Comment[fr]=Jeu classique d'aventure pointer-et-cliquer en 2D~@
9127 Comment[it]=Gioco classico di avventura punta e clicca 2D~@
9128 Type=Application~%"
9129 executable scummvm)))
9130 #t))))
9131 (native-inputs
eca528cc 9132 `(("unzip" ,unzip)))
e7db97db 9133 (inputs
eca528cc
NG
9134 `(("bash" ,bash)
9135 ("scummvm" ,scummvm)))
e7db97db
NG
9136 (home-page "https://www.scummvm.org")
9137 (synopsis "2D point and click fantasy adventure game")
9138 (description
9139 "Lure of the Temptress is a classic 2D point and click adventure game.
9140
9141You are Diermot, an unwilling hero who'd prefer a quiet life, and are, to all
9142intents and purposes, a good man. After decades of unrest the King has united
9143the warring factions in his kingdom and all his lands are at peace, except
9144a remote region around a town called Turnvale. A revolt has recently taken
9145place in Turnvale, a revolt orchestrated by an apprentice sorceress called
9146Selena, the titular temptress. The king calls together his finest horsemen
9147and heads off (with you in tow) to Turnvale just to witness how hellish
9148mercenary monsters called Skorl are invading the town.
9149
9150The king's men are defeated, the king is killed and you fall of your horse and
9151bang your head heavily on the ground. You have been *unconscious for a while
9152when you realize that you are in a dingy cell guarded by a not so friendly
9153Skorl. Maybe it would be an idea to try and escape...")
9154 (license (license:non-copyleft "file:///README"))))
9155
9156(define-public lure
9157 (make-lure-package
9158 "lure" "en" "0201i70qcs1m797kvxjx3ygkhg6kcl5yf49sihba2ga8l52q45zk"))
9159
9160(define-public lure-de
9161 (make-lure-package
9162 "lure-de" "de" "0sqq7h5llml6rv85x0bfv4bgzwhs4c82p4w4zmfcaab6cjlad0sy"))
9163
9164(define-public lure-es
9165 (make-lure-package
9166 "lure-es" "es" "1dvv5znvlsakw6w5r16calv9jkgw27aymgybsf4q22lcmpxbj1lk"))
9167
9168(define-public lure-fr
9169 (make-lure-package
9170 "lure-fr" "fr" "1y51jjb7f8023832g44vd1jsb6ni85586pi2n5hjg9qjk6gi90r9"))
9171
9172(define-public lure-it
9173 (make-lure-package
9174 "lure-it" "it" "1ks6n39r1cllisrrh6pcr39swsdv7ng3gx5c47vaw71zzfr70hjj"))
9175
35cb2ac5
NG
9176(define (make-queen-package name file-prefix release language hash)
9177 (package
9178 (name name)
9179 (version release)
9180 (source
9181 (origin
9182 (method url-fetch)
9183 (uri (string-append "mirror://sourceforge/scummvm/extras/"
9184 "Flight%20of%20the%20Amazon%20Queen/"
9185 file-prefix release ".zip"))
9186 (sha256
9187 (base32 hash))))
9188 (build-system trivial-build-system)
9189 (arguments
9190 `(#:modules ((guix build utils))
9191 #:builder
9192 (begin
9193 (use-modules (guix build utils))
9194 (let* ((out (assoc-ref %outputs "out"))
9195 (share (string-append out "/share"))
9196 (data (string-append share "/" ,name))
9197 (apps (string-append share "/applications"))
9198 (bin (string-append out "/bin"))
9199 (executable (string-append bin "/" ,name))
9200 (scummvm (assoc-ref %build-inputs "scummvm")))
9201 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
9202 "/bin/unzip")))
9203 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
9204 (let ((doc (string-append share "/doc/" ,name "-" ,version)))
9205 (install-file "readme.txt" doc))
9206 (install-file "queen.1c" data)
9207 (mkdir-p bin)
9208 (let ((bash (assoc-ref %build-inputs "bash")))
9209 (with-output-to-file executable
9210 (lambda ()
9211 (format #t "#!~a/bin/bash~%" bash)
9212 (format #t "exec ~a/bin/scummvm -q fr -p ~a queen~%"
9213 scummvm data))))
9214 (chmod executable #o755)
9215 ;; Create desktop file. There is no dedicated
9216 ;; icon for the game, so we borrow SCUMMVM's.
9217 (mkdir-p apps)
9218 (with-output-to-file (string-append apps "/" ,name ".desktop")
9219 (lambda _
9220 (format #t
9221 "[Desktop Entry]~@
9222 Name=Flight of the Amazon Queen~@
9223 GenericName=Queen~@
9224 Comment=Embark on a quest to rescue a kidnapped princess and in the process, discover the true sinister intentions of a suspiciously located Lederhosen company~@
9225 Comment[de]=Begib dich auf ein Abenteuer, um eine entführte Prinzessin zu retten und entdecke die wahren, finsteren Absichten eines verdächtig erscheinenden Lederhosen-Unternehmens~@
9226 Type=Application~@
9227 Exec=~a~@
9228 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
9229 Categories=AdventureGame;Game;RolePlaying;~@
9230 Keywords=adventure;game;roleplaying;fantasy;~%"
9231 executable scummvm))))
9232 #t)))
9233 (native-inputs
9234 `(("unzip" ,unzip)))
9235 (inputs
9236 `(("bash" ,bash)
9237 ("scummvm" ,scummvm)))
9238 (home-page "https://www.scummvm.org/")
9239 (synopsis "Classic 2D point and click adventure game")
9240 (description "Flight of the Amazon Queen is a 2D point-and-click
9241adventure game set in the 1940s.
9242
9243You assume the role of Joe King, a pilot for hire who is given the job
9244of flying Faye Russell (a famous movie star) into the Amazon jungle
9245for a photo shoot. Of course, things never go according to plans.
9246After an unfortunate turn of events they find themselves stranded in
9247the heart of the Amazon jungle, where Joe will embark on a quest to
9248rescue a kidnapped princess and in the process, discover the true
9249sinister intentions of a suspiciously located Lederhosen company. In
9250a rich 2D environment, Joe will cross paths with a variety of unlikely
9251jungle inhabitants including, but not limited to, a tribe of Amazon
9252women and 6-foot-tall pygmies.")
9253 (license (license:non-copyleft "file:///readme.txt"))))
9254
9255(define-public queen
9256 (make-queen-package
9257 "queen" "FOTAQ_Talkie-" "1.1" "en"
9258 "1a6q71q1dl9vvw2qqsxk5h1sv0gaqy6236zr5905w2is01gdsp52"))
9259
9260(define-public queen-de
9261 (make-queen-package
9262 "queen-de" "FOTAQ_Ger_talkie-" "1.0" "de"
9263 "13vn43x7214vyprlpqabvv71k890nff3d6fjscflr1ll7acjca3f"))
9264
9265(define-public queen-fr
9266 (make-queen-package
9267 "queen-fr" "FOTAQ_Fr_Talkie_" "1.0" "fr"
9268 "0hq5g4qrkcwm2kn5i4kv4hijs9hi7bw9xl1vrwd1l69qqn30crwy"))
9269
9270(define-public queen-it
9271 (make-queen-package
9272 "queen-it" "FOTAQ_It_Talkie_" "1.0" "it"
9273 "1h76y70lrpzfjkm53n4nr364nhyka54vbz9r7sadzyzl7c7ilv4d"))
9274
403d9fae
NG
9275(define-public sky
9276 (package
9277 (name "sky")
9278 (version "1.2") ;1.3 is floppy version
9279 (source
9280 (origin
9281 (method url-fetch)
9282 (uri (string-append "mirror://sourceforge/scummvm/extras/"
9283 "Beneath%20a%20Steel%20Sky/"
9284 "bass-cd-" version ".zip"))
9285 (sha256
9286 (base32 "14s5jz67kavm8l15gfm5xb7pbpn8azrv460mlxzzvdpa02a9n82k"))))
9287 (build-system trivial-build-system)
9288 (arguments
9289 `(#:modules ((guix build utils))
9290 #:builder
9291 (begin
9292 (use-modules (guix build utils))
9293 (let* ((out (assoc-ref %outputs "out"))
9294 (share (string-append out "/share"))
9295 (data (string-append share "/" ,name))
9296 (apps (string-append share "/applications"))
9297 (bin (string-append out "/bin"))
9298 (executable (string-append bin "/" ,name))
9299 (scummvm (assoc-ref %build-inputs "scummvm")))
9300 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
9301 "/bin/unzip")))
9302 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
9303 (let ((doc (string-append share "/doc/bass-" ,version)))
9304 (install-file "readme.txt" doc))
9305 (for-each (lambda (f) (install-file f data))
9306 (find-files "." "^sky\\."))
9307 ;; Build the executable.
9308 (mkdir-p bin)
9309 (let ((bash (assoc-ref %build-inputs "bash")))
9310 (with-output-to-file executable
9311 (lambda ()
9312 (format #t "#!~a/bin/bash~%" bash)
9313 (format #t "exec ~a/bin/scummvm -p ~a sky~%" scummvm data))))
9314 (chmod executable #o755)
9315 ;; Create desktop file. There is no dedicated
9316 ;; icon for the game, so we borrow SCUMMVM's.
9317 (mkdir-p apps)
9318 (with-output-to-file (string-append apps "/" ,name ".desktop")
9319 (lambda _
9320 (format #t
9321 "[Desktop Entry]~@
9322 Name=Beneath a Steel Sky~@
9323 GenericName=Bass~@
9324 Exec=~a~@
9325 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
9326 Categories=AdventureGame;Game;RolePlaying;~@
9327 Keywords=adventure;game;roleplaying;cyberpunk;~@
9328 Comment=A science-fiction adventure game set in a bleak post-apocalyptic vision of the future~@
9329 Comment[de]=Ein Science-Fiction-Abenteuerspiel \
9330angesiedelt in einer düsteren, postapokalyptischen Vision der Zukunft~@
9331 Type=Application~%"
9332 executable scummvm)))
9333 #t))))
9334 (native-inputs
9335 `(("unzip" ,unzip)))
9336 (inputs
9337 `(("bash" ,bash)
9338 ("scummvm" ,scummvm)))
9339 (home-page "https://www.scummvm.org/")
9340 (synopsis "Classic 2D point an click science-fiction adventure game")
9341 (description
9342 "Beneath a Steel Sky is a science-fiction thriller set in a bleak
9343post-apocalyptic vision of the future. It revolves around Union City,
9344where selfishness, rivalry, and corruption by its citizens seems to be
9345all too common, those who can afford it live underground, away from
9346the pollution and social problems which are plaguing the city.
9347
9348You take on the role of Robert Foster, an outcast of sorts from the
9349city since a boy who was raised in a remote environment outside of
9350Union City simply termed ``the gap''. Robert's mother took him away
9351from Union City as a child on their way to ``Hobart'' but the
9352helicopter crashed on its way. Unfortunately, Robert's mother died,
9353but he survived and was left to be raised by a local tribe from the
9354gap.
9355
9356Years later, Union City security drops by and abducts Robert, killing
9357his tribe in the process; upon reaching the city the helicopter taking
9358him there crashes with him escaping, high upon a tower block in the
9359middle of the city. He sets out to discover the truth about his past,
9360and to seek vengeance for the killing of his tribe.")
9361 (license (license:non-copyleft "file:///readme.txt"))))
9362
08c2fb8f
JG
9363(define-public gnurobots
9364 (package
9365 (name "gnurobots")
9366 (version "1.2.0")
9367 (source
9368 (origin
9369 (method url-fetch)
9370 (uri (string-append "mirror://gnu/gnurobots/gnurobots-"
9371 version ".tar.gz"))
9372 (sha256
9373 (base32
9374 "07gi3lsmbzzsjambgixj6xy79lh22km84z7bnzgwzxdy806lyvwb"))))
9375 (build-system gnu-build-system)
9376 (inputs
9377 `(("glib" ,glib)
9378 ("gtk+" ,gtk+-2)
9379 ("vte" ,vte/gtk+-2)
9380 ("readline" ,readline)
9381 ("guile" ,guile-1.8)))
9382 (native-inputs
9383 `(("pkg-config" ,pkg-config)))
9384 (arguments
9385 `(#:make-flags
9386 (list
9387 ;; Do not abort build on "deprecated-declarations" warnings.
9388 "CFLAGS=-Wno-error=deprecated-declarations"
9389 ;; Find readline headers in sub-directory.
9390 (string-append "READLINE_CFLAGS=-I"
9391 (assoc-ref %build-inputs "readline")
9392 "/include/readline/"))
9393 #:phases
9394 (modify-phases %standard-phases
9395 (add-after 'install 'install-doc
9396 (lambda* (#:key outputs #:allow-other-keys)
9397 (install-file "doc/Robots-HOWTO"
9398 (string-append (assoc-ref outputs "out")
9399 "/share/doc/gnurobots-"
9400 ,version))
9401 #t)))))
9402 (home-page "https://www.gnu.org/software/gnurobots/")
9403 (synopsis "Program a little robot and watch it explore a world")
9404 (description
9405 "GNU Robots is a game in which you program a robot to explore a world
9406full of enemies that can hurt it, obstacles and food to be eaten. The goal of
9407the game is to stay alive and collect prizes. The robot program conveniently
9408may be written in a plain text file in the Scheme programming language.")
9409 (license license:gpl3+)))
3745909d
NG
9410
9411(define-public ri-li
9412 (package
9413 (name "ri-li")
9414 (version "2.0.1")
9415 (source (origin
9416 (method url-fetch)
9417 (uri (string-append "mirror://sourceforge/ri-li/"
9418 "Ri-li%20Linux_Unix/Ri-li%20V" version "/"
9419 "Ri-li-" version ".tar.bz2"))
9420 (sha256
9421 (base32
9422 "1gcdsgnnbbn1mb1hkpwniv3fhkaj1nn8gq33v5c16q3wqchcq77p"))
9423 ;; Taken from
9424 ;; <https://github.com/NixOS/nixpkgs/blob/master/pkgs/games/rili/moderinze_cpp.patch>.
9425 ;; It doesn't build otherwise.
9426 (patches (search-patches "ri-li-modernize_cpp.patch"))))
9427 (build-system gnu-build-system)
9428 (arguments
9429 `(#:phases
9430 (modify-phases %standard-phases
9431 ;; Remove "gentoo" subdirectory from Makefile, as it is
9432 ;; missing a make file and generates a build failure.
9433 (add-after 'configure 'fix-build
9434 (lambda _
9435 (substitute* "Makefile"
9436 ((" gentoo") ""))
9437 #t))
9438 (add-after 'install 'install-desktop-file
9439 (lambda* (#:key outputs #:allow-other-keys)
9440 (let* ((out (assoc-ref outputs "out"))
9441 (apps (string-append out "/share/applications"))
9442 (pixmaps (string-append out "/share/pixmaps")))
9443 (for-each (lambda (f) (install-file f pixmaps))
9444 (find-files "data" "\\.(png|ico)$"))
9445 (mkdir-p apps)
9446 (with-output-to-file (string-append apps "/ri-li.desktop")
9447 (lambda _
9448 (format #t
9449 "[Desktop Entry]~@
9450 Name=Ri-li~@
9451 Exec=~a/bin/Ri_li~@
9452 Icon=~a/Ri-li-icon-32x32.png~@
9453 Categories=Game;ArcadeGame;~@
9454 Keywords=toy;train;wooden;snake-like;engine;~@
9455 Comment=a toy simulator game~@
9456 Comment[de]=Ein Spiel mit einem kleinen Zug~@
9457 Comment[fr]=un jeu de petit train~@
9458 Comment[ro_RO]=un joc cu un tren de jucărie~@
9459 Terminal=false~@
9460 Type=Application~%"
9461 out pixmaps))))
9462 #t))
9463 (add-after 'install-desktop-file 'remove-spurious-files
9464 ;; Delete redundant files already installed somewhere else.
9465 (lambda* (#:key outputs #:allow-other-keys)
9466 (let ((out (assoc-ref outputs "out")))
9467 (for-each delete-file
9468 (find-files (string-append out "/share/Ri-li")
9469 "\\.(png|ico)|COPYING"))
9470 #t))))))
9471 (inputs
9472 `(("sdl" ,(sdl-union (list sdl sdl-mixer)))))
9473 (home-page "http://www.ri-li.org")
9474 (synopsis "Toy train simulation game")
9475 (description "Ri-li is a game in which you drive a wooden toy
9476steam locomotive across many levels and collect all the coaches to
9477win.")
9478 ;; The project is dual-licensed GPL2+ and GPL3+.
9479 (license (list license:gpl2+ license:gpl3+))))
562a2a40
JG
9480
9481(define-public freeorion
9482 (package
9483 (name "freeorion")
0a00d157 9484 (version "0.4.10")
562a2a40
JG
9485 (source
9486 (origin
f6fdbb05
TGR
9487 (method url-fetch)
9488 (uri (string-append "https://github.com/freeorion/freeorion/releases/"
9489 "download/v" version "/FreeOrion_v" version
0a00d157 9490 "_2020-07-10.f3d403e_Source.tar.gz"))
562a2a40 9491 (sha256
0a00d157 9492 (base32 "12xspixrkx6mmmsdqjha0hg02r4y73pk229l0wjq9s0yp8nb8ap7"))
562a2a40
JG
9493 (modules '((guix build utils)))
9494 (snippet
9495 '(begin
9496 ;; There are some bundled fonts.
9497 (for-each delete-file-recursively '("default/data/fonts"))
9498 #t))))
9499 (build-system cmake-build-system)
9500 (arguments
9501 '(#:tests? #f ;no test
9502 #:phases
9503 (modify-phases %standard-phases
9504 (add-after 'unpack 'unbundle-fonts
9505 (lambda* (#:key inputs #:allow-other-keys)
9506 (let ((roboto-dir (string-append (assoc-ref inputs "font-roboto")
9507 "/share/fonts/truetype/")))
9508 (substitute* "UI/ClientUI.cpp"
7658904a 9509 (("\\(GetRootDataDir.*?Roboto-(Bold|Regular)\\.ttf\"\\)\\.string\\(\\)\\);"
562a2a40 9510 all type)
7658904a 9511 (string-append "\"" roboto-dir "Roboto-" type ".ttf\");")))
562a2a40
JG
9512 #t))))))
9513 (inputs
0a00d157 9514 `(("boost" ,boost)
562a2a40
JG
9515 ("boost_signals" ,boost-signals2)
9516 ("font-dejavu" ,font-dejavu)
9517 ("font-roboto" ,font-google-roboto)
9518 ("freetype2" ,freetype)
9519 ("glew" ,glew)
9520 ("glu" ,glu)
9521 ("libogg" ,libogg)
9522 ("libpng" ,libpng)
9523 ("libvorbis" ,libvorbis)
9524 ("openal" ,openal)
0a00d157 9525 ("python" ,python)
562a2a40
JG
9526 ("sdl2" ,sdl2)
9527 ("zlib" ,zlib)))
9528 (home-page "https://www.freeorion.org/index.php/Main_Page")
9529 (synopsis "Turn-based space empire and galactic conquest computer game")
9530 (description
9531 "FreeOrion is a turn-based space empire and galactic conquest (4X)
9532computer game being designed and built by the FreeOrion project. Control an
9533empire with the goal of exploring the galaxy, expanding your territory,
9534exploiting the resources, and exterminating rival alien empires. FreeOrion is
9535inspired by the tradition of the Master of Orion games, but is not a clone or
9536remake of that series or any other game.")
9537 ;; Source code is released under gpl2. Artwork, music and sounds, and
9538 ;; in-game text are released under cc-by-sa3.0. Game content scripts are
9539 ;; released under both gpl2 and cc-by-sa3.0. Bundled Gigi library is
9540 ;; released under lgpl2.1+.
9541 (license (list license:gpl2 license:cc-by-sa3.0 license:lgpl2.1+))))
fbfc07bd
GLV
9542
9543(define-public leela-zero
9544 (package
9545 (name "leela-zero")
9546 (version "0.17")
9547 (source
9548 (origin
9549 (method git-fetch)
9550 (uri (git-reference
b0e7b699 9551 (url "https://github.com/leela-zero/leela-zero")
fbfc07bd
GLV
9552 (commit (string-append "v" version))))
9553 (file-name (git-file-name name version))
9554 (sha256
9555 (base32
9556 "17px5iny8mql5c01bymcli7zfssswkzvb2i8gnsmjcck6i2n8srl"))
9557 (patches (search-patches "leela-zero-gtest.patch"))))
9558 (build-system cmake-build-system)
9559 (native-inputs
9560 `(("googletest" ,googletest)))
9561 (inputs
9562 `(("boost" ,boost)
9563 ("ocl-icd" ,ocl-icd)
9564 ("openblas" ,openblas)
9565 ("opencl-headers" ,opencl-headers)
9566 ("qtbase" ,qtbase)
9567 ("zlib" ,zlib)))
9568 (arguments
9569 '(#:configure-flags '("-DUSE_BLAS=YES")
9570 #:phases (modify-phases %standard-phases
9571 (add-before 'configure 'fix-tests
9572 (lambda* (#:key outputs #:allow-other-keys)
9573 (let ((home (getcwd)))
9574 (setenv "HOME" home)
9575 (substitute* "src/tests/gtests.cpp"
9576 (("\\.\\./src/tests/0k\\.txt")
9577 (string-append home "/src/tests/0k.txt"))
9578 (("cfg_gtp_mode = true;")
9579 "cfg_gtp_mode = true; cfg_cpu_only = true;")))
9580 #t))
9581 (replace 'check
9582 (lambda _
9583 (invoke "./tests"))))))
9584 (home-page "https://github.com/leela-zero/leela-zero")
9585 (synopsis "Program playing the game of Go")
9586 (description
9587 "Leela-zero is a Go engine with no human-provided knowledge, modeled after
9588the AlphaGo Zero paper. The current best network weights file for the engine
9589can be downloaded from @url{https://zero.sjeng.org/best-network}.")
9590 (license license:gpl3+)))
66977719
GLV
9591
9592(define-public q5go
9593 (package
9594 (name "q5go")
9595 (version "1.0")
9596 (source (origin
9597 (method git-fetch)
9598 (uri (git-reference
b0e7b699 9599 (url "https://github.com/bernds/q5Go")
66977719
GLV
9600 (commit (string-append "q5go-" version))))
9601 (file-name (git-file-name name version))
9602 (sha256
9603 (base32
9604 "1gdlfqcqkqv7vph3qwq78d0qz6dhmdsranxq9bmixiisbzkqby31"))))
9605 (build-system gnu-build-system)
9606 (native-inputs
9607 `(("pkg-config" ,pkg-config)))
9608 (inputs
9609 `(("qtbase" ,qtbase)
9610 ("qtmultimedia" ,qtmultimedia)
9611 ("qtsvg" ,qtsvg)))
9612 (arguments
9613 '(#:phases
9614 (modify-phases %standard-phases
9615 (add-after 'unpack 'fix-configure-script
9616 (lambda _
9617 ;; Bypass the unavailable qtchooser program.
9618 (substitute* "configure"
9619 (("test -z \"QTCHOOSER\"")
9620 "false")
9621 (("qtchooser -run-tool=(.*) -qt=qt5" _ command)
9622 command))
9623 #t))
9624 (add-after 'unpack 'fix-paths
9625 (lambda _
9626 (substitute* '("src/pics/Makefile.in"
9627 "src/translations/Makefile.in")
9628 (("\\$\\(datadir\\)/qGo/")
9629 "$(datadir)/q5go/"))
9630 #t))
9631 (add-after 'install 'install-desktop-file
9632 (lambda* (#:key outputs #:allow-other-keys)
9633 (let* ((out (assoc-ref outputs "out"))
9634 (apps (string-append out "/share/applications"))
9635 (pics (string-append out "/share/q5go/pics")))
9636 (delete-file-recursively (string-append out "/share/applnk"))
9637 (delete-file-recursively (string-append out "/share/mimelnk"))
9638 (install-file "../source/src/pics/Bowl.ico" pics)
9639 (mkdir-p apps)
9640 (with-output-to-file (string-append apps "/q5go.desktop")
9641 (lambda _
9642 (format #t
9643 "[Desktop Entry]~@
9644 Name=q5go~@
9645 Exec=~a/bin/q5go~@
9646 Icon=~a/Bowl.ico~@
9647 Categories=Game;~@
9648 Comment=Game of Go~@
9649 Comment[de]=Spiel des Go~@
9650 Comment[eo]=Goo~@
9651 Comment[es]=Juego de Go~@
9652 Comment[fr]=Jeu de Go~@
9653 Comment[ja]=囲碁~@
9654 Comment[ko]=바둑~@
9655 Comment[zh]=围棋~@
9656 Terminal=false~@
9657 Type=Application~%"
9658 out pics))))
9659 #t)))))
9660 (synopsis "Qt GUI to play the game of Go")
9661 (description
9662 "This a tool for Go players which performs the following functions:
9663@itemize
9664@item SGF editor,
9665@item Analysis frontend for Leela Zero (or compatible engines),
9666@item GTP interface (to play against an engine),
9667@item IGS client (to play on the internet),
9668@item Export games to a variety of formats.
9669@end itemize")
9670 (home-page "https://github.com/bernds/q5Go")
9671 (license license:gpl2+)))
3c1c5622
HG
9672
9673(define-public ktuberling
9674 (package
9675 (name "ktuberling")
9676 (version "19.08.3")
9677 (source
9678 (origin
9679 (method url-fetch)
9680 (uri (string-append "mirror://kde/stable/applications/" version
9681 "/src/ktuberling-" version ".tar.xz"))
9682 (sha256
9683 (base32 "1qdf4q6wjh1lnlqw5c8z4rpj9w5vbyjfri1dah6yjm3mwppbc12j"))))
3c1c5622
HG
9684 (build-system qt-build-system)
9685 (native-inputs
9686 `(("extra-cmake-modules" ,extra-cmake-modules)
9687 ("perl" ,perl)))
9688 (inputs
9689 `(("kcompletion" ,kcompletion)
9690 ("kconfigwidgets" ,kconfigwidgets)
9691 ("kcoreaddons" ,kcoreaddons)
9692 ("kcrash" ,kcrash)
9693 ("kdbusaddons" ,kdbusaddons)
9694 ("kdelibs4support" ,kdelibs4support)
9695 ("ki18n" ,ki18n)
9696 ("kwidgetsaddons" ,kwidgetsaddons)
9697 ("kxmlgui" ,kxmlgui)
9698 ("libkdegames" ,libkdegames)
9699 ("qtbase" ,qtbase)
9700 ("qtmultimedia" ,qtmultimedia)
9701 ("qtdeclarative" ,qtdeclarative)
9702 ("qtsvg" ,qtsvg)))
9703 (home-page "https://games.kde.org/")
9704 (synopsis "Stamp drawing toy")
9705 (description "KTuberling is a drawing toy intended for small children and
9706adults who remain young at heart. The game has no winner; the only purpose is
dd77434a 9707to make the funniest faces you can. Several activities are possible, e.g.:
3c1c5622
HG
9708
9709@itemize
9710@item Give the potato a funny face, clothes, and other goodies
9711@item Build a small town, complete with school, zoo, and fire department
9712@item Create a fantastic moonscape with spaceships and aliens
9713@item Top a pizza
9714@end itemize
9715
9716KTuberling can speak the name of each the object in several languages,
9717to assist in learning basic vocabulary.
9718
9719This package is part of the KDE games module.")
9720 (license (list license:gpl2+ license:fdl1.2+))))
f9913977
HG
9721
9722(define-public picmi
9723 (package
9724 (name "picmi")
9725 (version "19.08.3")
9726 (source
9727 (origin
9728 (method url-fetch)
9729 (uri (string-append "mirror://kde/stable/applications/" version
9730 "/src/picmi-" version ".tar.xz"))
9731 (sha256
9732 (base32 "0z9mpmv49w914gqdx274brdzl6d1bz9j9nkvbwgmr3iq1ba49m3f"))))
f9913977
HG
9733 (build-system qt-build-system)
9734 (native-inputs
9735 `(("extra-cmake-modules" ,extra-cmake-modules)
9736 ("kdoctools" ,kdoctools)))
9737 (inputs
9738 `(("kcoreaddons" ,kcoreaddons)
9739 ("kcrash" ,kcrash)
9740 ("kdbusaddons" ,kdbusaddons)
9741 ("kdeclarative" ,kdeclarative)
9742 ("ki18n" ,ki18n)
9743 ("kio" ,kio)
9744 ("knewstuff" ,knewstuff)
9745 ("kxmlgui" ,kxmlgui)
9746 ("libkdegames" ,libkdegames)
9747 ("qtbase" ,qtbase)
9748 ("qtdeclarative" ,qtdeclarative)
9749 ("qtsvg" ,qtsvg)))
9750 (home-page "https://games.kde.org/")
9751 (synopsis "Number logic game")
9752 (description "Picmi is a number logic game in which cells in a grid have
9753to be colored or left blank according to numbers given at the side of the
9754grid. The aim is to reveal a hidden picture.
9755
9756This package is part of the KDE games module.")
9757 (license (list license:gpl2+ license:fdl1.2+))))
e1b174eb
HG
9758
9759(define-public kolf
9760 (package
9761 (name "kolf")
9762 (version "19.08.3")
9763 (source
9764 (origin
9765 (method url-fetch)
9766 (uri (string-append "mirror://kde/stable/applications/" version
9767 "/src/kolf-" version ".tar.xz"))
9768 (sha256
9769 (base32 "06sfd0llr5cc3zf1vrpcxgw9bm009ky7y8822kynic9ipcd4z1hw"))))
e1b174eb
HG
9770 (build-system qt-build-system)
9771 (native-inputs
9772 `(("extra-cmake-modules" ,extra-cmake-modules)
9773 ("kdoctools" ,kdoctools)))
9774 (inputs
9775 `(("kcompletion" ,kcompletion)
9776 ("kconfigwidgets" ,kconfigwidgets)
9777 ("kcoreaddons" ,kcoreaddons)
9778 ("kcrash" ,kcrash)
9779 ("kdbusaddons" ,kdbusaddons)
9780 ("ki18n" ,ki18n)
9781 ("kio" ,kio)
9782 ("kwidgetsaddons" ,kwidgetsaddons)
9783 ("kxmlgui" ,kxmlgui)
9784 ("ktextwidgets" ,ktextwidgets)
9785 ("libkdegames" ,libkdegames)
9786 ("qtbase" ,qtbase)
9787 ("qtdeclarative" ,qtdeclarative)))
9788 (home-page "https://games.kde.org/")
9789 (synopsis "Miniature golf game")
9790 (description "Kolf is a miniature golf game for one to ten players. The
9791game is played from an overhead view, with a short bar representing the golf
9792club. Kolf features many different types of objects, such as water hazards,
9793slopes, sand traps, and black holes (warps), among others.
9794
9795Features are:
9796@itemize
9797@item Single and Multi-player (up to ten players) modes
9798@item High scores table
9799@item Dynamic courses
9800@item Third-party courses
9801@item Course editor
9802@end itemize
9803
9804This package is part of the KDE games module.")
9805 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
2582f582
HG
9806
9807(define-public libkmahjongg
9808 (package
9809 (name "libkmahjongg")
9810 (version "19.08.3")
9811 (source
9812 (origin
9813 (method url-fetch)
9814 (uri (string-append "mirror://kde/stable/applications/"
9815 version "/src/libkmahjongg-" version ".tar.xz"))
9816 (sha256
9817 (base32 "0rdimk11hrc8qrmiv26z0ddjzi1k6806c0rfskx4cwmildmh6zgx"))))
9818 (build-system qt-build-system)
9819 (native-inputs
9820 `(("extra-cmake-modules" ,extra-cmake-modules)))
9821 (inputs
9822 `(("kauth" ,kauth)
9823 ("kcompletion" ,kcompletion)
9824 ;("kconfig" ,kconfig)
9825 ("kcodecs" ,kcodecs)
9826 ("kconfigwidgets" ,kconfigwidgets)
9827 ("kcoreaddons" ,kcoreaddons)
9828 ("ki18n" ,ki18n)
9829 ("kwidgetsaddons" ,kwidgetsaddons)
9830 ("qtbase" ,qtbase)
9831 ("qtsvg" ,qtsvg)))
9832 (home-page "https://games.kde.org/")
9833 (synopsis "Shared library for kmahjongg and kshisen")
9834 (description "Shared library and common files for kmahjongg, kshisen and
9835other Mah Jongg like games.")
9836 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
c57e31fb
HG
9837
9838(define-public kmahjongg
9839 (package
9840 (name "kmahjongg")
9841 (version "19.08.3")
9842 (source
9843 (origin
9844 (method url-fetch)
9845 (uri (string-append "mirror://kde/stable/applications/"
9846 version "/src/kmahjongg-" version ".tar.xz"))
9847 (sha256
9848 (base32 "08na845h0nhmfrszdmvfq5y1dy7kgbrlzjp0f5snvbbf7w44ci6p"))))
c57e31fb
HG
9849 (build-system qt-build-system)
9850 (native-inputs
9851 `(("extra-cmake-modules" ,extra-cmake-modules)
9852 ("kdoctools" ,kdoctools)))
9853 (inputs
9854 `(("kcompletion" ,kcompletion)
9855 ("kcrash" ,kcrash)
9856 ("kdbusaddons" ,kdbusaddons)
9857 ("kdeclarative" ,kdeclarative)
9858 ("ki18n" ,ki18n)
9859 ("knewstuff" ,knewstuff)
9860 ("kxmlgui" ,kxmlgui)
9861 ("libkdegames" ,libkdegames)
9862 ("libkmahjongg" ,libkmahjongg)
9863 ("qtbase" ,qtbase)
9864 ("qtdeclarative" ,qtdeclarative)
9865 ("qtsvg" ,qtsvg)))
9866 (home-page "https://games.kde.org/")
9867 (synopsis "Tile laying patience")
9868 (description "In KMahjongg the tiles are scrambled and staked on top of
9869each other to resemble a certain shape. The player is then expected to remove
9870all the tiles off the game board by locating each tile's matching pair.
9871
9872A variety of tile layouts are included, as well as an editor to create new
9873layouts.
9874
9875This package is part of the KDE games module.")
9876 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
110b738b
HG
9877
9878(define-public kshisen
9879 (package
9880 (name "kshisen")
9881 (version "19.08.3")
9882 (source
9883 (origin
9884 (method url-fetch)
9885 (uri (string-append "mirror://kde/stable/applications/"
9886 version "/src/kshisen-" version ".tar.xz"))
9887 (sha256
9888 (base32 "1bq5m48af4h5apfp3bfsp76nlpv6h5sc0gd544zv7cgpfznz1sds"))))
110b738b
HG
9889 (build-system qt-build-system)
9890 (native-inputs
9891 `(("extra-cmake-modules" ,extra-cmake-modules)
9892 ;("perl" ,perl)
9893 ;("pkg-config" ,pkg-config)
9894 ("kdoctools" ,kdoctools)))
9895 (inputs
9896 `(("kauth" ,kauth)
9897 ("kcompletion" ,kcompletion)
9898 ("kconfigwidgets" ,kconfigwidgets)
9899 ("kcoreaddons" ,kcoreaddons)
9900 ("kcrash" ,kcrash)
9901 ("kdbusaddons" ,kdbusaddons)
9902 ("ki18n" ,ki18n)
9903 ("kxmlgui" ,kxmlgui)
9904 ("libkdegames" ,libkdegames)
9905 ("libkmahjongg" ,libkmahjongg)
9906 ("qtbase" ,qtbase)
9907 ("qtdeclarative" ,qtdeclarative)))
9908 (home-page "https://games.kde.org/")
9909 (synopsis "Shisen-Sho solitaire game")
9910 (description "KShisen is a solitaire-like game played using the standard
9911set of Mahjong tiles. Unlike Mahjong however, KShisen has only one layer of
9912scrambled tiles
9913
9914This package is part of the KDE games module.")
9915 (license license:gpl2+)))
321bd0c3
HG
9916
9917(define-public kajongg
9918 (package
9919 (name "kajongg")
9920 (version "19.08.3")
9921 (source
9922 (origin
9923 (method url-fetch)
9924 (uri (string-append "mirror://kde/stable/applications/"
9925 version "/src/kajongg-" version ".tar.xz"))
9926 (sha256
9927 (base32 "0ql6p5zifdpdf65r7ki9ml123azpwwk9x3x8r9ij6xhjnf7p7x6w"))))
321bd0c3
HG
9928 (build-system qt-build-system)
9929 (native-inputs
9930 `(("extra-cmake-modules" ,extra-cmake-modules)
9931 ;("perl" ,perl)
9932 ("kdoctools" ,kdoctools)))
9933 (inputs
9934 `(("kconfig" ,kconfig)
9935 ("kconfigwidgets" ,kconfigwidgets)
9936 ("kcoreaddons" ,kcoreaddons)
9937 ("ki18n" ,ki18n)
9938 ("libkmahjongg" ,libkmahjongg)
9939 ("python" ,python)
9940 ("qtbase" ,qtbase)
9941 ("qtsvg" ,qtsvg)))
9942 (propagated-inputs
9943 `(("python-twisted" ,python-twisted)
9944 ("python-pyqt" ,python-pyqt)))
9945 ;; FIXME: Need to wrap PYTHONPATH
9946 (home-page "https://games.kde.org/")
9947 (synopsis "Classical Mah Jongg game for 4 players")
9948 (description "Kajongg is the ancient Chinese board game for 4 players.
9949
9950If you are looking for the Mah Jongg solitaire please use the application
9951kmahjongg.
9952
9953Kajongg can be used in two different ways: Scoring a manual game where you
9954play as always and use Kajongg for the computation of scores and for
9955bookkeeping. Or you can use Kajongg to play against any combination of other
9956human players or computer players.
9957
9958This package is part of the KDE games module.")
9959 (license (list license:gpl2+ license:fdl1.2+))))
f4195446
HG
9960
9961(define-public kbreakout
9962 (package
9963 (name "kbreakout")
9964 (version "19.08.3")
9965 (source
9966 (origin
9967 (method url-fetch)
9968 (uri (string-append "mirror://kde/stable/applications/" version
9969 "/src/kbreakout-" version ".tar.xz"))
9970 (sha256
9971 (base32 "0gwzx1z9mxrjlcjzglg8cxkyd6900whcar3b5j9laxxarc6xhj8w"))))
f4195446
HG
9972 (build-system qt-build-system)
9973 (native-inputs
9974 `(("extra-cmake-modules" ,extra-cmake-modules)
9975 ("kdoctools" ,kdoctools)))
9976 (inputs
9977 `(("kcompletion" ,kcompletion)
9978 ("kconfig" ,kconfig)
9979 ("kconfigwidgets" ,kconfigwidgets)
9980 ("kcoreaddons" ,kcoreaddons)
9981 ("kcrash" ,kcrash)
9982 ("kdbusaddons" ,kdbusaddons)
9983 ("ki18n" ,ki18n)
9984 ("kwidgetsaddons" ,kwidgetsaddons)
9985 ("kxmlgui" ,kxmlgui)
9986 ("libkdegames" ,libkdegames)
9987 ("qtbase" ,qtbase)
9988 ("qtdeclarative" ,qtdeclarative)))
9989 (home-page "https://games.kde.org/")
9990 (synopsis "Breakout like game")
9991 (description "KBreakout is similar to the classics breakout and xboing,
9992featuring a number of added graphical enhancements and effects. You control a
9993paddle at the bottom of the playing-field, and must destroy bricks at the top
9994by bouncing balls against them.
9995
9996This package is part of the KDE games module.")
9997 (license (list license:gpl2+ license:fdl1.2+))))
df3d90c7
HG
9998
9999(define-public kmines
10000 (package
10001 (name "kmines")
10002 (version "19.08.3")
10003 (source
10004 (origin
10005 (method url-fetch)
10006 (uri (string-append "mirror://kde/stable/applications/" version
10007 "/src/kmines-" version ".tar.xz"))
10008 (sha256
10009 (base32 "0ac3za36lh8hpx6mqfic9amwmzhzhzplm9hg3pw12gxl5a9mvfsf"))))
df3d90c7
HG
10010 (build-system qt-build-system)
10011 (native-inputs
10012 `(("extra-cmake-modules" ,extra-cmake-modules)
10013 ("kdoctools" ,kdoctools)))
10014 (inputs
10015 `(("kcompletion" ,kcompletion)
10016 ("kconfig" ,kconfig)
10017 ("kconfigwidgets" ,kconfigwidgets)
10018 ("kcoreaddons" ,kcoreaddons)
10019 ("kcrash" ,kcrash)
10020 ("kdbusaddons" ,kdbusaddons)
10021 ("ki18n" ,ki18n)
10022 ("ktextwidgets" ,ktextwidgets)
10023 ("kwidgetsaddons" ,kwidgetsaddons)
10024 ("kxmlgui" ,kxmlgui)
10025 ("libkdegames" ,libkdegames)
10026 ("qtbase" ,qtbase)
10027 ("qtdeclarative" ,qtdeclarative)))
10028 (home-page "https://games.kde.org/")
10029 (synopsis "Classical mine sweeper game")
10030 (description "KMines is a classic Minesweeper game. The idea is to
10031uncover all the squares without blowing up any mines. When a mine is blown
10032up, the game is over.
10033
10034This package is part of the KDE games module.")
10035 (license (list license:gpl2+ license:fdl1.2+))))
72b69fa9
HG
10036
10037(define-public konquest
10038 (package
10039 (name "konquest")
10040 (version "19.08.3")
10041 (source
10042 (origin
10043 (method url-fetch)
10044 (uri (string-append "mirror://kde/stable/applications/"
10045 version "/src/konquest-" version ".tar.xz"))
10046 (sha256
10047 (base32 "02gjxskhi10a1sqh3skcild8zria7wncz1a4sbz7ax1p851q76k1"))))
72b69fa9
HG
10048 (build-system qt-build-system)
10049 (native-inputs
10050 `(("extra-cmake-modules" ,extra-cmake-modules)
10051 ("kdoctools" ,kdoctools)))
10052 (inputs
10053 `(("kcompletion" ,kcompletion)
10054 ("kconfig" ,kconfig)
10055 ("kcoreaddons" ,kcoreaddons)
10056 ("kcrash" ,kcrash)
10057 ("kdbusaddons" ,kdbusaddons)
10058 ("kguiaddons" ,kguiaddons)
10059 ("ki18n" ,ki18n)
10060 ("kwidgetsaddons" ,kwidgetsaddons)
10061 ("kxmlgui" ,kxmlgui)
10062 ("libkdegames" ,libkdegames)
10063 ("qtbase" ,qtbase)
10064 ("qtdeclarative" ,qtdeclarative)
10065 ("qtsvg" ,qtsvg)))
10066 (home-page "https://games.kde.org/")
10067 (synopsis "Simple turn-based strategy game")
10068 (description "Konquest is the KDE version of Gnu-Lactic Konquest. Players
10069conquer other planets by sending ships to them. The goal is to build an
10070interstellar empire and ultimately conquer all other player's planets. The
10071game can be played with up to nine empires, commanded either by the computer
10072or by puny earthlings.
10073
10074This package is part of the KDE games module.")
10075 (license (list license:gpl2+ license:fdl1.2+))))
d980ddb8
HG
10076
10077(define-public kbounce
10078 (package
10079 (name "kbounce")
10080 (version "19.08.3")
10081 (source
10082 (origin
10083 (method url-fetch)
10084 (uri (string-append "mirror://kde/stable/applications/"
10085 version "/src/kbounce-" version ".tar.xz"))
10086 (sha256
10087 (base32 "02rfv0qzz5cmyfx8f56a45hbm9gsp6m3dcy8ajwx88rw5wpbrr11"))))
d980ddb8
HG
10088 (build-system qt-build-system)
10089 (native-inputs
10090 `(("extra-cmake-modules" ,extra-cmake-modules)
10091 ("kdoctools" ,kdoctools)))
10092 (inputs
10093 `(("kcompletion" ,kcompletion)
10094 ("kconfigwidgets" ,kconfigwidgets)
10095 ("kcoreaddons" ,kcoreaddons)
10096 ("kcrash" ,kcrash)
10097 ("kdbusaddons" ,kdbusaddons)
10098 ("ki18n" ,ki18n)
10099 ("kio" ,kio)
10100 ("kwidgetsaddons" ,kwidgetsaddons)
10101 ("kxmlgui" ,kxmlgui)
10102 ("libkdegames" ,libkdegames)
10103 ("qtbase" ,qtbase)
10104 ("qtdeclarative" ,qtdeclarative)
10105 ("qtsvg" ,qtsvg)))
10106 (home-page "https://games.kde.org/")
10107 (synopsis "Jezzball arcade game")
10108 (description "KBounce is a single player arcade game with the elements of
10109puzzle. It is played on a field, surrounded by wall, with two or more balls
10110bouncing around within the walls. The object of the game is to build new
10111walls to decrease the size of the active field.
10112
10113This package is part of the KDE games module.")
10114 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
d685f860
HG
10115
10116(define-public kblocks
10117 (package
10118 (name "kblocks")
10119 (version "19.08.3")
10120 (source
10121 (origin
10122 (method url-fetch)
10123 (uri (string-append "mirror://kde/stable/applications/"
10124 version "/src/kblocks-" version ".tar.xz"))
10125 (sha256
10126 (base32 "0qrm0dihzhkxsq9l49ndzms802x6jn92vvabb2zf2q9z593m69cx"))))
d685f860
HG
10127 (build-system qt-build-system)
10128 (native-inputs
10129 `(("extra-cmake-modules" ,extra-cmake-modules)
10130 ("kdoctools" ,kdoctools)))
10131 (inputs
10132 `(("kcompletion" ,kcompletion)
10133 ("kconfig" ,kconfig)
10134 ("kconfigwidgets" ,kconfigwidgets)
10135 ("kcoreaddons" ,kcoreaddons)
10136 ("kcrash" ,kcrash)
10137 ("kdbusaddons" ,kdbusaddons)
10138 ("ki18n" ,ki18n)
10139 ("kwidgetsaddons" ,kwidgetsaddons)
10140 ("kxmlgui" ,kxmlgui)
10141 ("libkdegames" ,libkdegames)
10142 ("qtbase" ,qtbase)
10143 ("qtdeclarative" ,qtdeclarative)
10144 ("qtsvg" ,qtsvg)))
10145 (home-page "https://games.kde.org/")
10146 (synopsis "Single player falling blocks puzzle game")
10147 (description "KBlocks is the classic Tetris-like falling blocks game.
10148
10149The idea is to stack the falling blocks to create horizontal lines without any
10150gaps. When a line is completed it is removed, and more space is available in
10151the play area. When there is not enough space for blocks to fall, the game is
10152over.
10153
10154This package is part of the KDE games module.")
10155 (license (list license:gpl2+ license:fdl1.2+))))
f6e9a6e2
HG
10156
10157(define-public ksudoku
10158 (package
10159 (name "ksudoku")
10160 (version "19.08.3")
10161 (source
10162 (origin
10163 (method url-fetch)
10164 (uri (string-append "mirror://kde/stable/applications/"
10165 version "/src/ksudoku-" version ".tar.xz"))
10166 (sha256
10167 (base32 "0rcscz91hilm7l3am5w02n0n8l7xhi4l0n4sskznh68kblw0ggw2"))))
f6e9a6e2
HG
10168 (build-system qt-build-system)
10169 (native-inputs
10170 `(("extra-cmake-modules" ,extra-cmake-modules)
10171 ("kdoctools" ,kdoctools)))
10172 (inputs
10173 `(("karchive", karchive)
10174 ("kconfig" ,kconfig)
10175 ("kconfigwidgets" ,kconfigwidgets)
10176 ("kcoreaddons" ,kcoreaddons)
10177 ("kcrash" ,kcrash)
10178 ("kguiaddons" ,kguiaddons)
10179 ("ki18n" ,ki18n)
10180 ("kiconthemes" ,kiconthemes)
10181 ("kio" ,kio)
10182 ("kwidgetsaddons" ,kwidgetsaddons)
10183 ("kxmlgui" ,kxmlgui)
10184 ("libkdegames" ,libkdegames)
10185 ("glu" ,glu)
10186 ("qtbase" ,qtbase)
10187 ("qtdeclarative" ,qtdeclarative)
10188 ("qtsvg" ,qtsvg)))
10189 (home-page "https://games.kde.org/")
10190 (synopsis "Sudoku puzzle game and solver")
10191 (description "KSudoku is a Sudoku game and solver, supporting a range of
101922D and 3D Sudoku variants. In addition to playing Sudoku, it can print Sudoku
10193puzzle sheets and find the solution to any Sudoku puzzle.
10194
10195The word Sudoku means \"single number in an allotted place\" in Japanese.
10196These are the basic rules: Every Sudoku is a square divided into 3x3
10197subsquares with 3x3 cells each.
10198
10199Some cells are filled with a number at the beginning. The remaining ones are
10200to be filled by the player using numbers from 1 to 9, without repeating a
10201number twice on each column, row or subsquare (each of them must contain only
10202one 1, one 2, one 3, and so on). The game requires logic and patience.
10203Solving takes usually 10 to 30 minutes, depending on puzzle level, your skill
10204and experience.
10205
10206The numerals in Sudoku puzzles are used for convenience (for example in 16x16
10207board we use letters): arithmetic relationships between numbers are
10208irrelevant.
10209
10210This program supports also 16x16 games with numbers from 1 to 16 and 256
10211cells with 16 cols, rows and subsquares!
10212
10213More information at http://en.wikipedia.org/wiki/Sudoku
10214
10215This package is part of the KDE games module.")
10216 (license (list license:gpl2+ license:fdl1.2+))))
ec9ce951
HG
10217
10218(define-public klines
10219 (package
10220 (name "klines")
10221 (version "19.08.3")
10222 (source
10223 (origin
10224 (method url-fetch)
10225 (uri (string-append "mirror://kde/stable/applications/" version
10226 "/src/klines-" version ".tar.xz"))
10227 (sha256
10228 (base32 "1g1f46jp0rb8gpqkgcf915ydpsscn1sxk3gjvm8bcqgx9ddq59xa"))))
ec9ce951
HG
10229 (build-system qt-build-system)
10230 (native-inputs
10231 `(("extra-cmake-modules" ,extra-cmake-modules)
10232 ("kdoctools" ,kdoctools)))
10233 (inputs
10234 `(("kcompletion" ,kcompletion)
10235 ("kconfigwidgets" ,kconfigwidgets)
10236 ("kcoreaddons" ,kcoreaddons)
10237 ("kcrash" ,kcrash)
10238 ("kdbusaddons" ,kdbusaddons)
10239 ("ki18n" ,ki18n)
10240 ("kwidgetsaddons" ,kwidgetsaddons)
10241 ("kxmlgui" ,kxmlgui)
10242 ("libkdegames" ,libkdegames)
10243 ("qtbase" ,qtbase)
10244 ("qtdeclarative" ,qtdeclarative)))
10245 (home-page "https://games.kde.org/")
10246 (synopsis "Place 5 equal pieces together, but wait, there are 3 new ones")
10247 (description "KLines is a simple but highly addictive one player game.
10248
10249The player has to move the colored balls around the game board, gathering them
10250into the lines of the same color by five. Once the line is complete it is
10251removed from the board, therefore freeing precious space. In the same time
10252the new balls keep arriving by three after each move, filling up the game
10253board.
10254
10255KLines is a single-player game where the player removes colored balls from the
10256board by arranging them into lines of five or more. However, every time the
10257player moves a ball, three more balls are added to the board.
10258
10259This package is part of the KDE games module.")
10260 (license (list license:gpl2+ license:fdl1.2+))))
5a0fc695
HG
10261
10262(define-public kgoldrunner
10263 (package
10264 (name "kgoldrunner")
10265 (version "19.08.3")
10266 (source
10267 (origin
10268 (method url-fetch)
10269 (uri (string-append "mirror://kde/stable/applications/" version "/src/kgoldrunner-"
10270 version ".tar.xz"))
10271 (sha256
10272 (base32 "16rcvq796r3asz4v4ap75xvwnxd3dd2nsq5r9vxvzl6rrf1w9bj4"))))
5a0fc695
HG
10273 (build-system qt-build-system)
10274 (native-inputs
10275 `(("extra-cmake-modules" ,extra-cmake-modules)
10276 ("kdoctools" ,kdoctools)))
10277 (inputs
10278 `(("kcompletion" ,kcompletion)
10279 ("kcoreaddons" ,kcoreaddons)
10280 ("kcrash" ,kcrash)
10281 ("kdbusaddons" ,kdbusaddons)
10282 ("ki18n" ,ki18n)
10283 ("kio" ,kio)
10284 ("kwidgetsaddons" ,kwidgetsaddons)
10285 ("kxmlgui" ,kxmlgui)
10286 ("libkdegames" ,libkdegames)
10287 ("qtbase" ,qtbase)
10288 ("qtdeclarative" ,qtdeclarative)))
10289 (home-page "https://games.kde.org/")
10290 (synopsis "Action and puzzle solving game")
10291 (description "KGoldrunner is an action game where the hero runs through a
10292maze, climbs stairs, dig holes and dodges enemies in order to collect all the
10293gold nuggets and escape to the next level. Your enemies are also after the
10294gold. Worse still, they are after you!.
10295
10296KGoldrunner is a fast-paced platform game where the player must navigate a
10297maze while collecting gold nuggets and avoiding enemies. A variety of level
10298packs are included, as well as an editor to create new levels.
10299
10300This package is part of the KDE games module.")
10301 (license (list license:gpl2+ license:fdl1.2+))))
4c5ef9ba
HG
10302
10303(define-public kdiamond
10304 (package
10305 (name "kdiamond")
10306 (version "19.08.3")
10307 (source
10308 (origin
10309 (method url-fetch)
10310 (uri (string-append "mirror://kde/stable/applications/" version
10311 "/src/kdiamond-" version ".tar.xz"))
10312 (sha256
10313 (base32 "1v5yb9hb26lk277zhw8d37ks829yfqr5anzx1qhms44gca5kqhva"))))
4c5ef9ba
HG
10314 (build-system qt-build-system)
10315 (native-inputs
10316 `(("extra-cmake-modules" ,extra-cmake-modules)
10317 ("kdoctools" ,kdoctools)))
10318 (inputs
10319 `(("kcompletion", kcompletion)
10320 ("kconfig" ,kconfig)
10321 ("kconfigwidgets" ,kconfigwidgets)
10322 ("kcoreaddons" ,kcoreaddons)
10323 ("kcrash" ,kcrash)
10324 ("kdbusaddons" ,kdbusaddons)
10325 ("ki18n" ,ki18n)
10326 ("knotifications" ,knotifications)
10327 ("knotifyconfig" ,knotifyconfig)
10328 ("kwidgetsaddons" ,kwidgetsaddons)
10329 ("kxmlgui" ,kxmlgui)
10330 ("libkdegames" ,libkdegames)
10331 ("qtbase" ,qtbase)
10332 ("qtdeclarative" ,qtdeclarative)))
10333 (home-page "https://games.kde.org/")
10334 (synopsis "Three-in-a-row game")
10335 (description "KDiamond is a three-in-a-row game like Bejeweled. It
10336features unlimited fun with randomly generated games and five difficulty
10337levels with varying number of diamond colors and board sizes.
10338
10339This package is part of the KDE games module.")
10340 (license (list license:gpl2+ license:fdl1.2+))))
601f29cd
HG
10341
10342(define-public kfourinline
10343 (package
10344 (name "kfourinline")
10345 (version "19.08.3")
10346 (source
10347 (origin
10348 (method url-fetch)
10349 (uri (string-append "mirror://kde/stable/applications/" version
10350 "/src/kfourinline-" version ".tar.xz"))
10351 (sha256
10352 (base32 "1vprs6dc1ccn3g6k594i9s94xy4b91vzlqjysyc6fqcq2fs54ny3"))))
601f29cd
HG
10353 (build-system qt-build-system)
10354 (native-inputs
10355 `(("extra-cmake-modules" ,extra-cmake-modules)
10356 ("kdoctools" ,kdoctools)))
10357 (inputs
10358 `(("kcompletion" ,kcompletion)
10359 ("kconfig" ,kconfig)
10360 ("kconfigwidgets" ,kconfigwidgets)
10361 ("kcoreaddons" ,kcoreaddons)
10362 ("kcrash" ,kcrash)
10363 ("kdelibs4support" ,kdelibs4support)
10364 ("kdnssd" ,kdnssd)
10365 ("ki18n" ,ki18n)
10366 ("kxmlgui" ,kxmlgui)
10367 ("libkdegames" ,libkdegames)
10368 ("qtbase" ,qtbase)
10369 ("qtdeclarative" ,qtdeclarative)
10370 ("qtsvg" ,qtsvg)))
10371 (home-page "https://games.kde.org/")
10372 (synopsis "Place 4 pieces in a row")
10373 (description "KFourInLine is a board game for two players based on the
10374Connect-Four game.
10375
10376KFourInLine is a game where two players take turns dropping pieces into a
10377grid, the winner being the first to place four pieces in a line.
10378
10379This package is part of the KDE games module.")
10380 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
cc1cca9f
HG
10381
10382(define-public kblackbox
10383 (package
10384 (name "kblackbox")
10385 (version "19.08.3")
10386 (source
10387 (origin
10388 (method url-fetch)
10389 (uri (string-append "mirror://kde/stable/applications/" version
10390 "/src/kblackbox-" version ".tar.xz"))
10391 (sha256
10392 (base32 "1x42sfpf75c6mavwkc7g7dm11y9s5dpj8igphly5kvm0pajqby0n"))))
cc1cca9f
HG
10393 (build-system qt-build-system)
10394 (native-inputs
10395 `(("extra-cmake-modules" ,extra-cmake-modules)
10396 ("kdoctools" ,kdoctools)))
10397 (inputs
10398 `(("karchive" ,karchive)
10399 ("kcompletion" ,kcompletion)
10400 ("kconfig" ,kconfig)
10401 ("kcoreaddons" ,kcoreaddons)
10402 ("kcrash" ,kcrash)
10403 ("kdbusaddons" ,kdbusaddons)
10404 ("ki18n" ,ki18n)
10405 ("ktextwidgets" ,ktextwidgets)
10406 ("kxmlgui" ,kxmlgui)
10407 ("libkdegames" ,libkdegames)
10408 ("qtbase" ,qtbase)
10409 ("qtdeclarative" ,qtdeclarative)
10410 ("qtsvg" ,qtsvg)))
10411 (home-page "https://games.kde.org/")
10412 (synopsis "Find atoms in a grid by shooting electrons")
10413 (description "KBlackbox is a game of hide and seek played on a grid of
10414boxes where the computer has hidden several balls. The position of the hidden
10415balls can be deduced by shooting beams into the box
10416
10417KBlackBox is a game of hide and seek played on an grid of boxes, where the
10418player shoots rays into the grid to deduce the positions of hidden objects.
10419
10420This package is part of the KDE games module.")
10421 (license (list license:gpl2+ license:fdl1.2+))))
d6973ec9
HG
10422
10423(define-public knetwalk
10424 (package
10425 (name "knetwalk")
10426 (version "19.08.3")
10427 (source
10428 (origin
10429 (method url-fetch)
10430 (uri (string-append "mirror://kde/stable/applications/" version
10431 "/src/knetwalk-" version ".tar.xz"))
10432 (sha256
10433 (base32 "1i340salzgqdw8y33wrrydmpgx3pvwf5wrbljlh67cjf6s4csx7d"))))
d6973ec9
HG
10434 (build-system qt-build-system)
10435 (native-inputs
10436 `(("extra-cmake-modules" ,extra-cmake-modules)
10437 ("kdoctools" ,kdoctools)))
10438 (inputs
10439 `(("kcompletion" ,kcompletion)
10440 ("kconfig" ,kconfig)
10441 ("kconfigwidgets" ,kconfigwidgets)
10442 ("kcoreaddons" ,kcoreaddons)
10443 ("kcrash" ,kcrash)
10444 ("kdbusaddons" ,kdbusaddons)
10445 ("ki18n" ,ki18n)
10446 ("ktextwidgets" ,ktextwidgets)
10447 ("kwidgetsaddons" ,kwidgetsaddons)
10448 ("kxmlgui" ,kxmlgui)
10449 ("libkdegames" ,libkdegames)
10450 ("qtbase" ,qtbase)
10451 ("qtdeclarative" ,qtdeclarative)))
10452 (home-page "https://games.kde.org/")
10453 (synopsis "Turn the board pieces to get all computers connected")
10454 (description "KNetWalk is a small game where you have to build up a
10455computer network by rotating the wires to connect the terminals to the server.
10456When the network is build, a highscore-list comes up where competitions can be
10457fought out.
10458
10459KNetwalk is a puzzle game where the player arranges sections of wire to
10460connect all the computers on the board.
10461
10462This package is part of the KDE games module.")
10463 (license (list license:gpl2+ license:fdl1.2+))))
69436285
HG
10464
10465(define-public bomber
10466 (package
10467 (name "bomber")
10468 (version "19.08.3")
10469 (source
10470 (origin
10471 (method url-fetch)
10472 (uri (string-append "mirror://kde/stable/applications/" version
10473 "/src/bomber-" version ".tar.xz"))
10474 (sha256
10475 (base32 "1lvzd0mzgq25akvwvkm57l3plm65k731v2i1ahakn985bb5gc3is"))))
69436285
HG
10476 (build-system qt-build-system)
10477 (native-inputs
10478 `(("extra-cmake-modules" ,extra-cmake-modules)
10479 ("kdoctools" ,kdoctools)))
10480 (inputs
10481 `(("kcompletiom" ,kcompletion)
10482 ("kconfig" ,kconfig)
10483 ("kcoreaddons" ,kcoreaddons)
10484 ("kcrash" ,kcrash)
10485 ("kdbusaddons" ,kdbusaddons)
10486 ("ki18n" ,ki18n)
10487 ("kxmlgui" ,kxmlgui)
10488 ("libkdegames" ,libkdegames)
10489 ("qtbase" ,qtbase)
10490 ("qtdeclarative" ,qtdeclarative)))
10491 (home-page "https://games.kde.org/")
10492 (synopsis "Arcade bombing game")
10493 (description "Bomber is a single player arcade game.
10494
10495The player is invading various cities in a plane that is decreasing in height.
10496The goal of the game is to destroy all the buildings and advance to the next
10497level. Each level gets a bit harder by increasing the speed of the plane and
10498the height of the buildings.
10499
10500Bomber is a game where you fly a spaceship and attempt to bomb the buildings
10501below you. Each pass the spaceship makes, it gets lower and lower. If you've
10502not destroyed a building in your path, you will crash into it.
10503
10504This package is part of the KDE games module.")
10505 (license (list license:gpl2+ license:fdl1.2+))))
4f0b3368
HG
10506
10507(define-public granatier
10508 (package
10509 (name "granatier")
10510 (version "19.08.3")
10511 (source
10512 (origin
10513 (method url-fetch)
10514 (uri (string-append "mirror://kde/stable/applications/" version
10515 "/src/granatier-" version ".tar.xz"))
10516 (sha256
10517 (base32 "141qmdinz7ikbbrs8dq6cap3nl22sl7pw62r80pf3xxwn2q4phpa"))))
4f0b3368
HG
10518 (build-system qt-build-system)
10519 (native-inputs
10520 `(("extra-cmake-modules" ,extra-cmake-modules)
10521 ("kdoctools" ,kdoctools)))
10522 (inputs
10523 `(("kcompletion" ,kcompletion)
10524 ("kconfig" ,kconfig)
10525 ("kconfigwidgets" ,kconfigwidgets)
10526 ("kcoreaddons" ,kcoreaddons)
10527 ("kcrash" ,kcrash)
10528 ("kdbusaddons" ,kdbusaddons)
10529 ("ki18n" ,ki18n)
10530 ("knewstuff" ,knewstuff)
10531 ("kwidgetsaddons" ,kwidgetsaddons)
10532 ("kxmlgui" ,kxmlgui)
10533 ("libkdegames" ,libkdegames)
10534 ("qtbase" ,qtbase)
10535 ("qtdeclarative" ,qtdeclarative)
10536 ("qtsvg" ,qtsvg)))
10537 (home-page "https://games.kde.org/")
10538 (synopsis "Bomberman clone")
10539 (description "Granatier is a clone of the classic Bomberman game,
10540inspired by the work of the Clanbomber clone.
10541
10542This package is part of the KDE games module.")
10543 (license (list license:gpl2+ license:fdl1.2+))))
584e07ee
HG
10544
10545(define-public ksirk
10546 (package
10547 (name "ksirk")
10548 (version "19.08.3")
10549 (source
10550 (origin
10551 (method url-fetch)
10552 (uri (string-append "mirror://kde/stable/applications/" version
10553 "/src/ksirk-" version ".tar.xz"))
10554 (sha256
10555 (base32 "1b1wixs2hp5qnvdygfwa3kvy0kn94ysa4ifmx90q6r3yfr2lpfca"))))
584e07ee
HG
10556 (build-system qt-build-system)
10557 (native-inputs
10558 `(("extra-cmake-modules" ,extra-cmake-modules)
10559 ("kdoctools" ,kdoctools)))
10560 (inputs
10561 `(("kcrash" ,kcrash)
10562 ("ki18n" ,ki18n)
10563 ("kiconthemes" ,kiconthemes)
10564 ("kio" ,kio)
10565 ("knewstuff" ,knewstuff)
10566 ("kwallet" ,kwallet)
10567 ("kxmlgui" ,kxmlgui)
10568 ("libkdegames" ,libkdegames)
10569 ("phonon" ,phonon)
10570 ("qca" ,qca)
10571 ("qtbase" ,qtbase)
10572 ("qtdeclarative" ,qtdeclarative)
10573 ("qtsvg" ,qtsvg)
10574 ("zlib" ,zlib)))
10575 (home-page "https://games.kde.org/")
10576 (synopsis "Computerized version of the well known strategy board game
10577'Risk'")
10578 (description "KsirK is a multi-player network-enabled game. The goal of
10579the game is simply to conquer the world by attacking your neighbors with your
10580armies.
10581
10582At the beginning of the game, countries are distributed to all the players.
10583Each country contains one army represented by an infantryman. Each player has
10584some armies to distribute to his countries. On each turn, each player can
10585attack his neighbours, eventually conquering one or more countries. At the
10586end of each turn, some bonus armies are distributed to the players in function
10587of the number of countries they own. The winner is the player that conquered
10588all the world.
10589
10590Features:
10591@itemize
10592@item Support for 1-6 human or computer players
10593@item Multi-player gaming over a network
10594@item You can easily create new skins with SVG graphics and the skin editor
10595@item Hot New Stuff support. You can easily download and install new skins
10596@end itemize
10597
10598This package is part of the KDE games module.")
10599 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
56064cd7
HG
10600
10601(define-public palapeli
10602 (package
10603 (name "palapeli")
10604 (version "19.08.3")
10605 (source
10606 (origin
10607 (method url-fetch)
10608 (uri (string-append "mirror://kde/stable/applications/" version
10609 "/src/palapeli-" version ".tar.xz"))
10610 (sha256
10611 (base32 "1g91ydbc0x2y2gn3lcb5w03mn7k78l5bq4cb1s59kx6yjbflv3pw"))))
56064cd7
HG
10612 (build-system qt-build-system)
10613 (native-inputs
10614 `(("extra-cmake-modules" ,extra-cmake-modules)
10615 ("kdoctools" ,kdoctools)))
10616 (inputs
10617 `(("karchive" ,karchive)
10618 ("kcompletion" ,kcompletion)
10619 ("kconfig" ,kconfig)
10620 ("kconfigwidgets" ,kconfigwidgets)
10621 ("kcoreaddons" ,kcoreaddons)
10622 ("kcrash" ,kcrash)
10623 ("kcrash" ,kcrash)
10624 ("ki18n" ,ki18n)
10625 ("ki18n" ,ki18n)
10626 ("kio" ,kio)
10627 ("kitemviews" ,kitemviews)
10628 ("knotifications" ,knotifications)
10629 ("kservice" ,kservice)
10630 ("kwidgetsaddons" ,kwidgetsaddons)
10631 ("kxmlgui" ,kxmlgui)
10632 ("libkdegames" ,libkdegames)
10633 ("qtbase" ,qtbase)
10634 ("qtdeclarative" ,qtdeclarative)
10635 ("qtsvg" ,qtsvg)
10636 ("shared-mime-info" ,shared-mime-info)))
10637 (home-page "https://games.kde.org/")
10638 (synopsis "Jigsaw puzzle game")
10639 (description "Palapeli is a jigsaw puzzle game. Unlike other games in
10640that genre, you are not limited to aligning pieces on imaginary grids. The
10641pieces are freely moveable. Also, Palapeli features real persistency, i.e.
10642everything you do is saved on your disk immediately.
10643
10644Palapeli is the Finnish word for jigsaw puzzle.
10645
10646This package is part of the KDE games module.")
10647 (license license:gpl2+)))
bf6bfdbe
HG
10648
10649(define-public kiriki
10650 (package
10651 (name "kiriki")
10652 (version "19.08.3")
10653 (source
10654 (origin
10655 (method url-fetch)
10656 (uri (string-append "mirror://kde/stable/applications/" version
10657 "/src/kiriki-" version ".tar.xz"))
10658 (sha256
10659 (base32 "1xg25dj95g81dc5l7k47am4j52abrwwfx4h73lvsbn4lc8lfmshw"))))
bf6bfdbe
HG
10660 (build-system qt-build-system)
10661 (native-inputs
10662 `(("extra-cmake-modules" ,extra-cmake-modules)
10663 ("kdoctools" ,kdoctools)))
10664 (inputs
10665 `(("kcompletion" ,kcompletion)
10666 ("kconfig" ,kconfig)
10667 ("kconfigwidgets" ,kconfigwidgets)
10668 ("kcoreaddons" ,kcoreaddons)
10669 ("kcrash" ,kcrash)
10670 ("kdbusaddons" ,kdbusaddons)
10671 ("ki18n" ,ki18n)
10672 ("kiconthemes" ,kiconthemes)
10673 ("kxmlgui" ,kxmlgui)
10674 ("libkdegames" ,libkdegames)
10675 ("qtbase" ,qtbase)
10676 ("qtdeclarative" ,qtdeclarative)))
10677 (home-page "https://games.kde.org/")
10678 (synopsis "Yahtzee dice game")
10679 (description "Kiriki is an addictive and fun dice game, designed to be
10680played by as many as six players.
10681
10682Participants have to collect points by rolling five dice for up to three times
10683per single turn to make combinations with the highest score.
10684
10685This package is part of the KDE games module.")
10686 (license (list license:gpl2+ license:fdl1.2+))))
f0b21b8d
HG
10687
10688(define-public kigo
10689 (package
10690 (name "kigo")
10691 (version "19.08.3")
10692 (source
10693 (origin
10694 (method url-fetch)
10695 (uri (string-append "mirror://kde/stable/applications/" version
10696 "/src/kigo-" version ".tar.xz"))
10697 (sha256
10698 (base32 "00l5gcbi8xyj9c1lngkrddka3a4m4cd78prfplrpq32ma9xq681f"))))
f0b21b8d
HG
10699 (build-system qt-build-system)
10700 (native-inputs
10701 `(("extra-cmake-modules" ,extra-cmake-modules)
10702 ("kdoctools" ,kdoctools)))
10703 (inputs
10704 `(("kconfig" ,kconfig)
10705 ("kconfigwidgets" ,kconfigwidgets)
10706 ("kcoreaddons" ,kcoreaddons)
10707 ("kcrash" ,kcrash)
10708 ("kdbusaddons" ,kdbusaddons)
10709 ("ki18n" ,ki18n)
10710 ("kio" ,kio)
10711 ("knewstuff", knewstuff)
10712 ("ktextwidgets" ,ktextwidgets)
10713 ("kxmlgui" ,kxmlgui)
10714 ("libkdegames" ,libkdegames)
10715 ("qtbase" ,qtbase)
10716 ("qtdeclarative" ,qtdeclarative)
10717 ("qtsvg" ,qtsvg)))
10718 (home-page "https://games.kde.org/")
10719 (synopsis "Go board game")
10720 (description "Kigo is an open-source implementation of the popular Go
10721game.
10722
10723Go is a strategic board game for two players. It is also known as
10724igo (Japanese), weiqi or wei ch'i (Chinese) or baduk (Korean). Go is noted
10725for being rich in strategic complexity despite its simple rules. The game is
10726played by two players who alternately place black and white stones (playing
10727pieces, now usually made of glass or plastic) on the vacant intersections of a
10728grid of 19x19 lines (9x9 or 13x13 for easier games).
10729
10730You also need to install a go engine, e.g. @code{gnugo}.
10731
10732This package is part of the KDE games module.")
10733 (license license:gpl3+)))
90e594d3
HG
10734
10735(define-public kubrick
10736 (package
10737 (name "kubrick")
10738 (version "19.08.3")
10739 (source
10740 (origin
10741 (method url-fetch)
10742 (uri (string-append "mirror://kde/stable/applications/" version
10743 "/src/kubrick-" version ".tar.xz"))
10744 (sha256
10745 (base32 "0ma8wja4rqlsmsr8cyicfpkwlgqva4450ls4c0ql53p0kabf04gx"))))
90e594d3
HG
10746 (build-system qt-build-system)
10747 (native-inputs
10748 `(("extra-cmake-modules" ,extra-cmake-modules)
10749 ("kdoctools" ,kdoctools)))
10750 (inputs
10751 `(("glu" ,glu)
10752 ("kconfig" ,kconfig)
10753 ("kconfigwidgets" ,kconfigwidgets)
10754 ("kcoreaddons" ,kcoreaddons)
10755 ("kcrash" ,kcrash)
10756 ("ki18n" ,ki18n)
10757 ("kio" ,kio)
10758 ("kwidgetsaddons" ,kwidgetsaddons)
10759 ("kxmlgui" ,kxmlgui)
10760 ("libkdegames" ,libkdegames)
10761 ("qtbase" ,qtbase)
10762 ("qtdeclarative" ,qtdeclarative)
10763 ("qtsvg" ,qtsvg)))
10764 (home-page "https://games.kde.org/")
10765 (synopsis "Game based on Rubik's Cube")
10766 (description "Kubrick is a game based on the Rubik's Cube puzzle.
10767
10768The cube sizes range from 2x2x2 up to 6x6x6, or you can play with irregular
10769\"bricks\" such as 5x3x2 or \"mats\" such as 6x4x1 or 2x2x1. The game has a
10770selection of puzzles at several levels of difficulty, as well as demos of
10771pretty patterns and solution moves, or you can make up your own puzzles. The
10772game has unlimited undo, redo, save and reload capabilities.
10773
10774This package is part of the KDE games module.")
10775 (license (list license:gpl2+ license:fdl1.2+))))
01e2f2ed
HG
10776
10777(define-public lskat
10778 (package
10779 (name "lskat")
10780 (version "19.08.3")
10781 (source
10782 (origin
10783 (method url-fetch)
10784 (uri (string-append "mirror://kde/stable/applications/" version
10785 "/src/lskat-" version ".tar.xz"))
10786 (sha256
10787 (base32 "1qk5hd27zb42pbcxq5wyzz62nj5f0qdmgy54r9rnk92pzzzk94s9"))))
01e2f2ed
HG
10788 (build-system qt-build-system)
10789 (native-inputs
10790 `(("extra-cmake-modules" ,extra-cmake-modules)
10791 ("kdoctools" ,kdoctools)))
10792 (inputs
10793 `(("kcompletion" ,kcompletion)
10794 ("kconfig" ,kconfig)
10795 ("kcoreaddons" ,kcoreaddons)
10796 ("kcrash" ,kcrash)
10797 ("kguiaddons" ,kguiaddons)
10798 ("ki18n" ,ki18n)
10799 ("kwidgetsaddons" ,kwidgetsaddons)
10800 ("kxmlgui" ,kxmlgui)
10801 ("libkdegames" ,libkdegames)
10802 ("qtbase" ,qtbase)
10803 ("qtdeclarative" ,qtdeclarative)
10804 ("qtsvg" ,qtsvg)))
10805 (home-page "https://games.kde.org/")
10806 (synopsis "Lieutnant Skat card game")
10807 (description "Lieutnant Skat (from German \"Offiziersskat\") is a fun and
10808engaging card game for two players, where the second player is either live
10809opponent, or a built in artificial intelligence.
10810
10811Lieutnant Skat is a simplified variant of the Skat card game for two players.
10812
10813This package is part of the KDE games module.")
10814 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
ed88e67d
HG
10815
10816(define-public kapman
10817 (package
10818 (name "kapman")
10819 (version "19.08.3")
10820 (source
10821 (origin
10822 (method url-fetch)
10823 (uri (string-append "mirror://kde/stable/applications/" version
10824 "/src/kapman-" version ".tar.xz"))
10825 (sha256
10826 (base32 "03pq38caam30q4bw14c045kayw2d87xq1yaa3s2jkrylylfq3p0f"))))
ed88e67d
HG
10827 (build-system qt-build-system)
10828 (native-inputs
10829 `(("extra-cmake-modules" ,extra-cmake-modules)
10830 ("kdoctools" ,kdoctools)))
10831 (inputs
10832 `(("kcompletion" ,kcompletion)
10833 ("kconfig" ,kconfig)
10834 ("kconfigwidgets" ,kconfigwidgets)
10835 ("kcoreaddons" ,kcoreaddons)
10836 ("kcrash" ,kcrash)
10837 ("kdbusaddons" ,kdbusaddons)
10838 ("ki18n" ,ki18n)
10839 ("kxmlgui" ,kxmlgui)
10840 ("libkdegames" ,libkdegames)
10841 ("qtbase" ,qtbase)
10842 ("qtdeclarative" ,qtdeclarative)
10843 ("qtsvg" ,qtsvg)))
10844 (home-page "https://games.kde.org/")
10845 (synopsis "Pac-Man clone")
10846 (description "Kapman is a clone of the well known game Pac-Man.
10847
10848You must run through the maze to eat all pills without being captured by a
10849ghost. By eating an energizer, Kapman gets the ability to eat ghosts for a
10850few seconds. When a stage is cleared of pills and energizer the player is
10851taken to the next stage with slightly increased game speed
10852
10853This package is part of the KDE games module.")
10854 (license (list license:gpl2+ license:fdl1.2+))))
fb05eed9
HG
10855
10856(define-public kspaceduel
10857 (package
10858 (name "kspaceduel")
10859 (version "19.08.3")
10860 (source
10861 (origin
10862 (method url-fetch)
10863 (uri (string-append "mirror://kde/stable/applications/" version
10864 "/src/kspaceduel-" version ".tar.xz"))
10865 (sha256
10866 (base32 "1hppni0ihs7psc0dly5rxyy2a38nzhlig9yfyhi3lkh36z05pql8"))))
fb05eed9
HG
10867 (build-system qt-build-system)
10868 (native-inputs
10869 `(("extra-cmake-modules" ,extra-cmake-modules)
10870 ("kdoctools" ,kdoctools)))
10871 (inputs
10872 `(("kcompletion" ,kcompletion)
10873 ("kconfig" ,kconfig)
10874 ("kconfigwidgets" ,kconfigwidgets)
10875 ("kcoreaddons" ,kcoreaddons)
10876 ("kcrash" ,kcrash)
10877 ("kdbusaddons" ,kdbusaddons)
10878 ("ki18n" ,ki18n)
10879 ("kxmlgui" ,kxmlgui)
10880 ("libkdegames" ,libkdegames)
10881 ("qtbase" ,qtbase)
10882 ("qtdeclarative" ,qtdeclarative)
10883 ("qtsvg" ,qtsvg)))
10884 (home-page "https://games.kde.org/")
10885 (synopsis "Two player game with shooting spaceships flying around a sun")
10886 (description "KSpaceduel is a space battle game for one or two players,
10887where two ships fly around a star in a struggle to be the only survivor.
10888
10889This package is part of the KDE games module.")
10890 (license (list license:gpl2+ license:fdl1.2+))))
37ea126d
HG
10891
10892(define-public bovo
10893 (package
10894 (name "bovo")
10895 (version "19.08.3")
10896 (source
10897 (origin
10898 (method url-fetch)
10899 (uri (string-append "mirror://kde/stable/applications/" version
10900 "/src/bovo-" version ".tar.xz"))
10901 (sha256
10902 (base32 "0dbpng0w52nahmx7brsll66zw23ql1g6pcvn2k4g2lnvxch0i59g"))))
37ea126d
HG
10903 (build-system qt-build-system)
10904 (native-inputs
10905 `(("extra-cmake-modules" ,extra-cmake-modules)
10906 ("kdoctools" ,kdoctools)))
10907 (inputs
10908 `(("kcompletion" ,kcompletion)
10909 ("kcoreaddons" ,kcoreaddons)
10910 ("kcrash" ,kcrash)
10911 ("kdbusaddons" ,kdbusaddons)
10912 ("ki18n" ,ki18n)
10913 ("kxmlgui" ,kxmlgui)
10914 ("libkdegames" ,libkdegames)
10915 ("qtbase" ,qtbase)
10916 ("qtdeclarative" ,qtdeclarative)
10917 ("qtsvg" ,qtsvg)))
10918 (home-page "https://games.kde.org/")
10919 (synopsis "Classic pen and paper game: five in a line")
10920 (description "Bovo is a Gomoku (from Japanese 五目並べ - lit. \"five
10921points\") like game for two players, where the opponents alternate in placing
10922their respective pictogram on the game board. The winner is the first to
10923complete a line of five markers. (Also known as: Connect Five, Five in a row,
10924X and O, Naughts and Crosses)
10925
10926This package is part of the KDE games module.")
10927 (license (list license:gpl2+ license:fdl1.2+))))
2fbf14e1
HG
10928
10929(define-public killbots
10930 (package
10931 (name "killbots")
10932 (version "19.08.3")
10933 (source
10934 (origin
10935 (method url-fetch)
10936 (uri (string-append "mirror://kde/stable/applications/" version
10937 "/src/killbots-" version ".tar.xz"))
10938 (sha256
10939 (base32 "1qi86q7diw7glkp9v33yim9nhz2da4balbxa1hjrdgjdv8zdbxbm"))))
2fbf14e1
HG
10940 (build-system qt-build-system)
10941 (native-inputs
10942 `(("extra-cmake-modules" ,extra-cmake-modules)
10943 ("kdoctools" ,kdoctools)))
10944 (inputs
10945 `(("kcompletion" ,kcompletion)
10946 ("kconfig" ,kconfig)
10947 ("kconfigwidgets" ,kconfigwidgets)
10948 ("kcoreaddons" ,kcoreaddons)
10949 ("kcrash" ,kcrash)
10950 ("kdbusaddons" ,kdbusaddons)
10951 ("ki18n" ,ki18n)
10952 ("kwidgetsaddons" ,kwidgetsaddons)
10953 ("kxmlgui" ,kxmlgui)
10954 ("libkdegames" ,libkdegames)
10955 ("qtbase" ,qtbase)
10956 ("qtdeclarative" ,qtdeclarative)))
10957 (home-page "https://games.kde.org/")
10958 (synopsis "Port of the classic BSD console game robots")
10959 (description "Killbots is a simple game of evading killer robots.
10960
10961Who created the robots and why they have been programmed to destroy, no one
10962knows. All that is known is that the robots are numerous and their sole
10963objective is to destroy you. Fortunately for you, their creator has focused
10964on quantity rather than quality and as a result the robots are severely
10965lacking in intelligence. Your superior wit and a fancy teleportation device
10966are your only weapons against the never-ending stream of mindless automatons.
10967
10968This package is part of the KDE games module.")
10969 (license (list license:gpl2+ license:fdl1.2+))))
f2f0ef92
HG
10970
10971(define-public ksnakeduel
10972 (package
10973 (name "ksnakeduel")
10974 (version "19.08.3")
10975 (source
10976 (origin
10977 (method url-fetch)
10978 (uri (string-append "mirror://kde/stable/applications/" version
10979 "/src/ksnakeduel-" version ".tar.xz"))
10980 (sha256
10981 (base32 "0mprrnpax8pv7ab36zwhvdfj8id52w8g6x76nnj8qvkdlkjiqdnn"))))
f2f0ef92
HG
10982 (build-system qt-build-system)
10983 (native-inputs
10984 `(("extra-cmake-modules" ,extra-cmake-modules)
10985 ("kdoctools" ,kdoctools)))
10986 (inputs
10987 `(("kcompletion" ,kcompletion)
10988 ("kconfig" ,kconfig)
10989 ("kconfigwidgets" ,kconfigwidgets)
10990 ("kcoreaddons" ,kcoreaddons)
10991 ("kcrash" ,kcrash)
10992 ("kdbusaddons" ,kdbusaddons)
10993 ("kguiaddons" ,kguiaddons)
10994 ("ki18n" ,ki18n)
10995 ("kxmlgui" ,kxmlgui)
10996 ("libkdegames" ,libkdegames)
10997 ("qtbase" ,qtbase)
10998 ("qtdeclarative" ,qtdeclarative)
10999 ("qtsvg" ,qtsvg)))
11000 (home-page "https://games.kde.org/")
11001 (synopsis "Snake race played against the computer")
11002 (description "KSnakeDuel is a fast action game where you steer a snake
11003which has to eat food. While eating the snake grows. But once a player
11004collides with the other snake or the wall the game is lost. This becomes of
11005course more and more difficult the longer the snakes grow.
11006
11007This package is part of the KDE games module.")
11008 (license (list license:gpl2+ license:fdl1.2+))))
f114a689
HG
11009
11010(define-public kollision
11011 (package
11012 (name "kollision")
11013 (version "19.08.3")
11014 (source
11015 (origin
11016 (method url-fetch)
11017 (uri (string-append "mirror://kde/stable/applications/" version
11018 "/src/kollision-" version ".tar.xz"))
11019 (sha256
11020 (base32 "1p7qrn3d0ybpvc9k6k5wzj54dsrp1rqh39844maz0ay2fhvmch12"))))
f114a689
HG
11021 (build-system qt-build-system)
11022 (native-inputs
11023 `(("extra-cmake-modules" ,extra-cmake-modules)
11024 ("kdoctools" ,kdoctools)))
11025 (inputs
11026 `(("kcompletion" ,kcompletion)
11027 ("kconfig" ,kconfig)
11028 ("kcoreaddons" ,kcoreaddons)
11029 ("kcrash" ,kcrash)
11030 ("kdbusaddons" ,kdbusaddons)
11031 ("ki18n" ,ki18n)
11032 ("kwidgetsaddons" ,kwidgetsaddons)
11033 ("kxmlgui" ,kxmlgui)
11034 ("libkdegames" ,libkdegames)
11035 ("qtbase" ,qtbase)
11036 ("qtdeclarative" ,qtdeclarative)))
11037 (home-page "https://games.kde.org/")
11038 (synopsis "Simple ball dodging game")
11039 (description "In Kollision you use mouse to control a small blue ball in a
11040closed space environment filled with small red balls, which move about
11041chaotically. Your goal is to avoid touching any of those red balls with your
11042blue one, because the moment you do the game will be over. The longer you can
11043stay in game the higher will your score be.
11044
11045This package is part of the KDE games module.")
11046 (license (list license:gpl2+ license:fdl1.2+))))
4e759110
HG
11047
11048(define-public knavalbattle
11049 (package
11050 (name "knavalbattle")
11051 (version "19.08.3")
11052 (source
11053 (origin
11054 (method url-fetch)
11055 (uri (string-append "mirror://kde/stable/applications/" version
11056"/src/knavalbattle-" version ".tar.xz"))
11057 (sha256
11058 (base32 "0sdfjplqkb30x2mvh66pkzay6vn5px87779sh2s8lpl6fcw0v9g4"))))
4e759110
HG
11059 (build-system qt-build-system)
11060 (native-inputs
11061 `(("extra-cmake-modules" ,extra-cmake-modules)
11062 ("kdoctools" ,kdoctools)))
11063 (inputs
11064 `(("kauth" ,kauth)
11065 ("kcompletion" ,kcompletion)
11066 ("kconfig" ,kconfig)
11067 ("kconfigwidgets" ,kconfigwidgets)
11068 ("kcoreaddons" ,kcoreaddons)
11069 ("kcrash" ,kcrash)
11070 ("kdbusaddons" ,kdbusaddons)
11071 ("kdnssd" ,kdnssd)
11072 ("ki18n" ,ki18n)
11073 ("ktextwidgets" ,ktextwidgets)
11074 ("kxmlgui" ,kxmlgui)
11075 ("libkdegames" ,libkdegames)
11076 ("qtbase" ,qtbase)
11077 ("qtdeclarative" ,qtdeclarative)))
11078 (home-page "https://games.kde.org/")
11079 (synopsis "Battleship board game with built-in game server")
11080 (description "KBattleship is a Battle Ship game for KDE.
11081
11082Ships are placed on a board which represents the sea. Players try to hit each
11083others ships in turns without knowing where they are placed. The first player
11084to destroy all ships wins the game.
11085
11086This package is part of the KDE games module.")
11087 (license (list license:gpl2+ license:fdl1.2+))))
a605b25b
HG
11088
11089(define-public kreversi
11090 (package
11091 (name "kreversi")
11092 (version "19.08.3")
11093 (source
11094 (origin
11095 (method url-fetch)
11096 (uri (string-append "mirror://kde/stable/applications/" version
11097"/src/kreversi-" version ".tar.xz"))
11098 (sha256
11099 (base32 "0b6q8df2bawgnrswhq59z37axad0q3zpvvzxdds7sz1lw505xw9h"))))
a605b25b
HG
11100 (build-system qt-build-system)
11101 (native-inputs
11102 `(("extra-cmake-modules" ,extra-cmake-modules)
11103 ("kdoctools" ,kdoctools)))
11104 (inputs
11105 `(("kconfig" ,kconfig)
11106 ("kconfigwidgets" ,kconfigwidgets)
11107 ("kcoreaddons" ,kcoreaddons)
11108 ("kcrash" ,kcrash)
11109 ("kdbusaddons" ,kdbusaddons)
11110 ("kdeclarative" ,kdeclarative)
11111 ("ki18n" ,ki18n)
11112 ("kiconthemes" ,kiconthemes)
11113 ("kio" ,kio)
11114 ("kxmlgui" ,kxmlgui)
11115 ("libkdegames" ,libkdegames)
11116 ("qtbase" ,qtbase)
11117 ("qtdeclarative" ,qtdeclarative)
11118 ("qtsvg" ,qtsvg)))
11119 (home-page "https://games.kde.org/")
11120 (synopsis "Old reversi board game, also known as othello")
11121 (description "KReversi is a simple one player strategy game played
11122against the computer.
11123
11124If a player's piece is captured by an opposing player, that piece is turned
11125over to reveal the color of that player. A winner is declared when one player
11126has more pieces of his own color on the board and there are no more possible
11127moves.
11128
11129This package is part of the KDE games module.")
11130 (license (list license:gpl2+ license:fdl1.2+))))
4fe74238
HG
11131
11132(define-public ksquares
11133 (package
11134 (name "ksquares")
11135 (version "19.08.3")
11136 (source
11137 (origin
11138 (method url-fetch)
11139 (uri (string-append "mirror://kde/stable/applications/" version
11140 "/src/ksquares-" version ".tar.xz"))
11141 (sha256
11142 (base32 "0hv8hls5s627lys08nnw72rfzsafj3dmp49mh2afzmh6lgk9h5vy"))))
4fe74238
HG
11143 (build-system qt-build-system)
11144 (native-inputs
11145 `(("extra-cmake-modules" ,extra-cmake-modules)
11146 ("kdoctools" ,kdoctools)))
11147 (inputs
11148 `(("kcompletion" ,kcompletion)
11149 ("kconfig" ,kconfig)
11150 ("kconfigwidgets" ,kconfigwidgets)
11151 ("kcoreaddons" ,kcoreaddons)
11152 ("kcrash" ,kcrash)
11153 ("kdbusaddons" ,kdbusaddons)
11154 ("ki18n" ,ki18n)
11155 ("kwidgetsaddons" ,kwidgetsaddons)
11156 ("kxmlgui" ,kxmlgui)
11157 ("libkdegames" ,libkdegames)
11158 ("qtbase" ,qtbase)
11159 ("qtdeclarative" ,qtdeclarative)))
11160 (home-page "https://games.kde.org/")
11161 (synopsis "Dots and Boxes game")
11162 (description "KSquares is an implementation of the popular paper based
11163game Squares. Two players take turns connecting dots on a grid to complete
11164squares, the player with the most squares wins.
11165
11166This package is part of the KDE games module.")
11167 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
95563d62
HG
11168
11169(define-public kjumpingcube
11170 (package
11171 (name "kjumpingcube")
11172 (version "19.08.3")
11173 (source
11174 (origin
11175 (method url-fetch)
11176 (uri (string-append "mirror://kde/stable/applications/" version
11177 "/src/kjumpingcube-" version ".tar.xz"))
11178 (sha256
11179 (base32 "0d67zqkf2xffjkj671gl2n6nj6jajyn6rgqqj5i6gm500mqi9rm1"))))
95563d62
HG
11180 (build-system qt-build-system)
11181 (native-inputs
11182 `(("extra-cmake-modules" ,extra-cmake-modules)
11183 ("kdoctools" ,kdoctools)))
11184 (inputs
11185 `(("kconfig" ,kconfig)
11186 ("kconfigwidgets" ,kconfigwidgets)
11187 ("kcoreaddons" ,kcoreaddons)
11188 ("kcrash" ,kcrash)
11189 ("kdbusaddons" ,kdbusaddons)
11190 ("ki18n" ,ki18n)
11191 ("kio" ,kio)
11192 ("kwidgetsaddons" ,kwidgetsaddons)
11193 ("kxmlgui" ,kxmlgui)
11194 ("libkdegames" ,libkdegames)
11195 ("qtbase" ,qtbase)
11196 ("qtdeclarative" ,qtdeclarative)
11197 ("qtsvg" ,qtsvg)))
11198 (home-page "https://games.kde.org/")
11199 (synopsis "Simple tactical game for number-crunchers")
11200 (description "KJumpingcube is a simple tactical game for one or two
11201players, played on a grid of numbered squares. Each turn, players compete for
11202control of the board by capturing or adding to one square.
11203
11204This package is part of the KDE games module.")
11205 (license (list license:gpl2+ license:fdl1.2+))))
40d2bddd
NG
11206
11207(define-public xmoto
37ab7837
NG
11208 (package
11209 (name "xmoto")
11210 (version "0.6.1")
11211 (source
11212 (origin
11213 (method git-fetch)
11214 (uri (git-reference
b0e7b699 11215 (url "https://github.com/xmoto/xmoto")
37ab7837
NG
11216 (commit version)))
11217 (file-name (git-file-name name version))
11218 (sha256
11219 (base32 "00f5ha79lfa2iiaz66wl0hl5dapa1l15qdr7m7knzi0ll7j6z66n"))
11220 (modules '((guix build utils)
11221 (ice-9 ftw)
11222 (srfi srfi-1)))
11223 ;; XXX: Remove some bundled libraries. Guix provides Chipmunk, but
11224 ;; it appears to be incompatible with the (older) one bundled.
11225 (snippet
11226 `(begin
11227 (let ((keep '("chipmunk" "glad" "md5sum")))
11228 (with-directory-excursion "vendor"
11229 (for-each delete-file-recursively
11230 (lset-difference string=?
11231 (scandir ".")
11232 (cons* "." ".." keep))))
11233 (substitute* "src/CMakeLists.txt"
11234 (("add_subdirectory\\(.*?/vendor/(.+?)\".*" line library)
11235 (if (member library keep) line ""))))
11236 #t))))
11237 (build-system cmake-build-system)
11238 (arguments
11239 `(#:tests? #f ;no test
11240 #:phases
11241 (modify-phases %standard-phases
11242 (add-after 'unpack 'fix-hard-coded-directory
11243 (lambda* (#:key outputs #:allow-other-keys)
11244 (substitute* "src/common/VFileIO.cpp"
11245 (("/usr/share")
11246 (string-append (assoc-ref outputs "out") "/share")))
11247 #t))
11248 (add-before 'build 'set-SDL
11249 ;; Set correct environment for SDL.
11250 (lambda* (#:key inputs #:allow-other-keys)
11251 (setenv "CPATH"
11252 (string-append
11253 (assoc-ref inputs "sdl") "/include/SDL:"
11254 (or (getenv "CPATH") "")))
11255 #t))
11256 (add-after 'install 'unbundle-fonts
11257 ;; Unbundle DejaVuSans TTF files.
11258 (lambda* (#:key outputs inputs #:allow-other-keys)
11259 (let ((font-dir (string-append (assoc-ref inputs "font-dejavu")
11260 "/share/fonts/truetype/"))
11261 (target-dir (string-append (assoc-ref outputs "out")
11262 "/share/xmoto/Textures/Fonts/")))
11263 (for-each (lambda (f)
11264 (let ((font (string-append font-dir f))
11265 (target (string-append target-dir f)))
11266 (delete-file target)
11267 (symlink font target)))
11268 '("DejaVuSans.ttf" "DejaVuSansMono.ttf"))
11269 #t))))))
11270 (native-inputs
11271 `(("gettext" ,gettext-minimal)
11272 ("pkg-config" ,pkg-config)))
11273 (inputs
11274 `(("bzip2" ,bzip2)
11275 ("curl" ,curl)
11276 ("font-dejavu" ,font-dejavu)
11277 ("glu" ,glu)
11278 ("libjpeg" ,libjpeg-turbo)
11279 ("libpng" ,libpng)
11280 ("libxdg-basedir" ,libxdg-basedir)
11281 ("libxml2" ,libxml2)
11282 ("lua" ,lua-5.1)
11283 ("ode" ,ode)
11284 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-net sdl-ttf)))
11285 ("sqlite" ,sqlite)
11286 ("zlib" ,zlib)))
11287 (home-page "https://xmoto.tuxfamily.org/")
11288 (synopsis "2D motocross platform game")
11289 (description
11290 "X-Moto is a challenging 2D motocross platform game, where
fb529660
NG
11291physics play an all important role in the gameplay. You need to
11292control your bike to its limit, if you want to have a chance finishing
11293the more difficult challenges.")
37ab7837
NG
11294 (license (list license:gpl2+ ;whole project
11295 license:bsd-3 ;vendor/md5sum
11296 license:lgpl2.1+
11297 license:expat))))
371ca8ca
GLV
11298
11299(define-public eboard
11300 (package
11301 (name "eboard")
11302 (version "1.1.3")
11303 (source
11304 (origin
11305 (method git-fetch)
11306 (uri (git-reference
b0e7b699 11307 (url "https://github.com/fbergo/eboard")
371ca8ca
GLV
11308 (commit (string-append "v" version))))
11309 (file-name (git-file-name name version))
11310 (sha256
11311 (base32 "1z4pwpqyvxhlda99h6arh2rjk90fbms9q29fqizjblrdn01dlxn1"))))
11312 (build-system gnu-build-system)
11313 (native-inputs
11314 `(("perl" ,perl)
11315 ("pkg-config" ,pkg-config)))
11316 (inputs
11317 `(("gtk+" ,gtk+-2)
11318 ("libpng" ,libpng)
11319 ("gstreamer" ,gstreamer)))
11320 (arguments
11321 `(#:tests? #f
11322 #:phases
11323 (modify-phases %standard-phases
11324 (replace 'configure
11325 (lambda* (#:key outputs #:allow-other-keys)
11326 (make-file-writable "eboard-config")
11327 (setenv "CC" "gcc")
11328 (invoke "./configure"
11329 (string-append "--prefix=" (assoc-ref outputs "out")))
11330 #t))
11331 (add-before 'install 'make-required-directories
11332 (lambda* (#:key outputs #:allow-other-keys)
11333 (mkdir-p (string-append (assoc-ref outputs "out")
11334 "/share/eboard"))
11335 #t)))))
11336 (synopsis "Graphical user interface to play chess")
11337 (description
11338 "Eboard is a chess board interface for ICS (Internet Chess Servers)
11339and chess engines.")
11340 (home-page "https://www.bergo.eng.br/eboard/")
11341 (license license:gpl2+)))
d8cae6cf
GLV
11342
11343(define-public chessx
11344 (package
11345 (name "chessx")
5b87bacd 11346 (version "1.5.4")
d8cae6cf
GLV
11347 (source
11348 (origin
11349 (method url-fetch)
11350 (uri (string-append "mirror://sourceforge/chessx/chessx/"
11351 version "/chessx-" version ".tgz"))
11352 (sha256
5b87bacd 11353 (base32 "1a3541vl5hp6jllgx998w9kjh9kp3wrl80yfwkxmq1bc5bzsrnz2"))))
d8cae6cf
GLV
11354 (build-system qt-build-system)
11355 (native-inputs
11356 `(("qttools" ,qttools)))
11357 (inputs
11358 `(("qtbase" ,qtbase)
11359 ("qtmultimedia" ,qtmultimedia)
5b87bacd 11360 ("qtspeech" ,qtspeech)
d8cae6cf
GLV
11361 ("qtsvg" ,qtsvg)
11362 ("zlib" ,zlib)))
11363 (arguments
11364 `(#:tests? #f
11365 #:phases
11366 (modify-phases %standard-phases
11367 (add-after 'unpack 'fix-paths
11368 (lambda* (#:key inputs #:allow-other-keys)
11369 (substitute* "chessx.pro"
11370 (("\\$\\$\\[QT_INSTALL_BINS\\]/lrelease")
5b87bacd
MR
11371 (string-append (assoc-ref inputs "qttools") "/bin/lrelease"))
11372 ;; Fix missing translations.
11373 (("TRANSLATIONS = i18n/chessx_de.ts")
11374 "TRANSLATIONS = i18n/chessx_de.ts i18n/chessx_da.ts \\
11375i18n/chessx_fr.ts i18n/chessx_it.ts i18n/chessx_cz.ts i18n/chessx_ru.ts \\
11376i18n/chessx_es.ts"))
d8cae6cf
GLV
11377 #t))
11378 (add-after 'fix-paths 'make-qt-deterministic
11379 (lambda _
11380 (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1")
11381 #t))
11382 (replace 'configure
11383 (lambda _
11384 (invoke "qmake")
11385 #t))
11386 (replace 'install
11387 (lambda* (#:key outputs #:allow-other-keys)
11388 (let ((out (assoc-ref outputs "out")))
11389 (install-file "release/chessx" (string-append out "/bin"))
11390 (install-file "unix/chessx.desktop"
11391 (string-append out "/share/applications")))
11392 #t)))))
11393 (synopsis "Chess game database")
11394 (description
11395 "ChessX is a chess database. With ChessX you can operate on your
11396collection of chess games in many ways: browse, edit, add, organize, analyze,
11397etc. You can also play games on FICS or against an engine.")
11398 (home-page "http://chessx.sourceforge.net/")
11399 (license license:gpl2+)))
814091ef
GLV
11400
11401(define-public stockfish
11402 (package
11403 (name "stockfish")
11404 (version "11")
11405 (source
11406 (origin
11407 (method git-fetch)
11408 (uri (git-reference
b0e7b699 11409 (url "https://github.com/official-stockfish/Stockfish")
814091ef
GLV
11410 (commit (string-append "sf_" version))))
11411 (file-name (git-file-name name version))
11412 (sha256
11413 (base32 "12mppipinymj8s1ipq9a7is453vncly49c32ym9wvyklsgyxfzlk"))))
11414 (build-system gnu-build-system)
11415 (arguments
11416 `(#:tests? #f
11417 #:make-flags (list "-C" "src"
11418 "build"
11419 (string-append "PREFIX="
11420 (assoc-ref %outputs "out"))
11421 (string-append "ARCH="
11422 ,(match (%current-system)
11423 ("x86_64-linux" "x86-64")
11424 ("i686-linux" "x86-32")
11425 ("aarch64-linux" "general-64")
11426 ("armhf-linux" "armv7")
11427 ("mips64el-linux" "general-64")
11428 (_ "general-32"))))
11429 #:phases (modify-phases %standard-phases
11430 (delete 'configure))))
11431 (synopsis "Strong chess engine")
11432 (description
11433 "Stockfish is a very strong chess engines. It is much stronger than the
11434best human chess grandmasters. It can be used with UCI-compatible GUIs like
11435ChessX.")
11436 (home-page "https://stockfishchess.org/")
11437 (license license:gpl3+)))
79a48038
AEFG
11438
11439(define-public barrage
11440 (package
11441 (name "barrage")
11442 (version "1.0.5")
11443 (source
11444 (origin
11445 (method url-fetch)
11446 (uri (string-append "mirror://sourceforge/lgames/barrage/"
11447 "barrage-" version ".tar.gz"))
11448 (sha256
11449 (base32 "0139wxyrir10cbkvkjn548xgmp84wax8mfwk80yxbxlcdamrg257"))))
11450 (build-system gnu-build-system)
11451 (inputs
11452 `(("hicolor-icon-theme" ,hicolor-icon-theme)
11453 ("sdl" ,sdl)
11454 ("sdl-mixer" ,sdl-mixer)))
11455 (arguments
11456 `(#:configure-flags
11457 (list
11458 (string-append "CFLAGS="
11459 "-I" (assoc-ref %build-inputs "sdl-mixer")
11460 "/include/SDL"))))
11461 (home-page "http://lgames.sourceforge.net/Barrage/")
11462 (synopsis "Violent point-and-click shooting game with nice effects")
11463 (description
11464 "Barrage is a rather destructive action game that puts you on a shooting
11465range with the objective to hit as many dummy targets as possible within
114663 minutes. You control a gun that may either fire small or large grenades at
11467soldiers, jeeps and tanks. The gameplay is simple but it is not that easy to
11468get high scores.")
11469 (license license:gpl2+)))
db47adb0 11470
19c0280f
NG
11471(define-public burgerspace
11472 (package
11473 (name "burgerspace")
11474 (version "1.9.3")
11475 (source
11476 (origin
11477 (method url-fetch)
11478 (uri (string-append "http://perso.b2b2c.ca/~sarrazip/dev/"
11479 "burgerspace-" version ".tar.gz"))
11480 (sha256
11481 (base32 "1005a04rbn4lzjrpfg0m394k2mfaji63fm2qhdqdsxila8a6kjbv"))))
11482 (build-system gnu-build-system)
11483 (native-inputs
11484 `(("pkg-config" ,pkg-config)))
11485 (inputs
11486 `(("flatzebra" ,flatzebra)))
11487 (home-page "http://perso.b2b2c.ca/~sarrazip/dev/burgerspace.html")
11488 (synopsis "Avoid evil foodstuffs and make burgers")
11489 (description
11490 "This is a clone of the classic game BurgerTime. In it, you play
11491the part of a chef who must create burgers by stepping repeatedly on
11492the ingredients until they fall into place. And to make things more
11493complicated, you also must avoid evil animate food items while
11494performing this task, with nothing but your trusty pepper shaker to
11495protect you.")
11496 (license license:gpl2+)))
11497
db47adb0
NM
11498(define-public 7kaa
11499 (package
11500 (name "7kaa")
6052fd73 11501 (version "2.15.4p1")
db47adb0
NM
11502 (source
11503 (origin
11504 (method url-fetch)
11505 (uri (string-append "https://github.com/the3dfxdude/7kaa/"
11506 "releases/download/v" version "/"
11507 "7kaa-" version ".tar.xz"))
11508 (sha256
6052fd73 11509 (base32 "1y7v0jhp3apb619p7asikqr1dnwb2yxbh40wbx1ppmr5f03mq9ph"))))
db47adb0
NM
11510 (build-system gnu-build-system)
11511 (native-inputs
11512 `(("gettext" ,gettext-minimal)
11513 ("pkg-config" ,pkg-config)))
11514 (inputs
11515 `(("curl" ,curl)
11516 ("enet" ,enet)
11517 ("openal" ,openal)
11518 ("sdl2" ,sdl2)))
11519 (home-page "https://7kfans.com/")
11520 (synopsis "Seven Kingdoms Ancient Adversaries: real-time strategy game")
11521 (description
11522 "Seven Kingdoms, designed by Trevor Chan, brings a blend of Real-Time
11523Strategy with the addition of trade, diplomacy, and espionage. The game
11524enables players to compete against up to six other kingdoms allowing players
11525to conquer opponents by defeating them in war (with troops or machines),
11526capturing their buildings with spies, or offering opponents money for their
11527kingdom.")
11528 (license license:gpl2+)))
3de5b404
VS
11529
11530(define-public neverball
11531 ;; Git version is 6-years younger than latest release.
11532 (let ((commit "760a25d32a5fb0661b99426d4ddcb9ac9f3d1644")
11533 (revision "1"))
11534 (package
11535 (name "neverball")
11536 (version (git-version "1.6.0" revision commit))
11537 (source
11538 (origin
11539 (method git-fetch)
11540 (uri (git-reference
b0e7b699 11541 (url "https://github.com/Neverball/neverball")
3de5b404
VS
11542 (commit commit)))
11543 (sha256
11544 (base32
11545 "0bwh67df3lyf33bv710y25l3frjdd34j9b7gsjadwxviz6r1vpj5"))
11546 (file-name (git-file-name name version))
11547 (modules '((guix build utils)))
11548 (snippet
11549 '(begin
11550 ;; Octocat seems to be non-free. Oddly, Debian doesn't strip it.
11551 (delete-file-recursively "data/ball/octocat")
11552 #t))))
11553 (build-system copy-build-system)
11554 (arguments
11555 `(#:install-plan
11556 '(("neverball" "bin/")
11557 ("neverputt" "bin/")
11558 ("mapc" "bin/")
11559 ("data" "share/games/neverball/")
11560 ("locale" "share/")
11561 ("dist/" "share/games/neverball" #:include ("neverball_replay.png"
11562 "neverlogos.svg"
11563 "svg readme.txt"))
11564 ("dist/" "share/applications" #:include ("neverball.desktop"
11565 "neverputt.desktop"))
11566 ("dist/neverball_16.png"
11567 "/share/icons/hicolor/16x16/apps/neverball.png")
11568 ("dist/neverball_24.png"
11569 "/share/icons/hicolor/24x24/apps/neverball.png")
11570 ("dist/neverball_32.png"
11571 "/share/icons/hicolor/32x32/apps/neverball.png")
11572 ("dist/neverball_48.png"
11573 "/share/icons/hicolor/48x48/apps/neverball.png")
11574 ("dist/neverball_64.png"
11575 "/share/icons/hicolor/64x64/apps/neverball.png")
11576 ("dist/neverball_128.png"
11577 "/share/icons/hicolor/128x128/apps/neverball.png")
11578 ("dist/neverball_256.png"
11579 "/share/icons/hicolor/256x256/apps/neverball.png")
11580 ("dist/neverball_512.png"
11581 "/share/icons/hicolor/512x512/apps/neverball.png")
11582 ("dist/neverputt_16.png"
11583 "/share/icons/hicolor/16x16/apps/neverputt.png")
11584 ("dist/neverputt_24.png"
11585 "/share/icons/hicolor/24x24/apps/neverputt.png")
11586 ("dist/neverputt_32.png"
11587 "/share/icons/hicolor/32x32/apps/neverputt.png")
11588 ("dist/neverputt_48.png"
11589 "/share/icons/hicolor/48x48/apps/neverputt.png")
11590 ("dist/neverputt_64.png"
11591 "/share/icons/hicolor/64x64/apps/neverputt.png")
11592 ("dist/neverputt_128.png"
11593 "/share/icons/hicolor/128x128/apps/neverputt.png")
11594 ("dist/neverputt_256.png"
11595 "/share/icons/hicolor/256x256/apps/neverputt.png")
11596 ("dist/neverputt_512.png"
11597 "/share/icons/hicolor/512x512/apps/neverputt.png")
11598 ("dist/" "share/man/man1" #:include ("mapc.1"))
11599 ("dist/" "share/man/man6" #:include ("neverball.6" "neverputt.6"))
11600 ("doc/" "share/doc/neverball")
11601 ("README.md" "share/doc/neverball/"))
11602 #:phases
11603 (modify-phases %standard-phases
11604 (add-before 'install 'build
11605 (lambda* (#:key inputs outputs #:allow-other-keys)
11606 (let* ((out (assoc-ref outputs "out"))
11607 (sdl (assoc-ref inputs "sdl")))
11608 (invoke "make" "-j" (number->string (parallel-job-count))
11609 "--environment-overrides"
11610 "CC=gcc" "BUILD=release"
11611 (string-append "DATADIR="
11612 out
11613 "/share/games/neverball/data")
11614 (string-append "LOCALEDIR=" out "/share/locale")
11615 (string-append "SDL_CPPFLAGS=-I"
11616 sdl
11617 "/include/SDL2/")))
11618 #t))
11619 (add-after 'install 'fix-some-broken-fonts
11620 (lambda* (#:key outputs #:allow-other-keys)
11621 (let* ((out (assoc-ref outputs "out")))
11622 (wrap-program (string-append out "/bin/neverball")
11623 `("LANG" = ("en_US.utf8")))
11624 (wrap-program (string-append out "/bin/neverputt")
11625 `("LANG" = ("en_US.utf8"))))
11626 #t)))))
11627 (native-inputs
11628 `(("gettext" ,gettext-minimal))) ;for msgfmt
11629 (inputs
27783023 11630 `(("libjpeg" ,libjpeg-turbo)
3de5b404
VS
11631 ("libpng" ,libpng)
11632 ("libvorbis" ,libvorbis)
11633 ("physfs" ,physfs)
11634 ("sdl" ,(sdl-union (list sdl2 sdl2-ttf)))))
11635 (home-page "https://neverball.org/")
11636 (synopsis "3D floor-tilting game")
11637 (description
11638 "In the grand tradition of Marble Madness and Super Monkey Ball,
11639Neverball has you guide a rolling ball through dangerous territory. Balance
11640on narrow bridges, navigate mazes, ride moving platforms, and dodge pushers
11641and shovers to get to the goal. Race against the clock to collect coins to
11642earn extra balls. Also included is Neverputt, which is a 3D miniature golf
11643game.") ;thanks to Debian for description
11644 (license license:gpl2+))))
c02af11d
GLV
11645
11646(define-public pokerth
11647 (package
11648 (name "pokerth")
11649 (version "1.1.2")
11650 (source
11651 (origin
11652 (method url-fetch)
11653 (uri (string-append "mirror://sourceforge/pokerth/pokerth/"
11654 version "/pokerth-" version ".tar.gz"))
11655 (sha256
11656 (base32 "0yi9bj3k8yc1gkwmaf14zbbvvn13n54n1dli8k6j1pkph3p3vjq2"))
11657 (modules '((guix build utils)))
11658 (snippet
11659 '(begin
11660 ;; Remove bundled websocketpp.
11661 (delete-file-recursively "src/third_party/websocketpp")
11662 (substitute* "pokerth_lib.pro"
11663 (("src/third_party/websocketpp")
11664 ""))
11665 #t))))
11666 (build-system qt-build-system)
11667 (inputs
11668 `(("boost" ,boost)
11669 ("curl" ,curl)
11670 ("gsasl" ,gsasl)
11671 ("libgcrypt" ,libgcrypt)
11672 ("libircclient" ,libircclient)
50dee556 11673 ("protobuf" ,protobuf-2) ; remove package when no longer needed
c02af11d
GLV
11674 ("qtbase" ,qtbase)
11675 ("sdl" ,(sdl-union (list sdl sdl-mixer)))
11676 ("sqlite" ,sqlite)
11677 ("tinyxml" ,tinyxml)
11678 ("websocketpp" ,websocketpp)
11679 ("zlib" ,zlib)))
11680 (arguments
11681 `(#:tests? #f ; No test suite
11682 #:phases
11683 (modify-phases %standard-phases
11684 (add-after 'unpack 'fix-paths
11685 (lambda* (#:key inputs #:allow-other-keys)
11686 (substitute* (find-files "." "\\.pro$")
11687 (("/opt/gsasl")
11688 (assoc-ref inputs "gsasl"))
11689 (("\\$\\$\\{PREFIX\\}/include/libircclient")
11690 (string-append (assoc-ref inputs "libircclient")
11691 "/include/libircclient"))
11692 (("LIB_DIRS =")
11693 (string-append "LIB_DIRS = "
11694 (assoc-ref inputs "boost") "/lib")))
11695 #t))
11696 (add-after 'unpack 'fix-build
11697 (lambda _
11698 ;; Fixes for Boost versions >= 1.66.
11699 (substitute* '("src/net/common/clientthread.cpp"
11700 "src/net/serveraccepthelper.h")
11701 (("boost::asio::socket_base::non_blocking_io command\\(true\\);")
11702 "")
11703 (("newSock->io_control\\(command\\);")
11704 "newSock->non_blocking(true);")
11705 (("acceptedSocket->io_control\\(command\\);")
11706 "acceptedSocket->non_blocking(true);"))
11707 #t))
11708 (replace 'configure
11709 (lambda* (#:key outputs #:allow-other-keys)
11710 (invoke "qmake" "pokerth.pro" "CONFIG+=client"
11711 (string-append "PREFIX=" (assoc-ref outputs "out"))))))))
11712 (home-page "https://www.pokerth.net")
11713 (synopsis "Texas holdem poker game")
11714 (description
11715 "With PokerTH you can play the Texas holdem poker game, either against
11716computer opponents or against real players online.")
11717 (license license:agpl3+)))
fb38560c
TH
11718
11719(define-public azimuth
11720 (package
11721 (name "azimuth")
11722 ;; Not marked as latest release, but it fixes a compiling issue
11723 ;; and adds the install target.
11724 (version "1.0.3")
11725 (source
11726 (origin
11727 (method git-fetch)
11728 (uri (git-reference
11729 (url "https://github.com/mdsteele/azimuth")
11730 (commit (string-append "v" version))))
11731 (file-name (git-file-name name version))
11732 (sha256
11733 (base32
11734 "1znfvpmqiixd977jv748glk5zc4cmhw5813zp81waj07r9b0828r"))))
11735 (build-system gnu-build-system)
11736 (arguments
11737 `(#:test-target "test"
11738 #:phases
11739 (modify-phases %standard-phases
11740 (delete 'configure) ; no configure script
11741 ;; Build release version instead of debug version.
11742 (add-after 'unpack 'set-release
11743 (lambda _
11744 (setenv "BUILDTYPE" "release") #t))
11745 (add-after 'unpack 'fix-install ; set install directory
11746 (lambda* (#:key outputs #:allow-other-keys)
11747 (substitute* "Makefile" (("/usr") (assoc-ref outputs "out"))) #t)))))
11748 (inputs `(("sdl" ,sdl)))
11749 (home-page "https://mdsteele.games/azimuth/")
11750 (synopsis "Metroidvania game with vector graphics")
11751 (description
11752 "Pilot your ship inside a planet to find and rescue the colonists trapped
11753inside the Zenith Colony.")
11754 (license license:gpl3+)))
062448f3
OP
11755
11756(define-public paperview
11757 (let ((commit "9f8538eb6734c76877b878b8f1e52587f2ae19e6")
11758 (revision "1"))
11759 (package
11760 (name "paperview")
11761 (version (git-version "0.0.1" revision commit)) ;no upstream release
11762 (source (origin
11763 (method git-fetch)
11764 (uri (git-reference
11765 (url "https://github.com/glouw/paperview")
11766 (commit commit)))
11767 (file-name (git-file-name name version))
11768 (sha256
11769 (base32
11770 "09sb9sg44fvkgfdyycrm1ndpx7cnkrglxhci41y8f3gpagnvi7jk"))))
11771 (build-system gnu-build-system)
11772 (inputs
11773 `(("sdl2" ,sdl2)))
11774 (arguments
11775 '(#:tests? #f ;no tests
11776 #:make-flags
11777 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
11778 #:phases
11779 (modify-phases %standard-phases
11780 (delete 'configure))))
11781 (home-page "https://github.com/glouw/paperview/")
11782 (synopsis "High performance X11 animated wallpaper setter")
11783 (description "High performance animated desktop background setter for
11784X11 that won't set your CPU on fire, drain your laptop battery, or lower video
11785game FPS.")
11786 (license license:unlicense))))