gnu: ruby-pandoc-ruby: Use pandoc instead of ghc-pandoc.
[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>
f98ea632 20;;; Copyright © 2016, 2017, 2018, 2019, 2020 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")
706e7930 388 (version "0.2.9.0.1")
a70d06b5
RJ
389 (source (origin
390 (method url-fetch)
c0c09950 391 (uri (string-append "mirror://sourceforge/armagetronad/stable/"
706e7930 392 version "/armagetronad-" version ".tbz"))
a70d06b5
RJ
393 (sha256
394 (base32
706e7930 395 "19rfhlg4gp0r7k1j8v4iw20325ciy156nmzax4xikmw22c6nmxcz"))))
a70d06b5 396 (build-system gnu-build-system)
706e7930
KK
397 (native-inputs
398 `(("pkg-config" ,pkg-config)))
a70d06b5
RJ
399 (inputs
400 `(("libxml2" ,libxml2)
401 ("sdl" ,sdl)
402 ("sdl-image" ,sdl-image)
403 ("freeglut" ,freeglut)
404 ("libpng" ,libpng)
405 ("libjpeg-turbo" ,libjpeg-turbo)))
406 (home-page "http://www.armagetronad.org")
407 (synopsis "Tron clone in 3D")
df42e0f9
PN
408 (description "Armagetron Advanced is a multiplayer game in 3d that
409attempts to emulate and expand on the lightcycle sequence from the movie Tron.
410It's an old school arcade game slung into the 21st century. Highlights
411include a customizable playing arena, HUD, unique graphics, and AI bots. For
412the more advanced player there are new game modes and a wide variety of
413physics settings to tweak as well.")
a70d06b5
RJ
414 (license license:gpl2+)))
415
393190ce
NG
416(define-public astromenace
417 (package
418 (name "astromenace")
419 (version "1.4.1")
420 (source
421 (origin
422 (method git-fetch)
423 (uri (git-reference
b0e7b699 424 (url "https://github.com/viewizard/astromenace")
393190ce
NG
425 (commit (string-append "v" version))))
426 (file-name (git-file-name name version))
427 (sha256
428 (base32 "1ad6l887jxqv8xspwc2rvy8ym9sdlmkqdqhsh0pi076kjarxsyws"))))
429 (build-system cmake-build-system)
430 (arguments
431 `(#:tests? #f ;no test
432 #:configure-flags '("-DDATADIR=share/astromenace")
433 #:phases
434 (modify-phases %standard-phases
435 (replace 'install
436 ;; Upstream provides no install phase.
437 (lambda* (#:key inputs outputs #:allow-other-keys)
438 (let* ((out (assoc-ref outputs "out"))
439 (bin (string-append out "/bin"))
440 (share (string-append out "/share"))
441 (apps (string-append share "/applications"))
442 (data (string-append share "/astromenace"))
443 (icons (string-append share "/icons/hicolor/64x64/apps")))
444 (install-file "astromenace" bin)
445 (install-file "gamedata.vfs" data)
446 (let ((source (assoc-ref inputs "source")))
447 (with-directory-excursion (string-append source "/share")
448 (install-file "astromenace.desktop" apps)
449 (mkdir-p icons)
450 (copy-file "astromenace_64.png"
451 (string-append icons "/astromenace.png")))))
452 #t)))))
453 (inputs
454 `(("freealut" ,freealut)
455 ("freetype" ,freetype)
456 ("glu" ,glu)
457 ("libogg" ,libogg)
458 ("libvorbis" ,libvorbis)
459 ("openal" ,openal)
460 ("sdl2" ,sdl2)))
461 (home-page "https://www.viewizard.com/")
462 (synopsis "3D space shooter with spaceship upgrade possibilities")
463 (description
464 "Space is a vast area, an unbounded territory where it seems there is
465a room for everybody, but reversal of fortune put things differently. The
466hordes of hostile creatures crawled out from the dark corners of the universe,
467craving to conquer your homeland. Their force is compelling, their legions
468are interminable. However, humans didn't give up without a final showdown and
469put their best pilot to fight back. These malicious invaders chose the wrong
470galaxy to conquer and you are to prove it! Go ahead and make alien aggressors
471regret their insolence.")
472 ;; Game is released under GPL3+ terms. Artwork is subject to CC
473 ;; BY-SA 4.0, and fonts to OFL1.1.
474 (license (list license:gpl3+ license:cc-by-sa4.0 license:silofl1.1))))
475
fc473814
TGR
476(define-public bastet
477 (package
478 (name "bastet")
479 (version "0.43.2")
480 (source
481 (origin
482 (method git-fetch)
483 (uri (git-reference
b0e7b699 484 (url "https://github.com/fph/bastet")
fc473814
TGR
485 (commit version)))
486 (file-name (git-file-name name version))
487 (sha256
488 (base32 "09kamxapm9jw9przpsgjfg33n9k94bccv65w95dakj0br33a75wn"))
489 (patches
490 (search-patches "bastet-change-source-of-unordered_set.patch"))))
491 (build-system gnu-build-system)
492 (arguments
493 `(#:make-flags
494 (list (string-append "CXXFLAGS=-I"
495 (assoc-ref %build-inputs "boost") "/include"))
496 #:phases
497 (modify-phases %standard-phases
498 (delete 'configure) ; no configure script
499 (replace 'check
500 ;; The 'Test' target builds the tests, but doesn't actually run them.
501 (lambda* (#:key make-flags #:allow-other-keys)
502 (apply invoke "make" "Test" make-flags)
503 (setenv "HOME" ".")
504 (invoke "./Test")))
505 (replace 'install
506 (lambda* (#:key outputs #:allow-other-keys)
507 (let* ((out (assoc-ref outputs "out"))
508 (share (string-append out "/share"))
509 (hicolor (string-append share "/icons/hicolor")))
510 (install-file "bastet"
511 (string-append out "/bin"))
512
513 (install-file "bastet.desktop"
514 (string-append share "/applications"))
515 (install-file "bastet.svg"
516 (string-append hicolor "/scalable/apps"))
517
518 (install-file "bastet.appdata.xml"
519 (string-append share "/appdata"))
520
521 (install-file "bastet.6"
522 (string-append out "/share/man/man6"))
523 #t))))))
524 (native-inputs
525 `(("hicolor-icon-theme" ,hicolor-icon-theme)))
526 (inputs
527 `(("boost" ,boost)
528 ("ncurses" ,ncurses)))
16b84f54 529 (home-page "https://fph.altervista.org/prog/bastet.html")
fc473814
TGR
530 (synopsis "Antagonistic Tetris-style falling brick game for text terminals")
531 (description
532 "Bastet (short for Bastard Tetris) is a simple ncurses-based falling brick
533game. Unlike normal Tetris, Bastet does not choose the next brick at random.
534Instead, it uses a special algorithm to choose the worst brick possible.
535
536Playing bastet can be a painful experience, especially if you usually make
537canyons and wait for the long I-shaped block to clear four rows at a time.")
538 (license license:gpl3+)))
539
dcf9a7dc
AEFG
540(define-public blobwars
541 (package
542 (name "blobwars")
543 (version "2.00")
544 (source
545 (origin
546 (method url-fetch)
547 (uri (string-append "mirror://sourceforge/blobwars/"
548 "blobwars-" version ".tar.gz"))
549 (sha256
550 (base32 "16aagvkx6azf75gm5kaa94bh5npydvhqp3fvdqyfsanzdjgjf1n4"))))
551 (build-system gnu-build-system)
552 (arguments
553 `(#:tests? #f ;no test
554 #:make-flags
555 (let ((out (assoc-ref %outputs "out")))
556 (list (string-append "PREFIX=" out)
557 (string-append "BINDIR=" out "/bin/")
558 "USEPAK=1"
559 "RELEASE=1"))
560 #:phases
561 (modify-phases %standard-phases
562 (add-after 'unpack 'werror-begone
563 (lambda _
564 (substitute* "Makefile" (("-Werror") ""))
565 #t))
566 (delete 'configure)))) ;no configure script
567 (native-inputs
568 `(("gettext" ,gettext-minimal)
569 ("pkg-config" ,pkg-config)))
570 (inputs
571 `(("hicolor-icon-theme" ,hicolor-icon-theme)
572 ("sdl" ,(sdl-union (list sdl2
573 sdl2-image
574 sdl2-mixer
575 sdl2-ttf
576 sdl2-net)))))
577 (home-page "https://sourceforge.net/projects/blobwars/")
578 (synopsis "Platform action game featuring a blob with a lot of weapons")
579 (description "Blobwars: Metal Blob Solid is a 2D platform game, the first
580in the Blobwars series. You take on the role of a fearless Blob agent. Your
581mission is to infiltrate various enemy bases and rescue as many MIAs as
582possible, while battling many vicious aliens.")
583 (license (list license:gpl2 ; For code and graphics
584 license:cc0 ; Music and sounds have specific licenses
585 license:cc-by3.0 ; see /doc/readme
586 license:cc-by-sa3.0
587 license:lgpl2.1+
588 license:bsd-2))))
589
db23a548
NG
590(define-public bzflag
591 (package
592 (name "bzflag")
593 (version "2.4.20")
594 (source
595 (origin
596 (method url-fetch)
597 (uri (string-append "https://download.bzflag.org/bzflag/source/"
598 version "/bzflag-" version ".tar.bz2"))
599 (sha256
600 (base32 "16brxqmfiyz4j4lb8ihzjcbwqmpsms6vm3ijbp34lnw0blbwdjb2"))))
601 (build-system gnu-build-system)
602 (arguments
603 `(#:phases
604 (modify-phases %standard-phases
605 (add-after 'install 'install-desktop-file-and-icons
606 (lambda* (#:key outputs #:allow-other-keys)
607 (let* ((share (string-append (assoc-ref outputs "out") "/share"))
608 (data (string-append share "/bzflag"))
609 (hicolor (string-append share "/icons/hicolor"))
610 (applications (string-append share "/applications")))
611 ;; Move desktop file.
612 (install-file (string-append data "/bzflag.desktop")
613 applications)
614 ;; Install icons.
615 (for-each (lambda (size)
616 (let* ((dim (string-append size "x" size))
617 (dir (string-append hicolor "/" dim "/apps")))
618 (mkdir-p dir)
619 (copy-file
620 (string-append data "/bzflag-" dim ".png")
621 (string-append dir "/bzflag.png"))))
622 '("48" "256")))
623 #t)))))
624 (native-inputs
625 `(("pkg-config" ,pkg-config)))
626 (inputs
627 `(("c-ares" ,c-ares)
628 ("curl" ,curl)
629 ("glew" ,glew)
630 ("glu" ,glu)
631 ("sdl2" ,sdl2)
632 ("zlib" ,zlib)))
633 (home-page "https://www.bzflag.org/")
634 (synopsis "3D first person tank battle game")
635 (description
636 "BZFlag is a 3D multi-player multiplatform tank battle game that
637allows users to play against each other in a network environment.
638There are five teams: red, green, blue, purple and rogue (rogue tanks
639are black). Destroying a player on another team scores a win, while
640being destroyed or destroying a teammate scores a loss. Rogues have
641no teammates (not even other rogues), so they cannot shoot teammates
642and they do not have a team score.
643
644There are two main styles of play: capture-the-flag and free-for-all.
645In capture-the-flag, each team (except rogues) has a team base and
646each team with at least one player has a team flag. The object is to
647capture an enemy team's flag by bringing it to your team's base. This
648destroys every player on the captured team, subtracts one from that
649team's score, and adds one to your team's score. In free-for-all,
650there are no team flags or team bases. The object is simply to get as
651high a score as possible.")
652 ;; The game is dual-licensed.
653 (license (list license:lgpl2.1 license:mpl2.0))))
654
649220ad 655(define-public cataclysm-dda
b8f5b436
NG
656 (package
657 (name "cataclysm-dda")
a422d9f3 658 (version "0.E-2")
b8f5b436
NG
659 (source
660 (origin
661 (method git-fetch)
662 (uri (git-reference
b0e7b699 663 (url "https://github.com/CleverRaven/Cataclysm-DDA")
b8f5b436
NG
664 (commit version)))
665 (sha256
a422d9f3 666 (base32 "15l6w6lxays7qmsv0ci2ry53asb9an9dh7l7fc13256k085qcg68"))
b8f5b436
NG
667 (file-name (git-file-name name version))))
668 (build-system gnu-build-system)
669 (arguments
670 '(#:make-flags
671 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
672 "USE_HOME_DIR=1" "DYNAMIC_LINKING=1" "RELEASE=1"
673 "LOCALIZE=1" "LANGUAGES=all")
674 #:phases
675 (modify-phases %standard-phases
676 (delete 'configure)
677 (add-after 'build 'build-tiles
678 (lambda* (#:key make-flags outputs #:allow-other-keys)
679 ;; Change prefix directory and enable tile graphics and sound.
680 (apply invoke "make" "TILES=1" "SOUND=1"
681 (string-append "PREFIX="
682 (assoc-ref outputs "tiles"))
683 (cdr make-flags))))
684 (add-after 'install 'install-tiles
685 (lambda* (#:key make-flags outputs #:allow-other-keys)
686 (apply invoke "make" "install" "TILES=1" "SOUND=1"
687 (string-append "PREFIX="
688 (assoc-ref outputs "tiles"))
689 (cdr make-flags)))))
690 ;; TODO: Add libtap++ from https://github.com/cbab/libtappp as a native
691 ;; input in order to support tests.
692 #:tests? #f))
693 (outputs '("out"
694 "tiles")) ;for tile graphics and sound support
695 (native-inputs
696 `(("gettext" ,gettext-minimal)
697 ("pkg-config" ,pkg-config)))
698 (inputs
699 `(("freetype" ,freetype)
700 ("libogg" ,libogg)
701 ("libvorbis" ,libvorbis)
702 ("ncurses" ,ncurses)
703 ("sdl2" ,sdl2)
704 ("sdl2-image" ,sdl2-image)
705 ("sdl2-ttf" ,sdl2-ttf)
706 ("sdl2-mixer" ,sdl2-mixer)))
707 (home-page "https://cataclysmdda.org/")
708 (synopsis "Survival horror roguelike video game")
709 (description
710 "Cataclysm: Dark Days Ahead (or \"DDA\" for short) is a roguelike set
973bd8a6
PN
711in a post-apocalyptic world. Struggle to survive in a harsh, persistent,
712procedurally generated world. Scavenge the remnants of a dead civilization
713for food, equipment, or, if you are lucky, a vehicle with a full tank of gas
714to get you out of Dodge. Fight to defeat or escape from a wide variety of
715powerful monstrosities, from zombies to giant insects to killer robots and
716things far stranger and deadlier, and against the others like yourself, that
717want what you have.")
b8f5b436 718 (license license:cc-by-sa3.0)))
20214f71 719
57b6caef
TL
720(define-public corsix-th
721 (package
722 (name "corsix-th")
a7d74db9 723 (version "0.64")
57b6caef
TL
724 (source
725 (origin
726 (method git-fetch)
727 (uri (git-reference
b0e7b699 728 (url "https://github.com/CorsixTH/CorsixTH")
57b6caef
TL
729 (commit (string-append "v" version))))
730 (file-name (git-file-name name version))
731 (sha256
a7d74db9 732 (base32 "0chh9cv2kdc39sr0x8hclcyzd8dz2y6grgagqzkvr7j570wa5cqh"))))
57b6caef
TL
733 (build-system cmake-build-system)
734 (arguments
735 `(#:phases
736 (modify-phases %standard-phases
737 (add-after 'install 'wrap-binary
738 (lambda _
739 ;; Set Lua module paths and default MIDI soundfont on startup.
740 (let* ((out (assoc-ref %outputs "out"))
741 (fluid (assoc-ref %build-inputs "fluid-3"))
742 (lua-version ,(version-major+minor (package-version lua)))
743 (lua-cpath
744 (map (lambda (lib)
745 (string-append
746 (assoc-ref %build-inputs (string-append "lua-" lib))
747 "/lib/lua/" lua-version "/?.so"))
748 '("filesystem" "lpeg"))))
749 (wrap-program (string-append out "/bin/corsix-th")
750 `("LUA_CPATH" ";" = ,lua-cpath)
751 `("SDL_SOUNDFONTS" ":" suffix
752 (,(string-append fluid "/share/soundfonts/FluidR3Mono_GM.sf3")))))
753 #t)))
754 #:tests? #f)) ; TODO need busted package to run tests
755 ;; Omit Lua-Socket dependency to disable automatic updates.
756 (inputs
757 `(("ffmpeg" ,ffmpeg)
758 ("fluid-3" ,fluid-3)
759 ("freetype" ,freetype)
760 ("lua" ,lua)
761 ("lua-filesystem" ,lua-filesystem)
762 ("lua-lpeg" ,lua-lpeg)
763 ("sdl2" ,sdl2)
764 ("sdl2-mixer" ,sdl2-mixer)))
765 (home-page "https://corsixth.com")
766 (synopsis "Implementation of the @i{Theme Hospital} game engine")
767 (description
768 "This package provides a reimplementation of the 1997 Bullfrog business
769simulation game @i{Theme Hospital}. As well as faithfully recreating the
770original engine, CorsixTH adds support for high resolutions, custom levels and
771more. This package does @emph{not} provide the game assets.")
772 (license (list
773 license:expat ; main license
774 license:bsd-3)))) ; CorsixTH/Src/random.c
775
620b0468
RW
776(define-public cowsay
777 (package
778 (name "cowsay")
46ba5337 779 (version "3.04")
620b0468 780 (source (origin
7afb97fd
EF
781 (method git-fetch)
782 (uri (git-reference
b0e7b699 783 (url "https://github.com/tnalpgge/rank-amateur-cowsay")
7afb97fd
EF
784 (commit (string-append name "-" version))))
785 (file-name (git-file-name name version))
620b0468
RW
786 (sha256
787 (base32
7afb97fd 788 "06455kq37hvq1xb7adyiwrx0djs50arsxvjgixyxks16lm1rlc7n"))))
620b0468
RW
789 (build-system gnu-build-system)
790 (arguments
791 `(#:phases
792 (modify-phases %standard-phases
6c0c1752
TGR
793 (delete 'configure) ; no configure script
794 (delete 'build) ; nothing to be built
795 (replace 'install
620b0468 796 (lambda* (#:key outputs #:allow-other-keys)
482bdf25
RW
797 (invoke "sh" "install.sh"
798 (assoc-ref outputs "out"))))
1ee3079d
EF
799 (delete 'check)
800 (add-after 'install 'check
620b0468 801 (lambda* (#:key outputs #:allow-other-keys)
482bdf25
RW
802 (invoke (string-append (assoc-ref outputs "out")
803 "/bin/cowsay")
804 "We're done!"))))))
620b0468
RW
805 (inputs
806 `(("perl" ,perl)))
807 (home-page (string-append "https://web.archive.org/web/20071026043648/"
46ba5337 808 "http://www.nog.net:80/~tony/warez/cowsay.shtml"))
620b0468
RW
809 (synopsis "Speaking cow text filter")
810 (description "Cowsay is basically a text filter. Send some text into it,
811and you get a cow saying your text. If you think a talking cow isn't enough,
46ba5337
TGR
812cows can think too: all you have to do is run @command{cowthink}. If you're
813tired of cows, a variety of other ASCII-art messengers are available.")
620b0468
RW
814 (license license:gpl3+)))
815
4dbd704d
LP
816(define-public lolcat
817 (let ((commit "35dca3d0a381496d7195cd78f5b24aa7b62f2154")
818 (revision "0"))
819 (package
820 (name "lolcat")
821 (version (git-version "1.0" revision commit))
822 (source
823 (origin
824 (method git-fetch)
825 (uri (git-reference
b0e7b699 826 (url "https://github.com/jaseg/lolcat")
4dbd704d
LP
827 (commit commit)))
828 (sha256
829 (base32
830 "0jjbkqcc2ikjxd1xgdyv4rb0vsw218181h89f2ywg29ffs3ypd8g"))
831 (file-name (git-file-name name version))))
832 (build-system gnu-build-system)
833 (arguments
e712b998
TGR
834 `(#:tests? #f ; no check target
835 #:make-flags
836 (list ,(string-append "CC=" (cc-for-target)))
4dbd704d
LP
837 #:phases
838 (modify-phases %standard-phases
839 (delete 'bootstrap)
840 (delete 'configure)
841 (replace 'install
842 (lambda* (#:key outputs #:allow-other-keys)
843 (let* ((out (assoc-ref outputs "out"))
844 (dest (string-append out "/bin")))
845 (mkdir-p dest)
846 (install-file "lolcat" dest)
847 (install-file "censor" dest)
848 #t))))))
849 (home-page "https://github.com/jaseg/lolcat")
850 (synopsis "Rainbow coloring effect for text console display")
851 (description "@command{lolcat} concatenates files and streams like
852regular @command{cat}, but it also adds terminal escape codes between
853characters and lines resulting in a rainbow effect.")
854 (license license:wtfpl2))))
855
29a2f61e
NG
856(define-public foobillard++
857 ;; Even though this latest revision is old already, stable release is
858 ;; lagging way behind it, and has issues with textures rendering.
859 (let ((svn-revision 170))
860 (package
861 (name "foobillard++")
862 (version (string-append "3.43-r" (number->string svn-revision)))
863 (source
864 (origin
865 (method svn-fetch)
866 (uri (svn-reference
867 (url "svn://svn.code.sf.net/p/foobillardplus/code/")
868 (revision svn-revision)))
869 (file-name (git-file-name name version))
870 (sha256
871 (base32 "00b693ys5zvzjbjzzj3dqfzm5xw64gwjf9m8qv6bkmf0klbhmayk"))
872 (patches
873 (search-patches "foobillard++-pkg-config.patch"))
874 (modules '((guix build utils)))
875 (snippet
876 '(begin
877 ;; Unfortunately, the game includes background music with
878 ;; a non-commercial clause. Delete it.
879 (for-each delete-file (find-files "data/music" "\\.ogg$"))
880 #t))))
881 (build-system gnu-build-system)
882 (arguments
883 `(#:configure-flags
884 (list
885 ;; Install data in a less exotic location.
886 (string-append "--prefix=" (assoc-ref %outputs "out") "/share")
887 ;; Prevent a build error about undefined trigonometric functions.
888 "--enable-fastmath=no")
889 #:phases
890 (modify-phases %standard-phases
891 (add-after 'unpack 'fix-makefile
892 ;; Remove hard-coded directories. Also fix installation
893 ;; rule: it tries to move around non-existent files or
894 ;; files already moved.
895 (lambda* (#:key outputs #:allow-other-keys)
896 (substitute* "Makefile.am"
897 (("/usr") (assoc-ref outputs "out"))
898 (("cp .*?/foobillardplus\\.desktop.*") "")
899 (("cp .*?/foobillardplus\\.(png|xbm) \\$\\(datarootdir\\).*")
900 ""))
901 #t))
902 (add-after 'unpack 'unbundle-font
903 ;; XXX: The package ships with LinBiolinum_aSB.ttf and
904 ;; LinBiolinum_aS.ttf, which are not provided by
905 ;; `font-linuxlibertine' package. Therefore, we cannot replace
906 ;; them yet.
907 (lambda* (#:key inputs #:allow-other-keys)
908 (let ((dejavu (string-append (assoc-ref inputs "font-dejavu")
909 "/share/fonts/truetype/")))
910 (with-directory-excursion "data"
911 (for-each (lambda (f)
912 (delete-file f)
913 (symlink (string-append dejavu f) f))
914 '("DejaVuSans-Bold.ttf" "DejaVuSans.ttf"))))
915 #t))
916 (replace 'bootstrap
917 (lambda _
918 (invoke "aclocal" "--force")
919 (invoke "autoconf" "-f")
920 (invoke "autoheader" "-f")
921 (invoke "automake" "-a" "-c" "-f")))
922 (add-before 'build 'prepare-build
923 ;; Set correct environment for SDL.
924 (lambda* (#:key inputs #:allow-other-keys)
925 (setenv "CPATH"
926 (string-append (assoc-ref inputs "sdl")
927 "/include/SDL:"
928 (or (getenv "CPATH") "")))
929 #t))
930 (add-before 'build 'fix-settings-directory
931 ;; Hide foobillardplus settings directory in $HOME.
932 (lambda _
933 (substitute* "src/history.c"
934 (("/foobillardplus-data") "/.foobillardplus"))
935 #t))
936 (add-before 'install 'create-directories
937 ;; Install process does not create directories before
938 ;; trying to move file in it.
939 (lambda* (#:key outputs #:allow-other-keys)
940 (let ((out (assoc-ref outputs "out")))
941 (mkdir-p (string-append out "/share/icons"))
942 (mkdir-p (string-append out "/share/applications")))
943 #t))
944 (add-after 'install 'symlink-executable
945 ;; Symlink executable to $out/bin.
946 (lambda* (#:key outputs #:allow-other-keys)
947 (let* ((out (assoc-ref outputs "out"))
948 (bin (string-append out "/bin")))
949 (mkdir-p bin)
950 (with-directory-excursion bin
951 (symlink "../share/foobillardplus/bin/foobillardplus"
952 "foobillardplus"))
953 #t))))))
954 (native-inputs
955 `(("autoconf" ,autoconf)
956 ("automake" ,automake)
957 ("pkg-config" ,pkg-config)))
958 (inputs
959 `(("font-dejavu" ,font-dejavu)
960 ("freetype" ,freetype)
961 ("glu" ,glu)
962 ("libpng" ,libpng)
963 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-net)))))
964 (home-page "http://foobillardplus.sourceforge.net/")
965 (synopsis "3D billiard game")
966 (description "FooBillard++ is an advanced 3D OpenGL billiard game
967based on the original foobillard 3.0a sources from Florian Berger.
968You can play it with one or two players or against the computer.
969
970The game features:
971
972@itemize
973@item Wood paneled table with gold covers and gold diamonds.
974@item Reflections on balls.
975@item Zoom in and out, rotation, different angles and bird's eye view.
976@item Different game modes: 8 or 9-ball, Snooker or Carambole.
977@item Tournaments. Compete against other players.
978@item Animated cue with strength and eccentric hit adjustment.
979@item Jump shots and snipping.
980@item Realistic gameplay and billiard sounds.
981@item Red-Green stereo.
982@item And much more.
983@end itemize")
984 (license (list license:gpl2 license:silofl1.1)))))
985
0b5d078f
KK
986(define-public freedoom
987 (package
9303b09a 988 (name "freedoom")
78a3da3d 989 (version "0.12.1")
9303b09a
TGR
990 (source
991 (origin
992 (method git-fetch)
993 (uri (git-reference
b0e7b699 994 (url "https://github.com/freedoom/freedoom")
9303b09a
TGR
995 (commit (string-append "v" version))))
996 (file-name (git-file-name name version))
997 (sha256
78a3da3d 998 (base32 "1mq60lfwaaxmch7hsz8403pwafnlsmsd5z2df2j77ppwndwcrypb"))))
9303b09a
TGR
999 (build-system gnu-build-system)
1000 (arguments
1001 '(#:make-flags
1002 (list (string-append "prefix=" (assoc-ref %outputs "out")))
9303b09a
TGR
1003 #:tests? #f ; no check target
1004 #:phases
1005 (modify-phases %standard-phases
1006 (delete 'bootstrap)
1007 (replace 'configure
1008 (lambda* (#:key inputs outputs #:allow-other-keys)
78a3da3d 1009 (let* ((freedoom (assoc-ref outputs "out"))
9303b09a 1010 (wad-dir (string-append freedoom "/share/games/doom")))
9303b09a
TGR
1011 ;; Make sure that the install scripts know where to find
1012 ;; the appropriate WAD files.
1013 (substitute* "dist/freedoom"
1014 (("IWAD=freedm.wad")
1015 (string-append "IWAD=" wad-dir "/freedm.wad"))
1016 (("IWAD=freedoom1.wad")
1017 (string-append "IWAD=" wad-dir "/freedoom1.wad"))
1018 (("IWAD=freedoom2.wad")
1019 (string-append "IWAD=" wad-dir "/freedoom2.wad")))
1020 #t))))))
1021 (native-inputs
1022 `(("asciidoc" ,asciidoc)
1023 ("deutex" ,deutex)
78a3da3d
KK
1024 ("python" ,python)
1025 ("python-pillow" ,python-pillow)))
9303b09a
TGR
1026 (home-page "https://freedoom.github.io/")
1027 (synopsis "Free content game based on the Doom engine")
1028 (native-search-paths
1029 (list (search-path-specification
1030 (variable "DOOMWADDIR")
1031 (files '("share/games/doom")))
1032 (search-path-specification
1033 (variable "DOOMWADPATH")
1034 (files '("share/games/doom")))))
1035 (description
1036 "The Freedoom project aims to create a complete free content first person
0b5d078f
KK
1037shooter game. Freedoom by itself is just the raw material for a game: it must
1038be paired with a compatible game engine (such as @code{prboom-plus}) to be
1039played. Freedoom complements the Doom engine with free levels, artwork, sound
1040effects and music to make a completely free game.")
9303b09a 1041 (license license:bsd-3)))
0b5d078f 1042
18995af2
TGR
1043(define-public freedroidrpg
1044 (package
1045 (name "freedroidrpg")
1046 (version "0.16.1")
1047 (source
1048 (origin
1049 (method url-fetch)
1050 (uri (string-append "http://ftp.osuosl.org/pub/freedroid/"
1051 "freedroidRPG-" (version-major+minor version) "/"
1052 "freedroidRPG-" version ".tar.gz"))
1053 (sha256
1054 (base32 "0n4kn38ncmcy3lrxmq8fjry6c1z50z4q1zcqfig0j4jb0dsz2va2"))))
1055 (build-system gnu-build-system)
1056 (arguments
1057 `(#:configure-flags
1058 (list
1059 (string-append "CFLAGS="
1060 "-I" (assoc-ref %build-inputs "sdl-gfx") "/include/SDL "
1061 "-I" (assoc-ref %build-inputs "sdl-image") "/include/SDL "
1062 "-I" (assoc-ref %build-inputs "sdl-mixer") "/include/SDL")
1063 "--enable-opengl")
1064 ;; FIXME: the test suite fails with the following error output:
1065 ;; 4586 Segmentation fault env SDL_VIDEODRIVER=dummy \
1066 ;; SDL_AUDIODRIVER=dummy ./src/freedroidRPG -nb text
1067 #:tests? #f))
1068 (native-inputs
1069 `(("pkg-config" ,pkg-config)))
1070 (inputs
1071 `(("glu" ,glu)
4bd428a7 1072 ("libjpeg" ,libjpeg-turbo)
18995af2
TGR
1073 ("libogg" ,libogg)
1074 ("libpng" ,libpng)
1075 ("libvorbis" ,libvorbis)
1076 ("mesa" ,mesa)
1077 ("python" ,python-wrapper)
1078 ("sdl" ,sdl)
1079 ("sdl-gfx" ,sdl-gfx)
1080 ("sdl-image" ,sdl-image)
1081 ("sdl-mixer" ,sdl-mixer)
1082 ("zlib" ,zlib)))
1083 (home-page "http://www.freedroid.org/")
1084 (synopsis "Isometric role-playing game against killer robots")
1085 (description
1086 "Freedroid RPG is an @dfn{RPG} (Role-Playing Game) with isometric graphics.
1087The game tells the story of a world destroyed by a conflict between robots and
1088their human masters. To restore peace to humankind, the player must complete
1089numerous quests while fighting off rebelling robots---either by taking control
1090of them, or by simply blasting them to pieces with melee and ranged weapons in
1091real-time combat.")
1092 (license (list license:expat ; lua/
1093 license:gpl3 ; src/gen_savestruct.py
1094 license:gpl2+)))) ; the rest
1095
06f5f0b1
KK
1096(define-public golly
1097 (package
1098 (name "golly")
106c6aa5 1099 (version "3.3")
06f5f0b1
KK
1100 (source (origin
1101 (method url-fetch)
04e7b1e7 1102 (uri (string-append "mirror://sourceforge/golly/golly/golly-"
06f5f0b1
KK
1103 version "/golly-" version
1104 "-src.tar.gz"))
1105 (sha256
1106 (base32
106c6aa5 1107 "1j3ksnar4rdam4xiyspgyrs1pifbvxfxkrn65brkwxpx39mpgzc8"))))
06f5f0b1
KK
1108 (build-system gnu-build-system)
1109 (arguments
1110 '(#:make-flags (list "CC=gcc"
1111 (string-append "GOLLYDIR="
1112 (assoc-ref %outputs "out")
1113 "/share/golly"))
1114 #:tests? #f ; no check target
1115 #:phases
1116 (modify-phases %standard-phases
1117 (replace 'configure
1118 (lambda* (#:key inputs #:allow-other-keys)
1119 ;; For some reason, setting the PYTHON_SHLIB make flag doesn't
1120 ;; properly set the path to the Python shared library. This
1121 ;; substitution acheives the same end by different means.
1122 (substitute* "gui-wx/wxprefs.cpp"
1123 (("pythonlib = wxT\\(STRINGIFY\\(PYTHON_SHLIB\\)\\)")
1124 (string-append "pythonlib = \""
1125 (assoc-ref inputs "python")
1126 "/lib/libpython-2.7.so\"")))
1127 #t))
1128 (replace 'build
1129 (lambda* (#:key make-flags outputs #:allow-other-keys)
1130 (with-directory-excursion "gui-wx"
1131 (apply invoke `("make" ,@make-flags "-f" "makefile-gtk")))))
1132 (replace 'install
1133 (lambda* (#:key outputs #:allow-other-keys)
1134 (let* ((out (assoc-ref outputs "out"))
1135 (bin (string-append out "/bin"))
1136 (doc (string-append out "/share/doc/golly"))
1137 (pixmaps (string-append out "/share/pixmaps"))
1138 (share (string-append out "/share/golly")))
1139 (for-each (lambda (binary)
1140 (install-file binary bin))
1141 '("bgolly" "golly"))
1142 (for-each (lambda (document)
1143 (install-file
1144 (string-append "docs/" document ".html")
1145 doc))
1146 '("License" "ReadMe" "ToDo"))
1147 (install-file "gui-wx/icons/appicon.xpm" pixmaps)
1148 (for-each (lambda (folder)
1149 (copy-recursively
1150 folder
1151 (string-append share "/" folder)))
1152 '("Help" "Patterns" "Rules" "Scripts")))
1153 #t)))))
1154 (native-inputs
1155 `(("lua" ,lua)))
1156 (inputs
1157 `(("glu" ,glu)
1158 ("mesa" ,mesa)
1159 ("python" ,python-2)
1160 ("wxwidgets" ,wxwidgets-gtk2)
1161 ("zlib" ,zlib)))
1162 (home-page "http://golly.sourceforge.net/")
1163 (synopsis "Software for exploring cellular automata")
1164 (description
1165 "Golly simulates Conway's Game of Life and many other types of cellular
1166automata. The following features are available:
1167@enumerate
1168@item Support for bounded and unbounded universes, with cells of up to 256
1169 states.
1170@item Support for multiple algorithms, including Bill Gosper's Hashlife
1171 algorithm.
1172@item Loading patterns from BMP, PNG, GIF and TIFF image files.
1173@item Reading RLE, macrocell, Life 1.05/1.06, dblife and MCell files.
1174@item Scriptable via Lua or Python.
1175@item Extracting patterns, rules and scripts from zip files.
1176@item Downloading patterns, rules and scripts from online archives.
1177@item Pasting patterns from the clipboard.
1178@item Unlimited undo/redo.
1179@item Configurable keyboard shortcuts.
1180@item Auto fit option to keep patterns within the view.
1181@end enumerate")
1182 (license license:gpl2+)))
1183
299e15c1
TL
1184(define-public julius
1185 (package
1186 (name "julius")
d7822dc6 1187 (version "1.4.1")
299e15c1
TL
1188 (source
1189 (origin
1190 (method git-fetch)
1191 (uri (git-reference
b0e7b699 1192 (url "https://github.com/bvschaik/julius")
299e15c1
TL
1193 (commit (string-append "v" version))))
1194 (file-name (git-file-name name version))
1195 (sha256
d7822dc6 1196 (base32 "12hhnhdwgz7hd3hlndbnk15pxggm1375qs0764ija4nl1gbpb110"))
527ab312
TL
1197 ;; Remove unused bundled libraries.
1198 (modules '((guix build utils)))
1199 (snippet
1200 '(begin
1201 (with-directory-excursion "ext"
1202 (for-each delete-file-recursively '("dirent" "png" "SDL2" "zlib")))
1203 #t))))
299e15c1
TL
1204 (build-system cmake-build-system)
1205 (inputs
03418561
TL
1206 `(("libpng" ,libpng)
1207 ("sdl2" ,sdl2)
299e15c1
TL
1208 ("sdl2-mixer" ,sdl2-mixer)))
1209 (home-page "https://github.com/bvschaik/julius")
1210 (synopsis "Re-implementation of Caesar III game engine")
1211 (description
1212 "Engine for Caesar III, a city-building real-time strategy game.
1213Julius includes some UI enhancements while preserving the logic (including
1214bugs) of the original game, so that saved games are compatible. This package
1215does not include game data.")
1216 (license (list license:agpl3
299e15c1
TL
1217 license:zlib)))) ; ext/tinyfiledialogs
1218
1b917f99
PN
1219(define-public augustus
1220 (package
1221 (inherit julius)
1222 (name "augustus")
1223 (version (package-version julius))
1224 (source
1225 (origin
1226 (method git-fetch)
1227 (uri (git-reference
1228 (url "https://github.com/Keriew/augustus")
1229 (commit (string-append "v" version))))
1230 (file-name (git-file-name name version))
1231 (sha256
1232 (base32 "0ii0w0iwa9zv5bbqfcps5mxifd796m6fw4gvjf09pkm3yjgqc0ag"))
1233 ;; Remove unused bundled libraries.
1234 (modules '((guix build utils)))
1235 (snippet
1236 '(begin
1237 (with-directory-excursion "ext"
1238 (for-each delete-file-recursively '("dirent" "png" "SDL2" "zlib")))
1239 #t))))
1240 (arguments
1241 ;; No tests. See https://github.com/Keriew/augustus/issues/82.
1242 `(#:tests? #f))
1243 (home-page "https://github.com/Keriew/augustus")
1244 (synopsis "Re-implementation of Caesar III game engine with gameplay changes")
1245 (description
1246 "Fork of Julius, an engine for the a city-building real-time strategy
1247game Caesar III. Gameplay enhancements include:
1248
1249@itemize
1250@item roadblocks;
1251@item market special orders;
1252@item global labour pool;
1253@item partial warehouse storage;
1254@item increased game limits;
1255@item zoom controls.
1256@end itemize\n")))
1257
5145001a
RW
1258(define-public meandmyshadow
1259 (package
1260 (name "meandmyshadow")
b70ff03e 1261 (version "0.5a")
5145001a
RW
1262 (source (origin
1263 (method url-fetch)
1264 (uri (string-append "mirror://sourceforge/meandmyshadow/"
1265 version "/meandmyshadow-" version
1266 "-src.tar.gz"))
1267 (sha256
1268 (base32
b70ff03e 1269 "0i98v6cgmpsxy7mbb0s2y6f6qq6mkwzk2nrv1nz39ncf948aky2h"))))
5145001a
RW
1270 (build-system cmake-build-system)
1271 (arguments
1d9a9d27 1272 `(#:tests? #f)) ; there are no tests
5145001a
RW
1273 (native-inputs
1274 `(("pkg-config" ,pkg-config)))
1275 (inputs
1d9a9d27 1276 `(("curl" ,curl)
5145001a 1277 ("libarchive" ,libarchive)
1d9a9d27
TGR
1278 ("lua" ,lua)
1279 ("sdl" ,(sdl-union (list sdl2
1280 sdl2-image
1281 sdl2-mixer
1282 sdl2-ttf)))))
b590951f 1283 (home-page "https://acmepjz.github.io/meandmyshadow/")
5145001a
RW
1284 (synopsis "Puzzle/platform game")
1285 (description "Me and My Shadow is a puzzle/platform game in which you try
1286to reach the exit by solving puzzles. Spikes, moving blocks, fragile blocks
1287and much more stand between you and the exit. Record your moves and let your
1288shadow mimic them to reach blocks you couldn't reach alone.")
1289 (license license:gpl3+)))
1290
a02ca033
TL
1291(define-public opensurge
1292 (package
1293 (name "opensurge")
1294 (version "0.5.1.2")
1295 (source
1296 (origin
1297 (method git-fetch)
1298 (uri (git-reference
b0e7b699 1299 (url "https://github.com/alemart/opensurge")
a02ca033
TL
1300 (commit (string-append "v" version))))
1301 (file-name (git-file-name name version))
1302 (sha256
1303 (base32 "0ih7hlqjnp9rv0m4lqf7c0s1ai532way5i4pk45jq1gqm8325dbv"))))
1304 (build-system cmake-build-system)
1305 (arguments
1306 `(#:tests? #f ;there are no tests
1307 #:configure-flags
1308 (let* ((out (assoc-ref %outputs "out"))
1309 (share (string-append out "/share")))
1310 (list (string-append "-DCMAKE_INSTALL_PREFIX=" out "/bin")
1311 (string-append "-DGAME_DATADIR=" share "/" ,name)
1312 (string-append "-DDESKTOP_ENTRY_PATH=" share "/applications")
1313 (string-append "-DDESKTOP_ICON_PATH=" share "/pixmaps")
1314 (string-append "-DDESKTOP_METAINFO_PATH=" share "/metainfo")))
1315 #:phases
1316 (modify-phases %standard-phases
1317 (add-after 'unpack 'fix-xdg-open-path
1318 (lambda* (#:key inputs #:allow-other-keys)
1319 ;; Look for xdg-open in the store.
1320 (substitute* "src/core/web.c"
1321 (("/usr(/bin/xdg-open)" _ bin)
1322 (string-append (assoc-ref inputs "xdg-utils") bin)))
1323 #t))
1324 (add-after 'unpack 'unbundle-fonts
1325 (lambda* (#:key inputs #:allow-other-keys)
1326 ;; Replace bundled Roboto fonts with links to the store.
1327 (with-directory-excursion "fonts"
1328 (let ((roboto-dir (string-append
1329 (assoc-ref inputs "font-google-roboto")
1330 "/share/fonts/truetype/")))
1331 (for-each
1332 (lambda (font)
1333 (delete-file font)
1334 (symlink (string-append roboto-dir font) font))
1335 '("Roboto-Black.ttf" "Roboto-Bold.ttf" "Roboto-Medium.ttf")))
1336 #t))))))
1337 (inputs
1338 `(("allegro" ,allegro)
1339 ("font-google-roboto" ,font-google-roboto)
1340 ("surgescript" ,surgescript)
1341 ("xdg-utils" ,xdg-utils)))
1342 (home-page "https://opensurge2d.org")
1343 (synopsis "2D retro side-scrolling game")
1344 (description "@code{Open Surge} is a 2D retro side-scrolling platformer
1345inspired by the Sonic games. The player runs at high speeds through each
1346level while collecting items and avoiding obstacles. The game includes a
1347built-in level editor.")
1348 (license
1349 ;; Code is under GPL 3+, assets are under various licenses.
1350 ;; See src/misc/credits.c for details.
1351 (list license:gpl3+
1352 license:cc0
1353 license:cc-by3.0
1354 license:cc-by-sa3.0
1355 license:expat
1356 license:public-domain
1357 license:silofl1.1))))
1358
02345c96
RW
1359(define-public knights
1360 (package
1361 (name "knights")
1362 (version "025")
1363 (source (origin
1364 (method url-fetch)
1365 (uri (string-append "http://www.knightsgame.org.uk/files/knights_"
1366 version "_src.tar.gz"))
1367 (sha256
1368 (base32
1369 "18vp2ygvn0s0jz8rm585jqf6hjqkam1ximq81k0r9hpmfj7wb88f"))))
1370 (build-system gnu-build-system)
1371 (arguments
1372 '(#:make-flags
6fba1f4d
JG
1373 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
1374 "CXXFLAGS=-lpthread")
02345c96
RW
1375 #:phases
1376 (modify-phases %standard-phases
1377 ;; No configure script.
1378 (delete 'configure))
1379 #:tests? #f)) ;; No check target.
1380 (inputs
1381 `(("boost" ,boost)
1382 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
1383 ("freetype" ,freetype)
1384 ("fontconfig" ,fontconfig)
1385 ("curl" ,curl)))
6730d895
RW
1386 (native-inputs
1387 `(("pkg-config" ,pkg-config)))
02345c96
RW
1388 (home-page "http://www.knightsgame.org.uk/")
1389 (synopsis "Multiplayer dungeon game involving knights and quests")
1390 (description "Knights is a multiplayer game involving several knights who
1391must run around a dungeon and complete various quests. Each game revolves
1392around a quest – for example, you might have to find some items and carry them
1393back to your starting point. This may sound easy, but as there are only
1394enough items in the dungeon for one player to win, you may end up having to
1395kill your opponents to get their stuff! Other quests involve escaping from
1396the dungeon, fighting a duel to the death against the enemy knights, or
1397destroying an ancient book using a special wand.")
1398 ;; This package includes modified sources of lua (X11), enet (Expat), and
1399 ;; guichan (BSD-3). The "Coercri" library is released under the Boost
1400 ;; license. The whole package is released under GPLv3+.
1401 (license license:gpl3+)))
1402
63406c0b
JH
1403(define-public gnome-chess
1404 (package
1405 (name "gnome-chess")
a41b8c9a 1406 (version "3.37.3")
63406c0b
JH
1407 (source (origin
1408 (method url-fetch)
0c716128 1409 (uri (string-append "mirror://gnome/sources/gnome-chess/"
63406c0b 1410 (version-major+minor version) "/"
0c716128 1411 "gnome-chess-" version ".tar.xz"))
63406c0b
JH
1412 (sha256
1413 (base32
a41b8c9a 1414 "09axf0q1mp13sv8cs0syfg8ahcd9r2qb26278r09j6s4njxmkfv4"))))
63406c0b
JH
1415 (build-system meson-build-system)
1416 (arguments
1417 '(#:glib-or-gtk? #t
1418 #:phases
1419 (modify-phases %standard-phases
1420 (add-after 'unpack 'skip-gtk-update-icon-cache
1421 ;; Don't create 'icon-theme.cache'.
1422 (lambda _
1423 (substitute* "meson_post_install.py"
1424 (("gtk-update-icon-cache") "true"))
1425 #t)))))
1426 (inputs
1427 `(("gtk+" ,gtk+)
1428 ("librsvg" ,librsvg)))
1429 (native-inputs
1430 `(("gettext" ,gettext-minimal)
1431 ("glib:bin" ,glib "bin") ; for desktop-file-validate and appstream-util
1432 ("itstool" ,itstool)
1433 ("pkg-config" ,pkg-config)
1434 ("vala" ,vala)))
1435 (home-page "https://wiki.gnome.org/Apps/Chess")
1436 (synopsis "Chess board for GNOME")
1437 (description "GNOME Chess provides a 2D board for playing chess games
1438against human or computer players. It supports loading and saving games in
1439Portable Game Notation. To play against a computer, install a chess engine
1440such as chess or stockfish.")
1441 (license license:gpl3+)))
1442
e23f2ff1 1443(define-public gnubg
bf0018cd 1444 (package
e23f2ff1 1445 (name "gnubg")
d5ddb484 1446 (version "1.06.002")
bf0018cd
JD
1447 (source
1448 (origin
1449 (method url-fetch)
d24881e4
GLV
1450 (uri (string-append "mirror://gnu/gnubg/gnubg-release-"
1451 version "-sources.tar.gz"))
bf0018cd
JD
1452 (sha256
1453 (base32
d5ddb484 1454 "11xwhcli1h12k6rnhhyq4jphzrhfik7i8ah3k32pqw803460n6yf"))))
bf0018cd 1455 (build-system gnu-build-system)
fe5a4f57
MB
1456 (inputs `(;; XXX: Build with an older Pango for 'pango_font_get_hb_font' and
1457 ;; 'pango_coverage_get_type'. Try removing this for versions > 1.06.002.
1458 ("pango" ,pango-1.42)
1459
1460 ("glib" ,glib)
bf0018cd
JD
1461 ("readline" ,readline)
1462 ("gtk+" ,gtk+-2)
1463 ("mesa" ,mesa)
6a95024c 1464 ("glu" ,glu)
bf0018cd
JD
1465 ("gtkglext" ,gtkglext)
1466 ("sqlite" ,sqlite)
1467 ("libcanberra" ,libcanberra)))
1468 (native-inputs `(("python-2" ,python-2)
1469 ("pkg-config" ,pkg-config)))
93605bfd
GLV
1470 (arguments
1471 `(#:phases
1472 (modify-phases %standard-phases
1473 (add-after 'install 'install-desktop-file
1474 (lambda* (#:key outputs #:allow-other-keys)
1475 (let* ((out (assoc-ref outputs "out"))
1476 (apps (string-append out "/share/applications")))
1477 (mkdir-p apps)
1478 (with-output-to-file (string-append apps "/gnubg.desktop")
1479 (lambda _
1480 (format #t
1481 "[Desktop Entry]~@
1482 Name=GNU Backgammon~@
1483 Exec=~a/bin/gnubg -w~@
1484 Icon=gnubg~@
1485 Categories=Game;~@
1486 Terminal=false~@
1487 Type=Application~%"
1488 out))))
1489 #t)))))
d24881e4 1490 (home-page "https://www.gnu.org/software/gnubg/")
bf0018cd 1491 (synopsis "Backgammon game")
c97e4d8b
PN
1492 (description "The GNU backgammon application (also known as \"gnubg\") can
1493be used for playing, analyzing and teaching the game. It has an advanced
1494evaluation engine based on artificial neural networks suitable for both
1495beginners and advanced players. In addition to a command-line interface, it
1496also features an attractive, 3D representation of the playing board.")
024e2c17 1497 (license license:gpl3+)))
bf0018cd 1498
490c6528
JD
1499(define-public gnubik
1500 (package
1501 (name "gnubik")
ecc39b3f 1502 (version "2.4.3")
490c6528
JD
1503 (source
1504 (origin
1505 (method url-fetch)
1506 (uri (string-append "mirror://gnu/gnubik/gnubik-"
1507 version ".tar.gz"))
1508 (sha256
1509 (base32
ecc39b3f 1510 "1vlf924mq8hg93bsjj0rzvs0crc6psmlxyc6zn0fr7msnmpx6gib"))))
490c6528 1511 (build-system gnu-build-system)
1abfb4d4
MB
1512 (arguments
1513 '(#:phases (modify-phases %standard-phases
1514 (add-after 'unpack 'skip-gtk-update-icon-cache
1515 (lambda _
1516 ;; Do not attempt to run 'gtk-update-icon-cache', which is
1517 ;; unnecessary and causes a needless dependency on glib.
1518 (substitute* "Makefile.in"
1519 (("gtk-update-icon-cache")
1520 "true"))
1521 #t)))))
490c6528
JD
1522 (inputs `(("gtk+" ,gtk+-2)
1523 ("mesa" ,mesa)
276a8f71 1524 ("glu" ,glu)
490c6528
JD
1525 ("libx11" ,libx11)
1526 ("guile" ,guile-2.0)
1527 ("gtkglext" ,gtkglext)))
b94a6ca0 1528 (native-inputs `(("gettext" ,gettext-minimal)
490c6528
JD
1529 ("pkg-config" ,pkg-config)))
1530 (home-page "https://www.gnu.org/software/gnubik/")
e67f5551
LC
1531 (synopsis "3d Rubik's cube game")
1532 (description
1533 "GNUbik is a puzzle game in which you must manipulate a cube to make
490c6528
JD
1534each of its faces have a uniform color. The game is customizable, allowing
1535you to set the size of the cube (the default is 3x3) or to change the colors.
c5779c93 1536You may even apply photos to the faces instead of colors. The game is
490c6528 1537scriptable with Guile.")
024e2c17 1538 (license license:gpl3+)))
3da5dca3 1539
a20b084a
JD
1540(define-public gnushogi
1541 (package
1542 (name "gnushogi")
1543 (version "1.4.2")
1544 (source
1545 (origin
1546 (method url-fetch)
1547 (uri (string-append "mirror://gnu/gnushogi/gnushogi-"
1548 version ".tar.gz"))
1549 (sha256
1550 (base32
1551 "0a9bsl2nbnb138lq0h14jfc5xvz7hpb2bcsj4mjn6g1hcsl4ik0y"))))
1552 (arguments `(#:tests? #f)) ;; No check target.
1553 (build-system gnu-build-system)
6fd52309 1554 (home-page "https://www.gnu.org/software/gnushogi/")
a20b084a
JD
1555 (synopsis "The game of Shogi (Japanese chess)")
1556 (description "GNU Shogi is a program that plays the game Shogi (Japanese
1557Chess). It is similar to standard chess but this variant is far more complicated.")
1558 (license license:gpl3+)))
1559
e664200c
KK
1560(define-public ltris
1561 (package
1562 (name "ltris")
ec6cf66c 1563 (version "1.2.1")
e664200c
KK
1564 (source
1565 (origin
1566 (method url-fetch)
056db754 1567 (uri (string-append "mirror://sourceforge/lgames/ltris/"
dd0369f4 1568 "ltris-" version ".tar.gz"))
e664200c 1569 (sha256
ec6cf66c 1570 (base32 "0959vvxh5xnxzpdv7i67lpd2b6ghx69z65ldnclj1z6llyfzfs7q"))))
e664200c
KK
1571 (build-system gnu-build-system)
1572 (arguments
1573 '(;; The code in LTris uses traditional GNU semantics for inline functions
1574 #:configure-flags '("CFLAGS=-fgnu89-inline")
1575 #:phases
1576 (modify-phases %standard-phases
1577 (add-after 'set-paths 'set-sdl-paths
1578 (lambda* (#:key inputs #:allow-other-keys)
1579 (setenv "CPATH"
1580 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
1581 "/include/SDL:"
1582 (or (getenv "CPATH") "")))
e664200c
KK
1583 #t)))))
1584 (inputs
1585 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))))
1586 (home-page "http://lgames.sourceforge.net/LTris/")
1587 (synopsis "Tetris clone based on the SDL library")
1588 (description
1589 "LTris is a tetris clone: differently shaped blocks are falling down the
1590rectangular playing field and can be moved sideways or rotated by 90 degree
1591units with the aim of building lines without gaps which then disappear (causing
1592any block above the deleted line to fall down). LTris has three game modes: In
1593Classic you play until the stack of blocks reaches the top of the playing field
1594and no new blocks can enter. In Figures the playing field is reset to a new
1595figure each level and later on tiles and lines suddenly appear. In Multiplayer
1596up to three players (either human or CPU) compete with each other sending
1597removed lines to all opponents. There is also a Demo mode in which you can
1598watch your CPU playing while enjoying a cup of tea!")
1599 (license license:gpl2+)))
3bd0d186
A
1600
1601(define-public nethack
1602 (package
1603 (name "nethack")
9d9da65f 1604 (version "3.6.6")
3bd0d186
A
1605 (source
1606 (origin
1607 (method url-fetch)
a544817e
TGR
1608 (uri
1609 (string-append "https://www.nethack.org/download/" version "/nethack-"
1610 (string-join (string-split version #\.) "") "-src.tgz"))
3bd0d186 1611 (sha256
9d9da65f 1612 (base32 "1liyckjp34j354qnxc1zn9730lh1p2dabrg1hap24z6xnqx0rpng"))))
0ad7e703
VL
1613 (native-inputs
1614 `(("bison" ,bison)
1615 ("flex" ,flex)))
3bd0d186
A
1616 (inputs
1617 `(("ncurses" ,ncurses)
3bd0d186
A
1618 ("less" ,less)))
1619 (build-system gnu-build-system)
1620 (arguments
1621 '(#:make-flags
1622 `(,(string-append "PREFIX=" (assoc-ref %outputs "out")))
1623 #:phases
1624 (modify-phases %standard-phases
1625 (add-before 'configure 'patch-paths
1626 (lambda _
1627 (substitute* "sys/unix/nethack.sh"
1628 (("^ *cd .*$") ""))
1629 (substitute* "sys/unix/Makefile.utl"
1630 (("^YACC *=.*$") "YACC = bison -y\n")
1631 (("^LEX *=.*$") "LEX = flex\n")
1632 (("^# CC = gcc") "CC = gcc"))
1633 (substitute* "sys/unix/hints/linux"
1634 (("/bin/gzip") (string-append
1635 (assoc-ref %build-inputs "gzip")
1636 "/bin/gzip"))
1637 (("^WINTTYLIB=.*") "WINTTYLIB=-lncurses"))
1638 (substitute* "include/config.h"
df35e715
LC
1639 (("^.*define CHDIR.*$") "")
1640 (("^/\\* *#*define *REPRODUCIBLE_BUILD *\\*/")
1641 ;; Honor SOURCE_DATE_EPOCH.
1642 "#define REPRODUCIBLE_BUILD"))
1643
1644 ;; Note: 'makedefs' rejects and ignores dates that are too old
1645 ;; or too new, so we must choose something reasonable here.
1646 (setenv "SOURCE_DATE_EPOCH" "1531865062")
1647
3bd0d186
A
1648 (substitute* "sys/unix/Makefile.src"
1649 (("^# CC = gcc") "CC = gcc"))
1650 #t))
1651 (replace 'configure
1652 (lambda _
1653 (let ((bash (string-append
1654 (assoc-ref %build-inputs "bash")
1655 "/bin/bash")))
1656 (with-directory-excursion "sys/unix"
1657 (substitute* "setup.sh" (("/bin/sh") bash))
1658 (invoke bash "setup.sh" "hints/linux"))
1659 #t)))
1660 (add-after 'install 'fixup-paths
1661 (lambda _
1662 (let* ((output (assoc-ref %outputs "out"))
1663 (nethack-script (string-append output "/bin/nethack")))
1664 (mkdir-p (string-append output "/games/lib/nethackuserdir"))
1665 (for-each
1666 (lambda (file)
1667 (rename-file
1668 (string-append output "/games/lib/nethackdir/" file)
1669 (string-append output "/games/lib/nethackuserdir/"
1670 file)))
1671 '("xlogfile" "logfile" "perm" "record" "save"))
1672 (mkdir-p (string-append output "/bin"))
1673 (call-with-output-file nethack-script
1674 (lambda (port)
1675 (format port "#!~a/bin/sh
1676PATH=~a:$PATH
1677if [ ! -d ~~/.config/nethack ]; then
1678 mkdir -p ~~/.config/nethack
1679 cp -r ~a/games/lib/nethackuserdir/* ~~/.config/nethack
1680 chmod -R +w ~~/.config/nethack
1681fi
1682
1683RUNDIR=$(mktemp -d)
1684
1685cleanup() {
1686 rm -rf $RUNDIR
1687}
1688trap cleanup EXIT
1689
1690cd $RUNDIR
1691for i in ~~/.config/nethack/*; do
1692 ln -s $i $(basename $i)
1693done
1694for i in ~a/games/lib/nethackdir/*; do
1695 ln -s $i $(basename $i)
1696done
1697~a/games/nethack"
1698 (assoc-ref %build-inputs "bash")
1699 (list->search-path-as-string
1700 (list
1701 (string-append
1702 (assoc-ref %build-inputs "coreutils") "/bin")
1703 (string-append
1704 (assoc-ref %build-inputs "less") "/bin"))
1705 ":")
1706 output
1707 output
1708 output)))
1709 (chmod nethack-script #o555)
1710 #t)))
1711 (delete 'check))))
1712 (home-page "https://nethack.org")
1713 (synopsis "Classic dungeon crawl game")
1714 (description "NetHack is a single player dungeon exploration game that runs
1715on a wide variety of computer systems, with a variety of graphical and text
1716interfaces all using the same game engine. Unlike many other Dungeons &
1717Dragons-inspired games, the emphasis in NetHack is on discovering the detail of
1718the dungeon and not simply killing everything in sight - in fact, killing
1719everything in sight is a good way to die quickly. Each game presents a
1720different landscape - the random number generator provides an essentially
1721unlimited number of variations of the dungeon and its denizens to be discovered
1722by the player in one of a number of characters: you can pick your race, your
1723role, and your gender.")
1724 (license
1725 (license:fsdg-compatible
1726 "https://nethack.org/common/license.html"))))
e664200c 1727
82943626
TGR
1728(define-public pipewalker
1729 (package
1730 (name "pipewalker")
1731 (version "0.9.4")
1732 (source
1733 (origin
1734 (method url-fetch)
1735 (uri (string-append "http://downloads.sourceforge.net/pipewalker/"
96848ecc 1736 "pipewalker-" version ".tar.gz"))
82943626 1737 (sha256
96848ecc 1738 (base32 "1x46wgk0s55562pd96cxagxkn6wpgglq779f9b64ff1k3xzp3myn"))))
82943626
TGR
1739 (build-system gnu-build-system)
1740 (arguments
1741 `(#:configure-flags
1742 (list (string-append "--docdir=" (assoc-ref %outputs "out")
1743 "/share/doc/" ,name "-" ,version))
1744 #:phases
1745 (modify-phases %standard-phases
1746 (add-after 'configure 'patch-docdir
1747 ;; Makefile.in ignores configure's ‘--docdir=...’ option. Fix that.
1748 (lambda _
1749 (substitute* "Makefile"
1750 (("(pkgdocdatadir = ).*" _ assignment)
1751 (string-append assignment "$(docdir)\n")))
1752 #t)))))
1753 (inputs
1754 `(("libpng" ,libpng)
1755 ("mesa" ,mesa)
1756 ("sdl" ,sdl)))
1757 (home-page "http://pipewalker.sourceforge.net/")
1758 (synopsis "Logical tile puzzle")
1759 (description
1760 "PipeWalker is a simple puzzle game with many diffent themes: connect all
1761computers to one network server, bring water from a source to the taps, etc.
1762The underlying mechanism is always the same: you must turn each tile in the
1763grid in the right direction to combine all components into a single circuit.
1764Every puzzle has a complete solution, although there may be more than one.")
1765 (license license:gpl3+)))
1766
26a657f0
KK
1767(define-public prboom-plus
1768 (package
1769 (name "prboom-plus")
1770 (version "2.5.1.4")
1771 (source (origin
1772 (method url-fetch)
a8a96bbe
TGR
1773 (uri (string-append "mirror://sourceforge/prboom-plus/prboom-plus/"
1774 version "/prboom-plus-" version ".tar.gz"))
26a657f0 1775 (sha256
a8a96bbe 1776 (base32 "151v6nign86m1a2vqz27krsccpc9m4d1jax4y43v2fa82wfj9qp0"))
26a657f0
KK
1777 (modules '((guix build utils)))
1778 (snippet
6cbee49d
MW
1779 '(begin
1780 (substitute* "src/version.c"
1781 (("__DATE__") "")
1782 (("__TIME__") ""))
1783 #t))))
26a657f0
KK
1784 (build-system gnu-build-system)
1785 (arguments
1786 '(#:configure-flags '("--disable-cpu-opt")
1787 #:make-flags `(,(string-append "gamesdir="
1788 (assoc-ref %outputs "out") "/bin"))
1789 #:phases
1790 (modify-phases %standard-phases
1791 (add-after 'set-paths 'set-sdl'paths
1792 (lambda* (#:key inputs #:allow-other-keys)
1793 (setenv "CPATH"
1794 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
1795 "/include/SDL:"
1796 (or (getenv "CPATH") "")))
26a657f0
KK
1797 #t)))))
1798 (inputs
1799 `(("fluidsynth" ,fluidsynth)
1800 ("glu" ,glu)
1801 ("libmad" ,libmad)
1802 ("libpng" ,libpng)
1803 ("libvorbis" ,libvorbis)
1804 ("pcre" ,pcre)
1805 ("portmidi" ,portmidi)
1806 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-net)))))
1807 (home-page "http://prboom-plus.sourceforge.net/")
1808 (synopsis "Version of the classic 3D shoot'em'up game Doom")
1809 (description
1810 "PrBoom+ is a Doom source port developed from the original PrBoom project.")
1811 (license license:gpl2+)))
1812
519bfc65
KK
1813(define-public retux
1814 (package
1815 (name "retux")
f98ea632 1816 (version "1.4")
519bfc65
KK
1817 (source (origin
1818 (method url-fetch)
f98ea632
KK
1819 (uri (string-append "https://github.com/retux-game/retux/"
1820 "releases/download/v"
519bfc65
KK
1821 (version-major+minor version) "/retux-"
1822 version "-src.tar.gz"))
1823 (sha256
1824 (base32
f98ea632 1825 "1hxy1pvlxhk0ci3wh2i3mmr82faqdjnnxsiwwr5gcr93nfnw9w5f"))))
519bfc65
KK
1826 (build-system python-build-system)
1827 (arguments
1828 `(#:tests? #f ; no check target
1829 #:phases
1830 (modify-phases %standard-phases
1831 ;; no setup.py script
1832 (delete 'build)
1833 (replace 'install
1834 (lambda* (#:key outputs #:allow-other-keys)
1835 (let* ((out (assoc-ref outputs "out"))
1836 (bin (string-append out "/bin"))
f98ea632 1837 (data (string-append out "/share/retux")))
519bfc65
KK
1838 (mkdir-p bin)
1839
1840 (substitute* "retux.py"
1841 ;; Use the correct data directory.
1842 (("os\\.path\\.join\\(os\\.path\\.dirname\\(__file__\\), \"data\"\\),")
f98ea632 1843 (string-append "\"" data "\",")))
519bfc65
KK
1844
1845 (copy-file "retux.py" (string-append bin "/retux"))
519bfc65 1846 (copy-recursively "data" data)
fbc3b802 1847 #t))))))
519bfc65
KK
1848 (inputs
1849 `(("python-sge-pygame" ,python-sge-pygame)
1850 ("python-six" ,python-six)
1851 ("python-xsge" ,python-xsge)))
f98ea632 1852 (home-page "https://retux-game.github.io/")
519bfc65
KK
1853 (synopsis "Action platformer game")
1854 (description
1855 "ReTux is an action platformer loosely inspired by the Mario games,
1856utilizing the art assets from the @code{SuperTux} project.")
1857 ;; GPL version 3 or later is the license for the code and some art.
1858 ;; The rest of the licenses are for the art exclusively, as listed in
1859 ;; data/LICENSES.
1860 (license (list license:cc0
1861 license:cc-by3.0
1862 license:cc-by-sa3.0
1863 license:cc-by-sa4.0
1864 license:gpl2+
1865 license:gpl3+))))
07f3b379
KK
1866
1867(define-public roguebox-adventures
1697048f
KK
1868 (package
1869 (name "roguebox-adventures")
98f79040 1870 (version "3.0.1")
1697048f
KK
1871 (source
1872 (origin
1873 (method url-fetch)
1874 (uri (string-append
1875 "http://download.tuxfamily.org/rba/RogueBoxAdventures_v"
1876 (string-join (string-split version #\.) "_") "_Source.zip"))
1877 (file-name (string-append name "-" version ".zip"))
1878 (sha256
1879 (base32
98f79040 1880 "05zd03s5w9kcpklfgcggbaa6rwf59nm0q9vcj6gh9v2lh402k067"))))
1697048f
KK
1881 (build-system python-build-system)
1882 (arguments
1883 `(#:tests? #f ; no check target
1884 #:phases
1885 (modify-phases %standard-phases
1886 (replace 'unpack
1887 (lambda* (#:key source #:allow-other-keys)
1888 (and (invoke "unzip" source)
1889 ;; The actual source is buried a few directories deep.
1890 (chdir (string-append "RogueBoxAdventures_v"
1891 (string-join
1892 (string-split ,version #\.) "_")
1893 "_Source")))))
1894 ;; no setup.py script
1895 (replace 'build
1896 (lambda* (#:key outputs #:allow-other-keys)
1897 (let* ((out (assoc-ref outputs "out"))
1898 (data (string-append
1899 out "/share/games/roguebox-adventures")))
1900 ;; Use the correct data directory.
1901 (substitute* '("main.py" "LIB/getch.py" "LIB/getch_gcwz.py")
1902 (("basic_path + os\\.sep + 'DATA'")
1903 (string-append "'" data "'"))
1904 (("^basic_path.*$")
1905 (string-append "basic_path ='" data "'\n")))
98f79040
KK
1906 (substitute* "LIB/dialog.py"
1907 (("d_path = os\\.path\\.dirname\\(.*\\)\\)")
1908 (string-append "d_path = '" data "'")))
1697048f
KK
1909 (substitute* "LIB/gra_files.py"
1910 (("basic_path = b_path\\.replace\\('/LIB',''\\)")
1911 (string-append "basic_path ='" data "'\n")))
07f3b379 1912
1697048f
KK
1913 ;; The game must save in the user's home directory because
1914 ;; the store is read-only.
1915 (substitute* "main.py"
1916 (("home_save = False") "home_save = True")
1917 (("'icon_small.png'")
1918 (string-append "'" data "/icon_small.png'"))))
1919 #t))
1920 (replace 'install
1921 (lambda* (#:key outputs #:allow-other-keys)
1922 (let* ((out (assoc-ref outputs "out"))
1923 (bin (string-append out "/bin"))
1924 (roguebox-adventures
1925 (string-append bin "/roguebox-adventures"))
1926 (data (string-append
1927 out "/share/games/roguebox-adventures"))
1928 (lib (string-append data "/LIB"))
1929 (doc (string-append
1930 out "/share/doc/roguebox-adventures")))
1931 (mkdir-p bin)
1932 (mkdir-p doc)
07f3b379 1933
1697048f
KK
1934 (for-each (lambda (file)
1935 (copy-recursively file
1936 (string-append data "/" file)))
1937 '("AUDIO" "FONT" "GRAPHIC" "LIB" "LICENSE"
1938 "icon_big.png" "icon_small.png"))
1939 (for-each (lambda (file)
1940 (chmod file #o555)
1941 (install-file file lib))
1942 '("main.py" "run.py"))
07f3b379 1943
1697048f 1944 (copy-recursively "DOC" doc)
07f3b379 1945
1697048f
KK
1946 (call-with-output-file
1947 roguebox-adventures
1948 (lambda (p)
1949 (format p "\
1950#!~a
1951export PYTHONPATH=~a/LIB:~a
1952exec -a \"~a\" ~a \"$@\"\n"
1953 (which "bash") data (getenv "PYTHONPATH")
1954 (which "python3")
1955 (string-append lib "/main.py"))))
1956 (chmod roguebox-adventures #o555))
1957 #t)))))
1958 (native-inputs
1959 `(("unzip" ,unzip)))
1960 (inputs
1961 `(("python-pygame" ,python-pygame)
1962 ("python-tmx" ,python-tmx)))
1963 (home-page "https://rogueboxadventures.tuxfamily.org")
1964 (synopsis "A classical roguelike/sandbox game")
1965 (description
1966 "RogueBox Adventures is a graphical roguelike with strong influences
07f3b379
KK
1967from sandbox games like Minecraft or Terraria. The main idea of RogueBox
1968Adventures is to offer the player a kind of roguelike toy-world. This world
1969can be explored and changed freely.")
1697048f
KK
1970 ;; The GPL3+ is for code, the rest are for art.
1971 (license (list license:cc0
1972 license:cc-by3.0
1973 license:gpl3+
1974 license:silofl1.1))))
519bfc65 1975
6d7ed7c0
NG
1976(define-public seahorse-adventures
1977 (package
1978 (name "seahorse-adventures")
1979 (version "1.2")
1980 (source
1981 (origin
1982 (method git-fetch)
1983 (uri (git-reference
b0e7b699 1984 (url "https://github.com/dulsi/seahorse-adventures")
6d7ed7c0
NG
1985 (commit (string-append "release-" version))))
1986 (file-name (git-file-name name version))
1987 (sha256
1988 (base32 "1rnvk06npaqcpjz5z6xcmssz61i32s422lydp49vrnf3j2g4yimd"))
1989 (modules '((guix build utils)
1990 (ice-9 ftw)
1991 (srfi srfi-1)))
1992 ;; Remove non-free (non-commercial) font.
1993 (snippet
1994 `(begin
1995 (for-each delete-file (find-files "data/fonts" "."))
1996 #t))))
1997 (build-system python-build-system)
1998 (arguments
1999 `(#:tests? #f ;no test
2000 #:phases
2001 (modify-phases %standard-phases
2002 (delete 'build) ;pure Python
2003 (replace 'install ;no install script
2004 (lambda* (#:key outputs #:allow-other-keys)
2005 (let* ((out (assoc-ref outputs "out"))
2006 (bin (string-append out "/bin"))
2007 (share (string-append out "/share"))
2008 (applications (string-append share "/applications"))
2009 (data (string-append share "/seahorse-adventures")))
2010 ;; Install data.
2011 (for-each (lambda (f)
2012 (chmod f #o555)
2013 (install-file f data))
2014 '("leveledit.py" "run_game.py" "tileedit.py"))
2015 (for-each (lambda (dir)
2016 (let ((target (string-append data "/" dir)))
2017 (mkdir-p target)
2018 (copy-recursively dir target)))
2019 '("data" "lib"))
2020 ;; Create executable.
2021 (mkdir-p bin)
2022 (let ((executable (string-append bin "/seahorse-adventures")))
2023 (call-with-output-file executable
2024 (lambda (p)
2025 (format p
2026 "#!~a~@
2027 export PYTHONPATH=~a:~a~@
2028 exec -a \"~a\" ~a \"$@\"~%"
2029 (which "bash") data (getenv "PYTHONPATH")
2030 (which "python3")
2031 (string-append data "/run_game.py"))))
2032 (chmod executable #o555))
2033 ;; Add desktop file.
2034 (mkdir-p applications)
2035 (make-desktop-entry-file
2036 (string-append applications "/seahorse-adventures.desktop")
2037 #:name "Seahorse Adventures"
2038 #:comment
2039 '((#f "Help Barbie the seahorse float on bubbles to the moon"))
2040 #:exec ,name
2041 #:icon ,name
2042 #:categories '("Game" "ActionGame")
2043 #:keywords '("game" "retro" "platform"))
2044 ;; Add icons.
2045 (for-each
2046 (lambda (size)
2047 (let ((dir (string-append share "/icons/hicolor/"
2048 size "x" size "/apps")))
2049 (mkdir-p dir)
2050 (copy-file
2051 (string-append "icon" size ".png")
2052 (string-append dir "/searhorse-adventures.png"))))
2053 '("32" "64" "128")))
2054 #t))
2055 (add-after 'install 'unbundle-fonts
2056 ;; Unbundle Bitstream Vera font and replace deleted one.
2057 (lambda* (#:key outputs inputs #:allow-other-keys)
2058 (let* ((out (assoc-ref outputs "out"))
2059 (data (string-append out "/share/seahorse-adventures"))
2060 (vera (string-append (assoc-ref inputs "font-bitstream-vera")
2061 "/share/fonts/truetype/Vera.ttf")))
2062 (let ((themes-dir (string-append data "/data/themes/")))
2063 (for-each
2064 (lambda (theme)
2065 (let ((target (string-append themes-dir theme "/Vera.ttf")))
2066 (delete-file target)
2067 (symlink vera target)))
2068 '("default" "gray")))
2069 (symlink vera (string-append data "/data/fonts/04B_20__.TTF"))
2070 (substitute* (string-append data "/lib/main.py")
2071 (("f_scale = 0.35") "f_scale = 0.47")))
2072 #t)))))
2073 (inputs
2074 `(("font-bitstream-vera" ,font-bitstream-vera)
2075 ("python-pygame" ,python-pygame)))
2076 (home-page "http://www.imitationpickles.org/barbie/")
2077 (synopsis "Help Barbie the seahorse float on bubbles to the moon")
2078 (description
2079 "Barbie Seahorse Adventures is a retro style platform arcade game.
2080You are Barbie the seahorse who travels through the jungle, up to the
2081volcano until you float on bubbles to the moon. On the way to your
2082final destination you will encounter various enemies, servants of the
2083evil overlord who has stolen the galaxy crystal. Avoid getting hit
2084and defeat them with your bubbles!")
2085 ;; GPL2+ is for code, CC0 is for art.
2086 (license (list license:gpl2+ license:cc0))))
2087
756605ee
TL
2088(define-public superstarfighter
2089 (package
2090 (name "superstarfighter")
2091 (version "0.6.4")
2092 (source
2093 (origin
2094 (method git-fetch)
2095 (uri (git-reference
b0e7b699 2096 (url "https://github.com/notapixelstudio/superstarfighter")
756605ee
TL
2097 (commit (string-append "v" version))))
2098 (file-name (git-file-name name version))
2099 (sha256
2100 (base32 "1fly63yf5ls1xwm15if4lxwy67wi84k4gvjllljpykrl18vw2y0y"))))
2101 (build-system gnu-build-system)
2102 (arguments
2103 `(#:tests? #f ;there are no tests
2104 #:phases
2105 (modify-phases %standard-phases
2106 (replace 'configure
2107 (lambda _
2108 (chdir "godot")
2109 (setenv "HOME" (getcwd))
2110 (with-output-to-file "export_presets.cfg"
2111 (lambda ()
2112 (display
2113 "[preset.0]
2114name=\"Guix\"
2115platform=\"Linux/X11\"
2116runnable=true
2117[preset.0.options]")))
2118 #t))
2119 (replace 'build
2120 (lambda _
2121 (let ((godot (assoc-ref %build-inputs "godot-headless")))
2122 (invoke (string-append godot "/bin/godot_server")
2123 "--export-pack" "Guix"
2124 "superstarfighter.pck" "project.godot"))
2125 #t))
2126 (replace 'install
2127 (lambda* (#:key inputs outputs #:allow-other-keys)
2128 (let* ((out (assoc-ref outputs "out"))
2129 (bin (string-append out "/bin"))
2130 (share (string-append out "/share"))
2131 (data (string-append share "/superstarfighter"))
2132 (icons (string-append share "/icons/hicolor/256x256/apps")))
2133 (install-file "superstarfighter.pck" data)
2134 (mkdir-p bin)
2135 (call-with-output-file (string-append bin "/superstarfighter")
2136 (lambda (port)
2137 (format port
2138 "#!/bin/sh~@
2139 exec ~a/bin/godot --main-pack ~a/superstarfighter.pck~%"
2140 (assoc-ref inputs "godot")
2141 data)
2142 (chmod port #o755)))
2143 (mkdir-p icons)
2144 (copy-file "icon.png" (string-append icons "/" ,name ".png"))
2145 (make-desktop-entry-file
2146 (string-append share "/applications/" ,name ".desktop")
2147 #:name "SuperStarfighter"
2148 #:comment "Fast-paced arcade combat game"
2149 #:exec ,name
2150 #:icon ,name
2151 #:categories '("Game" "ArcadeGame")))
2152 #t)))))
2153 (native-inputs
2154 `(("godot-headless" ,godot "headless")))
2155 (inputs
2156 `(("godot" ,godot)))
2157 (home-page "https://notapixel.itch.io/superstarfighter")
2158 (synopsis "Fast-paced local multiplayer arcade game")
2159 (description "In SuperStarfighter, up to four local players compete in a
21602D arena with fast-moving ships and missiles. Different game types are
2161available, as well as a single-player mode with AI-controlled ships.")
2162 (license (list license:expat ; game
2163 license:silofl1.1)))) ; fonts
2164
0ceb7c19
MB
2165(define %ufoai-commit "a542a87a891f96b1ab2c44d35b2f6f16859a5019")
2166(define %ufoai-revision "0")
2167(define %ufoai-version (git-version "2.6.0_dev" %ufoai-revision %ufoai-commit))
2168(define ufoai-source
2169 (origin
2170 (method git-fetch)
2171 (uri (git-reference
2172 (url "git://git.code.sf.net/p/ufoai/code") ;HTTPS fails mid-clone
2173 (commit %ufoai-commit)))
2174 (file-name (string-append "ufoai-" %ufoai-version "-checkout"))
2175 (sha256
2176 (base32
2177 "024s7b9rcg7iw8i2p72gwnvabk23ljlq0nldws0y4b6hpwzyn1wz"))
2178 (modules '((guix build utils)
2179 (srfi srfi-1)
2180 (ice-9 ftw)))
2181 (snippet
2182 '(begin
2183 ;; Delete ~32MiB of bundled dependencies.
2184 (with-directory-excursion "src/libs"
2185 (for-each delete-file-recursively
2186 (lset-difference equal? (scandir ".")
2187 '("." ".." "gtest" "mumble"))))
2188
2189 ;; Use relative path to Lua headers.
2190 (substitute* "src/common/scripts_lua.h"
2191 (("\\.\\./libs/lua/") ""))
2192
2193 ;; Adjust Makefile targets to not depend on 'ufo2map', since we build
2194 ;; it as a separate package. This way we don't need to make the same
2195 ;; adjustments for 'ufoai-data' and 'ufoai' below.
2196 (substitute* "build/maps.mk"
2197 (("\\./ufo2map") "ufo2map")
2198 (("maps: ufo2map") "maps:"))
2199 (substitute* "build/modules/testall.mk"
2200 (("testall: ufo2map") "testall:"))
2201
2202 ;; If no cURL headers are found, the build system will try to include
2203 ;; the bundled version, even when not required. Prevent that.
2204 (substitute* "build/default.mk"
2205 (("^include src/libs/curl/lib/Makefile\\.inc")
2206 ""))
2207
2208 ;; While here, improve reproducibility by adding the '-X' flag to the
2209 ;; zip command used to create the map files, in order to prevent time
2210 ;; stamps from making it into the generated archives.
2211 (substitute* "build/data.mk"
2212 (("\\$\\(call ZIP\\)")
2213 "$(call ZIP) -X"))
2214 #t))))
2215
2216(define-public ufo2map
2217 (package
2218 (name "ufo2map")
2219 (version %ufoai-version)
2220 (home-page "https://ufoai.org/")
2221 (source ufoai-source)
2222 (build-system gnu-build-system)
2223 (arguments
2224 '(#:configure-flags '("CC=gcc" "CXX=g++"
2225 "--enable-release"
2226 "--enable-ufo2map"
2227 "--disable-uforadiant"
2228 "--disable-cgame-campaign"
2229 "--disable-cgame-multiplayer"
2230 "--disable-cgame-skirmish"
2231 "--disable-game"
2232 "--disable-memory"
2233 "--disable-testall"
2234 "--disable-ufoded"
2235 "--disable-ufo"
2236 "--disable-ufomodel"
2237 "--disable-ufoslicer")
2238 #:tests? #f ;no tests
2239 #:phases (modify-phases %standard-phases
2240 (replace 'configure
2241 (lambda* (#:key (configure-flags '()) #:allow-other-keys)
2242 ;; The home-made configure script does not understand
2243 ;; some of the default flags of gnu-build-system.
2244 (apply invoke "./configure" configure-flags)))
2245 (replace 'install
2246 (lambda* (#:key outputs #:allow-other-keys)
2247 (let ((out (assoc-ref outputs "out")))
2248 (install-file "ufo2map" (string-append out "/bin"))
2249 (install-file "debian/ufo2map.6"
2250 (string-append out "/share/man/man6"))
2251 #t))))))
2252 (native-inputs
2253 `(("pkg-config" ,pkg-config)))
2254 (inputs
2255 `(("libjpeg" ,libjpeg-turbo)
2256 ("libpng" ,libpng)
2257 ("lua" ,lua-5.1)
2258 ("sdl-union" ,(sdl-union (list sdl2 sdl2-mixer sdl2-ttf)))))
2259 (synopsis "UFO: AI map generator")
2260 (description
2261 "This package provides @command{ufo2map}, a program used to generate
2262maps for the UFO: Alien Invasion strategy game.")
2263 (license license:gpl2+)))
2264
2265(define ufoai-data
2266 (package
2267 (name "ufoai-data")
2268 (version %ufoai-version)
2269 (home-page "https://ufoai.org/")
2270 (source ufoai-source)
2271 (build-system gnu-build-system)
2272 (arguments
2273 '(#:tests? #f
2274 #:configure-flags '("CC=gcc" "CXX=g++")
2275 #:phases (modify-phases %standard-phases
2276 (replace 'configure
2277 (lambda* (#:key outputs (configure-flags '()) #:allow-other-keys)
2278 (apply invoke "./configure" configure-flags)))
2279 (replace 'build
2280 (lambda* (#:key (parallel-build? #t) #:allow-other-keys)
2281 (invoke "make"
2282 "-j" (if parallel-build?
2283 (number->string (parallel-job-count))
2284 "1")
2285 "maps")))
2286 (add-after 'build 'pack
2287 (lambda _
2288 (invoke "make" "pk3")))
2289 (replace 'install
2290 (lambda* (#:key outputs #:allow-other-keys)
2291 (let ((out (assoc-ref outputs "out")))
2292 (for-each (lambda (file)
2293 (install-file file out))
2294 (find-files "base" "\\.pk3$"))
2295 #t))))))
2296 (native-inputs
2297 `(("python" ,python-2)
2298 ("ufo2map" ,ufo2map)
2299 ("which" ,which)
2300 ("zip" ,zip)))
2301 (synopsis "UFO: AI data files")
2302 (description
2303 "This package contains maps and other assets for UFO: Alien Invasion.")
2304 ;; Most assets are available under either GPL2 or GPL2+. Some use other
2305 ;; licenses, see LICENSES for details.
2306 (license (list license:gpl2+ license:gpl2 license:cc-by3.0
2307 license:cc-by-sa3.0 license:public-domain))))
2308
2309(define-public ufoai
2310 (package
2311 (name "ufoai")
2312 (version %ufoai-version)
2313 (home-page "https://ufoai.org/")
2314 (source ufoai-source)
2315 (build-system gnu-build-system)
2316 (arguments
2317 `(#:configure-flags
2318 (list (string-append "--prefix=" (assoc-ref %outputs "out"))
2319 (string-append "--datadir=" (assoc-ref %outputs "out")
2320 "/share/games/ufo")
2321 "CC=gcc" "CXX=g++"
2322 "--enable-release"
2323 "--enable-game"
2324 "--disable-ufo2map"
2325 "--disable-dependency-tracking"
2326
2327 ;; Disable hard links to prevent huge NARs.
2328 "--disable-hardlinkedgame"
2329 "--disable-hardlinkedcgame")
2330 #:phases (modify-phases %standard-phases
2331 (add-after 'unpack 'symlink-data-files
2332 (lambda* (#:key inputs #:allow-other-keys)
2333 (let ((data (assoc-ref inputs "ufoai-data")))
2334 ;; Symlink the data files to where the build system
2335 ;; expects to find them. Ultimately these files are
2336 ;; copied to $out/share/games/ufoai/base, losing the
2337 ;; symlinks; we could fix that after install, but it
2338 ;; does not make a big difference in practice due to
2339 ;; deduplication.
2340 (with-directory-excursion "base"
2341 (for-each (lambda (file)
2342 (symlink file (basename file)))
2343 (find-files data "\\.pk3$")))
2344 #t)))
2345 (add-before 'configure 'create-language-files
2346 (lambda _
2347 (invoke "make" "lang")))
2348 (replace 'configure
2349 (lambda* (#:key outputs (configure-flags '()) #:allow-other-keys)
2350 (apply invoke "./configure" configure-flags)))
2351 (replace 'check
2352 (lambda* (#:key tests? #:allow-other-keys)
2353 (if tests?
2354 (invoke "./testall")
2355 (format #t "test suite not run~%"))
2356 #t))
2357 (add-after 'install 'install-man-pages
2358 (lambda* (#:key outputs #:allow-other-keys)
2359 (let* ((out (assoc-ref outputs "out"))
2360 (man6 (string-append out "/share/man/man6")))
2361 (install-file "debian/ufo.6" man6)
2362 (install-file "debian/ufoded.6" man6)
2363 #t))))
2364
2365 ;; TODO: Some map tests occasionally fail because of randomness issues,
2366 ;; e.g. not enough generated aliens. The test runner also fails early
2367 ;; in the build container with 'failed to shutdown server'?
2368 #:tests? #f))
2369 (native-inputs
2370 `(("gettext" ,gettext-minimal)
2371 ("pkg-config" ,pkg-config)
2372 ("python" ,python-2)
2373 ("ufo2map" ,ufo2map)
2374 ("ufoai-data" ,ufoai-data)))
2375 (inputs
2376 `(("curl" ,curl)
2377 ("libjpeg" ,libjpeg-turbo)
2378 ("libogg" ,libogg)
2379 ("libpng" ,libpng)
2380 ("libtheora" ,libtheora)
2381 ("libvorbis" ,libvorbis)
2382 ("libxml2" ,libxml2)
2383 ("lua" ,lua-5.1)
2384 ("mesa" ,mesa)
2385 ("minixml" ,minixml)
2386 ("sdl-union" ,(sdl-union (list sdl2 sdl2-mixer sdl2-ttf)))
2387 ("zlib" ,zlib)))
2388 (synopsis "Turn-based tactical strategy game")
2389 (description
2390 "UFO: Alien Invasion is a tactical strategy game set in the year 2084.
2391You control a secret organisation charged with defending Earth from a brutal
2392alien enemy. Build up your bases, prepare your team, and dive head-first into
2393the fast and flowing turn-based combat.
2394
2395Over the long term you will need to conduct research into the alien threat to
2396figure out their mysterious goals and use their powerful weapons for your own
2397ends. You will produce unique items and use them in combat against your
2398enemies.
2399
2400You can also use them against your friends with the multiplayer functionality.
2401
2402Warning: This is a pre-release version of UFO: AI! Some things may not work
2403properly.")
2404
2405 ;; The game code and most assets are GPL2+, but we use GPL2 only here
2406 ;; because some assets do not use the "or later" clause. Many individual
2407 ;; assets use Creative Commons or Public Domain; see the LICENSE file.
2408 (license (delete license:gpl2+ (package-license ufoai-data)))))
2409
a20b084a
JD
2410(define-public xshogi
2411 (package
2412 (name "xshogi")
2413 (version "1.4.2")
2414 (source
2415 (origin
2416 (method url-fetch)
2417 (uri (string-append "mirror://gnu/gnushogi/xshogi-"
2418 version ".tar.gz"))
2419 (sha256
2420 (base32
2421 "1dns0nhymak44by18sv48m4xb2skiwbi2i3nb9hl6w9iwd2i2brf"))))
2422 (build-system gnu-build-system)
2423 (inputs
2424 `(("libxaw" ,libxaw)
2425 ("libxt" ,libxt)))
6fd52309 2426 (home-page "https://www.gnu.org/software/gnushogi/")
2f1d20a8 2427 (synopsis "User interface for gnushogi")
a20b084a
JD
2428 (description "A graphical user interface for the package @code{gnushogi}.")
2429 ;; Contains a copy of GPLv3 but the licence notices simply
2430 ;; state "GNU General Public Licence" without specifying a version.
2431 (license license:gpl1+)))
2432
649220ad 2433(define-public abbaye
3da5dca3 2434 (package
649220ad 2435 (name "abbaye")
efc12a81 2436 (version "2.0.1")
3da5dca3
DT
2437 (source
2438 (origin
feb50ac6
TGR
2439 (method git-fetch)
2440 (uri (git-reference
b0e7b699 2441 (url "https://github.com/nevat/abbayedesmorts-gpl")
feb50ac6
TGR
2442 (commit (string-append "v" version))))
2443 (file-name (git-file-name name version))
3da5dca3 2444 (sha256
feb50ac6 2445 (base32 "1pwqf7r9bqb2p3xrw9i7y8pgr1401fy3mnnqpb1qkhmdl3gqi9hb"))
efc12a81
AFN
2446 (modules '((guix build utils)))
2447 (snippet
2448 ;; Unbundle fonts.
6cbee49d
MW
2449 '(begin
2450 (delete-file-recursively "fonts")
2451 #t))))
3da5dca3
DT
2452 (build-system gnu-build-system)
2453 (arguments
efc12a81 2454 '(#:make-flags '("CC=gcc")
aec05972
AK
2455 #:phases (modify-phases %standard-phases
2456 (add-after 'set-paths 'set-sdl-paths
61599438
AK
2457 (lambda* (#:key inputs #:allow-other-keys)
2458 (setenv "CPATH"
2459 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
2460 "/include/SDL:"
2461 (or (getenv "CPATH") "")))))
aec05972
AK
2462 (add-after 'patch-source-shebangs 'patch-makefile
2463 (lambda* (#:key outputs #:allow-other-keys)
2464 ;; Replace /usr with package output directory.
efc12a81
AFN
2465 (substitute* "Makefile"
2466 (("/usr") (assoc-ref outputs "out")))))
aec05972
AK
2467 (add-before 'install 'make-install-dirs
2468 (lambda* (#:key outputs #:allow-other-keys)
2469 (let ((prefix (assoc-ref outputs "out")))
2470 ;; Create directories that the makefile assumes exist.
2471 (mkdir-p (string-append prefix "/bin"))
2472 (mkdir-p (string-append prefix "/share/applications"))
2473 (mkdir-p (string-append prefix "/share/pixmaps")))))
2474 ;; No configure script.
2475 (delete 'configure))
3da5dca3
DT
2476 #:tests? #f)) ;; No check target.
2477 (native-inputs `(("pkg-config" ,pkg-config)))
efc12a81
AFN
2478 (inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer)))))
2479 (home-page "https://github.com/nevat/abbayedesmorts-gpl")
3da5dca3
DT
2480 (synopsis "GNU/Linux port of the indie game \"l'Abbaye des Morts\"")
2481 (description "L'Abbaye des Morts is a 2D platform game set in 13th century
2482France. The Cathars, who preach about good Christian beliefs, were being
2483expelled by the Catholic Church out of the Languedoc region in France. One of
2484them, called Jean Raymond, found an old church in which to hide, not knowing
2485that beneath its ruins lay buried an ancient evil.")
efc12a81 2486 (license license:gpl3)))
a83c6a64 2487
b76c94e6
CAW
2488(define-public angband
2489 (package
2490 (name "angband")
4c957744 2491 (version "4.2.1")
b76c94e6
CAW
2492 (source
2493 (origin
2494 (method url-fetch)
d321d35a 2495 (uri (string-append "https://rephial.org/downloads/"
9a0d324a
EF
2496 (version-major+minor version)
2497 "/angband-" version ".tar.gz"))
b76c94e6 2498 (sha256
4c957744 2499 (base32 "03qdavkj2ik02mqjxmlm5bn17ba3yxb1rirp8ghnxy3bsk4kbmxc"))
b76c94e6
CAW
2500 (modules '((guix build utils)))
2501 (snippet
2502 ;; So, some of the sounds/graphics/tilesets are under different
2503 ;; licenses... some of them even nonfree! This is a console-only
2504 ;; version of this package so we just remove them.
2505 ;; In the future, if someone tries to make a graphical variant of
2506 ;; this package, they can deal with that mess themselves. :)
2507 '(begin
6cbee49d
MW
2508 (for-each (lambda (subdir)
2509 (let ((lib-subdir (string-append "lib/" subdir)))
2510 (delete-file-recursively lib-subdir)))
2511 '("fonts" "icons" "sounds" "tiles"))
b76c94e6 2512 (substitute* "lib/Makefile"
e5e24819 2513 ;; And don't try to invoke makefiles in the directories we removed.
b76c94e6 2514 (("gamedata customize help screens fonts tiles sounds icons user")
6cbee49d
MW
2515 "gamedata customize help screens user"))
2516 #t))))
b76c94e6
CAW
2517 (build-system gnu-build-system)
2518 (arguments
aeb6d9a6 2519 `(#:tests? #f ; no check target
b76c94e6
CAW
2520 #:configure-flags (list (string-append "--bindir=" %output "/bin"))
2521 #:phases
2522 (modify-phases %standard-phases
9a0d324a 2523 (replace 'bootstrap
b76c94e6
CAW
2524 (lambda _
2525 (substitute* "acinclude.m4"
2526 (("ncursesw5-config") "ncursesw6-config"))
9a0d324a 2527 (invoke "sh" "autogen.sh"))))))
b76c94e6
CAW
2528 (native-inputs
2529 `(("autoconf" ,autoconf)
2530 ("automake" ,automake)))
2531 (inputs `(("ncurses" ,ncurses)))
d321d35a 2532 (home-page "https://rephial.org/")
b76c94e6
CAW
2533 (synopsis "Dungeon exploration roguelike")
2534 (description "Angband is a Classic dungeon exploration roguelike. Explore
2535the depths below Angband, seeking riches, fighting monsters, and preparing to
2536fight Morgoth, the Lord of Darkness.")
2537 (license license:gpl2)))
2538
a83c6a64
EB
2539(define-public pingus
2540 (package
2541 (name "pingus")
2542 (version "0.7.6")
2543 (source
2544 (origin
472c36bd
EF
2545 (method git-fetch)
2546 (uri (git-reference
4b889d3a 2547 (url "https://gitlab.com/pingus/pingus.git")
472c36bd
EF
2548 (commit (string-append "v" version))))
2549 (file-name (git-file-name name version))
a83c6a64
EB
2550 (sha256
2551 (base32
472c36bd
EF
2552 "0wp06kcmknsnxz7bjnsndb8x062z7r23fb3yrnbfnj68qhz18y74"))
2553 (patches (search-patches "pingus-boost-headers.patch"
2ed626bf
MB
2554 "pingus-sdl-libs-config.patch"))
2555 (modules '((guix build utils)))
2556 (snippet
2557 '(begin
2558 (substitute* "src/pingus/screens/demo_session.cpp"
2559 (("#include <iostream>")
2560 ;; std::function moved to <functional> with C++ 11.
2561 ;; Remove this for versions newer than 0.7.6.
2562 "#include <iostream>\n#include <functional>"))
2563 #t))))
a83c6a64
EB
2564 (build-system gnu-build-system)
2565 (native-inputs `(("pkg-config" ,pkg-config)
3f3f8f49 2566 ("scons-python2" ,scons-python2)))
a83c6a64
EB
2567 (inputs `(("sdl" ,sdl)
2568 ("sdl-image" ,sdl-image)
2569 ("sdl-mixer" ,sdl-mixer)
2570 ("mesa" ,mesa)
00c09300 2571 ("glu" ,glu)
a83c6a64
EB
2572 ("libpng" ,libpng)
2573 ("boost" ,boost)))
2574 (arguments
3f3f8f49
AI
2575 '(#:make-flags (list (string-append "PREFIX=" %output))
2576 #:tests? #f ; no check target
a83c6a64 2577 #:phases
3f127147 2578 (modify-phases %standard-phases
3f3f8f49 2579 (delete 'configure)))) ; no configure script
5f578231 2580 (home-page "https://pingus.seul.org/")
a83c6a64
EB
2581 (synopsis "Lemmings clone")
2582 (description
2583 "Pingus is a free Lemmings-like puzzle game in which the player takes
2584command of a bunch of small animals and has to guide them through levels.
2585Since the animals walk on their own, the player can only influence them by
2586giving them commands, like build a bridge, dig a hole, or redirect all animals
2587in the other direction. Multiple such commands are necessary to reach the
2588level's exit. The game is presented in a 2D side view.")
2589 ;; Some source files are under bsd-3 and gpl2+ licenses.
024e2c17 2590 (license license:gpl3+)))
dff62423
JD
2591
2592(define-public talkfilters
2593 (package
2594 (name "talkfilters")
2595 (version "2.3.8")
2596 (source
2597 (origin
2598 (method url-fetch)
189c0b33
TGR
2599 (uri (string-append "http://www.hyperrealm.com/talkfilters/"
2600 "talkfilters-" version ".tar.gz"))
dff62423
JD
2601 (sha256
2602 (base32 "19nc5vq4bnkjvhk8srqddzhcs93jyvpm9r6lzjzwc1mgf08yg0a6"))))
2603 (build-system gnu-build-system)
6fd52309 2604 (home-page "https://www.gnu.org/software/talkfilters/")
dff62423
JD
2605 (synopsis "Convert English text to humorous dialects")
2606 (description "The GNU Talk Filters are programs that convert English text
2607into stereotyped or otherwise humorous dialects. The filters are provided as
2608a C library, so they can easily be integrated into other programs.")
024e2c17
DT
2609 (license license:gpl2+)))
2610
85182663
VS
2611(define-public taisei
2612 (package
2613 (name "taisei")
2614 (version "1.3.1")
2615 (source
2616 (origin
2617 (method url-fetch)
2618 (uri (string-append "https://github.com/taisei-project/"
2619 "taisei/releases/download/v" version
2620 "/taisei-v" version ".tar.xz"))
2621 (sha256
2622 (base32 "11f9mlqmzy1lszwcc1nsbar9q1hs4ml6pbm52hqfd4q0f4x3ln46"))))
2623 (build-system meson-build-system)
2624 (arguments
2625 `(#:build-type "release" ;comment out for bug-reporting (and cheats)
2626 #:configure-flags
2627 (list "-Dr_default=gles30"
2628 "-Dr_gles20=true"
2629 "-Dr_gles30=true"
2630 "-Dshader_transpiler=true")))
2631 (native-inputs
2632 `(("pkg-config" ,pkg-config)
2633 ("python" ,python)
2634 ("python-docutils" ,python-docutils)
2635 ("python-pygments" ,python-pygments)))
2636 (inputs
2637 `(("freetype" ,freetype)
2638 ("libpng" ,libpng)
2639 ("libwebp" ,libwebp)
2640 ("libzip" ,libzip)
2641 ("mesa" ,mesa)
2642 ("openssl" ,openssl)
2643 ("opusfile" ,opusfile)
2644 ("sdl2" ,sdl2)
2645 ("sdl2-mixer" ,sdl2-mixer)
2646 ("shaderc" ,shaderc)
2647 ("spirv-cross" ,spirv-cross)
2648 ("zlib" ,zlib)))
2649 (home-page "https://taisei-project.org/")
2650 (synopsis "Shoot'em up fangame and libre clone of Touhou Project")
2651 (description
2652 "The player controls a character (one of three: Good, Bad, and Dead),
2653dodges the missiles (lots of it cover the screen, but the character's hitbox
2654is very small), and shoot at the adversaries that keep appear on the screen.")
2655 (license (list ;;game
2656 license:expat
2657 ;;resources/00-taisei.pkgdir/bgm/
2658 ;;atlas/portraits/
2659 license:cc-by4.0
2660 ;;miscellaneous
2661 license:cc0
2662 license:public-domain))))
2663
3cf118a1
CS
2664(define-public cmatrix
2665 (package
2666 (name "cmatrix")
14736727 2667 (version "2.0")
3cf118a1
CS
2668 (source
2669 (origin
14736727
OP
2670 (method git-fetch)
2671 (uri (git-reference
b0e7b699 2672 (url "https://github.com/abishekvashok/cmatrix")
14736727
OP
2673 (commit (string-append "v" version))))
2674 (file-name (git-file-name name version))
3cf118a1
CS
2675 (sha256
2676 (base32
14736727 2677 "1h9jz4m4s5l8c3figaq46ja0km1gimrkfxm4dg7mf4s84icmasbm"))))
3cf118a1 2678 (build-system gnu-build-system)
14736727
OP
2679 (native-inputs
2680 `(("autoconf" ,autoconf)
2681 ("automake" ,automake)))
3cf118a1
CS
2682 (arguments
2683 '(#:phases
3f127147
TGR
2684 (modify-phases %standard-phases
2685 (replace 'configure
2686 (lambda* (#:key outputs #:allow-other-keys)
2687 ;; This old ‘configure’ script doesn't support
2688 ;; variables passed as arguments.
2689 (let ((out (assoc-ref outputs "out")))
2690 (setenv "CONFIG_SHELL" (which "bash"))
a4aca0b8
RW
2691 (invoke "./configure"
2692 (string-append "--prefix=" out))))))))
3cf118a1 2693 (inputs `(("ncurses" ,ncurses)))
07af3e5e 2694 (home-page "http://www.asty.org/cmatrix")
3cf118a1
CS
2695 (synopsis "Simulate the display from \"The Matrix\"")
2696 (description "CMatrix simulates the display from \"The Matrix\" and is
2697based on the screensaver from the movie's website. It works with terminal
2698settings up to 132x300 and can scroll lines all at the same rate or
2699asynchronously and at a user-defined speed.")
024e2c17 2700 (license license:gpl2+)))
ae9cb418
JD
2701
2702(define-public chess
2703 (package
2704 (name "chess")
9f6efa11 2705 (version "6.2.7")
ae9cb418
JD
2706 (source
2707 (origin
2708 (method url-fetch)
2709 (uri (string-append "mirror://gnu/chess/gnuchess-" version
2710 ".tar.gz"))
2711 (sha256
2712 (base32
9f6efa11 2713 "0ilq4bfl0lwyzf11q7n2skydjhalfn3bgxhrp5hjxs5bc5d6fdp5"))))
ae9cb418 2714 (build-system gnu-build-system)
6fd52309 2715 (home-page "https://www.gnu.org/software/chess/")
ae9cb418
JD
2716 (synopsis "Full chess implementation")
2717 (description "GNU Chess is a chess engine. It allows you to compete
2718against the computer in a game of chess, either through the default terminal
2719interface or via an external visual interface such as GNU XBoard.")
dc9b1835
EF
2720 (properties '((upstream-name . "gnuchess")
2721 (ftp-directory . "/chess")))
024e2c17 2722 (license license:gpl3+)))
ae9cb418 2723
a6b55314 2724(define freedink-engine
bb3b71ce
SB
2725 (package
2726 (name "freedink-engine")
2ee05bb9 2727 (version "109.6")
bb3b71ce
SB
2728 (source (origin
2729 (method url-fetch)
2730 (uri (string-append "mirror://gnu/freedink/freedink-" version
2731 ".tar.gz"))
8677e869 2732 (patches (search-patches "freedink-engine-fix-sdl-hints.patch"))
bb3b71ce
SB
2733 (sha256
2734 (base32
2ee05bb9 2735 "00hhk1bjdrc1np2qz44sa5n1mb62qzwxbvsnws3vpms6iyn3a2sy"))))
bb3b71ce 2736 (build-system gnu-build-system)
a9249f58
KK
2737 (arguments
2738 `(#:configure-flags '("--disable-embedded-resources")
2739 #:phases
2740 (modify-phases %standard-phases
2741 (add-after 'unpack 'disable-graphical-tests
2742 (lambda _
2743 ;; These tests require a graphical interface.
2744 (substitute* "src/Makefile.am"
2745 (("test_gfx_fonts TestIOGfxDisplay") ""))
e7e69e56
JG
2746 #t))
2747 (add-before 'bootstrap 'autoreconf
2748 (lambda _
2749 ;; automake is out of date in the source
2750 ;; autoreconf updates the automake scripts
2751 (invoke "autoreconf")
2752 ;; Build fails when autom4te.cache exists.
2753 (delete-file-recursively "autom4te.cache")
a9249f58
KK
2754 #t)))))
2755 (native-inputs `(("autoconf" ,autoconf)
2756 ("automake" ,automake)
2757 ("cxxtest" ,cxxtest)
2758 ("gettext" ,gettext-minimal)
2759 ("help2man" ,help2man)
bb3b71ce 2760 ("pkg-config" ,pkg-config)))
a9249f58
KK
2761 (inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer
2762 sdl2-ttf sdl2-gfx)))
bb3b71ce 2763 ("fontconfig" ,fontconfig)
a9249f58 2764 ("glm" ,glm)))
f9eab0be
EF
2765 (properties '((ftp-directory . "/freedink")
2766 (upstream-name . "freedink")))
6fd52309 2767 (home-page "https://www.gnu.org/software/freedink/")
bb3b71ce
SB
2768 (synopsis "Twisted adventures of young pig farmer Dink Smallwood")
2769 (description
2770 "GNU FreeDink is a free and portable re-implementation of the engine
2771for the role-playing game Dink Smallwood. It supports not only the original
2772game data files but it also supports user-produced game mods or \"D-Mods\".
2773To that extent, it also includes a front-end for managing all of your D-Mods.")
024e2c17 2774 (license license:gpl3+)))
bb3b71ce 2775
a6b55314 2776(define freedink-data
bb3b71ce
SB
2777 (package
2778 (name "freedink-data")
32d92d2c 2779 (version "1.08.20190120")
bb3b71ce
SB
2780 (source (origin
2781 (method url-fetch)
2782 (uri (string-append "mirror://gnu/freedink/freedink-data-"
32d92d2c 2783 version ".tar.gz"))
bb3b71ce
SB
2784 (sha256
2785 (base32
32d92d2c 2786 "17gvryadlxk172mblbsil7hina1z5wahwaxnr6g3mdq57dvl8pvi"))))
bb3b71ce
SB
2787 (build-system gnu-build-system)
2788 (arguments
3f127147
TGR
2789 `(#:phases
2790 (modify-phases %standard-phases
2791 (delete 'configure) ; no configure script
2792 (delete 'check)) ; no tests
bb3b71ce 2793 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))))
151fa926 2794 (properties '((ftp-directory . "/freedink")))
6fd52309 2795 (home-page "https://www.gnu.org/software/freedink/")
bb3b71ce
SB
2796 (synopsis "Game data for GNU Freedink")
2797 (description
2798 "This package contains the game data of GNU Freedink.")
024e2c17 2799 (license license:gpl3+)))
bb3b71ce 2800
2926e950
KK
2801(define-public freedink-dfarc
2802 (package
2803 (name "freedink-dfarc")
2804 (version "3.14")
2805 (source (origin
2806 (method url-fetch)
2807 (uri (string-append "mirror://gnu/freedink/dfarc-"
2808 version ".tar.gz"))
2809 (sha256
2810 (base32
2811 "1yp8n3w426xnlp10xk06vfi2y3k9xrcfyck7s7qs1v0ys7n284d5"))))
2812 (build-system gnu-build-system)
2813 (native-inputs
2814 `(("intltool" ,intltool)))
2815 (inputs
2816 `(("bzip2" ,bzip2)
2817 ("wxwidgets" ,wxwidgets)))
8ca06df5
EF
2818 (properties '((ftp-directory . "/freedink")
2819 (upstream-name . "dfarc")))
2926e950
KK
2820 (home-page "https://www.gnu.org/software/freedink/")
2821 (synopsis "Front-end for managing and playing Dink Modules")
2822 (description "DFArc makes it easy to play and manage the GNU FreeDink game
2823and its numerous D-Mods.")
2824 (license license:gpl3+)))
bb3b71ce 2825
a6b55314
LC
2826(define-public freedink
2827 ;; This is a wrapper that tells the engine where to find the data.
2828 (package (inherit freedink-engine)
2829 (name "freedink")
2830 (build-system trivial-build-system)
2831 (arguments
2832 '(#:builder (begin
2833 (use-modules (guix build utils))
2834
2835 (let* ((output (assoc-ref %outputs "out"))
2836 (bin (string-append output "/bin"))
2837 (executable (string-append bin "/freedink")))
2838 (mkdir-p bin)
2839 (call-with-output-file executable
2840 (lambda (port)
2841 (format port "#!~a/bin/sh
2842exec ~a/bin/freedink -refdir ~a/share/dink\n"
2843 (assoc-ref %build-inputs "bash")
2844 (assoc-ref %build-inputs "engine")
2845 (assoc-ref %build-inputs "data"))
e3cfef22
MW
2846 (chmod port #o777)))
2847 #t))
a6b55314
LC
2848 #:modules ((guix build utils))))
2849 (inputs `(("engine" ,freedink-engine)
2850 ("data" ,freedink-data)
2851 ("bash" ,bash)))
2852 (native-inputs '())))
2853
ae9cb418
JD
2854(define-public xboard
2855 (package
2856 (name "xboard")
9835458f 2857 (version "4.9.1")
ae9cb418
JD
2858 (source
2859 (origin
2860 (method url-fetch)
2861 (uri (string-append "mirror://gnu/xboard/xboard-" version
2862 ".tar.gz"))
2863 (sha256
2864 (base32
9835458f 2865 "1mkh36xnnacnz9r00b5f9ld9309k32jv6mcavklbdnca8bl56bib"))))
ae9cb418 2866 (build-system gnu-build-system)
4e530049
SB
2867 (inputs
2868 `(("gtk+" ,gtk+-2)
2869 ("librsvg" ,librsvg)))
9835458f
EF
2870 (native-inputs
2871 `(("texinfo" ,texinfo)
2872 ("pkg-config" ,pkg-config)))
6fd52309 2873 (home-page "https://www.gnu.org/software/xboard/")
ae9cb418
JD
2874 (synopsis "Graphical user interface for chess programs")
2875 (description "GNU XBoard is a graphical board for all varieties of chess,
2876including international chess, xiangqi (Chinese chess), shogi (Japanese chess)
2877and Makruk. Several lesser-known variants are also supported. It presents a
2878fully interactive graphical interface and it can load and save games in the
2879Portable Game Notation.")
024e2c17 2880 (license license:gpl3+)))
11c38cbe 2881
a21b42e2
SB
2882(define-public gtypist
2883 (package
2884 (name "gtypist")
2885 (version "2.9.5")
2886 (source (origin
2887 (method url-fetch)
2888 (uri (string-append "mirror://gnu/gtypist/gtypist-"
2889 version ".tar.xz"))
2890 (sha256
2891 (base32
2892 "0xzrkkmj0b1dw3yr0m9hml2y634cc4h61im6zwcq57s7285z8fn1"))
2893 (modules '((guix build utils)))
2894 (snippet
2895 ;; We do not provide `ncurses.h' within an `ncursesw'
2896 ;; sub-directory, so patch the source accordingly. See
2897 ;; <http://bugs.gnu.org/19018>.
6cbee49d
MW
2898 '(begin
2899 (for-each (lambda (file)
2900 (substitute* file
2901 (("ncursesw/ncurses.h")
2902 "ncurses.h")))
2903 (find-files "." "configure$|\\.c$"))
2904 #t))))
a21b42e2
SB
2905 (build-system gnu-build-system)
2906 (inputs `(("ncurses" ,ncurses)
2907 ("perl" ,perl)))
6fd52309 2908 (home-page "https://www.gnu.org/software/gtypist/")
a21b42e2
SB
2909 (synopsis "Typing tutor")
2910 (description
2911 "GNU Typist is a universal typing tutor. It can be used to learn and
2912practice touch-typing. Several tutorials are included; in addition to
2913tutorials for the standard QWERTY layout, there are also tutorials for the
2914alternative layouts Dvorak and Colemak, as well as for the numpad. Tutorials
2915are primarily in English, however some in other languages are provided.")
024e2c17 2916 (license license:gpl3+)))
13d18626 2917
024e2c17
DT
2918(define-public irrlicht
2919 (package
2920 (name "irrlicht")
f90b2dbd 2921 (version "1.8.4")
024e2c17
DT
2922 (source (origin
2923 (method url-fetch)
2924 (uri (string-append
2925 "mirror://sourceforge/irrlicht/Irrlicht%20SDK/"
2926 (version-major+minor version)
2927 "/" version "/irrlicht-" version ".zip"))
2928 (sha256
2929 (base32
7b8a7536
EF
2930 "0cz4z4dwrv5ypl19ll67wl6jjpy5k6ly4vr042w4br88qq5jhazl"))
2931 (patches (search-patches "irrlicht-use-system-libs.patch"))
2932 (modules '((guix build utils)))
2933 (snippet
2934 '(begin
2935 (for-each delete-file-recursively
2936 '("bin" ; bundled compiled Windows binaries"
2937 "source/Irrlicht/MacOSX"
2938 "source/Irrlicht/bzip2"
2939 "source/Irrlicht/jpeglib"
2940 "source/Irrlicht/libpng"
2941 "source/Irrlicht/lzma"
2942 "source/Irrlicht/zlib"))
2943 (delete-file "source/Irrlicht/glext.h")
2944 (delete-file "source/Irrlicht/glxext.h")
2945 (delete-file "source/Irrlicht/wglext.h")
2946 #t))))
024e2c17
DT
2947 (build-system gnu-build-system)
2948 (arguments
3f127147
TGR
2949 `(#:phases
2950 (modify-phases %standard-phases
7b8a7536
EF
2951 (add-after 'unpack 'chdir-to-source
2952 (lambda _
2953 ;; The actual source is buried a few directories deep.
2954 (chdir "source/Irrlicht/")
2955 #t))
2956 (add-after 'chdir-to-source 'fix-build-env
3f127147
TGR
2957 (lambda* (#:key outputs #:allow-other-keys)
2958 (let ((out (assoc-ref outputs "out")))
2959 (substitute* "Makefile"
2960 (("INSTALL_DIR = /usr/local/lib")
7b8a7536
EF
2961 (string-append "INSTALL_DIR = " out "/lib"))
2962 ;; Add '-fpermissive' to the CXXFLAGS
2963 (("-Wall") "-Wall -fpermissive")) ; CImageLoaderJPG.cpp
3f127147
TGR
2964 ;; The Makefile assumes these directories exist.
2965 (mkdir-p (string-append out "/lib"))
2966 (mkdir-p (string-append out "/include")))))
3f127147
TGR
2967 (delete 'configure)) ; no configure script
2968 #:tests? #f ; no check target
024e2c17 2969 #:make-flags '("CC=gcc" "sharedlib")))
024e2c17 2970 (inputs
7b8a7536 2971 `(("bzip2" ,bzip2)
4bd428a7 2972 ("libjpeg" ,libjpeg-turbo)
7b8a7536
EF
2973 ("libpng" ,libpng)
2974 ("libx11" ,libx11)
2975 ("libxxf86vm" ,libxxf86vm)
2976 ("mesa" ,mesa)))
024e2c17
DT
2977 (synopsis "3D game engine written in C++")
2978 (description
2979 "The Irrlicht Engine is a high performance realtime 3D engine written in
2980C++. Features include an OpenGL renderer, extensible materials, scene graph
2981management, character animation, particle and other special effects, support
2982for common mesh file formats, and collision detection.")
2983 (home-page "http://irrlicht.sourceforge.net/")
2984 (license license:zlib)))
7e51e5bc 2985
c23c50c7
RW
2986(define-public mars
2987 ;; The latest release on SourceForge relies on an unreleased version of SFML
2988 ;; with a different API, so we take the latest version from the official
2989 ;; repository on Github.
698bd297 2990 (let ((commit "c855d044094a1d92317e38935d81ba938946132e")
c23c50c7
RW
2991 (revision "1"))
2992 (package
2993 (name "mars")
698bd297 2994 (version (string-append "0.7.5." revision "." (string-take commit 7) ))
c23c50c7
RW
2995 (source (origin
2996 (method git-fetch)
2997 (uri (git-reference
b0e7b699 2998 (url "https://github.com/thelaui/M.A.R.S.")
c23c50c7 2999 (commit commit)))
00a82e83 3000 (file-name (git-file-name name version))
c23c50c7
RW
3001 (sha256
3002 (base32
3003 "1r4c5gap1z2zsv4yjd34qriqkxaq4lb4rykapyzkkdf4g36lc3nh"))
fc1adab1
AK
3004 (patches (search-patches "mars-sfml-2.3.patch"
3005 "mars-install.patch"))))
c23c50c7
RW
3006 (build-system cmake-build-system)
3007 (arguments
3008 `(#:tests? #f ; There are no tests
3009 #:phases
3010 (modify-phases %standard-phases
3011 (add-after 'unpack 'fix-install-path
3012 (lambda _
3013 (substitute* "src/CMakeLists.txt"
3014 (("\\$\\{CMAKE_INSTALL_PREFIX\\}/games")
3015 "${CMAKE_INSTALL_PREFIX}/bin"))
3016 #t))
3017 (add-after 'unpack 'fix-data-path
3018 (lambda* (#:key outputs #:allow-other-keys)
3019 (substitute* "src/System/settings.cpp"
3020 (("C_dataPath = \"./data/\";")
3021 (string-append "C_dataPath = \""
3022 (assoc-ref outputs "out")
3023 "/share/games/marsshooter/\";")))
3024 #t)))))
3025 (inputs
3026 `(("mesa" ,mesa)
3027 ("fribidi" ,fribidi)
3028 ("taglib" ,taglib)
3029 ("sfml" ,sfml)))
75c33c88 3030 (home-page "http://mars-game.sourceforge.net/")
c23c50c7
RW
3031 (synopsis "2D space shooter")
3032 (description
3033 "M.A.R.S. is a 2D space shooter with pretty visual effects and
3034attractive physics. Players can battle each other or computer controlled
3035enemies in different game modes such as space ball, death match, team death
3036match, cannon keep, and grave-itation pit.")
3037 (license license:gpl3+))))
3038
6e206ac7
DT
3039(define-public minetest
3040 (package
3041 (name "minetest")
cc7b170d 3042 (version "5.3.0")
6e206ac7 3043 (source (origin
e8d8b485
EF
3044 (method git-fetch)
3045 (uri (git-reference
1fbd7c7f
MB
3046 (url "https://github.com/minetest/minetest")
3047 (commit version)))
e8d8b485 3048 (file-name (git-file-name name version))
6e206ac7
DT
3049 (sha256
3050 (base32
cc7b170d 3051 "03ga3j3cg38w4lg4d4qxasmnjdl8n3lbizidrinanvyfdyvznyh6"))
7fc90282
EF
3052 (modules '((guix build utils)))
3053 (snippet
1fbd7c7f 3054 '(begin
d9580a26
MB
3055 ;; Delete bundled libraries.
3056 (delete-file-recursively "lib")
3057 #t))))
6e206ac7
DT
3058 (build-system cmake-build-system)
3059 (arguments
10903356 3060 '(#:configure-flags
1fbd7c7f
MB
3061 (list "-DRUN_IN_PLACE=0"
3062 "-DENABLE_FREETYPE=1"
3063 "-DENABLE_GETTEXT=1"
3064 "-DENABLE_SYSTEM_JSONCPP=TRUE"
3065 (string-append "-DIRRLICHT_INCLUDE_DIR="
3066 (assoc-ref %build-inputs "irrlicht")
3067 "/include/irrlicht")
3068 (string-append "-DCURL_INCLUDE_DIR="
3069 (assoc-ref %build-inputs "curl")
3070 "/include/curl"))
3071 #:tests? #f)) ;no check target
6e206ac7
DT
3072 (native-search-paths
3073 (list (search-path-specification
3074 (variable "MINETEST_SUBGAME_PATH")
af070955 3075 (files '("share/minetest/games")))))
6e206ac7
DT
3076 (native-inputs
3077 `(("pkg-config" ,pkg-config)))
3078 (inputs
7fc90282 3079 `(("curl" ,curl)
8c064d01 3080 ("freetype" ,freetype)
7fc90282
EF
3081 ("gettext" ,gettext-minimal)
3082 ("gmp" ,gmp)
3083 ("irrlicht" ,irrlicht)
3084 ("jsoncpp" ,jsoncpp)
4bd428a7 3085 ("libjpeg" ,libjpeg-turbo)
7fc90282 3086 ("libpng" ,libpng)
6e206ac7
DT
3087 ("libogg" ,libogg)
3088 ("libvorbis" ,libvorbis)
7fc90282 3089 ("libxxf86vm" ,libxxf86vm)
6e206ac7 3090 ("luajit" ,luajit)
7fc90282 3091 ("mesa" ,mesa)
165dc8bd 3092 ("ncurses" ,ncurses)
7fc90282 3093 ("openal" ,openal)
6e206ac7
DT
3094 ("sqlite" ,sqlite)))
3095 (propagated-inputs
3096 `(("minetest-data" ,minetest-data)))
3097 (synopsis "Infinite-world block sandbox game")
3098 (description
3099 "Minetest is a sandbox construction game. Players can create and destroy
3100various types of blocks in a three-dimensional open world. This allows
3101forming structures in every possible creation, on multiplayer servers or as a
3102single player. Mods and texture packs allow players to personalize the game
3103in different ways.")
b7388a08 3104 (home-page "https://www.minetest.net/")
6e206ac7 3105 (license license:lgpl2.1+)))
77264d15 3106
cc7b170d
JK
3107(define minetest-data
3108 (package
3109 (name "minetest-data")
3110 (version (package-version minetest))
3111 (source (origin
3112 (method git-fetch)
3113 (uri (git-reference
3114 (url "https://github.com/minetest/minetest_game")
3115 (commit version)))
3116 (file-name (git-file-name name version))
3117 (sha256
3118 (base32
3119 "1liciwlh013z5h08ib0psjbwn5wkvlr937ir7kslfk4vly984cjx"))))
3120 (build-system trivial-build-system)
3121 (native-inputs
3122 `(("source" ,source)))
3123 (arguments
3124 `(#:modules ((guix build utils))
3125 #:builder (begin
3126 (use-modules (guix build utils))
3127 (let ((install-dir (string-append
3128 %output
3129 "/share/minetest/games/minetest_game")))
3130 (mkdir-p install-dir)
3131 (copy-recursively
3132 (assoc-ref %build-inputs "source")
3133 install-dir)
3134 #t))))
3135 (synopsis "Main game data for the Minetest game engine")
3136 (description
3137 "Game data for the Minetest infinite-world block sandbox game.")
3138 (home-page "https://www.minetest.net/")
3139 (license license:lgpl2.1+)))
3140
d8fcde01
LP
3141(define-public minetest-mineclone
3142 (package
3143 (name "minetest-mineclone")
3144 (version "0.66.2")
3145 (source (origin
3146 (method git-fetch)
3147 (uri (git-reference
3148 (url "https://git.minetest.land/Wuzzy/MineClone2")
3149 (commit version)))
3150 (file-name (git-file-name name version))
3151 (sha256
3152 (base32
3153 "0miszzlzplpvaj0j1yii9867ydr42wsaqa9g6grxdrci75p05g00"))))
3154 (build-system copy-build-system)
3155 (arguments
3156 `(#:install-plan
3157 '(("." "share/minetest/games/mineclone"))))
3158 (synopsis "Minecraft clone based on Minetest engine")
3159 (description
3160 "MineClone is a Minetest subgame, that aims to recreate Minecraft as
3161closely as the engine allows.")
3162 (home-page "https://content.minetest.net/packages/Wuzzy/mineclone2/")
3163 (license license:gpl3+)))
3164
77264d15
SB
3165(define glkterm
3166 (package
3167 (name "glkterm")
3168 (version "1.0.4")
3169 (source
3170 (origin
3171 (method url-fetch)
3172 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
3173 "glk/implementations/glkterm-104.tar.gz"))
3174 (sha256
3175 (base32
3176 "0zlj9nlnkdlvgbiliczinirqygiq8ikg5hzh5vgcmnpg9pvnwga7"))))
3177 (build-system gnu-build-system)
3178 (propagated-inputs `(("ncurses" ,ncurses))) ; required by Make.glkterm
3179 (arguments
3180 '(#:tests? #f ; no check target
3181 #:phases
3f127147
TGR
3182 (modify-phases %standard-phases
3183 (replace 'install
3184 (lambda* (#:key outputs #:allow-other-keys)
3185 (let* ((out (assoc-ref outputs "out"))
3186 (inc (string-append out "/include"))
3187 (lib (string-append out "/lib")))
3f127147
TGR
3188 (for-each
3189 (lambda (file)
3190 (install-file file inc))
3191 '("glk.h" "glkstart.h" "gi_blorb.h" "gi_dispa.h" "Make.glkterm"))
3f127147
TGR
3192 (install-file "libglkterm.a" lib))
3193 #t))
3194 (delete 'configure)))) ; no configure script
77264d15
SB
3195 (home-page "http://www.eblong.com/zarf/glk/")
3196 (synopsis "Curses Implementation of the Glk API")
3197 (description
3198 "Glk defines a portable API for applications with text UIs. It was
3199primarily designed for interactive fiction, but it should be suitable for many
3200interactive text utilities, particularly those based on a command line.
3201This is an implementation of the Glk library which runs in a terminal window,
dbe7095b 3202using the @code{curses.h} library for screen control.")
77264d15
SB
3203 (license (license:fsf-free "file://README"))))
3204
3205(define-public glulxe
3206 (package
3207 (name "glulxe")
b2e3d59c 3208 (version "0.5.4")
77264d15
SB
3209 (source
3210 (origin
3211 (method url-fetch)
3212 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
b2e3d59c 3213 "glulx/interpreters/glulxe/glulxe-054.tar.gz"))
77264d15
SB
3214 (sha256
3215 (base32
b2e3d59c 3216 "0vipydg6ra90yf9b3ipgppwxyb2xdhcxwvirgjy0v20wlf56zhhz"))))
77264d15
SB
3217 (build-system gnu-build-system)
3218 (inputs `(("glk" ,glkterm)))
3219 (arguments
3f127147 3220 '(#:tests? #f ; no check target
77264d15
SB
3221 #:make-flags
3222 (let* ((glk (assoc-ref %build-inputs "glk")))
3223 (list (string-append "GLKINCLUDEDIR=" glk "/include")
3224 (string-append "GLKLIBDIR=" glk "/lib")
3225 (string-append "GLKMAKEFILE=" "Make.glkterm")))
3226 #:phases
3f127147
TGR
3227 (modify-phases %standard-phases
3228 (replace 'install
3229 (lambda* (#:key outputs #:allow-other-keys)
3230 (let* ((out (assoc-ref outputs "out"))
3231 (bin (string-append out "/bin")))
3f127147
TGR
3232 (install-file "glulxe" bin))
3233 #t))
3234 (delete 'configure)))) ; no configure script
bac03797 3235 (home-page "https://www.eblong.com/zarf/glulx/")
77264d15
SB
3236 (synopsis "Interpreter for Glulx VM")
3237 (description
3238 "Glulx is a 32-bit portable virtual machine intended for writing and
3239playing interactive fiction. It was designed by Andrew Plotkin to relieve
3240some of the restrictions in the venerable Z-machine format. This is the
92bdf777 3241reference interpreter, using the Glk API.")
b2e3d59c 3242 (license license:expat)))
72b703cd 3243
ce94fcfd
CB
3244(define-public fifechan
3245 (package
3246 (name "fifechan")
3247 (version "0.1.5")
3248 (source (origin
3249 (method url-fetch)
3250 (uri (string-append "https://codeload.github.com/fifengine/"
3251 "fifechan/tar.gz/" version))
3252 (file-name (string-append name "-" version ".tar.gz"))
3253 (sha256
3254 (base32
3255 "0wxs9vz5x9y8chghd8vp7vfk089lfb0qnzggi17zrqkrngs5zgi9"))))
3256 (build-system cmake-build-system)
3257 (inputs
3258 `(("sdl2" ,sdl2)
3259 ("sdl2-image" ,sdl2-image)
3260 ("mesa" ,mesa)))
3261 (arguments
3262 '(#:tests? #f)) ; No included tests
3263 (home-page "https://fifengine.github.io/fifechan/")
3264 (synopsis "Cross platform GUI library specifically for games")
3265 (description
3266 "Fifechan is a lightweight cross platform GUI library written in C++
3267specifically designed for games. It has a built in set of extendable GUI
3268Widgets, and allows users to create more.")
3269 (license license:lgpl2.1+)))
3270
2372a5f9
CB
3271(define-public fifengine
3272 (package
3273 (name "fifengine")
3274 (version "0.4.2")
3275 (source (origin
3276 (method url-fetch)
3277 (uri (string-append "https://codeload.github.com/fifengine/"
3278 "fifengine/tar.gz/" version))
3279 (file-name (string-append name "-" version ".tar.gz"))
5afffbef 3280 (patches (search-patches "fifengine-swig-compat.patch"))
2372a5f9
CB
3281 (sha256
3282 (base32
3283 "1y4grw25cq5iqlg05rnbyxw1njl11ypidnlsm3qy4sm3xxdvb0p8"))))
3284 (build-system cmake-build-system)
3285 (arguments
3286 `(#:tests? #f ; TODO The test running fails to run some tests.
3287 #:modules ((srfi srfi-1)
3288 (guix build cmake-build-system)
3289 (guix build utils))
3290 #:configure-flags
3291 (list
3292 (string-append "-DOPENALSOFT_INCLUDE_DIR="
3293 (assoc-ref %build-inputs "openal")
3294 "/include/AL")
3295 (string-append "-DPYTHON_SITE_PACKAGES="
3296 (assoc-ref %outputs "out")
5afffbef
MB
3297 "/lib/python"
3298 ,(version-major+minor (package-version python))
3299 "/site-packages"))
2372a5f9
CB
3300 #:phases
3301 (modify-phases %standard-phases
3302 (add-after 'unpack 'patch-run_tests.py
3303 (lambda _
3304 ;; Patch the test runner to exit with a status of 1 if any test
3305 ;; fails, to allow detecting failures.
3306 (substitute* "run_tests.py"
3307 (("ERROR\\. One or more tests failed!'\\)")
3308 "ERROR. One or more tests failed!')
3309\t\texit(1)"))
3310 #t))
3311 ;; Run tests after installation so that we can make use of the built
3312 ;; python modules.
3313 (delete 'check)
3314 (add-after 'install 'check
3315 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
3316 (define python-version
3317 (let* ((version (last (string-split
3318 (assoc-ref inputs "python")
3319 #\-)))
3320 (components (string-split version #\.))
3321 (major+minor (take components 2)))
3322 (string-join major+minor ".")))
3323
3324 (when tests?
3325 ;; Set PYTHONPATH so that python finds the installed modules.
3326 (setenv "PYTHONPATH"
3327 (string-append (getenv "PYTHONPATH") ":"
3328 (assoc-ref outputs "out")
3329 "/lib/python"
3330 python-version
3331 "/site-packages"))
3332 ;; The tests require an X server.
3333 (system "Xvfb :1 &")
3334 (setenv "DISPLAY" ":1")
3335 (setenv "XDG_RUNTIME_DIR" "/tmp")
3336 ;; Run tests
3337 (chdir ,(string-append "../" name "-" version))
3338 (invoke "python3" "run_tests.py" "-a"))
3339 #t)))))
3340 (inputs
3341 `(("sdl2" ,sdl2)
3342 ("sdl2-image" ,sdl2-image)
3343 ("sdl2-ttf" ,sdl2-ttf)
3344 ("tinyxml" ,tinyxml)
3345 ("openal" ,openal)
3346 ("libogg" ,libogg)
3347 ("glew" ,glew)
3348 ("libvorbis" ,libvorbis)
3349 ("boost" ,boost)
3350 ("fifechan" ,fifechan)
3351 ("swig" ,swig)
3352 ("python" ,python)))
3353 (native-inputs
3354 `(("python" ,python)
3355 ("swig" ,swig)
3356 ("xvfb" ,xorg-server)))
3357 (propagated-inputs
3358 `(("python-future" ,python-future)))
3359 (home-page "https://www.fifengine.net/")
3360 (synopsis "FIFE is a multi-platform isometric game engine written in C++")
3361 (description
3362 "@acronym{FIFE, Flexible Isometric Free Engine} is a multi-platform
3363isometric game engine. Python bindings are included allowing users to create
3364games using Python as well as C++.")
3365 (license license:lgpl2.1+)))
3366
35481e8b
SB
3367(define-public fizmo
3368 (package
3369 (name "fizmo")
50e1d36c 3370 (version "0.8.5")
35481e8b
SB
3371 (source (origin
3372 (method url-fetch)
6ad191ba 3373 (uri (string-append "https://fizmo.spellbreaker.org/source/"
07178276 3374 "fizmo-" version ".tar.gz"))
35481e8b
SB
3375 (sha256
3376 (base32
50e1d36c 3377 "1amyc4n41jf08kxmdgkk30bzzx54miaxa97w28f417qwn8lrl98w"))))
35481e8b
SB
3378 (build-system gnu-build-system)
3379 (arguments
3380 '(#:configure-flags
3381 (let ((libjpeg (assoc-ref %build-inputs "libjpeg"))
3382 (ncurses (assoc-ref %build-inputs "ncurses")))
50e1d36c 3383 (list (string-append "--with-jpeg-includedir=" libjpeg "/include")))))
35481e8b
SB
3384 (native-inputs
3385 `(("pkg-config" ,pkg-config)))
3386 (inputs
32199e9a 3387 `(("freetype" ,freetype)
4bd428a7 3388 ("libjpeg" ,libjpeg-turbo)
35481e8b
SB
3389 ("libpng" ,libpng)
3390 ("libsndfile" ,libsndfile)
3391 ("libxml2" ,libxml2)
3392 ("ncurses" ,ncurses)
32199e9a 3393 ("sdl2" ,sdl2)))
6ad191ba 3394 (home-page "https://fizmo.spellbreaker.org/")
35481e8b
SB
3395 (synopsis "Z-machine interpreter")
3396 (description
3397 "Fizmo is a console-based Z-machine interpreter. It is used to play
e881752c 3398interactive fiction, also known as text adventures, which were implemented
35481e8b
SB
3399either by Infocom or created using the Inform compiler.")
3400 (license license:bsd-3)))
3401
fc936b65
DH
3402(define-public gnugo
3403 (package
3404 (name "gnugo")
3405 (version "3.8")
3406 (source (origin
3407 (method url-fetch)
3408 (uri (string-append "mirror://gnu/gnugo/gnugo-" version
3409 ".tar.gz"))
3410 (sha256
3411 (base32
3412 "0wkahvqpzq6lzl5r49a4sd4p52frdmphnqsfdv7gdp24bykdfs6s"))))
3413 (build-system gnu-build-system)
3414 (inputs `(("readline" ,readline)))
4cc78cb3 3415 (synopsis "Play the game of Go")
7c125ce0
AK
3416 (description
3417 "GNU Go is a program that plays the game of Go, in which players
3418place stones on a grid to form territory or capture other stones. While
3419it can be played directly from the terminal, rendered in ASCII characters,
3420it is also possible to play GNU Go with 3rd party graphical interfaces or
3421even in Emacs. It supports the standard game storage format (SGF, Smart
3422Game Format) and inter-process communication format (GMP, Go Modem
3423Protocol).")
6fd52309 3424 (home-page "https://www.gnu.org/software/gnugo/")
fc936b65 3425 (license license:gpl3+)))
67fa7a27
CAW
3426
3427(define-public extremetuxracer
3428 (package
3429 (name "extremetuxracer")
c2d468a1 3430 (version "0.8.0")
67fa7a27
CAW
3431 (source (origin
3432 (method url-fetch)
3433 (uri (string-append
966a543b 3434 "mirror://sourceforge/extremetuxracer/releases/"
67fa7a27
CAW
3435 version "/etr-" version ".tar.xz"))
3436 (sha256
3437 (base32
c2d468a1 3438 "05ysaxvsgps9fxc421kdifsxmc1sn6n79cjaa0k0i3fs9qqrja2b"))))
67fa7a27
CAW
3439 (build-system gnu-build-system)
3440 (native-inputs
3441 `(("pkg-config" ,pkg-config)))
3442 (inputs
b8a35cce
RW
3443 `(("glu" ,glu)
3444 ("sfml" ,sfml)))
5bc0ac96
TGR
3445 (synopsis "High-speed arctic racing game based on Tux Racer")
3446 ;; Snarfed straight from Debian.
67fa7a27
CAW
3447 (description "Extreme Tux Racer, or etracer as it is called for short, is
3448a simple OpenGL racing game featuring Tux, the Linux mascot. The goal of the
3449game is to slide down a snow- and ice-covered mountain as quickly as possible,
3450avoiding the trees and rocks that will slow you down.
3451
3452Collect herrings and other goodies while sliding down the hill, but avoid fish
3453bones.
3454
3455This game is based on the GPL version of the famous game TuxRacer.")
3b3b60d0 3456 (home-page "https://sourceforge.net/projects/extremetuxracer/")
67fa7a27 3457 (license license:gpl2+)))
7a4d0509 3458
1a0633e7
RW
3459(define-public supertuxkart
3460 (package
3461 (name "supertuxkart")
3747ecb1 3462 (version "1.1")
1a0633e7
RW
3463 (source
3464 (origin
3465 (method url-fetch)
3466 (uri (string-append "mirror://sourceforge/supertuxkart/SuperTuxKart/"
3467 version "/supertuxkart-" version "-src.tar.xz"))
3468 (sha256
3469 (base32
3747ecb1 3470 "1s0ai07g3sswck9mr0142989mrgzzq1njc1qxk5als5b245jpc79"))
1a0633e7
RW
3471 (modules '((guix build utils)))
3472 (snippet
3473 ;; Delete bundled library sources
3474 '(begin
56a48582
PL
3475 ;; Supertuxkart uses modified versions of the Irrlicht engine
3476 ;; and the bullet library. The developers gave an explanation
3477 ;; here: http://forum.freegamedev.net/viewtopic.php?f=17&t=3906
3747ecb1 3478 ;; FIXME: try to unbundle angelscript and libraqm
1a0633e7
RW
3479 (for-each delete-file-recursively
3480 '("lib/zlib"
3481 "lib/libpng"
3482 "lib/jpeglib"
3483 "lib/glew"
56a48582
PL
3484 "lib/wiiuse"
3485 "lib/enet"))
1a0633e7
RW
3486 #t))))
3487 (build-system cmake-build-system)
3488 (arguments
3489 `(#:tests? #f ; no check target
3490 #:configure-flags
3491 (list "-DUSE_WIIUSE=0"
56a48582 3492 ;; Do not use the bundled zlib, glew and enet.
1a0633e7 3493 "-DNO_IRR_COMPILE_WITH_ZLIB_=TRUE"
56a48582
PL
3494 "-DUSE_SYSTEM_GLEW=TRUE"
3495 "-DUSE_SYSTEM_ENET=TRUE"
3747ecb1
KK
3496 ;; In order to use the system ENet library, IPv6 support (added in
3497 ;; SuperTuxKart version 1.1) must be disabled.
3498 "-DUSE_IPV6=FALSE"
17c3f776
RH
3499 ;; FIXME: needs libopenglrecorder
3500 "-DBUILD_RECORDER=0"
1a0633e7 3501 ;; Irrlicht returns an integer instead of a boolean
56a48582 3502 "-DCMAKE_C_FLAGS=-fpermissive")))
1a0633e7
RW
3503 (inputs
3504 `(("glew" ,glew)
3505 ("zlib" ,zlib)
3506 ("openal" ,openal)
3507 ("libvorbis" ,libvorbis)
3508 ("freetype" ,freetype)
3509 ("fribidi" ,fribidi)
3747ecb1 3510 ("harfbuzz" ,harfbuzz)
1a0633e7
RW
3511 ("mesa" ,mesa)
3512 ("libx11" ,libx11)
3513 ("libxrandr" ,libxrandr)
3514 ("curl" ,curl)
3515 ;; The following input is needed to build the bundled and modified
3516 ;; version of irrlicht.
4bd428a7 3517 ("libjpeg" ,libjpeg-turbo)
56a48582
PL
3518 ("openssl" ,openssl)
3519 ("enet" ,enet)))
1a0633e7
RW
3520 (native-inputs
3521 `(("pkg-config" ,pkg-config)))
3747ecb1 3522 (home-page "https://supertuxkart.net/Main_Page")
1a0633e7
RW
3523 (synopsis "3D kart racing game")
3524 (description "SuperTuxKart is a 3D kart racing game, with a focus on
3525having fun over realism. You can play with up to 4 friends on one PC, racing
3526against each other or just trying to beat the computer; single-player mode is
3527also available.")
3528 (license license:gpl3+)))
3529
a1c1943b
CB
3530(define-public unknown-horizons
3531 (package
3532 (name "unknown-horizons")
3533 (version "2019.1")
3534 (source (origin
3535 (method url-fetch)
3536 (uri (string-append "https://codeload.github.com/unknown-horizons/"
3537 "unknown-horizons/tar.gz/" version))
3538 (file-name (string-append name "-" version ".tar.gz"))
3539 (sha256
3540 (base32
4c7d16c5
TGR
3541 "1n747p7h0qp48szgp262swg0xh8kxy1bw8ag1qczs4i26hyzs5x4"))
3542 (patches (search-patches "unknown-horizons-python-3.8-distro.patch"))))
a1c1943b
CB
3543 (build-system python-build-system)
3544 (arguments
3545 '(#:phases
3546 (modify-phases %standard-phases
3547 (add-before 'build 'set-HOME
3548 (lambda _
5c83e8ec
TGR
3549 (setenv "HOME" "/tmp")
3550 #t))
a1c1943b
CB
3551 (add-after 'build 'build-extra
3552 (lambda _
3553 (invoke "python3" "./setup.py" "build_i18n")
3554 (invoke "python3" "horizons/engine/generate_atlases.py" "2048")
3555 #t))
3556 (add-after 'install 'patch
3557 (lambda* (#:key outputs #:allow-other-keys)
3558 (let ((out (assoc-ref outputs "out")))
3559 (substitute* (string-append out "/bin/unknown-horizons")
3560 (("os\\.chdir\\(get\\_content\\_dir\\_parent_path\\(\\)\\)")
3561 (string-append "os.chdir(\""
3562 (assoc-ref outputs "out")
3563 "/share/unknown-horizons\")"))))
3564 #t))
4c7d16c5
TGR
3565 (add-before 'check 'fix-tests-with-pytest>=4
3566 (lambda _
3567 (substitute* "tests/conftest.py"
3568 (("pytest_namespace")
3569 "pytest_configure")
3570 (("get_marker")
3571 "get_closest_marker"))
3572 #t))
a1c1943b
CB
3573 ;; TODO: Run GUI tests as well
3574 (replace 'check
3575 (lambda _
3576 (substitute* "horizons/constants.py"
3577 (("IS_DEV_VERSION = False")
3578 "IS_DEV_VERSION = True"))
3579 (invoke "pytest" "tests")
3580 (substitute* "horizons/constants.py"
3581 (("IS_DEV_VERSION = True")
3582 "IS_DEV_VERSION = False"))
3583 #t)))))
3584 (inputs
3585 `(("fifengine" ,fifengine)
3586 ("python:tk" ,python "tk")
3587 ("python-pillow" ,python-pillow)
3588 ("python-pyyaml" ,python-pyyaml)))
3589 (native-inputs
3590 `(("intltool" ,intltool)
4c7d16c5 3591 ("python-distro" ,python-distro)
a1c1943b
CB
3592
3593 ;; Required for tests
3594 ("python-greenlet" ,python-greenlet)
3595 ("python-polib" ,python-polib)
3596 ("python-pytest" ,python-pytest)
3597 ("python-pytest-mock" ,python-pytest-mock)))
3598 (home-page "http://unknown-horizons.org/")
3599 (synopsis "Isometric realtime strategy, economy and city building simulation")
3600 (description
3601 "Unknown Horizons is a 2D realtime strategy simulation with an emphasis
3602on economy and city building. Expand your small settlement to a strong and
3603wealthy colony, collect taxes and supply your inhabitants with valuable
3604goods. Increase your power with a well balanced economy and with strategic
3605trade and diplomacy.")
3606 (license (list
3607 license:gpl2+ ; Covers code
3608 license:expat ; tests/dummy.py, ext/polib.py
3609 license:cc-by-sa3.0 ; Covers some media content
3610 license:cc-by3.0 ; Covers some media content
3611 license:bsd-3)))) ; horizons/ext/speaklater.py
3612
7a4d0509
SB
3613(define-public gnujump
3614 (package
3615 (name "gnujump")
3616 (version "1.0.8")
3617 (source (origin
3618 (method url-fetch)
3619 (uri (string-append "mirror://gnu/gnujump/gnujump-"
3620 version ".tar.gz"))
3621 (sha256
3622 (base32
3623 "05syy9mzbyqcfnm0hrswlmhwlwx54f0l6zhcaq8c1c0f8dgzxhqk"))))
3624 (build-system gnu-build-system)
3625 (arguments
3626 '(#:phases
3627 (modify-phases %standard-phases
3628 (add-before
3629 'configure 'link-libm
18a613fb
EF
3630 (lambda _ (setenv "LIBS" "-lm")))
3631 (add-after 'install 'create-desktop-entry
3632 (lambda* (#:key outputs #:allow-other-keys)
3633 (let* ((out (assoc-ref outputs "out"))
3634 (apps (string-append out "/share/applications")))
3635 (mkdir-p apps)
3636 (with-output-to-file
3637 (string-append apps "/gnujump.desktop")
3638 (lambda _
3639 (format #t
3640 "[Desktop Entry]~@
3641 Name=GNUjump~@
3642 Comment=Jump up the tower to survive~@
3643 Exec=~a/bin/gnujump~@
3644 Terminal=false~@
3645 Type=Application~@
3646 Categories=Game;ArcadeGame~%"
3647 out)))))))))
7a4d0509
SB
3648 (inputs
3649 `(("glu" ,glu)
b3546174 3650 ("mesa" ,mesa)
7a4d0509
SB
3651 ("sdl" ,sdl)
3652 ("sdl-image" ,sdl-image)
3653 ("sdl-mixer" ,sdl-mixer)))
3654 (home-page "http://gnujump.es.gnu.org/")
3655 (synopsis
3656 "Game of jumping to the next floor, trying not to fall")
3657 (description
3658 "GNUjump is a simple, yet addictive game in which you must jump from
3659platform to platform to avoid falling, while the platforms drop at faster rates
3660the higher you go. The game features multiplayer, unlimited FPS, smooth floor
3661falling, themeable graphics and sounds, and replays.")
3662 (license license:gpl3+)))
159093a7 3663
649220ad 3664(define-public wesnoth
159093a7 3665 (package
649220ad 3666 (name "wesnoth")
61d02cec 3667 (version "1.14.14")
159093a7
SB
3668 (source (origin
3669 (method url-fetch)
de67e922 3670 (uri (string-append "mirror://sourceforge/wesnoth/wesnoth-"
0c2e055e
TGR
3671 (version-major+minor version)
3672 "/wesnoth-" version "/"
3673 "wesnoth-" version ".tar.bz2"))
159093a7
SB
3674 (sha256
3675 (base32
61d02cec 3676 "1l7mdxn4kw938qz824057rqh99b7y9439a54s64n1xz95w77lp0r"))))
159093a7
SB
3677 (build-system cmake-build-system)
3678 (arguments
53402d43 3679 `(#:tests? #f)) ;no check target
159093a7 3680 (native-inputs
b94a6ca0 3681 `(("gettext" ,gettext-minimal)
159093a7
SB
3682 ("pkg-config" ,pkg-config)))
3683 (inputs
3684 `(("boost" ,boost)
3685 ("dbus" ,dbus)
3686 ("fribidi" ,fribidi)
3687 ("libvorbis" ,libvorbis)
e554d43d 3688 ("openssl" ,openssl)
159093a7 3689 ("pango" ,pango)
e554d43d
AI
3690 ("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
3691 (home-page "https://www.wesnoth.org/")
159093a7
SB
3692 (synopsis "Turn-based strategy game")
3693 (description
3694 "The Battle for Wesnoth is a fantasy, turn based tactical strategy game,
3695with several single player campaigns, and multiplayer games (both networked and
3696local).
3697
3698Battle for control on a range of maps, using variety of units which have
3699advantages and disadvantages against different types of attacks. Units gain
3700experience and advance levels, and are carried over from one scenario to the
3701next campaign.")
3702 (license license:gpl2+)))
c449a076 3703
649220ad 3704(define-public wesnoth-server
75abd864 3705 (package
649220ad
NG
3706 (inherit wesnoth)
3707 (name "wesnoth-server")
75abd864
AI
3708 (inputs
3709 `(("boost" ,boost)
e554d43d
AI
3710 ("icu4c" ,icu4c)
3711 ("openssl" ,openssl)
3712 ("sdl2" ,sdl2)))
75abd864 3713 (arguments
e554d43d
AI
3714 `(#:configure-flags '("-DENABLE_GAME=OFF")
3715 ,@(package-arguments wesnoth)))
75abd864
AI
3716 (synopsis "Dedicated @emph{Battle for Wesnoth} server")
3717 (description "This package contains a dedicated server for @emph{The
3718Battle for Wesnoth}.")))
3719
c449a076
EB
3720(define-public gamine
3721 (package
3722 (name "gamine")
87683add 3723 (version "1.6")
c449a076
EB
3724 (source (origin
3725 (method url-fetch)
3726 (uri (string-append "mirror://sourceforge/gamine-game/"
3727 "gamine-" version ".tar.gz"))
3728 (sha256
3729 (base32
87683add 3730 "1sc6f4445ciigd6yw0ri92746k4hk6ps0bvj9fm1gbp3c3fslk5n"))))
c449a076
EB
3731 (build-system gnu-build-system)
3732 (native-inputs
3733 `(("pkg-config" ,pkg-config)
3734 ("intltool" ,intltool)))
3735 (inputs
3736 `(("gstreamer" ,gstreamer)
87683add
TGR
3737 ("gst-plugins-base" ,gst-plugins-base) ; playbin plugin
3738 ("gst-plugins-good" ,gst-plugins-good) ; for wav playback
c449a076
EB
3739 ("gtk+" ,gtk+)))
3740 (arguments
3741 `(#:tests? #f
3742 #:make-flags
3743 (let ((out (assoc-ref %outputs "out")))
3744 (list (string-append "PREFIX=" out)
3745 (string-append "SYSCONFDIR=" out "/etc")))
3746 #:phases
3747 (modify-phases %standard-phases
3748 (delete 'configure)
3749 (add-after
3750 'install 'wrap-gamine
3751 (lambda* (#:key outputs #:allow-other-keys)
3752 (let ((out (assoc-ref outputs "out"))
3753 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
3754 (wrap-program (string-append out "/bin/gamine")
3755 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))))
3756 #t)))))
3757 (home-page "http://gamine-game.sourceforge.net/")
3758 (synopsis "Mouse and keyboard discovery for children")
3759 (description
3760 "Gamine is a game designed for young children who are learning to use the
3761mouse and keyboard. The child uses the mouse to draw colored dots and lines
3762on the screen and keyboard to display letters.")
3763 ;; Most files under gpl2+ or gpl3+, but eat.wav under gpl3
3764 (license license:gpl3)))
3765
2e2ed3cb
AK
3766(define-public manaplus
3767 (package
3768 (name "manaplus")
2b744c21 3769 (version "1.9.3.23")
2e2ed3cb
AK
3770 (source (origin
3771 (method url-fetch)
3772 (uri (string-append
074dd909 3773 "https://repo.manaplus.org/manaplus/download/"
2e2ed3cb
AK
3774 version "/manaplus-" version ".tar.xz"))
3775 (sha256
3776 (base32
2b744c21 3777 "1ky182p4svwdqm6cf7jbns85hidkhkhq4s17cs2p381f0klapfjz"))))
2e2ed3cb
AK
3778 (build-system gnu-build-system)
3779 (arguments
3780 '(#:configure-flags
3781 (list (string-append "CPPFLAGS=-I"
3782 (assoc-ref %build-inputs "sdl-union")
3783 "/include/SDL"))))
3784 (native-inputs
3785 `(("pkg-config" ,pkg-config)))
3786 (inputs
3787 `(("glu" ,glu)
3788 ("curl" ,curl)
3789 ("libxml2" ,libxml2)
3790 ("mesa" ,mesa)
2e2ed3cb 3791 ("sdl-union" ,(sdl-union))))
074dd909 3792 (home-page "https://manaplus.org")
2e2ed3cb
AK
3793 (synopsis "Client for 'The Mana World' and similar games")
3794 (description
3795 "ManaPlus is a 2D MMORPG client for game servers. It is the only
3796fully supported client for @uref{http://www.themanaworld.org, The mana
3797world}, @uref{http://evolonline.org, Evol Online} and
3798@uref{http://landoffire.org, Land of fire}.")
3799 ;; "src/debug/*" and "src/sdl2gfx/*" are under Zlib.
3800 ;; "data/themes/{golden-delicious,jewelry}/*" are under CC-BY-SA.
3801 ;; The rest is under GPL2+.
3802 (license (list license:gpl2+ license:zlib license:cc-by-sa4.0))))
03d521f9 3803
e9687748
AS
3804(define openttd-engine
3805 (package
3806 (name "openttd-engine")
842a9d8f 3807 (version "1.10.0")
e9687748
AS
3808 (source
3809 (origin (method url-fetch)
842a9d8f 3810 (uri (string-append "https://cdn.openttd.org/openttd-releases/"
e9687748
AS
3811 version "/openttd-" version "-source.tar.xz"))
3812 (sha256
3813 (base32
842a9d8f 3814 "0lz2y2rjc23k0d97y65cqhy2splw9cmrbvhgz0iqps8xkan1m8hv"))))
e9687748
AS
3815 (build-system gnu-build-system)
3816 (arguments
3817 `(#:tests? #f ; no "check" target
3818 #:phases
3819 (modify-phases %standard-phases
3820 ;; The build process fails if the configure script is passed the
3821 ;; option "--enable-fast-install".
3822 (replace 'configure
857b2f53
AI
3823 (lambda* (#:key inputs outputs (configure-flags '())
3824 #:allow-other-keys)
e9687748
AS
3825 (let ((out (assoc-ref outputs "out"))
3826 (lzo (assoc-ref inputs "lzo")))
369a91d9
RW
3827 (apply invoke "./configure"
3828 (string-append "--prefix=" out)
3829 ;; Provide the "lzo" path.
3830 (string-append "--with-liblzo2="
3831 lzo "/lib/liblzo2.a")
3832 ;; Put the binary in 'bin' instead of 'games'.
3833 "--binary-dir=bin"
3834 configure-flags)))))))
e9687748
AS
3835 (native-inputs `(("pkg-config" ,pkg-config)))
3836 (inputs
3a48d055 3837 `(("allegro" ,allegro)
e9687748
AS
3838 ("fontconfig" ,fontconfig)
3839 ("freetype" ,freetype)
3840 ("icu4c" ,icu4c)
3841 ("libpng" ,libpng)
3842 ("lzo" ,lzo)
3843 ("sdl" ,sdl)
3844 ("xz" ,xz)
3845 ("zlib" ,zlib)))
4cb0b5bf 3846 (synopsis "Transportation economics simulator game")
e9687748
AS
3847 (description "OpenTTD is a game in which you transport goods and
3848passengers by land, water and air. It is a re-implementation of Transport
3849Tycoon Deluxe with many enhancements including multiplayer mode,
3850internationalization support, conditional orders and the ability to clone,
b81b8943
KK
3851autoreplace and autoupdate vehicles. This package only includes the game
3852engine. When you start it you will be prompted to download a graphics set.")
532dba49 3853 (home-page "https://www.openttd.org/")
e9687748
AS
3854 ;; This package is GPLv2, except for a few files located in
3855 ;; "src/3rdparty/" which are under the 3-clause BSD, LGPLv2.1+ and Zlib
3856 ;; licenses. In addition, this software contains an in-game downloader
3857 ;; from which the user may find non-functional data licensed under
3858 ;; different terms.
3859 (license (list license:bsd-3 license:gpl2 license:lgpl2.1+ license:zlib))))
3860
4df9495e
KK
3861(define openttd-opengfx
3862 (package
3863 (name "openttd-opengfx")
c492b23f 3864 (version "0.6.0")
4df9495e
KK
3865 (source
3866 (origin
3867 (method url-fetch)
c492b23f 3868 (uri (string-append "https://cdn.openttd.org/opengfx-releases/"
4df9495e
KK
3869 version "/opengfx-" version "-source.tar.xz"))
3870 (sha256
3871 (base32
c492b23f 3872 "0qxc6gl2gxcrn1np88dnjgbaaakkkx96b13rcmy1spryc8c09hyr"))))
4df9495e
KK
3873 (build-system gnu-build-system)
3874 (arguments
3875 '(#:make-flags (list "CC=gcc"
3876 (string-append "INSTALL_DIR="
3877 (assoc-ref %outputs "out")
857b2f53 3878 "/share/games/openttd/baseset/opengfx"))
4df9495e
KK
3879 #:phases
3880 (modify-phases %standard-phases
3881 (replace 'configure
3882 (lambda _
3883 ;; Make sure HOME is writable for GIMP.
3884 (setenv "HOME" (getcwd))
3885
3886 ;; Redirect stdout, not stderr, to /dev/null. This prevents
3887 ;; dos2unix from receiving its version information as a flag.
3888 (substitute* "Makefile"
3889 (("\\$\\(UNIX2DOS\\) -q --version 2>/dev/null")
3890 "$(UNIX2DOS) -q --version 1>/dev/null")))))
3891 ;; The check phase for this package only checks the md5sums of the built
3892 ;; GRF files against the md5sums of the release versions. Because we use
3893 ;; different software versions than upstream does, some of the md5sums
3894 ;; are different. However, the package is still reproducible, it's safe
3895 ;; to disable this test.
c0959cc9
AI
3896 #:tests? #f
3897 #:parallel-build? #f))
4df9495e
KK
3898 (native-inputs `(("dos2unix" ,dos2unix)
3899 ("gimp" ,gimp)
3900 ("grfcodec" ,grfcodec)
3901 ("nml" ,nml)
c492b23f 3902 ("which" ,which)
4df9495e
KK
3903 ("python" ,python-2)))
3904 (home-page "http://dev.openttdcoop.org/projects/opengfx")
3905 (synopsis "Base graphics set for OpenTTD")
3906 (description
3907 "The OpenGFX projects is an implementation of the OpenTTD base grahics
3908set that aims to ensure the best possible out-of-the-box experience.
3909
3910OpenGFX provides you with...
3911@enumerate
3912@item All graphics you need to enjoy OpenTTD.
3913@item Uniquely drawn rail vehicles for every climate.
3914@item Completely snow-aware rivers.
3915@item Different river and sea water.
3916@item Snow-aware buoys.
3917@end enumerate")
3918 (license license:gpl2)))
3919
c17b0790
AI
3920(define openttd-opensfx
3921 (package
3922 (name "openttd-opensfx")
3923 (version "0.2.3")
3924 (source
3925 (origin
3926 (method url-fetch)
3927 (uri (string-append
3928 "https://binaries.openttd.org/extra/opensfx/"
3929 version "/opensfx-" version "-source.tar.gz"))
3930 (sha256
3931 (base32
3932 "03jxgp02ks31hmsdh4xh0xcpkb70ds8jakc9pfc1y9vdrdavh4p5"))))
3933 (build-system gnu-build-system)
3934 (native-inputs
3935 `(("catcodec" ,catcodec)
61506fe5 3936 ("python" ,python-2)))
c17b0790
AI
3937 (arguments
3938 `(#:make-flags
3939 (list (string-append "INSTALL_DIR=" %output
3940 "/share/games/openttd/baseset/opensfx"))
3941 #:phases
3942 (modify-phases %standard-phases
3943 (add-after 'unpack 'make-reproducible
3944 (lambda _
3945 ;; Remove the time dependency of the installed tarball by setting
3946 ;; the modification times if its members to 0.
3947 (substitute* "scripts/Makefile.def"
3948 (("-cf") " --mtime=@0 -cf"))
3949 #t))
3950 (delete 'configure))))
3951 (home-page "http://dev.openttdcoop.org/projects/opensfx")
3952 (synopsis "Base sounds for OpenTTD")
3953 (description "OpenSFX is a set of free base sounds for OpenTTD which make
3954it possible to play OpenTTD without requiring the proprietary sound files from
3955the original Transport Tycoon Deluxe.")
3956 (license license:cc-sampling-plus-1.0)))
3957
823e1218
AI
3958(define openttd-openmsx
3959 (package
3960 (name "openttd-openmsx")
3961 (version "0.3.1")
3962 (source
3963 (origin
3964 (method url-fetch)
3965 (uri (string-append
3966 "https://binaries.openttd.org/extra/openmsx/"
3967 version "/openmsx-" version "-source.tar.gz"))
3968 (sha256
3969 (base32
3970 "0nskq97a6fsv1v6d62zf3yb8whzhqnlh3lap3va3nzvj7csjgf7c"))))
3971 (build-system gnu-build-system)
3972 (native-inputs
61506fe5 3973 `(("python" ,python-2)))
823e1218
AI
3974 (arguments
3975 `(#:make-flags
3976 (list (string-append "INSTALL_DIR=" %output
3977 "/share/games/openttd/baseset"))
3978 #:phases
3979 (modify-phases %standard-phases
3980 (delete 'configure)
3981 (add-after 'install 'post-install
3982 ;; Rename openmsx-version to openmsx
3983 (lambda* (#:key outputs #:allow-other-keys)
3984 (let ((install-directory (string-append (assoc-ref outputs "out")
3985 "/share/games/openttd/baseset")))
3986 (rename-file (string-append install-directory "/openmsx-" ,version)
3987 (string-append install-directory "/openmsx"))
3988 #t))))))
3989 (home-page "http://dev.openttdcoop.org/projects/openmsx")
3990 (synopsis "Music set for OpenTTD")
3991 (description "OpenMSX is a music set for OpenTTD which makes it possible
3992to play OpenTTD without requiring the proprietary music from the original
3993Transport Tycoon Deluxe.")
3994 (license license:gpl2)))
3995
e9687748
AS
3996(define-public openttd
3997 (package
3998 (inherit openttd-engine)
ca508f1c
KK
3999 (name "openttd")
4000 (arguments
857b2f53
AI
4001 `(#:configure-flags
4002 (list (string-append "--with-midi=" (assoc-ref %build-inputs "timidity++")
4003 "/bin/timidity"))
4004 ,@(substitute-keyword-arguments (package-arguments openttd-engine)
4005 ((#:phases phases)
4006 `(modify-phases ,phases
4007 (add-after 'install 'install-data
4008 (lambda* (#:key inputs outputs #:allow-other-keys)
4009 (for-each
4010 (lambda (input)
4011 (copy-recursively (assoc-ref inputs input)
4012 (assoc-ref outputs "out")))
4013 (list "opengfx" "openmsx" "opensfx"))
4014 #t)))))))
4015 (inputs
4016 `(("timidity++" ,timidity++)
4017 ,@(package-inputs openttd-engine)))
ca508f1c
KK
4018 (native-inputs
4019 `(("opengfx" ,openttd-opengfx)
857b2f53
AI
4020 ("openmsx" ,openttd-openmsx)
4021 ("opensfx" ,openttd-opensfx)
ca508f1c 4022 ,@(package-native-inputs openttd-engine)))))
e9687748 4023
0c6ade0b
RH
4024(define openrct2-title-sequences
4025 (package
4026 (name "openrct2-title-sequences")
4027 (version "0.1.2")
4028 (source
4029 (origin
4030 (method url-fetch)
4031 (uri (string-append "https://github.com/OpenRCT2/title-sequences/releases/download/v"
4032 version "/title-sequence-v" version ".zip"))
4033 (file-name (string-append name "-" version ".zip"))
4034 (sha256
4035 (base32
4036 "0qbyxrsw8hlgaq0r5d7lx7an3idy4qbfv7yiw9byhldk763n9cfw"))))
4037 (build-system trivial-build-system)
4038 (native-inputs
4039 `(("bash" ,bash)
4040 ("coreutils" ,coreutils)
4041 ("unzip" ,unzip)))
4042 (arguments
4043 `(#:modules ((guix build utils))
4044 #:builder
4045 (begin
4046 (use-modules (guix build utils))
4047 (let* ((out (assoc-ref %outputs "out"))
4048 (openrct2-title-sequences (string-append out
4049 "/share/openrct2/title-sequences"))
4050 (source (assoc-ref %build-inputs "source"))
4051 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
4052 (copy-file source (string-append ,name "-" ,version ".zip"))
4053 (invoke unzip (string-append ,name "-" ,version ".zip"))
4054 (delete-file (string-append ,name "-" ,version ".zip"))
4055 (mkdir-p openrct2-title-sequences)
4056 (copy-recursively "."
4057 openrct2-title-sequences)
4058 #t))))
4059 (home-page "https://github.com/OpenRCT2/OpenRCT2")
4060 (synopsis "Title sequences for OpenRCT2")
4061 (description
4062 "openrct2-title-sequences is a set of title sequences for OpenRCT2.")
4063 (license license:gpl3+)))
4064
4065(define openrct2-objects
4066 (package
4067 (name "openrct2-objects")
924e6993 4068 (version "1.0.9")
0c6ade0b
RH
4069 (source
4070 (origin
4071 (method url-fetch)
4072 (uri (string-append "https://github.com/OpenRCT2/objects/releases/download/v"
4073 version "/objects.zip"))
4074 (file-name (string-append name "-" version ".zip"))
4075 (sha256
924e6993 4076 (base32 "02apb8h553m7d6jvysgb1zahvxc1yzyygfca2iclb21b3fhpsas4"))))
0c6ade0b
RH
4077 (build-system trivial-build-system)
4078 (native-inputs
4079 `(("bash" ,bash)
4080 ("coreutils" ,coreutils)
4081 ("unzip" ,unzip)))
4082 (arguments
4083 `(#:modules ((guix build utils))
4084 #:builder
4085 (begin
4086 (use-modules (guix build utils))
4087 (let* ((out (assoc-ref %outputs "out"))
4088 (openrct2-objects (string-append out
4089 "/share/openrct2/objects"))
4090 (source (assoc-ref %build-inputs "source"))
4091 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
4092 (copy-file source (string-append ,name "-" ,version ".zip"))
4093 (invoke unzip (string-append ,name "-" ,version ".zip"))
4094 (delete-file (string-append ,name "-" ,version ".zip"))
4095 (mkdir-p openrct2-objects)
4096 (copy-recursively "."
4097 openrct2-objects)
4098 #t))))
4099 (home-page "https://github.com/OpenRCT2/OpenRCT2")
4100 (synopsis "Objects for OpenRCT2")
4101 (description
4102 "openrct2-objects is a set of objects for OpenRCT2.")
4103 (license license:gpl3+)))
4104
7aafb3b3
RH
4105(define-public openrct2
4106 (package
4107 (name "openrct2")
afc46f22 4108 (version "0.2.6")
7aafb3b3
RH
4109 (source
4110 (origin
2e5a0690
TGR
4111 (method git-fetch)
4112 (uri (git-reference
b0e7b699 4113 (url "https://github.com/OpenRCT2/OpenRCT2")
2e5a0690
TGR
4114 (commit (string-append "v" version))))
4115 (file-name (git-file-name name version))
7aafb3b3 4116 (sha256
afc46f22 4117 (base32 "1vikbkg3wh5ngzdfilb6irbh6nqinf138qpdz8wz9izlvl8s36k4"))))
7aafb3b3
RH
4118 (build-system cmake-build-system)
4119 (arguments
940c2c5c
RH
4120 `(#:configure-flags (list "-DDOWNLOAD_OBJECTS=OFF"
4121 "-DDOWNLOAD_TITLE_SEQUENCES=OFF")
6457509c 4122 #:tests? #f ; tests require network access
7aafb3b3 4123 #:phases
6457509c
TGR
4124 (modify-phases %standard-phases
4125 (add-after 'unpack 'fix-usr-share-paths&add-data
4126 (lambda* (#:key inputs outputs #:allow-other-keys)
4127 (let ((titles (assoc-ref inputs "openrct2-title-sequences"))
4128 (objects (assoc-ref inputs "openrct2-objects")))
4129 ;; Fix some references to /usr/share.
4130 (substitute* "src/openrct2/platform/Platform.Linux.cpp"
4131 (("/usr/share")
4132 (string-append (assoc-ref %outputs "out") "/share")))
4133 (copy-recursively
4134 (string-append titles "/share/openrct2/title-sequences")
4135 "data/title")
4136 (copy-recursively
4137 (string-append objects "/share/openrct2/objects")
4138 "data/object"))))
8c14f7f8 4139 (add-before 'configure 'get-rid-of-errors
6457509c
TGR
4140 (lambda _
4141 ;; Don't treat warnings as errors.
4142 (substitute* "CMakeLists.txt"
8c14f7f8
MB
4143 (("-Werror") ""))
4144 #t)))))
c695fb76
TGR
4145 (inputs `(("curl" ,curl)
4146 ("fontconfig" ,fontconfig)
4147 ("freetype" ,freetype)
0c6ade0b 4148 ("icu4c" ,icu4c)
c695fb76
TGR
4149 ("jansson" ,jansson)
4150 ("libpng" ,libpng)
4151 ("libzip" ,libzip)
4152 ("mesa" ,mesa)
0c6ade0b
RH
4153 ("openrct2-objects" ,openrct2-objects)
4154 ("openrct2-title-sequences" ,openrct2-title-sequences)
c695fb76
TGR
4155 ("openssl" ,openssl)
4156 ("sdl2" ,sdl2)
4157 ("speexdsp" ,speexdsp)
4158 ("zlib" ,zlib)))
7aafb3b3 4159 (native-inputs
63d4ef52 4160 `(("pkg-config" ,pkg-config)))
7aafb3b3
RH
4161 (home-page "https://github.com/OpenRCT2/OpenRCT2")
4162 (synopsis "Free software re-implementation of RollerCoaster Tycoon 2")
4163 (description "OpenRCT2 is a free software re-implementation of
4164RollerCoaster Tycoon 2 (RCT2). The gameplay revolves around building and
4165maintaining an amusement park containing attractions, shops and facilities.
4166
4167Note that this package does @emph{not} provide the game assets (sounds,
4168images, etc.)")
4169 ;; See <https://github.com/OpenRCT2/OpenRCT2/wiki/Required-RCT2-files>
4170 ;; regarding assets.
4171 (license license:gpl3+)))
4172
e3f755f4
EB
4173(define-public pinball
4174 (package
4175 (name "pinball")
4176 (version "0.3.1")
4177 (source
4178 (origin (method url-fetch)
4179 (uri (string-append "mirror://sourceforge/pinball/pinball/"
4180 "pinball-" version "/"
4181 "pinball-" version ".tar.gz"))
4182 (sha256
4183 (base32
4184 "1f2whlrfidwfh8lvr8cspcyirc6840r5d1ajm7x99qmngygrhixs"))
fc1adab1
AK
4185 (patches (search-patches "pinball-const-fix.patch"
4186 "pinball-cstddef.patch"
4187 "pinball-missing-separators.patch"
4188 "pinball-src-deps.patch"
4189 "pinball-system-ltdl.patch"))))
e3f755f4
EB
4190 (build-system gnu-build-system)
4191 (inputs
4192 `(("glu" ,glu)
4193 ("mesa" ,mesa)
4194 ("sdl" ,sdl)
4195 ("sdl-image" ,sdl-image)
4196 ("sdl-mixer" ,sdl-mixer)))
4197 (arguments
4198 '(#:configure-flags
4199 (list (string-append "CPPFLAGS=-I"
4200 (assoc-ref %build-inputs "sdl-image")
4201 "/include/SDL -I"
4202 (assoc-ref %build-inputs "sdl-mixer")
4203 "/include/SDL"))))
4204 (home-page "http://pinball.sourceforge.net")
4205 (synopsis "Pinball simulator")
4206 (description "The Emilia Pinball Project is a pinball simulator. There
4207are only two levels to play with, but they are very addictive.")
4208 (license license:gpl2)))
7e2e1155
RF
4209
4210(define-public pioneers
4211 (package
4212 (name "pioneers")
f2922d9e 4213 (version "15.6")
7e2e1155
RF
4214 (source (origin
4215 (method url-fetch)
505ceff6 4216 (uri (string-append "https://downloads.sourceforge.net/pio/"
7e2e1155
RF
4217 "pioneers-" version ".tar.gz"))
4218 (sha256
4219 (base32
f2922d9e 4220 "07b3xdd81n8ybsb4fzc5lx0813y9crzp1hj69khncf4faj48sdcs"))))
7e2e1155 4221 (build-system gnu-build-system)
59e8a57d
TGR
4222 (inputs `(("avahi" ,avahi)
4223 ("gtk+" ,gtk+)
4224 ("librsvg" ,librsvg)))
7e2e1155 4225 (native-inputs `(("intltool" ,intltool)
59e8a57d
TGR
4226 ("itstool" ,itstool)
4227 ("libxml2" ,libxml2)
7e2e1155
RF
4228 ("pkg-config" ,pkg-config)))
4229 (synopsis "Board game inspired by The Settlers of Catan")
4230 (description "Pioneers is an emulation of the board game The Settlers of
4231Catan. It can be played on a local network, on the internet, and with AI
4232players.")
4233 (home-page "http://pio.sourceforge.net/")
8763fdf8 4234 (license license:gpl2+)))
fea1f275 4235
d7c4619b
AE
4236(define-public einstein
4237 (package
4238 (name "einstein")
4239 (version "2.0")
4240 (source (origin
4241 (method url-fetch)
d4cf5b01 4242 (uri (string-append "mirror://debian/pool/main/e/"
d7c4619b
AE
4243 "einstein/einstein_2.0.dfsg.2.orig.tar.gz"))
4244 (sha256
4245 (base32
4246 "1hxrlv6n8py48j487i6wbb4n4vd55w0na69r7ccmmr9vmrsw5mlk"))
fc1adab1 4247 (patches (search-patches "einstein-build.patch"))))
d7c4619b
AE
4248 (build-system gnu-build-system)
4249 (inputs
4250 `(("freetype" ,freetype)
4251 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf)))
4252 ("zlib" ,zlib)))
4253 (native-inputs
4254 `(("font-dejavu" ,font-dejavu)))
4255 (arguments
4256 `(#:tests? #f ; no check target
4257 #:phases
4258 (modify-phases %standard-phases
4259 (replace 'configure
4260 (lambda* (#:key outputs inputs #:allow-other-keys)
4261 (let ((out (assoc-ref outputs "out"))
4262 (dejavu (string-append (assoc-ref inputs "font-dejavu")
4263 "/share/fonts/truetype/DejaVuSans.ttf")))
4264 (substitute* "Makefile"
4265 (("PREFIX=/usr/local") (string-append "PREFIX=" out)))
4266 ;; The patch above registers a free font for use by the binary,
4267 ;; but the font is copied during the compile phase into a
4268 ;; resources file, so we need to make the ttf file available.
4269 (symlink dejavu "res/DejaVuSans.ttf")
4270 #t))))))
4271 (synopsis "Logic puzzle game")
4272 (description "The goal of this logic game is to open all cards in a 6x6
4273grid, using a number of hints as to their relative position. The game idea
4274is attributed to Albert Einstein.")
4275 ;; The original home page has disappeared.
4276 (home-page (string-append "http://web.archive.org/web/20120521062745/"
4277 "http://games.flowix.com/en/index.html"))
4278 ;; License according to
4279 ;; http://web.archive.org/web/20150222180355/http://www.babichev.info/en/projects/index.html
4280 ;; The source code is a DFSG-sanitized tarball and does not contain any
4281 ;; license information.
4282 (license license:gpl3+)))
4283
d381962f 4284(define-public powwow
4285 (package
4286 (name "powwow")
90d37add 4287 (version "1.2.19")
d381962f 4288 (source (origin
4289 (method url-fetch)
4290 (uri (string-append
cc30a472 4291 "https://www.hoopajoo.net/static/projects/powwow-"
d381962f 4292 version ".tar.gz"))
d381962f 4293 (sha256
4294 (base32
90d37add 4295 "10rjl63hmf62qslyhzqrbw3i2zf09dgxv65avhj0iiz0m4pbc9wy"))))
d381962f 4296 (inputs
4297 `(("ncurses" ,ncurses)))
4298 (build-system gnu-build-system)
36aff81a 4299 (home-page "https://www.hoopajoo.net/projects/powwow.html")
d381962f 4300 (synopsis "MUD and telnet client")
4301 (description
4302 "POWWOW is a client software which can be used for telnet as well as for
4303@dfn{Multi-User Dungeon} (MUD). Additionally it can serve as a nice client for
4304the chat server psyced with the specific config located at
4305http://lavachat.symlynx.com/unix/")
4306 (license license:gpl2+)))
158f5734 4307
5ef819cc 4308(define-public red-eclipse
7fa9a685
KK
4309 (let ((release "2.0.0")
4310 (revision 0))
158f5734 4311 (package
5b8a8543 4312 (name "red-eclipse")
42abb842
AFN
4313 (version (if (zero? revision)
4314 release
4315 (string-append release "-"
4316 (number->string revision))))
bb7c071b
TGR
4317 (source
4318 (origin
4319 (method git-fetch)
4320 (uri (git-reference
b0e7b699 4321 (url "https://github.com/redeclipse/base")
7fa9a685
KK
4322 (commit (string-append "v" release))
4323 (recursive? #t))) ; for game data
bb7c071b
TGR
4324 (file-name (git-file-name name version))
4325 (sha256
dc4469e9
KK
4326 (base32 "0sz0mqhwx8r9n4mk3qrxw420nlsm3y0n48gd0lazgd64lfqjh3ab"))
4327 (modules '((guix build utils)))
4328 (snippet
4329 ;; Remove proprietary libraries and other pre-compiled binaries.
4330 '(begin
4331 (delete-file-recursively "bin")
4332 #t))))
158f5734
KY
4333 (build-system gnu-build-system)
4334 (arguments
4335 `(#:tests? #f ; no check target
4336 #:make-flags (list "CC=gcc" "-Csrc"
4337 (string-append "INSTDIR="
42abb842
AFN
4338 (assoc-ref %outputs "out") "/bin")
4339 (string-append "prefix="
4340 (assoc-ref %outputs "out")))
158f5734
KY
4341 #:phases
4342 (modify-phases %standard-phases
7fa9a685 4343 (add-after 'unpack 'add-store-data-package-path-as-default
42abb842
AFN
4344 (lambda* (#:key outputs #:allow-other-keys)
4345 (substitute* "src/engine/server.cpp"
7fa9a685
KK
4346 (("data = \"data\"")
4347 (string-append "data = \""
42abb842 4348 (assoc-ref outputs "out")
7fa9a685 4349 "/share/redeclipse/data\"")))
42abb842 4350 #t))
158f5734
KY
4351 (delete 'configure) ; no configure script
4352 (add-after 'set-paths 'set-sdl-paths
4353 (lambda* (#:key inputs #:allow-other-keys)
4354 (setenv "CPATH"
4355 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
4356 "/include/SDL2:"
4357 (or (getenv "CPATH") "")))
158f5734
KY
4358 #t))
4359 (add-after 'install 'copy-data
4360 (lambda* (#:key outputs #:allow-other-keys)
4361 (let ((out (assoc-ref outputs "out")))
4362 (copy-recursively "config"
4363 (string-append out "/config"))
66c65aaf
KK
4364 (copy-file "doc/examples/servinit.cfg"
4365 (string-append out "/config/servinit.cfg"))
158f5734 4366 (copy-recursively "data"
42abb842
AFN
4367 (string-append out "/share/redeclipse/data"))
4368 (mkdir-p (string-append out "/lib/redeclipse"))
49c97ea4
KK
4369 (symlink (string-append out "/share/redeclipse/data")
4370 (string-append out "/lib/redeclipse/data")))
158f5734
KY
4371 #t))
4372 (add-after 'copy-data 'wrap-program
4373 (lambda* (#:key inputs outputs #:allow-other-keys)
4374 (let* ((out (assoc-ref outputs "out"))
4375 (bin (string-append out "/bin")))
4376 (with-directory-excursion bin
4377 (rename-file "redeclipse_linux"
4378 ".redeclipse_linux-real")
4379 (rename-file "redeclipse_server_linux"
4380 ".redeclipse_server_linux-real")
4381 (call-with-output-file "redeclipse_linux"
4382 (lambda (port)
4383 (format port "#!~a/bin/sh
4384# Run the thing from its home, otherwise it just bails out.
4385cd \"~a\"
4386exec -a \"$0\" ~a/.redeclipse_linux-real~%"
4387 (assoc-ref inputs "bash") ;implicit input
4388 (string-append out)
4389 (string-append bin))))
4390 (call-with-output-file "redeclipse_server_linux"
4391 (lambda (port)
4392 (format port "#!~a/bin/sh
4393# Run the thing from its home, otherwise it just bails out.
4394cd \"~a\"
4395exec -a \"$0\" ~a/.redeclipse_server_linux-real~%"
4396 (assoc-ref inputs "bash") ;implicit input
4397 (string-append out)
4398 (string-append bin))))
4399 (chmod "redeclipse_linux" #o555)
4400 (chmod "redeclipse_server_linux" #o555)))
4401 #t)))))
631b20f9
TGR
4402 (native-inputs
4403 `(("pkg-config" ,pkg-config)))
158f5734
KY
4404 (inputs
4405 `(("curl" ,curl)
7fa9a685 4406 ("freetype" ,freetype)
158f5734 4407 ("glu" ,glu)
14b865dc
KK
4408 ("sdl-union" ,(sdl-union (list sdl2
4409 sdl2-image
7fa9a685 4410 sdl2-mixer)))))
dc4469e9 4411 (home-page "https://redeclipse.net/")
158f5734
KY
4412 (synopsis "Arena shooter derived from the Cube 2 engine")
4413 (description
4414 "Red Eclipse is an arena shooter, created from the Cube2 engine.
4415Offering an innovative parkour system and distinct but all potent weapons,
4416Red Eclipse provides fast paced and accessible gameplay.")
4417 ;; The engine is under Zlib; data files are covered by the other
dc4469e9 4418 ;; licenses. More details at file:///doc/all-licenses.txt.
158f5734
KY
4419 (license (list license:expat
4420 license:zlib
dc4469e9 4421 license:cc-by-sa4.0
158f5734
KY
4422 license:cc-by-sa3.0
4423 license:cc-by3.0
dc4469e9
KK
4424 license:cc0
4425 license:public-domain
4426 license:silofl1.1)))))
bcd2982f 4427
0fb9a15b
LC
4428(define-public grue-hunter
4429 (package
4430 (name "grue-hunter")
4431 (version "1.0")
4432 (source (origin
4433 (method url-fetch)
c41b2ffb 4434 (uri (string-append "https://jxself.org/grue-hunter.tar.gz"))
0fb9a15b
LC
4435 (sha256
4436 (base32
4437 "1hjcpy5439qs3v2zykis7hsi0i17zjs62gks3zd8mnfw9ni4i2h3"))))
4438 (build-system trivial-build-system) ; no Makefile.PL
4439 (arguments `(#:modules ((guix build utils))
4440 #:builder
4441 (begin
4442 (use-modules (guix build utils))
4443 (use-modules (srfi srfi-1))
4444
4445 (let* ((tarball (assoc-ref %build-inputs "tarball"))
4446 (perl (string-append (assoc-ref %build-inputs
4447 "perl")
4448 "/bin"))
5edf2f05 4449 (gzip (string-append (assoc-ref %build-inputs
0fb9a15b 4450 "gzip")
5edf2f05 4451 "/bin/gzip"))
0fb9a15b
LC
4452 (tar (string-append (assoc-ref %build-inputs
4453 "tar")
4454 "/bin/tar"))
4455 (out (assoc-ref %outputs "out"))
4456 (bin (string-append out "/bin"))
6d57723a
TGR
4457 (doc (string-append out
4458 "/share/doc/grue-hunter")))
e3cfef22
MW
4459 (copy-file tarball "grue-hunter.tar.gz")
4460 (invoke gzip "-d" "grue-hunter.tar.gz")
4461 (invoke tar "xvf" "grue-hunter.tar")
0fb9a15b 4462
e3cfef22
MW
4463 (mkdir-p bin)
4464 (copy-file "grue-hunter/gh.pl"
4465 (string-append bin "/grue-hunter"))
4466 (patch-shebang (string-append bin "/grue-hunter")
4467 (list perl))
4468
4469 (install-file "grue-hunter/AGPLv3.txt" doc)
0fb9a15b 4470
e3cfef22 4471 #t))))
0fb9a15b
LC
4472 (inputs `(("perl" ,perl)
4473 ("tar" ,tar)
4474 ("gzip" ,gzip)
4475 ("tarball" ,source)))
6c82576e 4476 (home-page "https://jxself.org/grue-hunter.shtml")
0fb9a15b
LC
4477 (synopsis "Text adventure game")
4478 (description
4479 "Grue Hunter is a text adventure game written in Perl. You must make
4480your way through an underground cave system in search of the Grue. Can you
4481capture it and get out alive?")
4482 (license license:agpl3+)))
f317aeb4 4483
ffed9eab
MB
4484(define-public lierolibre
4485 (package
4486 (name "lierolibre")
4487 (version "0.5")
4488 (source (origin
4489 (method url-fetch)
4490 (uri (string-append "https://launchpad.net/lierolibre/trunk/"
4491 version "/+download/lierolibre-"
4492 version ".tar.xz"))
4493 (sha256
4494 (base32
4495 "1cf1gvsn4qq190lrf9k5bpjnqwlcfw7pajvdnh7z5r4jqw0rsbl9"))
4496 (patches
4497 (search-patches "lierolibre-check-unaligned-access.patch"
4498 "lierolibre-try-building-other-arch.patch"
4499 "lierolibre-remove-arch-warning.patch"
4500 "lierolibre-newer-libconfig.patch"
4501 "lierolibre-is-free-software.patch"))
4502 (modules '((guix build utils)))
4503 (snippet
4504 '(begin
4505 ;; Delete pre-compiled files.
4506 (delete-file "data/LIERO.CHR")
4507 (delete-file "data/LIERO.SND")
4508 #t))))
4509 (build-system gnu-build-system)
4510 (native-inputs
4511 `(("imagemagick" ,imagemagick)
4512 ("pkg-config" ,pkg-config)
4513 ("util-linux" ,util-linux)
4514 ("sox" ,sox)))
4515 (inputs
4516 `(("boost" ,boost)
4517 ("libconfig" ,libconfig)
4518 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
4519 ("zlib" ,zlib)))
4520 (home-page "https://gitlab.com/lierolibre/lierolibre")
4521 (synopsis "Old-school earthworm action game")
4522 (description
4523 "lierolibre is an earthworm action game where you fight another player
4524(or the computer) underground using a wide array of weapons.
4525
4526Features:
4527@itemize
4528@item 2 worms, 40 weapons, great playability, two game modes: Kill'em All
4529and Game of Tag, plus AI-players without true intelligence!
4530@item Dat nostalgia.
4531@item Extensions via a hidden F1 menu:
4532@itemize
4533@item Replays
4534@item Game controller support
4535@item Powerlevel palettes
4536@end itemize
4537@item Ability to write game variables to plain text files.
4538@item Ability to load game variables from both EXE and plain text files.
4539@item Scripts to extract and repack graphics, sounds and levels.
4540@end itemize
4541
4542To switch between different window sizes, use F6, F7 and F8, to switch to
4543fullscreen, use F5 or Alt+Enter.")
4544 ;; Code mainly BSD-2, some parts under Boost 1.0. All assets are WTFPL2.
4545 (license (list license:bsd-2 license:boost1.0 license:wtfpl2))))
4546
5258c416
NG
4547(define-public tennix
4548 (package
4549 (name "tennix")
4550 (version "1.3.1")
4551 (source
4552 (origin
4553 (method git-fetch)
4554 (uri (git-reference
4555 (url "https://repo.or.cz/tennix.git")
4556 (commit (string-append "tennix-" version))))
4557 (file-name (git-file-name name version))
4558 (sha256
4559 (base32 "02cj4lrdrisal5s9pnbf2smx7qz9czczjzndfkhfx0qy67b957sk"))
4560 ;; Remove non-free images.
4561 (modules '((guix build utils)))
4562 (snippet
4563 '(begin
4564 (for-each delete-file
4565 '("data/loc_training_camp.png"
4566 "data/loc_austrian_open.png"
4567 "data/loc_olympic_green_tennis.png"))
4568 #t))))
4569 (build-system gnu-build-system)
4570 (arguments
4571 `(#:tests? #f ;no test
4572 #:phases
4573 (modify-phases %standard-phases
4574 (add-after 'unpack 'fix-include
4575 (lambda _
4576 (substitute* '("src/graphics.h" "src/sound.h")
4577 (("#include \"(SDL_(image|ttf|mixer)\\.h)\"" _ header)
4578 (string-append "#include \"SDL/" header "\"")))
4579 (substitute* '("src/tennix.h" "src/network.h" "src/SDL_rotozoom.h")
4580 (("#include <SDL.h>") "#include <SDL/SDL.h>")
4581 (("#include <SDL_net.h>") "#include <SDL/SDL_net.h>"))
4582 #t))
4583 (add-after 'unpack 'locate-install
4584 ;; Build process cannot expand "$(INSTALL)" in Makefile.
4585 (lambda _
4586 (substitute* "makefile"
4587 (("^CONFIGURE_OUTPUT :=.*" all)
4588 (string-append "INSTALL := install -c\n" all)))
4589 #t))
4590 (replace 'configure
4591 ;; The "configure" script is picky about the arguments it
4592 ;; gets. Call it ourselves.
4593 (lambda _
4594 (invoke "./configure" "--prefix" (assoc-ref %outputs "out")))))))
4595 (native-inputs
4596 `(("which" ,which)))
4597 (inputs
4598 `(("python" ,python-wrapper)
4599 ("sdl" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf sdl-net)))))
4600 (home-page "http://icculus.org/tennix/")
4601 (synopsis "Play tennis against the computer or a friend")
4602 (description "Tennix is a 2D tennis game. You can play against the
4603computer or against another player using the keyboard. The game runs
4604in-window at 640x480 resolution or fullscreen.")
4605 ;; Project is licensed under GPL2+ terms. It includes images
4606 ;; released under Public Domain terms, and SDL_rotozoom, released
4607 ;; under LGPL2.1 terms.
4608 (license (list license:gpl2+ license:public-domain license:lgpl2.1))))
4609
f317aeb4
KK
4610(define-public warzone2100
4611 (package
4612 (name "warzone2100")
adaff1a4 4613 (version "3.4.1")
d8f4aefe
TGR
4614 (source
4615 (origin
4616 (method url-fetch)
7dd2005f
PN
4617 (uri (string-append "mirror://sourceforge/warzone2100/releases/"
4618 version
4619 "/warzone2100_src.tar.xz"))
d8f4aefe 4620 (sha256
adaff1a4 4621 (base32 "0savalmw1kp1sf8vg5aqrl5hc77p4jacxy5y9qj8k2hi2vqdfb7a"))
7dd2005f
PN
4622 (modules '((guix build utils)))
4623 (snippet
4624 '(begin
4625 (with-directory-excursion "3rdparty"
4626 (for-each
4627 delete-file-recursively
4628 '("discord-rpc"
4629 "miniupnp"
4630 "utfcpp")))
4631 #t))))
4632 (build-system cmake-build-system)
f317aeb4 4633 (arguments
7dd2005f
PN
4634 `(#:configure-flags '("-DWZ_DISTRIBUTOR=Guix"
4635 "-DENABLE_DISCORD=off")
4636 #:tests? #f ; TODO: Tests seem to be broken, configure.ac is missing.
f475b90c 4637 #:phases
c5d17d50 4638 (modify-phases %standard-phases
7dd2005f
PN
4639 (add-after 'unpack 'fix-utfcpp-include
4640 (lambda _
4641 (substitute* "lib/framework/wzstring.cpp"
4642 (("<utfcpp/source/utf8.h>") "<utf8.h>"))
4643 #t))
c5d17d50
RW
4644 (add-after 'unpack 'link-tests-with-qt
4645 (lambda _
7dd2005f 4646 (substitute* "tests/Makefile.am"
c5d17d50
RW
4647 (("(framework_linktest_LDADD|maptest_LDADD) = " prefix)
4648 (string-append prefix "$(QT5_LIBS) ")))
4649 #t))
f475b90c 4650 (add-after 'unpack 'fix-ivis-linktest
77c729ba 4651 (lambda _
f475b90c
KK
4652 (substitute* "tests/ivis_linktest.cpp"
4653 (("iV_DrawTextRotated.*;")
4654 (string-append "iV_DrawTextRotated(\"Press ESC to exit.\", "
4655 "100, 100, 0.0f, font_regular);")))
c5d17d50 4656 #t)))))
7dd2005f
PN
4657 (native-inputs `(("asciidoc" ,asciidoc)
4658 ("asciidoctor" ,ruby-asciidoctor)
4659 ("gettext" ,gettext-minimal)
f475b90c 4660 ("pkg-config" ,pkg-config)
f317aeb4 4661 ("unzip" ,unzip)
7dd2005f
PN
4662 ;; 7z is used to create .zip archive, not `zip' as in version 3.2.*.
4663 ("p7zip" ,p7zip)))
4664 (inputs `(("curl" ,curl)
4665 ("fontconfig" ,fontconfig)
f317aeb4 4666 ("freetype" ,freetype)
f317aeb4 4667 ("glew" ,glew)
f475b90c 4668 ("harfbuzz" ,harfbuzz)
f317aeb4
KK
4669 ("libtheora" ,libtheora)
4670 ("libvorbis" ,libvorbis)
4671 ("libxrandr" ,libxrandr)
7dd2005f
PN
4672 ("libsodium" ,libsodium)
4673 ("miniupnpc" ,miniupnpc)
f317aeb4
KK
4674 ("openal" ,openal)
4675 ("physfs" ,physfs)
77c729ba
RW
4676 ("qtbase" ,qtbase)
4677 ("qtscript" ,qtscript)
c5d17d50 4678 ("openssl" ,openssl)
7dd2005f
PN
4679 ("sdl2" ,sdl2)
4680 ("utfcpp" ,utfcpp)))
d3eae3f1 4681 (home-page "https://wz2100.net")
f317aeb4
KK
4682 (synopsis "3D Real-time strategy and real-time tactics game")
4683 (description
4684 "Warzone 2100 offers campaign, multi-player, and single-player skirmish
7dd2005f 4685modes. An extensive tech tree with over 400 different technologies, combined
f317aeb4
KK
4686with the unit design system, allows for a wide variety of possible units and
4687tactics.")
7dd2005f 4688 ;; Everything is GPLv2+ unless otherwise specified in COPYING.NONGPL
f317aeb4
KK
4689 (license (list license:bsd-3
4690 license:cc0
4691 license:cc-by-sa3.0
4692 license:expat
4693 license:gpl2+
4694 license:lgpl2.1+))))
4b670539 4695
9299da13
AEFG
4696(define-public widelands
4697 (package
4698 (name "widelands")
500ee354 4699 (version "21")
9299da13
AEFG
4700 (source
4701 (origin
4702 (method url-fetch)
4703 (uri (string-append "https://launchpad.net/widelands/"
4704 "build" version "/build" version "/+download/"
500ee354 4705 "widelands-build" version "-source.tar.gz"))
9299da13 4706 (sha256
500ee354 4707 (base32 "0mz3jily0w1zxxqbnkqrp6hl88xhrwzbil9crq7gpcwidx60w7k0"))
9299da13
AEFG
4708 (modules '((guix build utils)))
4709 (snippet
4710 '(begin
4711 (delete-file-recursively "src/third_party/minizip")
4712 #t))
4713 (patches
4714 ;; Use system Minizip. Patch is provided by Debian, and discussed
4715 ;; upstream at <https://github.com/widelands/widelands/issues/399>.
4716 (search-patches "widelands-system-wide_minizip.patch"))))
4717 (build-system cmake-build-system)
4718 (arguments
4719 `(#:configure-flags
4720 (let* ((out (assoc-ref %outputs "out"))
4721 (share (string-append out "/share")))
4722 (list (string-append "-DCMAKE_INSTALL_PREFIX=" out "/bin")
4723 (string-append "-DWL_INSTALL_BASEDIR=" share "/widelands")
4724 (string-append "-DWL_INSTALL_DATADIR=" share "/widelands")
4725 "-DOPTION_BUILD_WEBSITE_TOOLS=OFF"
4726 ;; CMakeLists.txt does not handle properly RelWithDebInfo build
4727 ;; type. When used, no game data is installed!
4728 "-DCMAKE_BUILD_TYPE=Release"))
4729 #:phases
4730 (modify-phases %standard-phases
9299da13
AEFG
4731 (add-after 'unpack 'unbundle-fonts
4732 ;; Unbundle fonts already packaged in Guix. XXX: missing fonts are
4733 ;; amiri, Culmus, mmrCensus, Nakula, and Sinhala.
4734 (lambda* (#:key inputs #:allow-other-keys)
4735 (with-directory-excursion "data/i18n/fonts"
4736 (for-each (lambda (font)
4737 (delete-file-recursively font)
4738 (symlink (string-append (assoc-ref inputs font)
4739 "/share/fonts/truetype")
4740 font))
4741 '("DejaVu" "MicroHei")))
4742 #t)))))
4743 (native-inputs
4744 `(("gettext" ,gettext-minimal)
4745 ("python" ,python-wrapper)))
4746 (inputs
4747 `(("boost" ,boost)
4748 ("glew" ,glew)
4749 ("icu4c" ,icu4c)
4750 ("libpng" ,libpng)
4751 ("minizip" ,minizip)
4752 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
4753 ("zlib" ,zlib)
4754 ;; Fonts for the ‘unbundle-fonts’ phase. Case matters in name!
4755 ("DejaVu" ,font-dejavu)
4756 ("MicroHei" ,font-wqy-microhei)))
4757 (home-page "https://www.widelands.org/")
4758 (synopsis "Fantasy real-time strategy game")
4759 (description
4760 "In Widelands, you are the regent of a small clan. You start out with
4761nothing but your headquarters, where all your resources are stored.
4762
4763In the course of the game, you will build an ever growing settlement. Every
4764member of your clan will do his or her part to produce more resources---wood,
4765food, iron, gold and more---to further this growth. The economic network is
4766complex and different in the four tribes (Barbarians, Empire, Atlanteans, and
4767Frisians).
4768
4769As you are not alone in the world, you will meet other clans sooner or later.
4770Some of them may be friendly and you may eventually trade with them. However,
4771if you want to rule the world, you will have to train soldiers and fight.
4772
4773Widelands offers single-player mode with different campaigns; the campaigns
4774all tell stories of tribes and their struggle in the Widelands universe!
4775However, settling really starts when you unite with friends over the Internet
4776or LAN to build up new empires together---or to crush each other in the dusts
4777of war. Widelands also offers an Artificial Intelligence to challenge you.")
4778 ;; Game is released as GPL2+. Some parts, e.g., art, are released under
4779 ;; different licenses.
4780 (license (list license:gpl2+
4781 license:expat ;src/third_party/eris
4782 license:silofl1.1 ;Widelands.ttf
4783 license:cc-by-sa3.0)))) ;some music files
4784
649220ad 4785(define-public starfighter
4b670539 4786 (package
649220ad 4787 (name "starfighter")
39e880bf 4788 (version "2.3.2")
4b670539 4789 (source (origin
8172ab2d
KK
4790 (method url-fetch)
4791 (uri (string-append
4792 "https://github.com/pr-starfighter/starfighter/releases"
4793 "/download/v" version "/starfighter-"
6ebf3009 4794 version "-src.tar.gz"))
4b670539
SB
4795 (sha256
4796 (base32
39e880bf 4797 "1nvi277cazsw36b6nhd5nmk0cjvm71rlxasy24mf18j7fsvq9vp8"))))
4b670539 4798 (build-system gnu-build-system)
4b670539 4799 (native-inputs
8172ab2d 4800 `(("pkg-config" ,pkg-config)))
4b670539 4801 (inputs
1fe84f5d
KK
4802 `(("pango" ,pango)
4803 ("sdl2" ,sdl2)
4b670539 4804 ("sdl2-image" ,sdl2-image)
1fe84f5d
KK
4805 ("sdl2-mixer" ,sdl2-mixer)
4806 ("sdl2-ttf" ,sdl2-ttf)))
4807 (home-page "https://pr-starfighter.github.io/")
4b670539
SB
4808 (synopsis "2D scrolling shooter game")
4809 (description
4810 "In the year 2579, the intergalactic weapons corporation, WEAPCO, has
4811dominated the galaxy. Guide Chris Bainfield and his friend Sid Wilson on
4812their quest to liberate the galaxy from the clutches of WEAPCO. Along the
4813way, you will encounter new foes, make new allies, and assist local rebels
4814in strikes against the evil corporation.")
4815 ;; gfx and music are under CC-BY 3.0, CC-BY-SA 3.0, CC0 or Public Domain.
4816 (license (list license:gpl3+
4817 license:cc-by3.0
4818 license:cc-by-sa3.0
4819 license:cc0
4820 license:public-domain))))
35e2e495
KK
4821
4822(define-public chromium-bsu
4823 (package
4824 (name "chromium-bsu")
08722837 4825 (version "0.9.16.1")
35e2e495
KK
4826 (source (origin
4827 (method url-fetch)
e464bd60 4828 (uri (string-append "mirror://sourceforge/chromium-bsu"
35e2e495 4829 "/Chromium B.S.U. source code/"
e464bd60 4830 "chromium-bsu-" version ".tar.gz"))
35e2e495
KK
4831 (sha256
4832 (base32
08722837 4833 "0jk2w5b6s6nkzri585bbz16cif2fhqcnl5l1mq3rd98r9nil3hd1"))))
35e2e495 4834 (build-system gnu-build-system)
35e2e495 4835 (native-inputs `(("pkg-config" ,pkg-config)))
7c90d0f4 4836 (inputs `(("gettext" ,gettext-minimal)
08722837 4837 ("glu" ,glu)
35e2e495
KK
4838 ("quesoglc" ,quesoglc)
4839 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))))
4840 (home-page "http://chromium-bsu.sourceforge.net/")
4841 (synopsis "Fast-paced, arcade-style, top-scrolling space shooter")
4842 (description
4843 "In this game you are the captain of the cargo ship Chromium B.S.U. and
4844are responsible for delivering supplies to the troops on the front line. Your
4845ship has a small fleet of robotic fighters which you control from the relative
4846safety of the Chromium vessel.")
4847 ;; Clarified Artistic License for everything but sound, which is covered
4848 ;; by the Expat License.
4849 (license (list license:clarified-artistic license:expat))))
9b1ada4e
EB
4850
4851(define-public tuxpaint
4852 (package
4853 (name "tuxpaint")
c6aa2ee2 4854 (version "0.9.23") ;keep VER_DATE below in sync
9b1ada4e
EB
4855 (source
4856 (origin
4857 (method url-fetch)
4858 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint/"
4859 version "/tuxpaint-" version ".tar.gz"))
4860 (sha256
4861 (base32
c6aa2ee2 4862 "09k9pxi88r3dx6dyjwf9h85d4qpva4i29qz63dc558hg9v21k69l"))
9b1ada4e
EB
4863 (modules '((guix build utils)))
4864 (snippet
4865 '(begin
4866 ;; Remove win32 directory which contains binary dll's and the
4867 ;; deprecated visualc directory.
4868 (for-each delete-file-recursively '("win32" "visualc"))
4869 (substitute* "Makefile"
4870 ;; Do not rely on $(GPERF) being an absolute file name
4871 (("\\[ -x \\$\\(GPERF\\) \\]")
6cbee49d
MW
4872 "$(GPERF) --version >/dev/null 2>&1"))
4873 #t))
9b1ada4e
EB
4874 (patches (search-patches "tuxpaint-stamps-path.patch"))))
4875 (build-system gnu-build-system)
4876 (native-inputs
4877 `(("gperf" ,gperf)
4878 ("pkg-config" ,pkg-config)))
4879 (inputs
4880 `(("cairo" ,cairo)
4881 ("fribidi" ,fribidi)
b94a6ca0 4882 ("gettext" ,gettext-minimal)
9b1ada4e
EB
4883 ("libpng" ,libpng)
4884 ("librsvg" ,librsvg)
4885 ("libpaper" ,libpaper)
4886 ("netpbm" ,netpbm)
4887 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf sdl-image)))))
4888 ;; TODO: Use system fonts rather than those in data/fonts
4889 (arguments
c6aa2ee2 4890 `(#:make-flags `("VER_DATE=2018-09-02"
9b1ada4e
EB
4891 "GPERF=gperf" "CC=gcc"
4892 "SDL_PCNAME=sdl SDL_image SDL_mixer SDL_ttf"
4893 ,(string-append "PREFIX=" %output)
f88c0ab8
EB
4894 "KDE_PREFIX=$(PREFIX)/share/applications"
4895 "KDE_ICON_PREFIX=$(PREFIX)/share/icons/"
9b1ada4e 4896 "COMPLETIONDIR=$(PREFIX)/etc/bash_completion.d")
72529642 4897 #:parallel-build? #f ;fails on some systems
9b1ada4e
EB
4898 #:tests? #f ;No tests
4899 #:phases (modify-phases %standard-phases
4900 (delete 'configure) ;no configure phase
f88c0ab8
EB
4901 (add-before 'install 'no-sys-cache
4902 (lambda _ ;do not rebuild system conf cache
4903 (substitute* "Makefile"
4904 (("kbuildsycoca4") ""))
4905 #t))
9b1ada4e
EB
4906 (add-after 'install 'fix-import
4907 (lambda* (#:key inputs outputs #:allow-other-keys)
4908 (let* ((out (assoc-ref outputs "out"))
4909 (net (assoc-ref inputs "netpbm"))
4910 (tpi (string-append out "/bin/tuxpaint-import")))
4911 (substitute* tpi
4912 ;; Point to installation prefix so that the default
4913 ;; configure file is found.
4914 (("/usr/local") out))
4915 ;; tuxpaint-import uses a bunch of programs from
4916 ;; netpbm, so make sure it knows where those are
4917 (wrap-program tpi
4918 `("PATH" ":" prefix
4919 (,(string-append net "/bin"))))))))))
4920 (native-search-paths
4921 (list (search-path-specification
4922 (variable "TUXPAINT_STAMPS_PATH")
4923 (files '("share/tuxpaint/stamps")))))
4924 (home-page "http://www.tuxpaint.org")
4925 (synopsis "Drawing software for children")
4926 (description
4927 "Tux Paint is a free drawing program designed for young children (kids
4928ages 3 and up). It has a simple, easy-to-use interface; fun sound effects;
4929and an encouraging cartoon mascot who helps guide children as they use the
4930program. It provides a blank canvas and a variety of drawing tools to help
4931your child be creative.")
4932 (license license:gpl2+)))
c3d850f2
EB
4933
4934(define-public tuxpaint-stamps
4935 (package
4936 (name "tuxpaint-stamps")
6ade82c2 4937 (version "2018.09.01")
c3d850f2
EB
4938 (source
4939 (origin
4940 (method url-fetch)
4941 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-stamps/"
4942 (string-map (λ (x) (if (eq? x #\.) #\- x)) version)
4943 "/tuxpaint-stamps-" version ".tar.gz"))
4944 (sha256
4945 (base32
6ade82c2 4946 "1skr23k27yj3vgwfazpzxp90lb2a278gxrkr3bxw7az6zpkmb3yp"))))
c3d850f2
EB
4947 (build-system trivial-build-system)
4948 (native-inputs
4949 `(("tar" ,tar)
4950 ("gzip" ,gzip)))
4951 (arguments
4952 `(#:modules ((guix build utils))
4953 #:builder (begin
4954 (use-modules (guix build utils))
4955 (setenv "PATH"
4956 (string-append
4957 (assoc-ref %build-inputs "tar") "/bin" ":"
4958 (assoc-ref %build-inputs "gzip") "/bin"))
e3cfef22 4959 (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
c3d850f2
EB
4960 (chdir (string-append ,name "-" ,version))
4961 (let ((dir (string-append %output "/share/tuxpaint/stamps")))
4962 (mkdir-p dir)
e3cfef22
MW
4963 (copy-recursively "stamps" dir))
4964 #t)))
c3d850f2
EB
4965 (home-page (package-home-page tuxpaint))
4966 (synopsis "Stamp images for Tux Paint")
4967 (description
4968 "This package contains a set of \"Rubber Stamp\" images which can be used
4969with the \"Stamp\" tool within Tux Paint.")
4970 (license license:gpl2+)))
d2563973
EB
4971
4972(define-public tuxpaint-config
4973 (package
4974 (name "tuxpaint-config")
7b05e957 4975 (version "0.0.14") ;keep VER_DATE below in sync
d2563973
EB
4976 (source
4977 (origin
4978 (method url-fetch)
4979 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-config/"
4980 version "/tuxpaint-config-" version ".tar.gz"))
4981 (sha256
4982 (base32
7b05e957 4983 "0zkgxk436nqcp43zghkfmh397c7dvh5bwn2as7gwvv208bzyij6g"))))
d2563973
EB
4984 (build-system gnu-build-system)
4985 (native-inputs
b94a6ca0 4986 `(("gettext" ,gettext-minimal)))
d2563973
EB
4987 (inputs
4988 `(("fltk" ,fltk)
4989 ("libpaper" ,libpaper)
4990 ;; TODO: Should the following be propagated by fltk?
4991 ("libx11" ,libx11)
4992 ("libxft" ,libxft)
4993 ("mesa" ,mesa)))
4994 (arguments
7b05e957 4995 `(#:make-flags `("VER_DATE=2018-09-01"
d2563973
EB
4996 "CONFDIR=/etc/tuxpaint" ;don't write to store
4997 ,(string-append "PREFIX=" %output)
4998 "GNOME_PREFIX=$(PREFIX)")
5895ca7b 4999 #:parallel-build? #f ;race conditions
d2563973
EB
5000 #:tests? #f ;no tests
5001 #:phases (modify-phases %standard-phases
5002 (delete 'configure) ;no configure phase
5003 (add-before 'install 'gzip-no-name
5004 (lambda* _
5005 (substitute* "Makefile"
5006 ;; tuxpaint-config compresses its own documentation;
5007 ;; make sure it uses flags for reproducibility.
5008 (("gzip") "gzip --no-name"))))
5009 (add-before 'install 'make-install-dirs
5010 (lambda* (#:key outputs #:allow-other-keys)
5011 (let ((out (assoc-ref outputs "out")))
5012 (mkdir-p (string-append out "/bin"))
5013 #t))))))
5014 (home-page (package-home-page tuxpaint))
5015 (synopsis "Configure Tux Paint")
5016 (description
5017 "Tux Paint Config is a graphical configuration editor for Tux Paint.")
5018 (license license:gpl2))) ;no "or later" present
826a3ca2 5019
5020(define-public supertux
5021 (package
5022 (name "supertux")
f2e99d98 5023 (version "0.6.2")
826a3ca2 5024 (source (origin
5025 (method url-fetch)
d910d584
RW
5026 (uri (string-append "https://github.com/SuperTux/supertux/"
5027 "releases/download/v" version "/SuperTux-v"
5028 version "-Source.tar.gz"))
8698d986 5029 (file-name (string-append name "-" version ".tar.gz"))
826a3ca2 5030 (sha256
5031 (base32
f2e99d98 5032 "167m3z4m8n76dvbv42m1fnvabpbpsxvr28zk9641916jl9pfba96"))
8698d986 5033 (patches
57d87f43 5034 (search-patches "supertux-unbundle-squirrel.patch"))))
d910d584
RW
5035 (arguments
5036 '(#:tests? #f
5037 #:configure-flags '("-DINSTALL_SUBDIR_BIN=bin"
8698d986
KK
5038 "-DUSE_SYSTEM_PHYSFS=ON")
5039 #:phases
5040 (modify-phases %standard-phases
5041 (add-after 'unpack 'patch-squirrel-path
5042 (lambda* (#:key inputs #:allow-other-keys)
5043 (let ((squirrel (assoc-ref inputs "squirrel")))
5044 (substitute* "CMakeLists.txt"
5045 (("set\\(SQUIRREL_PREFIX.*")
5046 (string-append "set(SQUIRREL_PREFIX " squirrel ")"))
5047 (("add_dependencies\\(supertux2_lib squirrel\\)") "")
5048 (("\\$\\{SQUIRREL_PREFIX\\}/include")
5049 (string-append "${SQUIRREL_PREFIX}/include/squirrel"))))
5050 #t)))))
826a3ca2 5051 (build-system cmake-build-system)
5052 (inputs `(("sdl2" ,sdl2)
5053 ("sdl2-image" ,sdl2-image)
5054 ("sdl2-mixer" ,sdl2-mixer)
5055 ("openal" ,openal)
5056 ("mesa" ,mesa)
5057 ("glew" ,glew)
5058 ("libvorbis" ,libvorbis)
5059 ("libogg" ,libogg)
5060 ("physfs" ,physfs)
5061 ("curl" ,curl)
8698d986
KK
5062 ("boost" ,boost)
5063 ("freetype" ,freetype)
5064 ("squirrel" ,squirrel)))
8b03b1a1
NG
5065 (native-inputs
5066 `(("pkg-config" ,pkg-config)))
826a3ca2 5067 (synopsis "2D platformer game")
8b03b1a1
NG
5068 (description "SuperTux is a classic 2D jump'n run sidescroller game in
5069a style similar to the original Super Mario games.")
cac6c3ba 5070 (home-page "https://supertux.org/")
826a3ca2 5071 (license license:gpl3+)))
b3de5ff2 5072
751c7040 5073(define-public tintin++
5074 (package
5075 (name "tintin++")
2c674796 5076 (version "2.02.02")
fffe4870
TGR
5077 (source
5078 (origin
5079 (method url-fetch)
5080 (uri (string-append "mirror://sourceforge/tintin/TinTin++ Source Code/"
23174b49 5081 (string-drop-right version 1)
fffe4870
TGR
5082 "/tintin-" version ".tar.gz"))
5083 (sha256
2c674796 5084 (base32 "11ylbp8ip7dwmh4gzb53z147pcfxkl3lwhyy8ngyn2zc634vdn65"))))
751c7040 5085 (inputs
5086 `(("gnutls" ,gnutls)
5087 ("pcre" ,pcre)
5088 ("readline" ,readline)
5089 ("zlib" ,zlib)))
5090 (arguments
fffe4870 5091 '(#:tests? #f ; no test suite
751c7040 5092 #:phases
5093 (modify-phases %standard-phases
5094 ;; The source is in tt/src.
5095 (add-before 'configure 'chdir
5096 (lambda _
5097 (chdir "src")
5098 #t)))))
5099 (build-system gnu-build-system)
23174b49 5100 (home-page "https://tintin.mudhalla.net/")
751c7040 5101 (synopsis "MUD client")
5102 (description
5b9c2690
KK
5103 "TinTin++ is a MUD client which supports MCCP (Mud Client Compression
5104Protocol), MMCP (Mud Master Chat Protocol), xterm 256 colors, most TELNET
5105options used by MUDs, as well as those required to login via telnet on
5106Linux / Mac OS X servers, and an auto mapper with a VT100 map display.")
23174b49 5107 (license license:gpl3+)))
751c7040 5108
b3de5ff2
JN
5109(define-public laby
5110 (package
5111 (name "laby")
5112 (version "0.6.4")
5113 (source
6484b091
EF
5114 (origin (method git-fetch)
5115 (uri (git-reference
b0e7b699 5116 (url "https://github.com/sgimenez/laby")
6484b091
EF
5117 (commit (string-append name "-" version))))
5118 (file-name (git-file-name name version))
b3de5ff2
JN
5119 (sha256
5120 (base32
6484b091 5121 "12fq9hhrxpzgfinmj9ra9ckss9yficwdlrmgjvvsq7agvh3sgyl1"))
b3de5ff2
JN
5122 (patches (search-patches "laby-make-install.patch"))))
5123 (build-system gnu-build-system)
5124 (inputs
5125 `(("lablgtk" ,lablgtk)
5126 ("ocaml" ,ocaml)
a8f52ad7
TGR
5127 ("ocaml-findlib" ,ocaml-findlib)
5128 ("ocamlbuild" ,ocamlbuild)))
b3de5ff2
JN
5129 (arguments
5130 '(#:phases
5131 (modify-phases %standard-phases
5132 (delete 'configure)
a8f52ad7
TGR
5133 (add-before 'build 'allow-unsafe-strings
5134 ;; Fix a build failure with ocaml >=4.06.0.
5135 ;; See <https://github.com/sgimenez/laby/issues/53>.
5136 (lambda _
5137 (setenv "OCAMLPARAM" "safe-string=0,_")
5138 #t))
5139 (add-before 'build 'set-library-path
b3de5ff2
JN
5140 (lambda* (#:key inputs #:allow-other-keys)
5141 (let ((lablgtk (assoc-ref inputs "lablgtk")))
5142 (setenv "LD_LIBRARY_PATH"
5143 (string-append lablgtk "/lib/ocaml/stublibs"))))))
5144 #:tests? #f ; no 'check' target
5145 #:make-flags
5146 (list (string-append "PREFIX=" (assoc-ref %outputs "out")) "all")))
5147 (home-page "https://sgimenez.github.io/laby/")
5148 (synopsis "Programming game")
5149 (description "Learn programming, playing with ants and spider webs ;-)
5150Your robot ant can be programmed in many languages: OCaml, Python, C, C++,
5151Java, Ruby, Lua, JavaScript, Pascal, Perl, Scheme, Vala, Prolog. Experienced
5152programmers may also add their own favorite language.")
5153 (license license:gpl3+)))
b0488fe5
EF
5154
5155(define-public bambam
5156 (package
5157 (name "bambam")
8e77da0d 5158 (version "1.0.0")
b0488fe5
EF
5159 (source
5160 (origin
63e708f4
TGR
5161 (method git-fetch)
5162 (uri (git-reference
5163 (url "https://github.com/porridge/bambam")
8e77da0d 5164 (commit (string-append "v" version))))
63e708f4 5165 (file-name (git-file-name name version))
b0488fe5 5166 (sha256
8e77da0d 5167 (base32 "18cwd1wpyyx8y61cags9bkdhx9x858xicc4y1c9c2s0xjmgzhl3i"))))
b0488fe5
EF
5168 (build-system python-build-system)
5169 (arguments
8e77da0d 5170 `(#:tests? #f ; no tests
b0488fe5
EF
5171 #:phases
5172 (modify-phases %standard-phases
8e77da0d 5173 (delete 'build) ; nothing to build
b0488fe5
EF
5174 (replace 'install
5175 (lambda* (#:key outputs #:allow-other-keys)
5176 (let* ((out (assoc-ref outputs "out"))
5177 (bin (string-append out "/bin"))
5178 (share (string-append out "/share")))
5179 (mkdir-p bin)
5180 (copy-file "bambam.py" (string-append bin "/bambam"))
5181 (install-file "bambam.6" (string-append share "/man/man6"))
5182 (copy-recursively "data" (string-append share "/bambam/data")))
b0488fe5
EF
5183 #t)))))
5184 (inputs
5185 `(("python-pygame" ,python-pygame)))
5186 (home-page "https://github.com/porridge/bambam")
46a06224 5187 (synopsis "Keyboard mashing and doodling game for babies")
b0488fe5
EF
5188 (description "Bambam is a simple baby keyboard (and gamepad) masher
5189application that locks the keyboard and mouse and instead displays bright
5190colors, pictures, and sounds.")
5191 (license license:gpl3+)))
6b87c10f 5192
3110c74b
TGR
5193(define-public mrrescue
5194 (package
5195 (name "mrrescue")
5196 (version "1.02e")
5197 (source (origin
5198 (method url-fetch)
5199 (uri (string-append
5200 "https://github.com/SimonLarsen/mrrescue/releases/"
ed9bcf50 5201 "download/" version "/mrrescue" version ".love"))
3110c74b
TGR
5202 (file-name (string-append name "-" version ".love"))
5203 (sha256
5204 (base32
5205 "0jwzbwkgp1l5ia6c7s760gmdirbsncp6nfqp7vqdqsfb63la9gl2"))))
5206 (build-system trivial-build-system)
5207 (arguments
8893218a 5208 `(#:modules ((guix build utils))
3110c74b
TGR
5209 #:builder
5210 (begin
5211 (use-modules (guix build utils))
8893218a
TGR
5212 (let* ((out (assoc-ref %outputs "out"))
5213 (script (string-append out "/bin/" ,name))
5214 (data (string-append out "/share/" ,name))
5215 (source (assoc-ref %build-inputs "source"))
5216 (unzip (string-append (assoc-ref %build-inputs "unzip")
5217 "/bin/unzip"))
5218 (patch (string-append (assoc-ref %build-inputs "patch")
5219 "/bin/patch"))
5220 (bash (string-append (assoc-ref %build-inputs "bash")
5221 "/bin/bash"))
5222 (love (string-append (assoc-ref %build-inputs "love")
5223 "/bin/love")))
5224
5225 (mkdir-p (dirname script))
5226 (with-output-to-file script
3110c74b
TGR
5227 (lambda ()
5228 (format #t "#!~a~%" bash)
8893218a
TGR
5229 (format #t "exec -a ~a \"~a\" \"~a\"~%" ,name love data)))
5230 (chmod script #o755)
5231
5232 ;; The better way to package this game would be to install *only* the
5233 ;; script above, pointing to the unextracted .love file in the store.
5234 ;; However, mrrescue 1.02e needs to be patched to work with Love 11.
5235 ;; Instead of extracting the .love file, patching it, and re-zipping
5236 ;; it to the store, simply point the script to the extracted patched
5237 ;; data directory directly.
5238 (mkdir-p data)
5239 (with-directory-excursion data
5240 (invoke unzip source)
5241 (invoke patch "-p1" "-i"
5242 (assoc-ref %build-inputs "love-11.patch")))
3110c74b 5243 #t))))
8893218a
TGR
5244 (native-inputs
5245 `(("unzip" ,unzip)
5246 ("patch" ,patch)
5247 ("love-11.patch" ,(search-patch "mrrescue-support-love-11.patch"))))
3110c74b
TGR
5248 (inputs
5249 `(("bash" ,bash)
5250 ("love" ,love)))
e2f28609 5251 (home-page "https://tangramgames.dk/games/mrrescue")
3110c74b
TGR
5252 (synopsis "Arcade-style fire fighting game")
5253 (description
5254 "Mr. Rescue is an arcade styled 2d action game centered around evacuating
d6331fca
TGR
5255civilians from burning buildings. The game features fast-paced fire
5256extinguishing action, intense boss battles, a catchy soundtrack, and lots of
3110c74b
TGR
5257throwing people around in pseudo-randomly generated buildings.")
5258 (license (list license:zlib ; for source code
5259 license:cc-by-sa3.0)))) ; for graphics and music assets
5260
cd1869cd
KK
5261(define-public hyperrogue
5262 (package
5263 (name "hyperrogue")
edd3a256 5264 (version "11.3a")
f8279ba4
KK
5265 ;; When updating this package, be sure to update the "hyperrogue-data"
5266 ;; origin in native-inputs.
cd1869cd
KK
5267 (source (origin
5268 (method url-fetch)
5269 (uri (string-append
a01aea7d
TGR
5270 "https://www.roguetemple.com/z/hyper/hyperrogue"
5271 (string-join (string-split version #\.) "")
f8279ba4 5272 "-src.tgz"))
cd1869cd
KK
5273 (sha256
5274 (base32
edd3a256 5275 "1yxabbswq02fc5frigvs43f83m5vlxybc7n5mynkwzj2c70lfp2k"))))
cd1869cd
KK
5276 (build-system gnu-build-system)
5277 (arguments
f8279ba4 5278 `(#:tests? #f ; no check target
82402f76
KK
5279 #:make-flags '("HYPERROGUE_USE_GLEW=1"
5280 "HYPERROGUE_USE_PNG=1")
cd1869cd
KK
5281 #:phases
5282 (modify-phases %standard-phases
5283 (add-after 'set-paths 'set-sdl-paths
5284 (lambda* (#:key inputs #:allow-other-keys)
5285 (setenv "CPATH"
18caa6f5 5286 (string-append (or (getenv "CPATH") "") ":"
b6c2805c 5287 (assoc-ref inputs "sdl-union")
cd1869cd 5288 "/include/SDL"))))
cd1869cd
KK
5289 (replace 'configure
5290 (lambda* (#:key inputs outputs #:allow-other-keys)
f8279ba4
KK
5291 (let* ((out (assoc-ref outputs "out"))
5292 (share-dir (string-append out "/share/hyperrogue"))
5293 (dejavu-dir (string-append
5294 (assoc-ref inputs "font-dejavu")
5295 "/share/fonts/truetype"))
5296 (dejavu-font "DejaVuSans-Bold.ttf")
5297 (music-file "hyperrogue-music.txt"))
1bb962b4 5298 ;; Fix font and music paths.
89c9445a 5299 (substitute* "basegraph.cpp"
f8279ba4
KK
5300 ((dejavu-font)
5301 (string-append dejavu-dir "/" dejavu-font)))
f8279ba4
KK
5302 (substitute* music-file
5303 (("\\*/")
82402f76
KK
5304 (string-append share-dir "/sounds/")))
5305 (substitute* "sound.cpp"
5306 (("musicfile = \"\"")
5307 (string-append "musicfile = \""
5308 share-dir "/" music-file "\"")))
5309 ;; Disable build machine CPU optimizations and warnings treated
5310 ;; as errors.
5311 (substitute* "Makefile"
5312 (("-march=native") "")
5313 (("-Werror") "")))
cd1869cd
KK
5314 #t))
5315 (replace 'install
5316 (lambda* (#:key inputs outputs #:allow-other-keys)
5317 (let* ((out (assoc-ref outputs "out"))
5318 (bin (string-append out "/bin"))
5319 (share-dir (string-append out "/share/hyperrogue")))
5320 (mkdir-p bin)
82402f76 5321 (install-file "hyperrogue" bin)
f8279ba4
KK
5322 (install-file "hyperrogue-music.txt" share-dir))
5323 #t))
5324 (add-after 'install 'install-data
5325 (lambda* (#:key inputs outputs #:allow-other-keys)
5326 (let* ((data (assoc-ref inputs "hyperrogue-data"))
5327 (out (assoc-ref outputs "out"))
5328 (sounds (string-append out "/share/hyperrogue/sounds"))
5329 (unzip (string-append (assoc-ref inputs "unzip") "/bin/unzip")))
1bb962b4
KK
5330 ;; Extract media license information into sounds directory.
5331 (invoke unzip "-j" data
5332 (string-append
5333 "hyperrogue"
5334 (string-join (string-split ,version #\.) "")
5335 "/sounds/credits.txt") "-d" sounds)
5336 ;; Extract sounds and music into sounds directory.
5337 (invoke "unzip" "-j" data
5338 (string-append
5339 "hyperrogue"
5340 (string-join (string-split ,version #\.) "")
5341 "/*.ogg") "-d" sounds)))))))
f8279ba4
KK
5342 (native-inputs
5343 `(("hyperrogue-data"
5344 ,(origin
5345 (method url-fetch)
5346 (uri
5347 (string-append
07de94d6 5348 "https://www.roguetemple.com/z/hyper/hyperrogue"
f8279ba4
KK
5349 (string-join (string-split version #\.) "")
5350 "-win.zip"))
5351 (sha256
5352 (base32
edd3a256 5353 "11yhbia45f1w9z0j67h9nynwjqmvakr9l6rnrmdrdkzin6lvzzj4"))))
f8279ba4 5354 ("unzip" ,unzip)))
cd1869cd
KK
5355 (inputs
5356 `(("font-dejavu" ,font-dejavu)
5357 ("glew" ,glew)
5358 ("libpng" ,libpng)
5359 ("sdl-union" ,(sdl-union (list sdl
5360 sdl-gfx
5361 sdl-mixer
5362 sdl-ttf)))))
4cae7e67 5363 (home-page "https://www.roguetemple.com/z/hyper/")
cd1869cd
KK
5364 (synopsis "Non-euclidean graphical rogue-like game")
5365 (description
5366 "HyperRogue is a game in which the player collects treasures and fights
5367monsters -- rogue-like but for the fact that it is played on the hyperbolic
5368plane and not in euclidean space.
5369
5370In HyperRogue, the player can move through different parts of the world, which
a53a6b6f
TGR
5371are home to particular creatures and may be subject to their own rules of
5372\"physics\".
cd1869cd 5373
a53a6b6f
TGR
5374While the game can use ASCII characters to display the the classical rogue
5375symbols, it still needs graphics to render the non-euclidean world.")
f8279ba4
KK
5376 (license (list license:bsd-3 ; glew.c, mtrand.*
5377 license:cc-by-sa3.0 ; music
5378 license:cc-by-sa4.0 ; sounds
5379 license:cc0
5380 license:public-domain ; direntx.*, some sounds
5381 license:zlib ; savepng.*
cd1869cd 5382 license:gpl2+)))) ; remaining files
a56145e1
SW
5383
5384(define-public kobodeluxe
5385 (package
5386 (name "kobodeluxe")
5387 (version "0.5.1")
5388 (source (origin
5389 (method url-fetch)
5390 (uri (string-append "http://olofson.net/kobodl/download/KoboDeluxe-"
5391 version ".tar.bz2"))
5392 (sha256
5393 (base32
5394 "0b2wvdpnmaibsy419c16dfwj5kvd3pccby2aaqvm964x74592yqg"))
5395 (patches (search-patches
5396 "kobodeluxe-const-charp-conversion.patch"
5397 "kobodeluxe-enemies-pipe-decl.patch"
5398 "kobodeluxe-graphics-window-signed-char.patch"
5399 "kobodeluxe-manpage-minus-not-hyphen.patch"
5400 "kobodeluxe-midicon-segmentation-fault.patch"
5401 "kobodeluxe-paths.patch"))))
5402 (build-system gnu-build-system)
5403 (arguments
5404 '(#:configure-flags
5405 (list (string-append "CPPFLAGS=-I"
5406 (assoc-ref %build-inputs "sdl-union")
5407 "/include/SDL"))))
cf07ec20
MB
5408 (inputs
5409 `(("glu" ,glu)
5410 ("sdl-union" ,(sdl-union (list sdl sdl-image)))))
a56145e1
SW
5411 (synopsis "Shooter with space station destruction")
5412 (description
5413 "Kobo Deluxe is an enhanced version of Akira Higuchi's XKobo graphical game
5414for Un*x systems with X11.")
5415 (home-page "http://olofson.net/kobodl/")
5416 (license license:gpl2+)))
5430dbd9
AI
5417
5418(define-public freeciv
5419 (package
5420 (name "freeciv")
4445b3a7 5421 (version "2.6.2")
5430dbd9
AI
5422 (source
5423 (origin
5424 (method url-fetch)
b92e8da0
EF
5425 (uri (list (string-append
5426 "http://files.freeciv.org/stable/freeciv-"
5427 version ".tar.bz2")
5428 (string-append
5429 "mirror://sourceforge/freeciv/Freeciv%20"
5430 (version-major+minor version) "/" version
5431 "/freeciv-" version ".tar.bz2")))
5430dbd9 5432 (sha256
4445b3a7 5433 (base32 "13vc2xg1cf19rhbnr7k38b56b2hdapqymq5vma1l69kn7hyyz0b1"))))
5430dbd9
AI
5434 (build-system gnu-build-system)
5435 (inputs
5436 `(("curl" ,curl)
5437 ("cyrus-sasl" ,cyrus-sasl)
5438 ("gtk+" ,gtk+)
5439 ("sdl-mixer" ,sdl-mixer)
5440 ("zlib" ,zlib)))
5441 (native-inputs
5442 `(("pkg-config" ,pkg-config)))
5443 (home-page "http://www.freeciv.org/")
d6ca9faf
TGR
5444 (synopsis "Turn-based empire building strategy game")
5445 (description "Freeciv is a turn-based empire building strategy game
5430dbd9
AI
5446inspired by the history of human civilization. The game commences in
5447prehistory and your mission is to lead your tribe from the Stone Age
d6ca9faf 5448into the Space Age.")
5430dbd9 5449 (license license:gpl2+)))
345504c7 5450
5451(define-public no-more-secrets
5452 (package
5453 (name "no-more-secrets")
4c4f1871 5454 (version "0.3.3")
345504c7 5455 (source
5456 (origin
146a4459
TGR
5457 (method git-fetch)
5458 (uri (git-reference
b0e7b699 5459 (url "https://github.com/bartobri/no-more-secrets")
146a4459
TGR
5460 (commit (string-append "v" version))))
5461 (file-name (git-file-name name version))
345504c7 5462 (sha256
146a4459 5463 (base32 "1zfv4qabikf8w9winsr4brxrdvs3f0d7xvydksyx8bydadsm2v2h"))))
345504c7 5464 (build-system gnu-build-system)
5465 (arguments
5466 `(#:tests? #f
5467 #:make-flags (list "CC=gcc" "all-ncurses"
5468 (string-append "prefix="
5469 (assoc-ref %outputs "out")))
5470 #:phases
5471 (modify-phases %standard-phases
5472 (delete 'configure))))
5473 (inputs
5474 `(("ncurses" ,ncurses)))
5475 (home-page "https://github.com/bartobri/no-more-secrets")
5476 (synopsis "Recreation of data decryption effect in \"Sneakers\"")
5477 (description
5478 "@code{No More Secrets} provides a command line tool called \"nms\"
5479that recreates the famous data decryption effect seen on screen in the 1992
5480movie \"Sneakers\".
5481
5482This command works on piped data. Pipe any ASCII or UTF-8 text to nms, and
5483it will apply the hollywood effect, initially showing encrypted data, then
5484starting a decryption sequence to reveal the original plaintext characters.")
5485 (license license:expat)))
fb731c92
AI
5486
5487(define-public megaglest-data
5488 (package
5489 (name "megaglest-data")
5490 (version "3.13.0")
5491 (source
5492 (origin
5493 (method url-fetch)
5494 (uri (string-append
5495 "https://github.com/MegaGlest/megaglest-data"
5496 "/releases/download/" version "/megaglest-data-"
5497 version ".tar.xz"))
5498 (sha256
5499 (base32
5500 "0ipgza33z89fw3si32iafm981f3fvm0zldvbxj29whghd2k3rpj3"))))
5501 (build-system cmake-build-system)
5502 (arguments
5503 `(#:tests? #f))
5504 (home-page "https://megaglest.org/")
5505 (synopsis "Data files for MegaGlest")
5506 (description "This package contains the data files required for MegaGlest.")
5507 (license license:cc-by-sa3.0)))
0b608ec4
AI
5508
5509(define-public megaglest
5510 (package
5511 (name "megaglest")
5512 (version "3.13.0")
5513 (source
5514 (origin
5515 (method url-fetch)
5516 (uri (string-append
5517 "https://github.com/MegaGlest/megaglest-source"
5518 "/releases/download/" version "/megaglest-source-"
5519 version ".tar.xz"))
5520 (sha256
5521 (base32
5522 "1ffck3ii1wp5k3nn5p0ga06jgp7pzk4zw0xln3xim2w7qrxzdzh9"))))
5523 (build-system cmake-build-system)
5524 (inputs
5525 `(("curl" ,curl)
5526 ("fontconfig" ,fontconfig)
5527 ("ftgl" ,ftgl)
5528 ("glew" ,glew)
5529 ("libjpeg-turbo" ,libjpeg-turbo)
5530 ("megaglest-data" ,megaglest-data)
5531 ("mesa" ,mesa)
5532 ("miniupnpc" ,miniupnpc)
5533 ("openal" ,openal)
5534 ("libircclient" ,libircclient)
5535 ("libpng" ,libpng)
5536 ("libvorbis" ,libvorbis)
5537 ("lua" ,lua)
5538 ("sdl2" ,sdl2)
5539 ("wxwidgets" ,wxwidgets)))
5540 (native-inputs
5541 `(("cppunit" ,cppunit)
5542 ("pkg-config" ,pkg-config)))
5543 (arguments
5544 `(#:configure-flags
5545 (list (string-append "-DCUSTOM_DATA_INSTALL_PATH="
5546 (assoc-ref %build-inputs "megaglest-data")
5547 "/share/megaglest")
5548 "-DBUILD_MEGAGLEST_TESTS=ON")
5549 #:phases
5550 (modify-phases %standard-phases
5551 (add-after 'unpack 'fix-ini-search-path
5552 (lambda* (#:key outputs #:allow-other-keys)
5553 (substitute* "source/glest_game/global/config.cpp"
5554 (("/usr/share/megaglest/")
5555 (string-append (assoc-ref outputs "out")
5556 "/share/megaglest/"))))))
5557 #:test-target "megaglest_tests"))
5558 (home-page "https://megaglest.org/")
5559 (synopsis "3D real-time strategy (RTS) game")
5560 (description "MegaGlest is a cross-platform 3D real-time strategy (RTS)
5561game, where you control the armies of one of seven different factions: Tech,
5562Magic, Egypt, Indians, Norsemen, Persian or Romans.")
5563 (license license:gpl2+)))
6bb9c854
RW
5564
5565(define-public freegish
5566 (let ((commit "8795cd7adc95957883f2d3465eb9036a774667a7")
5567 (revision "1"))
5568 (package
5569 (name "freegish")
5570 (version (string-append "0-" revision "." (string-take commit 9)))
5571 (source (origin
5572 (method git-fetch)
5573 (uri (git-reference
b0e7b699 5574 (url "https://github.com/freegish/freegish")
6bb9c854 5575 (commit commit)))
661ad6f0 5576 (file-name (git-file-name name version))
6bb9c854
RW
5577 (sha256
5578 (base32
5579 "1p1zf5qqagmcpi1db2bs02cnalpy3qiymp6yzan7k1bhmv859gsx"))
5580 (modules '((guix build utils)))
5581 ;; The audio files in the "music" directory are licensed under
5582 ;; CC-BY-NC, so we delete them.
5583 (snippet
5584 '(begin
5585 (delete-file-recursively "music")
5586 #t))))
5587 (build-system cmake-build-system)
5588 (arguments
5589 `(#:tests? #f ; no tests included
5590 #:configure-flags
5591 (list "-DCMAKE_INSTALL_FHS=ON")
5592 #:phases
5593 (modify-phases %standard-phases
5594 (add-after 'unpack 'set-DATAPATH
5595 (lambda* (#:key outputs #:allow-other-keys)
5596 (substitute* "CMakeLists.txt"
5597 (("^option\\(INSTALL_FHS" line)
5598 (string-append "add_definitions(-DDATAPATH=\""
5599 (assoc-ref outputs "out") "/share/freegish\")\n"
5600 line)))
5601 #t)))))
5602 (inputs
5603 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))
5604 ("openal" ,openal)
5605 ("libvorbis" ,libvorbis)
5606 ("libogg" ,libogg)
5607 ("mesa" ,mesa)
5608 ("libpng" ,libpng)
5609 ("zlib" ,zlib)))
5610 (home-page "https://github.com/freegish/freegish")
5611 (synopsis "Side-scrolling physics platformer with a ball of tar")
5612 (description "In FreeGish you control Gish, a ball of tar who lives
5613happily with his girlfriend Brea, until one day a mysterious dark creature
5614emerges from a sewer hole and pulls her below ground.")
5615 ;; The textures are available under the Expat license. All other assets
5616 ;; (including levels) are covered under CC-BY-SA or public domain. The
5617 ;; source code is under GPLv2+.
5618 (license (list license:gpl2+
5619 license:expat
5620 license:public-domain
5621 license:cc-by-sa3.0)))))
f0f7bf95
RW
5622
5623(define-public cdogs-sdl
6e65eb3c
TGR
5624 (package
5625 (name "cdogs-sdl")
0c82f6ad
NG
5626 (version "0.8.0")
5627 (source
5628 (origin
5629 (method git-fetch)
5630 (uri (git-reference
b0e7b699 5631 (url "https://github.com/cxong/cdogs-sdl")
0c82f6ad
NG
5632 (commit version)))
5633 (file-name (git-file-name name version))
5634 (sha256
5635 (base32 "0vx37zb2iw7sfw5a2bs97ydlmb301nvy485ybdm8g46c5hn9s13c"))))
6e65eb3c
TGR
5636 (build-system cmake-build-system)
5637 (arguments
5638 `(#:configure-flags
5639 (list (string-append "-DCDOGS_DATA_DIR="
5640 (assoc-ref %outputs "out")
5641 "/share/cdogs-sdl/"))))
0c82f6ad
NG
5642 (native-inputs
5643 `(("pkg-config" ,pkg-config)))
6e65eb3c 5644 (inputs
0c82f6ad
NG
5645 `(("gtk+" ,gtk+)
5646 ("mesa" ,mesa)
6e65eb3c
TGR
5647 ("sdl2" ,sdl2)
5648 ("sdl2-image" ,sdl2-image)
5649 ("sdl2-mixer" ,sdl2-mixer)))
5650 (home-page "https://cxong.github.io/cdogs-sdl/")
5651 (synopsis "Classic overhead run-and-gun game")
5652 (description "C-Dogs SDL is a classic overhead run-and-gun game,
f0f7bf95
RW
5653supporting up to 4 players in co-op and deathmatch modes. Customize your
5654player, choose from many weapons, and blast, slide and slash your way through
5655over 100 user-created campaigns.")
6e65eb3c
TGR
5656 ;; GPLv2+ for code (includes files under BSD-2 and BSD-3),
5657 ;; CC0/CC-BY/CC-BY-SA for assets.
5658 (license (list license:gpl2+
5659 license:bsd-2
5660 license:bsd-3
5661 license:cc0
5662 license:cc-by3.0
5663 license:cc-by-sa3.0))))
bd71525b 5664
649220ad 5665(define-public kiki
bd71525b 5666 (package
649220ad 5667 (name "kiki")
bd71525b
RW
5668 (version "1.0.2")
5669 (source (origin
5670 (method url-fetch)
5671 (uri (string-append "mirror://sourceforge/kiki/kiki-src/"
5672 version "/kiki-" version "-src.tgz"))
5673 (sha256
5674 (base32
5675 "0ihjdsxbn8z3cz0gpcprafiipcqaiskgdnh1rhmw4qff8dszalbn"))
5676 (modules '((guix build utils)))
5677 (snippet
5678 '(begin
5679 (for-each delete-file (find-files "." "\\.dll$"))
5680 #t))
5681 (patches
5682 (search-patches "kiki-level-selection-crash.patch"
5683 "kiki-makefile.patch"
5684 "kiki-missing-includes.patch"
5685 "kiki-portability-64bit.patch"))))
5686 (build-system gnu-build-system)
5687 (arguments
5688 `(#:tests? #f ; there are no tests
5689 #:make-flags '("CXX=g++")
5690 #:phases
5691 (modify-phases %standard-phases
5692 (replace 'configure
5693 (lambda* (#:key inputs outputs #:allow-other-keys)
5694 (setenv "CPLUS_INCLUDE_PATH"
5695 (string-append (assoc-ref inputs "sdl-union")
5696 "/include/SDL:"
5697 (assoc-ref inputs "python")
7cf79d7a
MB
5698 "/include/python2.7:"
5699 (or (getenv "CPLUS_INCLUDE_PATH") "")))
bd71525b
RW
5700 (substitute* "src/main/main.cpp"
5701 (("#include <SDL.h>" line)
5702 (string-append line "
5703#define K_INCLUDE_GLUT
5704#include \"KIncludeTools.h\""))
5705 (("// initialize SDL" line)
5706 (string-append "glutInit(&argc,argv);\n" line)))
5707 (substitute* "src/main/KikiController.cpp"
5708 (("getenv\\(\"KIKI_HOME\"\\)")
5709 (string-append "\"" (assoc-ref outputs "out") "/share/kiki/\"")))
5710 (substitute* "linux/Makefile"
5711 (("CXXOPTS =" line)
5712 (string-append line " -fpermissive"))
5713 (("PYTHON_VERSION=.*") "PYTHON_VERSION=2.7")
5714 (("PYTHONHOME =.*")
5715 (string-append "PYTHONHOME = "
5716 (assoc-ref inputs "python")
5717 "/lib/python2.7/"))
5718 (("\\$\\(GLLIBS\\)" line)
5719 (string-append line " -lm -lpython2.7")))
5720 (substitute* "src/main/KikiPythonWidget.h"
5721 (("#define __KikiPythonWidget" line)
5722 (string-append line "\n#include \"KikiPython.h\"")))
5723 #t))
5724 (add-before 'build 'build-kodilib
5725 (lambda* (#:key make-flags #:allow-other-keys)
5726 (with-directory-excursion "kodilib/linux"
ff61aee8 5727 (apply invoke "make" make-flags))))
bd71525b
RW
5728 (add-after 'build-kodilib 'chdir
5729 (lambda _ (chdir "linux") #t))
5730 (replace 'install
5731 (lambda* (#:key outputs #:allow-other-keys)
5732 (let* ((out (assoc-ref outputs "out"))
5733 (bin (string-append out "/bin"))
5734 (share (string-append out "/share/kiki")))
5735 (mkdir-p bin)
5736 (mkdir-p share)
5737 (install-file "kiki" bin)
5738 (copy-recursively "../py" (string-append share "/py"))
5739 (copy-recursively "../sound" (string-append share "/sound"))
5740 #t))))))
5741 (inputs
5742 `(("glu" ,glu)
5743 ;; Kiki builds fine with freeglut 3.0.0 but segfaults on start.
5744 ("freeglut" ,freeglut-2.8)
5745 ("sdl-union" ,(sdl-union (list sdl
5746 sdl-mixer
5747 sdl-image)))
5748 ("python" ,python-2)))
5749 (native-inputs
5750 `(("swig" ,swig)))
5751 (home-page "http://kiki.sourceforge.net/")
5752 (synopsis "3D puzzle game")
5753 (description "Kiki the nano bot is a 3D puzzle game. It is basically a
5754mixture of the games Sokoban and Kula-World. Your task is to help Kiki, a
5755small robot living in the nano world, repair its maker.")
5756 ;; See <http://metadata.ftp-master.debian.org/changelogs/main/k/
5757 ;; kiki-the-nano-bot/kiki-the-nano-bot_1.0.2+dfsg1-4_copyright>
5758 ;; for a statement from the author.
5759 (license license:public-domain)))
b77e3a1c
RW
5760
5761(define-public teeworlds
5762 (package
5763 (name "teeworlds")
53b9cdd5 5764 (version "0.7.5")
b77e3a1c 5765 (source (origin
f9e5caf9
AV
5766 (method git-fetch)
5767 (uri (git-reference
b0e7b699 5768 (url "https://github.com/teeworlds/teeworlds")
f9e5caf9
AV
5769 (commit version)))
5770 (file-name (git-file-name name version))
b77e3a1c
RW
5771 (sha256
5772 (base32
53b9cdd5 5773 "169dl83q08zl4h813az8hjs4rs3dms9yjn6bnsld4fjcj0imvvc6"))
f9e5caf9
AV
5774 (modules '((guix build utils)
5775 (ice-9 ftw)
5776 (ice-9 regex)
5777 (srfi srfi-1)
5778 (srfi srfi-26)))
5779 (snippet ; remove bundled libraries except md5
5780 '(let ((base-dir "src/engine/external/"))
5781 (for-each (compose (cut delete-file-recursively <>)
5782 (cut string-append base-dir <>))
5783 (remove (cut string-match "(^.)|(^md5$)" <>)
5784 (scandir base-dir)))
b74f7f06 5785 #t))))
b77e3a1c
RW
5786 (build-system gnu-build-system)
5787 (arguments
7aed8b8a 5788 `(#:tests? #f ; no tests included
f9e5caf9
AV
5789 #:modules ((guix build gnu-build-system)
5790 (guix build utils)
5791 (srfi srfi-26))
b77e3a1c
RW
5792 #:phases
5793 (modify-phases %standard-phases
5794 (replace 'configure
5795 (lambda* (#:key outputs #:allow-other-keys)
5796 ;; Embed path to assets.
5797 (substitute* "src/engine/shared/storage.cpp"
5798 (("#define DATA_DIR.*")
5799 (string-append "#define DATA_DIR \""
5800 (assoc-ref outputs "out")
5801 "/share/teeworlds/data"
5802 "\"")))
5803
5804 ;; Bam expects all files to have a recent time stamp.
f9e5caf9 5805 (for-each (cut utime <> 1 1)
b77e3a1c
RW
5806 (find-files "."))
5807
5808 ;; Do not use bundled libraries.
5809 (substitute* "bam.lua"
f9e5caf9
AV
5810 (("local json = Compile.+$")
5811 "local json = nil
5812settings.link.libs:Add(\"jsonparser\")")
5813 (("local png = Compile.+$")
5814 "local png = nil
5815settings.link.libs:Add(\"pnglite\")")
5816 (("local wavpack = Compile.+$")
5817 "local wavpack = nil
5818settings.link.libs:Add(\"wavpack\")")
5819 (("if config\\.zlib\\.value == 1")
5820 "if config.zlib.value"))
5821 (substitute* "src/engine/client/graphics_threaded.cpp"
5822 (("engine/external/pnglite/pnglite\\.h")
5823 "pnglite.h"))
b77e3a1c 5824 (substitute* "src/engine/client/sound.cpp"
f9e5caf9
AV
5825 (("engine/external/wavpack/wavpack\\.h")
5826 "wavpack/wavpack.h"))
b77e3a1c
RW
5827 #t))
5828 (replace 'build
5829 (lambda _
f9e5caf9 5830 (invoke "bam" "-a" "-v" "conf=release")))
b77e3a1c
RW
5831 (replace 'install
5832 (lambda* (#:key outputs #:allow-other-keys)
f9e5caf9
AV
5833 (let* ((arch ,(system->linux-architecture
5834 (or (%current-target-system)
5835 (%current-system))))
076fe846
OP
5836 (build (string-append "build/" (if (string=? arch "i386")
5837 "x86" arch)
5838 "/release/"))
f9e5caf9
AV
5839 (data-built (string-append build "data/"))
5840 (out (assoc-ref outputs "out"))
5841 (bin (string-append out "/bin/"))
5842 (data (string-append out "/share/teeworlds/data/")))
5843 (for-each (cut install-file <> bin)
5844 (map (cut string-append build <>)
5845 '("teeworlds" "teeworlds_srv")))
5846 (copy-recursively data-built data)
b77e3a1c 5847 #t))))))
b77e3a1c
RW
5848 (inputs
5849 `(("freetype" ,freetype)
5850 ("glu" ,glu)
f9e5caf9 5851 ("json-parser" ,json-parser)
b77e3a1c 5852 ("mesa" ,mesa)
f9e5caf9
AV
5853 ("pnglite" ,pnglite)
5854 ("sdl2" ,sdl2)
5855 ("sdl2-image" ,sdl2-image)
5856 ("sdl2-mixer" ,sdl2-mixer)
b77e3a1c
RW
5857 ("wavpack" ,wavpack)
5858 ("zlib" ,zlib)))
5859 (native-inputs
5860 `(("bam" ,bam)
f9e5caf9 5861 ("python" ,python-wrapper)
e402a66b 5862 ("pkg-config" ,pkg-config)))
b77e3a1c
RW
5863 (home-page "https://www.teeworlds.com")
5864 (synopsis "2D retro multiplayer shooter game")
5865 (description "Teeworlds is an online multiplayer game. Battle with up to
586616 players in a variety of game modes, including Team Deathmatch and Capture
5867The Flag. You can even design your own maps!")
5868 (license license:bsd-3)))
e02f1663 5869
162a4a03
RW
5870(define-public enigma
5871 (package
5872 (name "enigma")
5873 (version "1.21")
5874 (source (origin
5875 (method url-fetch)
5876 (uri (string-append "mirror://sourceforge/enigma-game/"
5877 "Release%20" version "/enigma-"
5878 version ".tar.gz"))
5879 (sha256
5880 (base32
5881 "00ffh9pypj1948pg3q9sjp1nmiabh52p5c8wpg9n1dcfgl3cywnq"))))
5882 (build-system gnu-build-system)
5883 (arguments
5884 `(#:configure-flags
5885 (list "--with-system-enet")
5886 #:phases
5887 (modify-phases %standard-phases
0b95f51e
MB
5888 (add-after 'unpack 'fix-build-with-new-gcc
5889 (lambda _
5890 ;; Fix build with GCC6 and later by avoiding comparing ifstream
5891 ;; to NULL. Can be removed for versions > 1.21.
5892 (substitute* "src/lev/Proxy.cc"
5893 (("ifs != NULL")
5894 "ifs"))
5895 #t))
162a4a03
RW
5896 (add-after 'unpack 'find-sdl
5897 (lambda _
5898 (substitute* "configure"
5899 (("SDL_ttf.h") "SDL/SDL_ttf.h"))
5900 (substitute* '("tools/ttf2bmf.cc"
5901 "lib-src/enigma-core/ecl_font.cc"
5902 "lib-src/enigma-core/ecl_video.cc"
5903 "lib-src/enigma-core/ecl_buffer.hh"
5904 "src/SoundEngine.cc"
5905 "src/SoundEngine.hh"
5906 "src/MusicManager.cc"
5907 "src/MusicManager.hh"
5908 "src/d_models.cc"
5909 "src/main.cc"
5910 "src/network.cc")
5911 (("#include \"SDL_(image|ttf|mixer|types|syswm|mutex).h\"" line header)
5912 (string-append "#include \"SDL/SDL_" header ".h\"")))
5913 (substitute* "src/main.cc"
5914 (("#include <SDL_(image|ttf|mixer).h>" line header)
5915 (string-append "#include \"SDL/SDL_" header ".h\"")))
5916 #t)))))
5917 (inputs
5918 `(("xerces-c" ,xerces-c)
5919 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
5920 ("curl" ,curl)
5921 ("enet" ,enet)))
5922 (native-inputs
5923 `(("pkg-config" ,pkg-config)
5924 ("imagemagick" ,imagemagick)))
340978d7 5925 (home-page "https://www.nongnu.org/enigma")
162a4a03
RW
5926 (synopsis "Puzzle game with a dexterity component")
5927 (description "Enigma is a puzzle game with 550 unique levels. The object
5928of the game is to find and uncover pairs of identically colored ‘Oxyd’ stones.
5929Simple? Yes. Easy? Certainly not! Hidden traps, vast mazes, laser beams,
5930and most of all, countless hairy puzzles usually block your direct way to the
5931Oxyd stones. Enigma’s game objects (and there are hundreds of them, lest you
5932get bored) interact in many unexpected ways, and since many of them follow the
5933laws of physics (Enigma’s special laws of physics, that is), controlling them
5934with the mouse isn’t always trivial.")
5935 (license license:gpl2+)))
5936
10d53153
CLW
5937(define-public chroma
5938 (package
5939 (name "chroma")
9cf65f05 5940 (version "1.17")
10d53153
CLW
5941 (source (origin
5942 (method url-fetch)
5943 (uri (string-append "http://level7.org.uk/chroma/download/chroma-"
5944 version ".tar.bz2"))
5945 (sha256
5946 (base32
9cf65f05 5947 "047sf00x71xbmi8bqrhfbmr9bk89l2gbykkqsfpw4wz6yfjscs6y"))))
10d53153
CLW
5948 (build-system gnu-build-system)
5949 (arguments
982a6e79
JG
5950 `(#:tests? #f ; no tests included
5951 #:configure-flags '("CFLAGS=-fgnu89-inline"))) ; fix inlines
10d53153
CLW
5952 (inputs
5953 `(("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
5954 ("freetype" ,freetype)
5955 ("ncurses" ,ncurses)
5956 ("fontconfig" ,fontconfig)
5957 ("libxft" ,libxft)))
5958 (native-inputs
5959 `(("pkg-config" ,pkg-config)))
5960 (home-page "http://level7.org.uk/chroma/")
5961 (synopsis "Abstract puzzle game")
5962 (description "Chroma is an abstract puzzle game. A variety of colourful
5963shapes are arranged in a series of increasingly complex patterns, forming
371a647e
NG
5964fiendish traps that must be disarmed and mysterious puzzles that must be
5965manipulated in order to give up their subtle secrets. Initially so
5966straightforward that anyone can pick it up and begin to play, yet gradually
5967becoming difficult enough to tax even the brightest of minds.")
10d53153
CLW
5968 (license license:gpl2+)))
5969
649220ad 5970(define-public fillets-ng
e02f1663 5971 (package
649220ad 5972 (name "fillets-ng")
e02f1663
RW
5973 (version "1.0.1")
5974 (source (origin
5975 (method url-fetch)
5976 (uri (string-append "mirror://sourceforge/fillets/"
5977 "Fish%20Fillets%20-%20Next%20Generation/"
5978 version "/fillets-ng-" version ".tar.gz"))
5979 (sha256
5980 (base32
5981 "1nljp75aqqb35qq3x7abhs2kp69vjcj0h1vxcpdyn2yn2nalv6ij"))))
5982 (build-system gnu-build-system)
5983 (arguments
5984 `(#:configure-flags
5985 (list (string-append "--with-lua="
5986 (assoc-ref %build-inputs "lua")))
5987 #:make-flags
5988 (list (string-append "CFLAGS=-I"
5989 (assoc-ref %build-inputs "sdl-union")
5990 "/include/SDL")
5991 (string-append "CXXFLAGS=-I"
5992 (assoc-ref %build-inputs "sdl-union")
5993 "/include/SDL"))
5994 #:phases
5995 (modify-phases %standard-phases
5996 ;; Lua 5.1 does not provide it.
5997 (add-after 'unpack 'do-not-link-with-lualib
5998 (lambda _
5999 (substitute* "configure"
6000 (("-llualib") ""))
6001 #t))
6002 (add-after 'install 'install-data
6003 (lambda* (#:key inputs outputs #:allow-other-keys)
6004 (let ((data (string-append (assoc-ref outputs "out")
6005 "/share/games/fillets-ng")))
6006 (mkdir-p data)
f08d34a0
RW
6007 (invoke "tar" "-xvf"
6008 (assoc-ref inputs "fillets-ng-data")
6009 "--strip-components=1"
6010 "-C" data)))))))
e02f1663
RW
6011 (inputs
6012 `(("sdl-union" ,(sdl-union (list sdl
6013 sdl-mixer
6014 sdl-image
6015 sdl-ttf)))
6016 ("fribidi" ,fribidi)
6017 ("libx11" ,libx11)
6018 ("lua" ,lua-5.1)))
6019 (native-inputs
6020 `(("pkg-config" ,pkg-config)
6021 ("fillets-ng-data"
6022 ,(origin
6023 (method url-fetch)
6024 (uri (string-append "mirror://sourceforge/fillets/"
6025 "Fish%20Fillets%20-%20Next%20Generation/"
6026 version "/fillets-ng-data-" version ".tar.gz"))
6027 (sha256
6028 (base32
6029 "169p0yqh2gxvhdilvjc2ld8aap7lv2nhkhkg4i1hlmgc6pxpkjgh"))))))
6030 (home-page "http://fillets.sourceforge.net/")
6031 (synopsis "Puzzle game")
6032 (description "Fish Fillets NG is strictly a puzzle game. The goal in
6033every of the seventy levels is always the same: find a safe way out. The fish
6034utter witty remarks about their surroundings, the various inhabitants of their
6035underwater realm quarrel among themselves or comment on the efforts of your
6036fish. The whole game is accompanied by quiet, comforting music.")
6037 (license license:gpl2+)))
dd37a545 6038
649220ad 6039(define-public crawl
dd37a545 6040 (package
649220ad 6041 (name "crawl")
7fc273fe 6042 (version "0.25.0")
dd37a545 6043 (source
6044 (origin
6045 (method url-fetch)
6046 (uri (list
6047 ;; Older releases get moved into a versioned directory
6048 (string-append "http://crawl.develz.org/release/"
6049 (version-major+minor version) "/stone_soup-"
6050 version "-nodeps.tar.xz")
6051 ;; Only the latest release is in this directory
6052 (string-append "http://crawl.develz.org/release/stone_soup-"
6053 version "-nodeps.tar.xz")))
6054 (sha256
7fc273fe
CLW
6055 (base32 "0rn1wjxdqw33caiwisfypm1j8cid3c9pz01ahicl17144zs29z3d"))
6056 (patches (search-patches "crawl-upgrade-saves.patch"))
6057 ;; The 0.25.0 -nodeps.tar.xz was built from an OSX machine; normally
6058 ;; apparently it's built from a Debian machine before the Debian
6059 ;; packages are made. These ._* files are binary and have the string
6060 ;; "Mac OS X" in them... removing these seems to result in compilation
6061 ;; again.
6062 (modules '((guix build utils)))
6063 (snippet
6064 '(begin
6065 (for-each delete-file (find-files "." "^\\._"))
6066 #t))))
dd37a545 6067 (build-system gnu-build-system)
6068 (inputs
6069 `(("lua51" ,lua-5.1)
6070 ("ncurses" ,ncurses)
6071 ("sqlite" ,sqlite)
6072 ("zlib" ,zlib)))
6073 (native-inputs
6074 `(("bison" ,bison)
6075 ("flex" ,flex)
6076 ("perl" ,perl)
fc7d6bc6 6077 ("python" ,python-wrapper)
e366521a 6078 ("python-pyyaml" ,python-pyyaml)
dd37a545 6079 ("pkg-config" ,pkg-config)))
6080 (arguments
a5c8460a 6081 `(#:make-flags
dd37a545 6082 (let* ((sqlite (assoc-ref %build-inputs "sqlite"))
6083 (out (assoc-ref %outputs "out")))
6084 (list (string-append "SQLITE_INCLUDE_DIR=" sqlite "/include")
6085 (string-append "prefix=" out)
6086 "SAVEDIR=~/.crawl"
564df7e5 6087 ;; Don't compile with SSE on systems which don't have it.
a5c8460a
EF
6088 ,@(match (%current-system)
6089 ((or "i686-linux" "x86_64-linux")
6090 '())
6091 (_ '("NOSSE=TRUE")))
dd37a545 6092 ;; don't build any bundled dependencies
6093 "BUILD_LUA="
6094 "BUILD_SQLITE="
6095 "BUILD_ZLIB="
6096 "-Csource"))
6097 #:phases
6098 (modify-phases %standard-phases
606c1987
EF
6099 (add-after 'unpack 'find-SDL-image
6100 (lambda _
6101 (substitute* "source/windowmanager-sdl.cc"
6102 (("SDL_image.h") "SDL2/SDL_image.h"))
6103 #t))
dd37a545 6104 (delete 'configure)
e366521a 6105 (replace 'check
dd37a545 6106 (lambda* (#:key inputs outputs make-flags #:allow-other-keys)
6107 (setenv "HOME" (getcwd))
6108 ;; Fake a terminal for the test cases.
6109 (setenv "TERM" "xterm-256color")
e366521a
KK
6110 ;; Run the tests that don't require a debug build.
6111 (apply invoke "make" "nondebugtest"
d59a8ac6
RW
6112 (format #f "-j~d" (parallel-job-count))
6113 ;; Force command line build for test cases.
6114 (append make-flags '("GAME=crawl" "TILES="))))))))
dd37a545 6115 (synopsis "Roguelike dungeon crawler game")
36a0b5b4
PN
6116 (description "Dungeon Crawl Stone Soup (also known as \"Crawl\" or DCSS
6117for short) is a roguelike adventure through dungeons filled with dangerous
6118monsters in a quest to find the mystifyingly fabulous Orb of Zot.")
dd37a545 6119 (home-page "https://crawl.develz.org")
6120 (license (list license:gpl2+
6121 license:bsd-2
6122 license:bsd-3
6123 license:cc0
6124 license:expat
6125 license:zlib
6126 license:asl2.0))))
cae491ab 6127
1243aaac 6128;; The linter here claims that patch file names should start with the package
6129;; name. But, in this case, the patches are inherited from crawl with the
6130;; "crawl-" prefix instead of "crawl-tiles-".
649220ad 6131(define-public crawl-tiles
ae548434 6132 (package
649220ad
NG
6133 (inherit crawl)
6134 (name "crawl-tiles")
ae548434 6135 (arguments
6136 (substitute-keyword-arguments
6137 (package-arguments crawl)
6138 ((#:make-flags flags)
6139 `(let ((dejavu (assoc-ref %build-inputs "font-dejavu")))
6140 (cons*
6141 (string-append "PROPORTIONAL_FONT=" dejavu
6142 "/share/fonts/truetype/DejaVuSans.ttf")
6143 (string-append "MONOSPACED_FONT=" dejavu
6144 "/share/fonts/truetype/DejaVuSansMono.ttf")
6145 "TILES=y"
6146 ;; Rename the executable to allow parallel installation with crawl.
6147 "GAME=crawl-tiles"
6148 ,flags)))))
6149 (inputs
6150 `(,@(package-inputs crawl)
6151 ("font-dejavu" ,font-dejavu)
6152 ("freetype6" ,freetype)
6153 ("glu" ,glu)
6154 ("libpng" ,libpng)
6155 ("sdl2" ,sdl2)
6156 ("sdl2-image" ,sdl2-image)
6157 ("sdl2-mixer" ,sdl2-mixer)))
6158 (native-inputs
6159 `(,@(package-native-inputs crawl)
6438a468 6160 ("pngcrush" ,pngcrush)
ae548434 6161 ("which" ,which)))
6162 (synopsis "Graphical roguelike dungeon crawler game")))
6163
cae491ab
JL
6164(define-public lugaru
6165 (package
6166 (name "lugaru")
6167 (version "1.2")
6168 (source (origin
6169 (method url-fetch)
6170 (uri (string-append "https://bitbucket.org/osslugaru/lugaru/downloads/"
30b8b201 6171 "lugaru-" version ".tar.xz"))
cae491ab
JL
6172 (sha256
6173 (base32
6174 "15zgcshy22q51rm72zi6y9z7qlgnz5iw3gczjdlir4bqmxy4gspk"))))
6175 (build-system cmake-build-system)
6176 (arguments
6177 `(#:configure-flags
6178 (list "-DSYSTEM_INSTALL=ON")
6179 ;; no test target
6180 #:tests? #f))
6181 (native-inputs
6182 `(("pkg-config" ,pkg-config)))
6183 (inputs
6184 `(("sdl2" ,sdl2)
6185 ("glu" ,glu)
6186 ("libjpeg" ,libjpeg-turbo)
6187 ("libpng" ,libpng)
6188 ("openal" ,openal)
6189 ("vorbis" ,libvorbis)
6190 ("zlib" ,zlib)))
6191 (home-page "https://osslugaru.gitlab.io")
6192 (synopsis "Cross-platform third-person action game")
6193 (description "Lugaru is a third-person action game. The main character,
6194Turner, is an anthropomorphic rebel bunny rabbit with impressive combat skills.
6195In his quest to find those responsible for slaughtering his village, he uncovers
6196a far-reaching conspiracy involving the corrupt leaders of the rabbit republic
6197and the starving wolves from a nearby den. Turner takes it upon himself to
6198fight against their plot and save his fellow rabbits from slavery.")
6199 (license (list license:gpl2+ ; code
6200 ;; assets:
6201 license:cc-by-sa3.0
6202 license:cc-by-sa4.0))))
bff33e6c
CL
6203
6204(define-public 0ad-data
6205 (package
6206 (name "0ad-data")
8c00379c 6207 (version "0.0.23b-alpha")
bff33e6c
CL
6208 (source
6209 (origin
6210 (method url-fetch)
706d6190 6211 (uri (string-append "https://releases.wildfiregames.com/0ad-"
bff33e6c
CL
6212 version "-unix-data.tar.xz"))
6213 (file-name (string-append name "-" version ".tar.xz"))
6214 (sha256
6215 (base32
8c00379c 6216 "04x7729hk6zw1xj3n4s4lvaviijsnbjf5rhzvjxlr5fygvg4l6z1"))
bff33e6c
CL
6217 (modules '((guix build utils)))
6218 (snippet
6219 #~(begin
6cbee49d
MW
6220 (for-each (lambda (name)
6221 (let* ((dir (string-append "binaries/data/mods/" name))
6222 (file (string-append dir "/" name ".zip"))
6223 (unzip #$(file-append unzip "/bin/unzip")))
6715e1c2 6224 (invoke unzip "-d" dir file)
6cbee49d
MW
6225 (delete-file file)))
6226 '("mod" "public"))
bff33e6c
CL
6227 #t))))
6228 (build-system trivial-build-system)
6229 (native-inputs `(("tar" ,tar)
6230 ("xz" ,xz)))
6231 (arguments
6232 `(#:modules ((guix build utils))
6233 #:builder
6234 (begin
6235 (use-modules (guix build utils))
6236 (let ((out (assoc-ref %outputs "out"))
6237 (source (assoc-ref %build-inputs "source"))
6238 (tar (string-append (assoc-ref %build-inputs "tar") "/bin/tar"))
6239 (xz-path (string-append (assoc-ref %build-inputs "xz") "/bin")))
6240 (setenv "PATH" xz-path)
6241 (mkdir out)
e3cfef22 6242 (invoke tar "xvf" source "-C" out "--strip=3")))))
bff33e6c
CL
6243 (synopsis "Data files for 0ad")
6244 (description "0ad-data provides the data files required by the game 0ad.")
6245 (home-page "https://play0ad.com")
6246 (license (list (license:fsdg-compatible
6247 "http://tavmjong.free.fr/FONTS/ArevCopyright.txt"
88042154
LC
6248 "Similar to the license of the Bitstream Vera fonts.")
6249 (license:fsdg-compatible
6250 "https://www.gnome.org/fonts/#Final_Bitstream_Vera_Fonts")
bff33e6c
CL
6251 license:cc-by-sa3.0
6252 license:expat
6253 license:gfl1.0
6254 license:gpl2+
6255 license:gpl3+))))
6256
6257(define-public 0ad
6258 (package
6259 (name "0ad")
8c00379c 6260 (version "0.0.23b-alpha")
bff33e6c
CL
6261 (source
6262 (origin
6263 (method url-fetch)
706d6190 6264 (uri (string-append "https://releases.wildfiregames.com/0ad-"
bff33e6c
CL
6265 version "-unix-build.tar.xz"))
6266 (file-name (string-append name "-" version ".tar.xz"))
6267 (sha256
6268 (base32
8c00379c 6269 "0draa53xg69i5qhqym85658m45xhwkbiimaldj4sr3703rjgggq1"))))
bff33e6c
CL
6270 ;; A snippet here would cause a build failure because of timestamps
6271 ;; reset. See https://bugs.gnu.org/26734.
bff33e6c
CL
6272 (inputs
6273 `(("0ad-data" ,0ad-data)
6274 ("curl" ,curl)
6275 ("enet" ,enet)
6276 ("gloox" ,gloox)
6277 ("icu4c" ,icu4c)
6278 ("libpng" ,libpng)
706d6190 6279 ("libsodium" ,libsodium)
bff33e6c
CL
6280 ("libvorbis" ,libvorbis)
6281 ("libxcursor" ,libxcursor)
6282 ("libxml2" ,libxml2)
6283 ("miniupnpc" ,miniupnpc)
6284 ("mozjs-38" ,mozjs-38)
6285 ("openal" ,openal)
6286 ("sdl2" ,sdl2)
6287 ("wxwidgets" ,wxwidgets)
6288 ("zlib" ,zlib)))
6289 (native-inputs
6290 `(("boost" ,boost)
c69959f0 6291 ("cmake" ,cmake-minimal)
bff33e6c
CL
6292 ("mesa" ,mesa)
6293 ("pkg-config" ,pkg-config)
6294 ("python-2" ,python-2)))
6295 (build-system gnu-build-system)
6296 (arguments
809b8842
CB
6297 `(#:make-flags '("config=release" "verbose=1" "-C" "build/workspaces/gcc")
6298 #:phases
bff33e6c
CL
6299 (modify-phases %standard-phases
6300 (add-after 'unpack 'delete-bundles
6301 (lambda _
6302 (delete-file-recursively "libraries/source/spidermonkey")
6303 #t))
6304 (add-after 'unpack 'fix-x11-includes
6305 (lambda _
6306 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
6307 (("<Xlib.h>") "<X11/Xlib.h>"))
6308 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
6309 (("<Xatom.h>") "<X11/Xatom.h>"))
6310 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
6311 (("<Xcursor/Xcursor.h>") "<X11/Xcursor/Xcursor.h>"))
6312 #t))
6313 (replace 'configure
6314 (lambda* (#:key inputs outputs #:allow-other-keys)
6315 (let* ((jobs (number->string (parallel-job-count)))
6316 (out (assoc-ref outputs "out"))
6317 (lib (string-append out "/lib"))
6318 (data (string-append out "/share/0ad")))
6319 (setenv "JOBS" (string-append "-j" jobs))
6320 (setenv "CC" "gcc")
6321 (with-directory-excursion "build/workspaces"
7b67bb1f
RW
6322 (invoke "./update-workspaces.sh"
6323 (string-append "--libdir=" lib)
6324 (string-append "--datadir=" data)
6325 ;; TODO: "--with-system-nvtt"
6326 "--with-system-mozjs38")))))
bff33e6c
CL
6327 (delete 'check)
6328 (replace 'install
6329 (lambda* (#:key inputs outputs #:allow-other-keys)
809b8842 6330 (chdir "binaries")
bff33e6c
CL
6331 (let* ((out (assoc-ref outputs "out"))
6332 (bin (string-append out "/bin"))
6333 (lib (string-append out "/lib"))
6334 (data (string-append out "/share/0ad"))
6335 (applications (string-append out "/share/applications"))
6336 (pixmaps (string-append out "/share/pixmaps"))
6337 (0ad-data (assoc-ref inputs "0ad-data")))
6338 ;; data
6339 (copy-recursively "data" data)
6340 (for-each (lambda (file)
6341 (symlink (string-append 0ad-data "/" file)
6342 (string-append data "/" file)))
6343 '("config" "mods/mod" "mods/public" "tools"))
6344 ;; libraries
6345 (for-each (lambda (file)
6346 (install-file file lib))
6347 (find-files "system" "\\.so$"))
6348 ;; binaries
6349 (install-file "system/pyrogenesis" bin)
6350 (with-directory-excursion bin
6351 (symlink "pyrogenesis" "0ad"))
6352 ;; resources
6353 (with-directory-excursion "../build/resources"
6354 (install-file "0ad.desktop" applications)
6355 (install-file "0ad.png" pixmaps))
6356 #t)))
6357 (add-after 'install 'check
6358 (lambda _
6359 (with-directory-excursion "system"
7b67bb1f 6360 (invoke "./test")))))))
bff33e6c
CL
6361 (home-page "https://play0ad.com")
6362 (synopsis "3D real-time strategy game of ancient warfare")
6363 (description "0 A.D. is a real-time strategy (RTS) game of ancient
6364warfare. It's a historically-based war/economy game that allows players to
6365relive or rewrite the history of twelve ancient civilizations, each depicted
6366at their peak of economic growth and military prowess.
6367
63680ad needs a window manager that supports 'Extended Window Manager Hints'.")
6369 (license (list license:bsd-2
6370 license:bsd-3
6371 license:expat
6372 license:gpl2+
6373 license:ibmpl1.0
6374 license:isc
6375 license:lgpl2.1
6376 license:lgpl3
6377 license:mpl2.0
6378 license:zlib))))
dec63df4 6379
6380;; There have been no official releases.
6381(define-public open-adventure
be6e2c30 6382 (let* ((commit "d43854f0f6bb8e9eea7fbce80348150e7e7fc34d")
6383 (revision "2"))
dec63df4 6384 (package
6385 (name "open-adventure")
6386 (version (string-append "2.5-" revision "." (string-take commit 7)))
6387 (source (origin
6388 (method git-fetch)
6389 (uri (git-reference
6390 (url "https://gitlab.com/esr/open-adventure")
6391 (commit commit)))
6392 (file-name (string-append name "-" version "-checkout"))
6393 (sha256
6394 (base32
be6e2c30 6395 "08bwrvf4axb1rsfd6ia1fddsky9pc1p350vjskhaakg2czc6dsk0"))))
dec63df4 6396 (build-system gnu-build-system)
6397 (arguments
6398 `(#:make-flags (list "CC=gcc")
6399 #:parallel-build? #f ; not supported
6400 #:phases
6401 (modify-phases %standard-phases
be6e2c30 6402 (replace 'configure
6403 (lambda* (#:key inputs outputs #:allow-other-keys)
6b1c3efa 6404 ;; Linenoise is meant to be included, so we have to
6405 ;; copy it into the working directory.
be6e2c30 6406 (let* ((linenoise (assoc-ref inputs "linenoise"))
6407 (noisepath (string-append linenoise "/include/linenoise"))
6408 (out (assoc-ref outputs "out")))
6409 (copy-recursively noisepath "linenoise"))
6410 #t))
dec63df4 6411 (add-before 'build 'use-echo
6412 (lambda _
6413 (substitute* "tests/Makefile"
6414 (("/bin/echo") (which "echo")))
6415 #t))
6416 (add-after 'build 'build-manpage
6417 (lambda _
6418 ;; This target is missing a dependency
6419 (substitute* "Makefile"
be6e2c30 6420 ((".adoc.6:" line)
6421 (string-append line " advent.adoc")))
27cd31e6 6422 (invoke "make" ".adoc.6")))
dec63df4 6423 ;; There is no install target
6424 (replace 'install
6425 (lambda* (#:key outputs #:allow-other-keys)
6426 (let* ((out (assoc-ref outputs "out"))
6427 (bin (string-append out "/bin"))
6428 (man (string-append out "/share/man/man6")))
6429 (install-file "advent" bin)
6430 (install-file "advent.6" man))
6431 #t)))))
6432 (native-inputs
be6e2c30 6433 `(("asciidoc" ,asciidoc)
6434 ("linenoise" ,linenoise)
6435 ("python" ,python)
6436 ("python-pyyaml" ,python-pyyaml)))
dec63df4 6437 (home-page "https://gitlab.com/esr/open-adventure")
6438 (synopsis "Colossal Cave Adventure")
6439 (description "The original Colossal Cave Adventure from 1976 was the
6440origin of all text adventures, dungeon-crawl (computer) games, and
6441computer-hosted roleplaying games. This is the last version released by
6442Crowther & Woods, its original authors, in 1995. It has been known as
6443\"adventure 2.5\" and \"430-point adventure\".")
6444 (license license:bsd-2))))
1f88f189 6445
649220ad 6446(define-public tome4
1f88f189 6447 (package
649220ad 6448 (name "tome4")
f894ffd8 6449 (version "1.6.7")
1f88f189
OP
6450 (synopsis "Single-player, RPG roguelike game set in the world of Eyal")
6451 (source
6452 (origin
6453 (method url-fetch)
6454 (uri (string-append "https://te4.org/dl/t-engine/t-engine4-src-"
6455 version ".tar.bz2"))
6456 (sha256
f894ffd8 6457 (base32 "0283hvms5hr29zr0grd6gq059k0hg8hcz3fsmwjmysiih8790i68"))
1f88f189
OP
6458 (modules '((guix build utils)))
6459 (snippet
6cbee49d
MW
6460 '(begin
6461 (substitute* '("src/music.h" "src/tSDL.h")
6462 (("#elif defined(__FreeBSD__)" line)
6463 (string-append
6464 line " || defined(__GNUC__)")))
19c0cdb9
OP
6465 (substitute* '("src/tgl.h")
6466 (("#include <GL/glext.h>") ""))
6cbee49d 6467 #t))))
1f88f189
OP
6468 (build-system gnu-build-system)
6469 (native-inputs
6470 `(("unzip" ,unzip)))
6471 (inputs
6472 `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
6473 ("glu" ,glu)
6474 ("premake4" ,premake4)
6475 ("openal" ,openal)
6476 ("vorbis" ,libvorbis)
6477 ("luajit" ,luajit)))
6478 (arguments
6479 `(#:make-flags '("CC=gcc" "config=release")
ba73c434
MB
6480 ;; XXX: Building in parallel occasionally causes this build failure:
6481 ;; ../src/luajit2/src/host/buildvm.c:73:10: fatal error: buildvm_arch.h:
6482 ;; No such file or directory
6483 #:parallel-build? #f
1f88f189 6484 #:phases (modify-phases %standard-phases
972b87b1 6485 (delete 'bootstrap)
1f88f189
OP
6486 (replace 'configure
6487 (lambda _
13a504af 6488 (invoke "premake4" "gmake")
1f88f189
OP
6489 #t))
6490 (add-after 'set-paths 'set-sdl-paths
6491 (lambda* (#:key inputs #:allow-other-keys)
6492 (setenv "CPATH"
6493 (string-append (assoc-ref inputs "sdl-union")
fa0d5854 6494 "/include/SDL2:"
f27b1cf0 6495 (or (getenv "CPATH") "")))
1f88f189
OP
6496 #t))
6497 (delete 'check)
6498 ;; premake doesn't provide install target
6499 (replace 'install
6500 (lambda* (#:key inputs outputs #:allow-other-keys)
6501 (let* ((out (assoc-ref outputs "out"))
6502 (usr (string-append out "/usr"))
6503 (bin (string-append out "/bin"))
6504 (licenses (string-append out "/share/licenses"))
6505 (documents (string-append out "/share/doc"))
6506 (pixmaps (string-append out "/share/pixmaps"))
6507 (icon "te4-icon.png")
6508 (data (string-append out "/share/" ,name))
6509 (applications (string-append
6510 out "/share/applications"))
6511 (unzip (string-append
6512 (assoc-ref inputs "unzip") "/bin/unzip"))
6513 (wrapper (string-append bin "/" ,name)))
6514 ;; icon
6515 (mkdir-p pixmaps)
26d52476
OP
6516 (invoke unzip "-j"
6517 (string-append
6518 "game/engines/te4-" ,version ".teae")
6519 (string-append
6520 "data/gfx/" icon) "-d" pixmaps)
1f88f189
OP
6521 ;; game executable
6522 (install-file "t-engine" data)
6523 (mkdir-p bin)
6524 (with-output-to-file wrapper
6525 (lambda ()
6526 (display
6527 (string-append
6528 "#!/bin/sh\n"
6529 ;; No bootstrap code found,
6530 ;; defaulting to working directory
6531 ;; for engine code!
6532 "cd " data "\n"
6533 "exec -a tome4 ./t-engine \"$@\"\n"))))
6534 (chmod wrapper #o555)
6535 ;; licenses
6536 (for-each (lambda (file)
6537 (install-file file licenses))
6538 '("COPYING" "COPYING-MEDIA"))
6539 ;; documents
6540 (for-each (lambda (file)
6541 (install-file file documents))
6542 '("CONTRIBUTING" "CREDITS"))
6543 ;; data
6544 (copy-recursively "bootstrap" (string-append
6545 data "/bootstrap"))
6546 (copy-recursively "game" (string-append data "/game"))
6547 ;; launcher
6548 (mkdir-p applications)
96a320e5
PN
6549 (make-desktop-entry-file
6550 (string-append applications "/" ,name ".desktop")
6551 #:name "ToME4"
6552 #:comment ,synopsis
6553 #:exec ,name
6554 #:icon icon
6555 #:categories '("Game" "RolePlaying")))
1f88f189
OP
6556 #t)))))
6557 (home-page "https://te4.org")
6558 (description "Tales of Maj’Eyal (ToME) RPG, featuring tactical turn-based
6559combat and advanced character building. Play as one of many unique races and
6560classes in the lore-filled world of Eyal, exploring random dungeons, facing
6561challenging battles, and developing characters with your own tailored mix of
6562abilities and powers. With a modern graphical and customisable interface,
6563intuitive mouse control, streamlined mechanics and deep, challenging combat,
6564Tales of Maj’Eyal offers engaging roguelike gameplay for the 21st century.")
6565 (license license:gpl3+)))
7a070f02 6566
6567(define-public quakespasm
6568 (package
6569 (name "quakespasm")
18bbaf67 6570 (version "0.93.2")
7a070f02 6571 (source
6572 (origin
6573 (method url-fetch)
6574 (uri (string-append "mirror://sourceforge/quakespasm/Source/quakespasm-"
6575 version ".tgz"))
6576 (sha256
18bbaf67 6577 (base32 "0qm0j5drybvvq8xadfyppkpk3rxqsxbywzm6iwsjwdf0iia3gss5"))))
7a070f02 6578 (arguments
6579 `(#:tests? #f
6580 #:make-flags '("CC=gcc"
6581 "MP3LIB=mpg123"
6582 "USE_CODEC_FLAC=1"
6583 "USE_CODEC_MIKMOD=1"
6584 "USE_SDL2=1"
6585 "-CQuake")
6586 #:phases (modify-phases %standard-phases
6587 (delete 'configure)
6588 (add-after 'unpack 'fix-makefile-paths
6589 (lambda* (#:key outputs #:allow-other-keys)
6590 (let ((out (assoc-ref outputs "out")))
6591 (mkdir-p (string-append out "/bin"))
6592 (substitute* "Quake/Makefile"
6593 (("/usr/local/games")
6594 (string-append out "/bin")))
6595 #t))))))
6596 (build-system gnu-build-system)
6597 (inputs `(("libmikmod" ,libmikmod)
6598 ("libvorbis" ,libvorbis)
6599 ("flac" ,flac)
6600 ("mesa" ,mesa)
6601 ("mpg123" ,mpg123)
6602 ("sdl2" ,sdl2)))
6603 (synopsis "First person shooter engine for Quake 1")
6604 (description "Quakespasm is a modern engine for id software's Quake 1.
6605It includes support for 64 bit CPUs, custom music playback, a new sound driver,
6606some graphical niceities, and numerous bug-fixes and other improvements.")
6607 (home-page "http://quakespasm.sourceforge.net/")
6608 (license license:gpl2+)))
916bb947 6609
7a6be5b9
RH
6610(define-public vkquake
6611 (package
6612 (inherit quakespasm)
6613 (name "vkquake")
3e7b376e 6614 (version "1.01.0")
7a6be5b9
RH
6615 (source
6616 (origin
f5e1a0e5
TGR
6617 (method git-fetch)
6618 (uri (git-reference
b0e7b699 6619 (url "https://github.com/Novum/vkQuake")
f5e1a0e5
TGR
6620 (commit version)))
6621 (file-name (git-file-name name version))
7a6be5b9 6622 (sha256
f5e1a0e5 6623 (base32 "1iwin8j5kbyrknbkhjgpy8nmm7pxqzr0daa9gn7p38qhg2mh0a39"))))
7a6be5b9
RH
6624 (arguments
6625 `(#:make-flags
6626 (let ((vulkanlib (string-append (assoc-ref %build-inputs
e6fcf903 6627 "vulkan-loader") "/lib")))
7a6be5b9
RH
6628 (list "CC=gcc"
6629 "MP3LIB=mpg123"
6630 "USE_CODEC_FLAC=1"
6631 "USE_CODEC_MIKMOD=1"
6632 "USE_SDL2=1"
6633 (string-append "LDFLAGS=-Wl,-rpath=" vulkanlib)
6634 "-CQuake"))
6635 #:phases (modify-phases %standard-phases
51f3b349
MB
6636 (add-after 'unpack 'patch-for-new-vulkan
6637 (lambda _
6638 ;; Mimic upstream commit a869a22d9b51c68e for
6639 ;; compatibility with newer vulkan-headers.
6640 (substitute* "Quake/gl_rmisc.c"
6641 (("VK_DYNAMIC_STATE_RANGE_SIZE")
6642 "3"))
6643 #t))
7a6be5b9
RH
6644 (delete 'configure)
6645 (add-after 'unpack 'fix-makefile-paths
6646 (lambda* (#:key outputs #:allow-other-keys)
6647 (let ((vulkan (assoc-ref %build-inputs
e6fcf903 6648 "vulkan-loader"))
7a6be5b9
RH
6649 (out (assoc-ref outputs "out")))
6650 (mkdir-p (string-append out "/bin"))
6651 (substitute* "Quake/Makefile" ((" /usr")
6652 (string-append " " out)))
6653 (substitute* "Quake/Makefile" (("/games")
6654 (string-append "/bin")))
6655 (substitute* "Quake/Makefile" (("..VULKAN_SDK.") vulkan))
6656 #t))))
6657 ,@(strip-keyword-arguments '(#:make-flags #:phases)
6658 (package-arguments quakespasm))))
4108886b
RH
6659 (inputs `(("vulkan-headers" ,vulkan-headers)
6660 ("vulkan-loader" ,vulkan-loader)
7a6be5b9
RH
6661 ,@(package-inputs quakespasm)))
6662 (description "vkquake is a modern engine for id software's Quake 1.
6663It includes support for 64 bit CPUs, custom music playback, a new sound driver,
6664some graphical niceities, and numerous bug-fixes and other improvements.")
6665 (home-page "https://github.com/Novum/vkQuake")))
6666
916bb947 6667(define-public yamagi-quake2
6668 (package
6669 (name "yamagi-quake2")
6670 (version "7.10")
6671 (source
6672 (origin
6673 (method url-fetch)
6674 (uri (string-append "https://deponie.yamagi.org/quake2/quake2-"
6675 version ".tar.xz"))
6676 (sha256
6677 (base32
6678 "0psinbg25mysd58k99s1n34w31w5hj1vppb39gdjb0zqi6sl6cps"))))
6679 (build-system gnu-build-system)
6680 (arguments
6681 `(#:tests? #f
6682 #:make-flags
6683 (list "CC=gcc"
6684 ;; link openAL instead of using dlopen at runtime
6685 "DLOPEN_OPENAL=\"no\""
6686 ;; an optional directory where it will look for quake2 data files
6687 ;; in addition to the current working directory
6688 "WITH_SYSTEMWIDE=yes"
6689 "WITH_SYSTEMDIR=\"/opt/quake2\"")
6690 #:phases
6691 (modify-phases %standard-phases
6692 (delete 'configure)
6693 (replace 'install
6694 (lambda* (#:key outputs #:allow-other-keys)
6695 (let ((out (assoc-ref outputs "out")))
6696 (mkdir-p (string-append out "/lib"))
6697 (mkdir-p (string-append out "/bin"))
6698 ;; The yamagi-quake2 binary must be in the same directory
6699 ;; as it's engine libraries, but symlinking it to /bin is okay
6700 ;; https://github.com/yquake2/yquake2/blob/master/stuff/packaging.md
6701 (copy-recursively "release"
6702 (string-append out "/lib/yamagi-quake2"))
6703 (symlink (string-append out "/lib/yamagi-quake2/quake2")
6704 (string-append out "/bin/yamagi-quake2"))
6705 (symlink (string-append out "/lib/yamagi-quake2/q2ded")
6706 (string-append out "/bin/yamagi-q2ded"))))))))
6707 (inputs `(("sdl2" ,sdl2)
6708 ("mesa" ,mesa)
6709 ("libvorbis" ,libvorbis)
6710 ("zlib" ,zlib)
6711 ("openal" ,openal)))
6712 (native-inputs `(("pkg-config" ,pkg-config)))
6713 (synopsis "First person shooter engine based on quake2")
6714 (description "Yamagi Quake II is an enhanced client for id Software's Quake II.
6715The main focus is an unchanged single player experience like back in 1997,
6716thus the gameplay and the graphics are unaltered. However the user may use one
6717of the unofficial retexturing packs. In comparison with the official client,
6718over 1000 bugs were fixed and an extensive code audit done,
6719making Yamagi Quake II one of the most solid Quake II implementations available.")
6720 (home-page "https://www.yamagi.org/quake2/")
6721 (license (list license:gpl2+ ; game and server
6722 (license:non-copyleft ; info-zip
6723 "file://LICENSE"
6724 "See Info-Zip section.")
6725 license:public-domain)))) ; stb
c1228231 6726
e7448859
MIP
6727(define-public nudoku
6728 (package
6729 (name "nudoku")
6730 (version "1.0.0")
6731 (source (origin
6732 (method url-fetch)
6733 (uri (string-append "https://github.com/jubalh/nudoku/"
6734 "releases/download/" version
6735 "/nudoku-" version ".tar.xz"))
6736 (sha256
6737 (base32
6738 "0nr2j2z07nxk70s8xnmmpzccxicf7kn5mbwby2kg6aq8paarjm8k"))))
6739 (build-system gnu-build-system)
6740 (inputs `(("ncurses" ,ncurses)))
6741 (home-page "https://jubalh.github.io/nudoku/")
6742 (synopsis "Sudoku for your terminal")
6743 (description "Nudoku is a ncurses-based Sudoku game for your terminal.")
6744 (license license:gpl3+)))
6745
c1228231
NG
6746(define-public the-butterfly-effect
6747 (package
6748 (name "the-butterfly-effect")
6749 (version "0.9.3.1")
6750 (source
6751 (origin
089c6b00
EF
6752 (method git-fetch)
6753 (uri (git-reference
b0e7b699 6754 (url "https://github.com/the-butterfly-effect/tbe")
089c6b00
EF
6755 (commit (string-append "v" version))))
6756 (file-name (git-file-name name version))
c1228231
NG
6757 (sha256
6758 (base32
089c6b00 6759 "1ag2cp346f9bz9qy6za6q54id44d2ypvkyhvnjha14qzzapwaysj"))))
c1228231
NG
6760 (build-system gnu-build-system)
6761 (arguments
6762 `(#:phases
6763 (modify-phases %standard-phases
6764 (delete 'configure)
6765 ;; There is no "install" phase. By default, tbe is installed
6766 ;; in the build directory. Provide our own installation.
6767 (replace 'install
6768 (lambda* (#:key outputs #:allow-other-keys)
6769 (let* ((out (assoc-ref outputs "out"))
6770 (bin (string-append out "/bin"))
6771 (share (string-append out "/share")))
6772 (install-file "usr/games/tbe" bin)
6773 (mkdir-p share)
6774 (copy-recursively "usr/share" share)
6775 #t))))
6776 ;; Test suite requires a running Xorg server. Even when
6777 ;; provided, it fails with "D-Bus library appears to be
6778 ;; incorrectly set up; failed to read machine uuid: Failed to
6779 ;; open "/etc/machine-id": No such file or directory" along
6780 ;; with multiple "QPainter:: ... Painter not active" warnings.
6781 #:tests? #f))
6782 (inputs
6783 `(("qtbase" ,qtbase)
6784 ("qtsvg" ,qtsvg)))
6785 (native-inputs
c69959f0 6786 `(("cmake" ,cmake-minimal)
c1228231
NG
6787 ("gettext-minimal" ,gettext-minimal)
6788 ("qttools" ,qttools)))
6789 (synopsis "Realistic physics puzzle game")
6790 (description "The Butterfly Effect (tbe) is a game that uses
6791realistic physics simulations to combine lots of simple mechanical
6792elements to achieve a simple goal in the most complex way possible.")
6793 (home-page "http://the-butterfly-effect.org/")
6794 ;; Main license is GPL2-only. However, artwork is distributed
6795 ;; under various licenses, listed here.
6796 (license (list license:gpl2 license:public-domain license:expat
6797 license:cc-by-sa3.0 license:gpl3+ license:wtfpl2))))
aac1aa75
EB
6798
6799(define-public pioneer
6800 (package
6801 (name "pioneer")
8f33b76e 6802 (version "20200203")
aac1aa75 6803 (source (origin
6a03ccf4
EB
6804 (method git-fetch)
6805 (uri (git-reference
b0e7b699 6806 (url "https://github.com/pioneerspacesim/pioneer")
6a03ccf4
EB
6807 (commit version)))
6808 (file-name (git-file-name name version))
aac1aa75
EB
6809 (sha256
6810 (base32
8f33b76e 6811 "1011xsi94jhw98mhm8kryq8ajig0qfbrdx5xdasi92bd4nk7lcp8"))))
ed3e7b72 6812 (build-system cmake-build-system)
aac1aa75 6813 (native-inputs
ed3e7b72 6814 `(("pkg-config" ,pkg-config)))
aac1aa75
EB
6815 (inputs
6816 `(("assimp" ,assimp)
6817 ("curl" ,curl)
6818 ("freetype" ,freetype)
ed3e7b72 6819 ("glew" ,glew)
aac1aa75
EB
6820 ("glu" ,glu)
6821 ("libpng" ,libpng)
6822 ("libsigc++" ,libsigc++)
6823 ("libvorbis" ,libvorbis)
6824 ("lua" ,lua-5.2) ;not compatible with 5.3
6825 ("mesa" ,mesa)
6826 ("sdl" ,(sdl-union (list sdl2 sdl2-image)))))
6827 (arguments
6828 `(#:tests? #f ;tests are broken
ed3e7b72
EB
6829 #:configure-flags (list "-DUSE_SYSTEM_LIBLUA:BOOL=YES"
6830 (string-append "-DPIONEER_DATA_DIR="
6831 %output "/share/games/pioneer"))))
61d399c5 6832 (home-page "https://pioneerspacesim.net")
aac1aa75
EB
6833 (synopsis "Game of lonely space adventure")
6834 (description
6835 "Pioneer is a space adventure game set in our galaxy at the turn of the
683631st century. The game is open-ended, and you are free to eke out whatever
6837kind of space-faring existence you can think of. Look for fame or fortune by
6838exploring the millions of star systems. Turn to a life of crime as a pirate,
6839smuggler or bounty hunter. Forge and break alliances with the various
6840factions fighting for power, freedom or self-determination. The universe is
6841whatever you make of it.")
6842 (license license:gpl3)))
57f9671d 6843
6844(define-public badass
6845 (let ((commit "3c3cd669b4fc8f73a102e3702788f7b28dc47dbb")
6846 (revision "0"))
6847 (package
6848 (name "badass")
6849 (version (git-version "0.0" revision commit))
6850 (source (origin
6851 (method git-fetch)
6852 (uri (git-reference
b0e7b699 6853 (url "https://github.com/umayr/badass")
57f9671d 6854 (commit commit)))
6855 (file-name (git-file-name name version))
6856 (sha256
6857 (base32
6858 "05c9vdcb5ym3z0n5ll3v39mw4yl9jcjnlydmn0yl89ai9pv71zb6"))))
6859 (build-system go-build-system)
6860 (arguments
6861 '(#:import-path "github.com/umayr/badass"))
6862 (synopsis "Hacking contribution graphs in git")
6863 (description
6864 "Badass generates false commits for a range of dates, essentially
6865hacking the gamification of contribution graphs on platforms such as
6866Github or Gitlab.")
6867 (home-page "https://github.com/umayr/badass")
6868 (license license:expat))))
fa7d8ea1
NG
6869
6870(define-public colobot
6871 (package
6872 (name "colobot")
2dad4c91 6873 (version "0.1.12-alpha")
fa7d8ea1
NG
6874 (source
6875 (origin
2dad4c91
NG
6876 (method git-fetch)
6877 (uri (git-reference
b0e7b699 6878 (url "https://github.com/colobot/colobot")
2dad4c91
NG
6879 (commit (string-append "colobot-gold-" version))
6880 (recursive? #t))) ;for "data/" subdir
6881 (file-name (git-file-name name version))
fa7d8ea1
NG
6882 (sha256
6883 (base32
2dad4c91 6884 "1c181cclkrnspgs07lvndg2c81cjq3smkv7qim8c470cj88rcrp2"))))
fa7d8ea1
NG
6885 (build-system cmake-build-system)
6886 (arguments
6887 `(#:tests? #f ;no test
6888 #:phases
6889 (modify-phases %standard-phases
2dad4c91
NG
6890 (add-after 'unpack 'make-git-checkout-writable
6891 (lambda _
6892 (for-each make-file-writable (find-files "."))
6893 #t))
6894 (add-after 'unpack 'fix-directories
6895 (lambda _
6896 (substitute* "CMakeLists.txt"
6897 (("(\\$\\{CMAKE_INSTALL_PREFIX\\})/games" _ prefix)
6898 (string-append prefix "/bin"))
6899 (("(\\$\\{CMAKE_INSTALL_PREFIX\\}/share)/games/colobot" _ prefix)
6900 (string-append prefix "/colobot")))
6901 #t))
6902 (add-after 'fix-directories 'install-music
6903 ;; Retrieve and install music files.
fa7d8ea1
NG
6904 (lambda* (#:key inputs #:allow-other-keys)
6905 ;; Installation process tries to download music files using
2dad4c91
NG
6906 ;; "wget" if not already present. Since we are going another
6907 ;; route, skip "wget" command check.
fa7d8ea1
NG
6908 (substitute* "data/music/CMakeLists.txt"
6909 (("find_program\\(WGET wget\\)") ""))
2dad4c91 6910 ;; Populate "music/" directory.
fa7d8ea1 6911 (let ((data (assoc-ref inputs "colobot-music")))
2dad4c91
NG
6912 (invoke "tar" "-xvf" data "-Cdata/music"))
6913 #t)))))
fa7d8ea1 6914 (native-inputs
2dad4c91 6915 `(("colobot-music"
fa7d8ea1
NG
6916 ,(origin
6917 (method url-fetch)
6918 (uri (string-append "https://colobot.info/files/music/"
6919 "colobot-music_ogg_" version ".tar.gz"))
6920 (sha256
6921 (base32
6922 "1s86cd36rwkff329mb1ay1wi5qqyi35564ppgr3f4qqz9wj9vs2m"))))
6923 ("gettext" ,gettext-minimal)
6924 ("librsvg" ,librsvg)
6925 ("po4a" ,po4a)
6926 ("python" ,python-wrapper)))
6927 (inputs
6928 `(("boost" ,boost)
6929 ("glew" ,glew)
6930 ("libogg" ,libogg)
6931 ("libpng" ,libpng)
6932 ("libsndfile" ,libsndfile)
6933 ("libvorbis" ,libvorbis)
6934 ("openal" ,openal)
6935 ("physfs" ,physfs)
6936 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-ttf)))))
6937 (synopsis "Educational programming strategy game")
6938 (description "Colobot: Gold Edition is a real-time strategy game, where
6939you can program your units (bots) in a language called CBOT, which is similar
6940to C++ and Java. Your mission is to find a new planet to live and survive.
6941You can save humanity and get programming skills!")
6942 (home-page "https://colobot.info")
6943 (license license:gpl3+)))
2922852e 6944
6945(define-public gzdoom
6946 (package
6947 (name "gzdoom")
570b89f4
TGR
6948 (version "4.3.2")
6949 (source
6950 (origin
6951 (method git-fetch)
6952 (uri (git-reference
b0e7b699 6953 (url "https://github.com/coelckers/gzdoom")
570b89f4
TGR
6954 (commit (string-append "g" version))))
6955 (file-name (git-file-name name version))
6956 (sha256
6957 (base32 "0i4hyg72z84fc6ca2ic9q82q5cbgrbd7bynl3kpkypxvyasq08wz"))
6958 (patches (search-patches "gzdoom-search-in-installed-share.patch"
6959 "gzdoom-find-system-libgme.patch"))
6960 (modules '((guix build utils)))
6961 (snippet
6962 '(begin
6963 ;; Remove some bundled libraries. XXX There are more, but removing
6964 ;; them would require, at least, patching the build system.
6965 (with-directory-excursion "libraries"
6966 (delete-file-recursively "bzip2")
6967 (delete-file-recursively "game-music-emu")
6968 (delete-file-recursively "jpeg")
6969 (delete-file-recursively "zlib"))
6970 #t))))
2922852e 6971 (arguments
6972 '(#:tests? #f
6973 #:configure-flags
6974 (let ((out (assoc-ref %outputs "out")))
6975 (list
6976 (string-append
6977 "-DCMAKE_CXX_FLAGS:="
6978 "-DSHARE_DIR=\\\"" out "/share/\\\" "
6979 "-DGUIX_OUT_PK3=\\\"" out "/share/games/doom\\\"")
570b89f4
TGR
6980
6981 ;; The build requires some extra convincing not to use the bundled
6982 ;; libgme previously deleted in the soure snippet.
6983 "-DFORCE_INTERNAL_GME=OFF"
6984
6985 ;; Link libraries at build time instead of loading them at run time.
2922852e 6986 "-DDYN_OPENAL=OFF"
6987 "-DDYN_FLUIDSYNTH=OFF"
6988 "-DDYN_GTK=OFF"
6989 "-DDYN_MPG123=OFF"
6990 "-DDYN_SNDFILE=OFF"))
6991 #:phases
6992 (modify-phases %standard-phases
6993 (add-before 'configure 'fix-referenced-paths
6994 (lambda* (#:key inputs outputs #:allow-other-keys)
6995 (let ((fluid-3 (assoc-ref inputs "fluid-3"))
6996 (timidity++ (assoc-ref inputs "timidity++"))
6997 (out (assoc-ref outputs "out")))
6998
6999 (substitute*
7000 "src/CMakeLists.txt"
7001 (("COMMAND /bin/sh")
7002 (string-append "COMMAND " (which "sh"))))
7003
7004 (substitute*
570b89f4 7005 "libraries/zmusic/mididevices/music_fluidsynth_mididevice.cpp"
2922852e 7006 (("/usr/share/sounds/sf2/FluidR3_GM.sf2")
7007 (string-append fluid-3 "/share/soundfonts/FluidR3Mono_GM.sf3")))
7008
7009 (substitute*
570b89f4 7010 "libraries/zmusic/mididevices/music_timiditypp_mididevice.cpp"
2922852e 7011 (("exename = \"timidity\"")
7012 (string-append "exename = \"" timidity++ "/bin/timidity\"")))
7013 #t))))))
7014 (build-system cmake-build-system)
7015 (inputs `(("bzip2" ,bzip2)
7016 ("fluid-3" ,fluid-3)
570b89f4 7017 ("fluidsynth" ,fluidsynth)
2922852e 7018 ("gtk+3" ,gtk+)
7019 ("libgme" ,libgme)
4bd428a7 7020 ("libjpeg" ,libjpeg-turbo)
2922852e 7021 ("libsndfile" ,libsndfile)
7022 ("mesa" ,mesa)
7023 ("mpg123" ,mpg123)
7024 ("openal" ,openal)
7025 ("sdl2" ,sdl2)
7026 ("timidity++" ,timidity++)
7027 ("zlib" ,zlib)))
7028 (native-inputs `(("pkg-config" ,pkg-config)
7029 ("unzip" ,unzip)))
7030 (synopsis "Modern Doom 2 source port")
7031 (description "GZdoom is a port of the Doom 2 game engine, with a modern
7032renderer. It improves modding support with ZDoom's advanced mapping features
7033and the new ZScript language. In addition to Doom, it supports Heretic, Hexen,
7034Strife, Chex Quest, and fan-created games like Harmony, Hacx and Freedoom.")
7035 (home-page "https://zdoom.org/index")
642b195a
EF
7036 ;; The source uses x86 assembly
7037 (supported-systems '("x86_64-linux" "i686-linux"))
2922852e 7038 (license (list license:gpl3+ ; gzdoom game
7039 license:lgpl3+ ; gzdoom renderer
7040 license:expat ; gdtoa
7041 (license:non-copyleft ; modified dumb
7042 "file://dumb/licence.txt"
7043 "Dumb license, explicitly GPL compatible.")))))
b1642338 7044
6f565d6c
P
7045(define-public odamex
7046 (package
7047 (name "odamex")
70e74172 7048 (version "0.8.3")
6f565d6c
P
7049 (source
7050 (origin
7051 (method url-fetch)
7052 (uri (string-append
7053 "mirror://sourceforge/odamex/Odamex/" version "/"
7054 "odamex-src-" version ".tar.gz"))
7055 (sha256
70e74172 7056 (base32 "0f887g87bmcq4dpcga7xc2mpxs947dkbc934ir9xs55gz6z13q96"))))
6f565d6c 7057 (build-system cmake-build-system)
5448b16e 7058 (arguments `(#:tests? #f)) ; no tests
6f565d6c
P
7059 (inputs
7060 `(("sdl" ,sdl)
7061 ("sdl-mixer" ,sdl-mixer)
7062 ("zlib" ,zlib)
7063 ("libpng" ,libpng)
7064 ("alsa-lib" ,alsa-lib)))
7065 (home-page "https://odamex.net/")
7066 (synopsis "Multiplayer Doom port")
7067 (description "Odamex is a modification of the Doom engine that
7068allows players to easily join servers dedicated to playing Doom
7069online.")
7070 (license license:gpl2+)))
7071
fc16bbb7
JK
7072(define-public chocolate-doom
7073 (package
7074 (name "chocolate-doom")
a7ca42ff 7075 (version "3.0.1")
fc16bbb7
JK
7076 (source (origin
7077 (method url-fetch)
7078 (uri (string-append "https://www.chocolate-doom.org/downloads/"
7079 version
7080 "/chocolate-doom-"
7081 version
7082 ".tar.gz"))
7083 (sha256
7084 (base32
a7ca42ff 7085 "1iy8rx7kjvi1zjiw4zh77szzmd1sgpqajvbhprh1sj93fhbxcdfl"))))
fc16bbb7
JK
7086 (build-system gnu-build-system)
7087 (inputs `(("sdl2-net" ,sdl2-net)
7088 ("sdl2-mixer" , sdl2-mixer)
7089 ("sdl2" ,sdl2)))
7090 (native-inputs
7091 `(("pkg-config" ,pkg-config)))
7092 (synopsis "Doom source port preserving the look, feel, and bugs of vanilla
7093Doom")
7094 (description
7095 "Chocolate Doom takes a different approach to other source ports. Its
7096aim is to accurately reproduce the experience of playing Vanilla Doom. It is
7097a conservative, historically accurate Doom source port, which is compatible
7098with the thousands of mods and levels that were made before the Doom source
7099code was released. Rather than flashy new graphics, Chocolate Doom's main
7100features are its accurate reproduction of the game as it was played in the
71011990s. The project is developed around a carefully-considered philosophy that
7102intentionally restricts which features may be added (and rejects any that
7103affect gameplay).")
7104 (home-page "https://www.chocolate-doom.org/wiki/index.php/Chocolate_Doom")
7105 (license license:gpl2)))
7106
3f9a027c
DF
7107(define-public crispy-doom
7108 (package
7109 (inherit chocolate-doom)
7110 (name "crispy-doom")
4b50aaad 7111 (version "5.8.0")
3f9a027c
DF
7112 (source (origin
7113 (method git-fetch)
7114 (uri (git-reference
b0e7b699 7115 (url "https://github.com/fabiangreffrath/crispy-doom")
3f9a027c
DF
7116 (commit (string-append "crispy-doom-" version))))
7117 (file-name (git-file-name name version))
7118 (sha256
4b50aaad 7119 (base32 "1b6gn0dysv631jynh769whww9xcss1gms78sz3nrn855q1dsvcb4"))))
3f9a027c
DF
7120 (native-inputs
7121 (append
7122 (package-native-inputs chocolate-doom)
7123 `(("automake" ,automake)
7124 ("autoreconf" ,autoconf))))
7125 (arguments
7126 `(#:phases
7127 (modify-phases %standard-phases
7128 (replace 'bootstrap
17cb06a6 7129 ;; The bundled autogen.sh script unconditionally runs ./configure.
3f9a027c
DF
7130 (lambda _ (invoke "autoreconf" "-vif"))))))
7131 (synopsis "Limit-removing enhanced-resolution Doom source port based on
7132Chocolate Doom")
7133 (description
7134 "Crispy Doom is a friendly fork of Chocolate Doom that provides a higher
7135display resolution, removes the static limits of the Doom engine and offers
7136further optional visual, tactical and physical enhancements while remaining
7137entirely config file, savegame, netplay and demo compatible with the
7138original.")
7139 (home-page "https://www.chocolate-doom.org/wiki/index.php/Crispy_Doom")))
7140
64b47a29
OP
7141(define shlomif-cmake-modules
7142 (origin
7143 (method url-fetch)
7144 (uri (string-append "https://bitbucket.org/shlomif/shlomif-cmake-modules/"
7145 "raw/c505713d7a7cda608f97f01577e5868a711b883e/"
7146 "shlomif-cmake-modules/Shlomif_Common.cmake"))
7147 (sha256
7148 (base32 "0kx9s1qqhhzprp1w3b67xmsns0n0v506bg5hgrshxaxpy6lqiwb2"))))
c5799025
OP
7149
7150(define-public rinutils
7151 (package
7152 (name "rinutils")
7153 (version "0.2.0")
7154 (source (origin
7155 (method git-fetch)
7156 (uri (git-reference
b0e7b699 7157 (url "https://github.com/shlomif/rinutils")
c5799025
OP
7158 (commit version)))
7159 (file-name (git-file-name name version))
7160 (sha256
7161 (base32
7162 "1fpxyg86ggv0h7j8aarjjxrvwlj7jycd3bw066c0dwkq2fszxsf2"))))
7163 (native-inputs
7164 `(("perl" ,perl)
7165 ;; The following is only needed for tests.
7166 ("perl-file-find-object" ,perl-file-find-object)
7167 ("perl-test-differences" ,perl-test-differences)
7168 ("perl-class-xsaccessor" ,perl-class-xsaccessor)
7169 ("perl-io-all" ,perl-io-all)
7170 ("perl-test-runvalgrind" ,perl-test-runvalgrind)
7171 ("cmake-rules" ,shlomif-cmake-modules)
7172 ("pkg-config" ,pkg-config)))
7173 (inputs
7174 `(("cmocka" ,cmocka)
7175 ("perl-env-path", perl-env-path)
7176 ("perl-inline" ,perl-inline)
7177 ("perl-inline-c" ,perl-inline-c)
7178 ("perl-string-shellquote" ,perl-string-shellquote)
7179 ("perl-test-trailingspace" ,perl-test-trailingspace)
7180 ("perl-file-find-object-rule" ,perl-file-find-object-rule)
7181 ("perl-text-glob" ,perl-text-glob)
7182 ("perl-number-compare" ,perl-number-compare)
7183 ("perl-moo" ,perl-moo)))
7184 (arguments
7185 `(#:phases
7186 (modify-phases %standard-phases
7187 (add-after 'unpack 'fix-build-env
7188 (lambda* (#:key inputs #:allow-other-keys)
7189 (use-modules (guix build utils))
7190 (let* ((cmake-rules (assoc-ref inputs "cmake-rules")))
7191 (copy-file cmake-rules
7192 (string-append "cmake/"
7193 (strip-store-file-name cmake-rules)))
7194 #t)))
7195 (replace 'check
7196 (lambda _
7197 (with-directory-excursion "../source"
7198 (setenv "FCS_TEST_BUILD" "1")
7199 (setenv "RINUTILS_TEST_BUILD" "1")
7200 ;; TODO: Run tests after setting RINUTILS_TEST_TIDY to `1',
7201 ;; which requires tidy-all.
7202 ;; (setenv "RINUTILS_TEST_TIDY" "1")
7203 (invoke "perl" "CI-testing/continuous-integration-testing.pl")))))))
7204 (build-system cmake-build-system)
7205 (home-page "https://www.shlomifish.org/open-source/projects/")
7206 (synopsis "C11 / gnu11 utilities C library")
7207 (description "This package provides C11 / gnu11 utilities C library")
7208 (license license:expat)))
7209
b1642338
PN
7210(define-public fortune-mod
7211 (package
7212 (name "fortune-mod")
6b490fff 7213 (version "2.28.0")
7e1d376d
TGR
7214 (source
7215 (origin
7216 (method git-fetch)
7217 (uri (git-reference
7218 (url "https://github.com/shlomif/fortune-mod")
a6ac8e0b 7219 (commit (string-append "fortune-mod-" version))))
7e1d376d
TGR
7220 (file-name (git-file-name name version))
7221 (sha256
6b490fff 7222 (base32 "1ppzgnffgdcmq6fq4gmdq2ig10ip2bnfgklkb3i8nc6bdxm7pb89"))))
b1642338
PN
7223 (build-system cmake-build-system)
7224 (arguments
7225 `(#:test-target "check"
7226 #:phases
7227 (modify-phases %standard-phases
7228 (add-after 'unpack 'fix-build-env
7229 (lambda* (#:key inputs #:allow-other-keys)
7230 (use-modules (guix build utils))
7231 (let* ((cmake-rules (assoc-ref inputs "cmake-rules")))
7232 (copy-file cmake-rules
7233 (string-append "fortune-mod/cmake/"
7234 (strip-store-file-name cmake-rules)))
abf06df2 7235 (chdir "fortune-mod")
61857323
PN
7236 ;; TODO: Valgrind tests fail for some reason.
7237 ;; Similar issue: https://github.com/shlomif/fortune-mod/issues/21 (?)
7238 (delete-file "tests/t/valgrind.t")
abf06df2 7239 #t)))
b1642338 7240 (add-after 'install 'fix-install-directory
b1642338 7241 (lambda* (#:key outputs #:allow-other-keys)
e08474d6
TGR
7242 ;; Move binary from "games/" to "bin/" and remove the latter. This
7243 ;; is easier than patching CMakeLists.txt since the tests hard-code
7244 ;; the location as well.
7245 (let* ((out (assoc-ref outputs "out"))
7246 (bin (string-append out "/bin"))
7247 (games (string-append out "/games")))
7248 (rename-file (string-append games "/fortune")
7249 (string-append bin "/fortune"))
7250 (rmdir games)
b1642338
PN
7251 #t))))))
7252 (inputs `(("recode" ,recode)))
7253 (native-inputs
7254 `(("perl" ,perl)
7255 ;; The following is only needed for tests.
7256 ("perl-file-find-object" ,perl-file-find-object)
7257 ("perl-test-differences" ,perl-test-differences)
7258 ("perl-class-xsaccessor" ,perl-class-xsaccessor)
7259 ("perl-io-all" ,perl-io-all)
7260 ("perl-test-runvalgrind" ,perl-test-runvalgrind)
815e12f3
OP
7261 ("cmake-rules" ,shlomif-cmake-modules)
7262 ("rinutils" ,rinutils)))
6ef143ef 7263 (home-page "https://www.shlomifish.org/open-source/projects/fortune-mod/")
b1642338
PN
7264 (synopsis "The Fortune Cookie program from BSD games")
7265 (description "Fortune is a command-line utility which displays a random
7266quotation from a collection of quotes.")
7267 (license license:bsd-4)))
dc70ff2a 7268
7269(define xonotic-data
7270 (package
7271 (name "xonotic-data")
7272 (version "0.8.2")
7273 (source
7274 (origin
7275 (method url-fetch)
7276 (uri (string-append "http://dl.xonotic.org/xonotic-"
7277 version ".zip"))
7278 (file-name (string-append name "-" version ".zip"))
7279 (sha256
7280 (base32
7281 "1mcs6l4clvn7ibfq3q69k2p0z6ww75rxvnngamdq5ic6yhq74bx2"))))
7282 (build-system trivial-build-system)
7283 (native-inputs
7284 `(("unzip" ,unzip)))
7285 (arguments
7286 `(#:modules ((guix build utils))
7287 #:builder
7288 (begin
7289 (use-modules (guix build utils))
7290 (let* ((out (assoc-ref %outputs "out"))
7291 (xonotic (string-append out "/share/xonotic"))
7292 (source (assoc-ref %build-inputs "source"))
7293 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
7294 (copy-file source (string-append ,name "-" ,version ".zip"))
7295 (invoke unzip (string-append ,name "-" ,version ".zip"))
7296 (mkdir-p out)
7297 (mkdir-p xonotic)
7298 (chdir "Xonotic")
7299 (copy-recursively "data"
7300 (string-append xonotic "/data"))
7301 (copy-recursively "server"
7302 (string-append xonotic "/server"))
7303 (install-file "key_0.d0pk" xonotic)))))
7304 (home-page "http://xonotic.org")
7305 (synopsis "Data files for Xonotic")
7306 (description
7307 "Xonotic-data provides the data files required by the game Xonotic.")
7308 (license (list license:gpl2+
9b9db6c4 7309 (license:x11-style "file://server/rcon.pl")))))
dc70ff2a 7310
7311(define-public xonotic
7312 (package
7313 (name "xonotic")
7314 (version "0.8.2")
7315 (source
7316 (origin
7317 (method url-fetch)
7318 (uri (string-append "http://dl.xonotic.org/xonotic-"
7319 version "-source.zip"))
7320 (file-name (string-append name "-" version ".zip"))
7321 (sha256
7322 (base32
7323 "0axxw04fyz6jlfqd0kp7hdrqa0li31sx1pbipf2j5qp9wvqicsay"))))
7324 (build-system gnu-build-system)
7325 (arguments
7326 `(#:configure-flags (list (string-append "--prefix="
7327 (assoc-ref %outputs "out"))
7328 "--disable-rijndael")
7329 #:phases
7330 (modify-phases %standard-phases
7331 (add-before 'configure 'make-darkplaces
7332 (lambda* (#:key outputs #:allow-other-keys)
7333 (let* ((out (assoc-ref outputs "out"))
7334 (sharedir (string-append out "/share/xonotic/")))
7335 (invoke "make" "-C" "source/darkplaces"
7336 (string-append "DP_FS_BASEDIR="
7337 sharedir)
7338 "DP_LINK_TO_LIBJPEG=1"
7339 "DP_SOUND_API=ALSA"
7340 "CC=gcc"
7341 "-f" "makefile"
7342 "cl-release")
7343 (invoke "make" "-C" "source/darkplaces"
7344 (string-append "DP_FS_BASEDIR="
7345 sharedir)
7346 "DP_LINK_TO_LIBJPEG=1"
7347 "DP_SOUND_API=ALSA"
7348 "CC=gcc"
7349 "-f" "makefile"
7350 "sdl-release")
7351 (invoke "make" "-C" "source/darkplaces"
7352 (string-append "DP_FS_BASEDIR="
7353 sharedir)
7354 "DP_LINK_TO_LIBJPEG=1"
7355 "DP_SOUND_API=ALSA"
7356 "CC=gcc"
7357 "-f" "makefile"
7358 "sv-release"))))
7359 (add-before 'configure 'bootstrap
7360 (lambda _
7361 (chdir "source/d0_blind_id")
7362 (invoke "sh" "autogen.sh")))
7363 (add-after 'build 'install-desktop-entry
7364 (lambda* (#:key outputs #:allow-other-keys)
7365 ;; Add .desktop files for the 2 variants and the symlink
7366 (let* ((output (assoc-ref outputs "out"))
7367 (apps (string-append output "/share/applications")))
7368 (mkdir-p apps)
7369 (with-output-to-file
7370 (string-append apps "/xonotic-glx.desktop")
7371 (lambda _
7372 (format #t
7373 "[Desktop Entry]~@
7374 Name=xonotic-glx~@
7375 Comment=Xonotic glx~@
7376 Exec=~a/bin/xonotic-glx~@
7377 TryExec=~@*~a/bin/xonotic-glx~@
c834bd3b
P
7378 Icon=xonotic~@
7379 Categories=Game~@
dc70ff2a 7380 Type=Application~%"
7381 output)))
7382 (with-output-to-file
7383 (string-append apps "/xonotic-sdl.desktop")
7384 (lambda _
7385 (format #t
7386 "[Desktop Entry]~@
7387 Name=xonotic-sdl~@
7388 Comment=Xonotic sdl~@
7389 Exec=~a/bin/xonotic-sdl~@
7390 TryExec=~@*~a/bin/xonotic-sdl~@
c834bd3b
P
7391 Icon=xonotic~@
7392 Categories=Game~@
dc70ff2a 7393 Type=Application~%"
7394 output)))
7395 (with-output-to-file
7396 (string-append apps "/xonotic.desktop")
7397 (lambda _
7398 (format #t
7399 "[Desktop Entry]~@
7400 Name=xonotic~@
7401 Comment=Xonotic~@
7402 Exec=~a/bin/xonotic-glx~@
7403 TryExec=~@*~a/bin/xonotic~@
c834bd3b
P
7404 Icon=xonotic~@
7405 Categories=Game~@
dc70ff2a 7406 Type=Application~%"
7407 output)))
7408 #t)))
7409 (add-after 'install-desktop-entry 'install-icons
7410 (lambda* (#:key outputs #:allow-other-keys)
7411 (let ((out (assoc-ref outputs "out")))
7412 (with-directory-excursion "../../misc/logos/icons_png/"
7413 (for-each
7414 (lambda (file)
7415 (let* ((size (string-filter char-numeric? file))
7416 (icons (string-append out "/share/icons/hicolor/"
7417 size "x" size "/apps")))
7418 (mkdir-p icons)
7419 (copy-file file (string-append icons "/xonotic.png"))))
7420 '("xonotic_16.png" "xonotic_22.png" "xonotic_24.png"
7421 "xonotic_32.png" "xonotic_48.png" "xonotic_64.png"
7422 "xonotic_128.png" "xonotic_256.png" "xonotic_512.png"))))))
7423 (add-after 'install-icons 'install-binaries
7424 (lambda* (#:key outputs #:allow-other-keys)
7425 (let ((out (assoc-ref outputs "out")))
7426 (define (install src dst)
7427 (let ((dst (string-append out dst)))
7428 (mkdir-p (dirname dst))
7429 (copy-file src dst)))
7430 (mkdir-p (string-append out "/bin"))
7431 (install "../darkplaces/darkplaces-dedicated"
7432 "/bin/xonotic-dedicated")
7433 (install "../darkplaces/darkplaces-glx"
7434 "/bin/xonotic-glx")
7435 (install "../darkplaces/darkplaces-sdl"
7436 "/bin/xonotic-sdl")
7437 ;; Provide a default xonotic executable, defaulting to SDL.
7438 (symlink (string-append out "/bin/xonotic-sdl")
7439 (string-append out "/bin/xonotic"))
7440 #t)))
7441 (add-after 'install-binaries 'install-data
7442 (lambda* (#:key outputs inputs #:allow-other-keys)
7443 (let* ((out (assoc-ref outputs "out"))
7444 (data (assoc-ref inputs "xonotic-data")))
cc661cb3
P
7445 (symlink (string-append data "/share/xonotic")
7446 (string-append out "/share/xonotic"))
dc70ff2a 7447 #t)))
7448 (add-after 'install-binaries 'wrap-binaries
7449 (lambda* (#:key outputs inputs #:allow-other-keys)
7450 ;; Curl and libvorbis need to be wrapped so that we get
7451 ;; sound and networking.
7452 (let* ((out (assoc-ref outputs "out"))
7453 (bin (string-append out "/bin/xonotic"))
7454 (bin-sdl (string-append out "/bin/xonotic-sdl"))
7455 (bin-glx (string-append out "/bin/xonotic-glx"))
7456 (bin-dedicated (string-append out "/bin/xonotic-dedicated"))
7457 (curl (assoc-ref inputs "curl"))
7458 (vorbis (assoc-ref inputs "libvorbis")))
7459 (wrap-program bin
7460 `("LD_LIBRARY_PATH" ":" prefix
7461 (,(string-append curl "/lib:" vorbis "/lib"))))
7462 (wrap-program bin-sdl
7463 `("LD_LIBRARY_PATH" ":" prefix
7464 (,(string-append curl "/lib:" vorbis "/lib"))))
7465 (wrap-program bin-glx
7466 `("LD_LIBRARY_PATH" ":" prefix
7467 (,(string-append curl "/lib:" vorbis "/lib"))))
7468 (wrap-program bin-dedicated
7469 `("LD_LIBRARY_PATH" ":" prefix
7470 (,(string-append curl "/lib:" vorbis "/lib"))))
7471 #t))))))
7472 (inputs
7473 `(("xonotic-data" ,xonotic-data)
7474 ("alsa-lib" ,alsa-lib)
7475 ("curl" ,curl)
4bd428a7 7476 ("libjpeg" ,libjpeg-turbo)
dc70ff2a 7477 ("libmodplug" ,libmodplug)
7478 ("libvorbis" ,libvorbis)
7479 ("libogg" ,libogg)
7480 ("libxpm" ,libxpm)
7481 ("libxxf86dga" ,libxxf86dga)
7482 ("libxxf86vm" ,libxxf86vm)
7483 ("libx11" ,libx11)
7484 ("libxext" ,libxext)
7485 ("libxau" ,libxau)
7486 ("libxdmcp" ,libxdmcp)
7487 ("mesa" ,mesa)
7488 ("glu" ,glu)
7489 ("freetype" ,freetype)
7490 ("sdl2" ,sdl2)
7491 ("libpng" ,libpng)
7492 ("hicolor-icon-theme" ,hicolor-icon-theme)))
7493 (native-inputs
7494 `(("unzip" ,unzip)
7495 ("autoconf" ,autoconf)
7496 ("automake" ,automake)
7497 ("pkg-config" ,pkg-config)
7498 ("libtool" ,libtool)
7499 ("gmp" ,gmp)))
083b24e2 7500 (home-page "https://xonotic.org")
dc70ff2a 7501 (synopsis "Fast-paced first-person shooter game")
7502 (description
7503 "Xonotic is a free, fast-paced first-person shooter.
7504The project is geared towards providing addictive arena shooter
7505gameplay which is all spawned and driven by the community itself.
7506Xonotic is a direct successor of the Nexuiz project with years of
7507development between them, and it aims to become the best possible
7508open-source FPS of its kind.")
7509 (license (list license:gpl2+
7510 license:bsd-3 ; /source/d0_blind_id folder and others
9b9db6c4 7511 (license:x11-style "" "See file rcon.pl.")))))
39b5d8fd
BS
7512
7513(define-public frotz
7514 (package
7515 (name "frotz")
7516 (version "2.44")
7517 (source (origin
7518 (method url-fetch)
7519 (uri (list (string-append
7520 "http://www.ifarchive.org/if-archive/infocom/interpreters/"
e2c9f9de 7521 "frotz/frotz-" version ".tar.gz")
39b5d8fd
BS
7522 (string-append
7523 "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
e2c9f9de 7524 "frotz/frotz-" version ".tar.gz")))
39b5d8fd
BS
7525 (sha256
7526 (base32
7527 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
7528 (build-system gnu-build-system)
7529 (arguments
7530 `(#:tests? #f ; there are no tests
7531 #:phases
7532 (modify-phases %standard-phases
7533 (delete 'configure)
7534 (add-before 'build 'curses
7535 (lambda _
7536 (substitute* "Makefile"
7537 (("lcurses") "lncurses"))
7538 #t))
7539 (replace 'install
7540 (lambda* (#:key outputs #:allow-other-keys)
7541 (let* ((out (assoc-ref outputs "out"))
7542 (bin (string-append out "/bin"))
7543 (man (string-append out "/share/man/man6")))
7544 (install-file "frotz" bin)
7545 (mkdir-p man)
7546 (install-file "doc/frotz.6" man)
7547 #t))))))
7548 (inputs `(("libmodplug" ,libmodplug)
7549 ("libsamplerate" ,libsamplerate)
7550 ("libsndfile" ,libsndfile)
7551 ("libvorbis" ,libvorbis)
7552 ("ncurses" ,ncurses)))
7553 (synopsis "Portable Z-machine interpreter (ncurses version) for text adventure games")
7554 (description "Frotz is an interpreter for Infocom games and other Z-machine
7555games in the text adventure/interactive fiction genre. This version of Frotz
7556complies with standard 1.0 of Graham Nelson's specification. It plays all
7557Z-code games V1-V8, including V6, with sound support through libao, and uses
7558ncurses for text display.")
7559 (home-page "http://frotz.sourceforge.net")
7560 (license license:gpl2+)))
7561
7562(define-public frotz-dumb-terminal
7563 (package
7564 (name "frotz-dumb-terminal")
7565 (version "2.44")
7566 (source (origin
7567 (method url-fetch)
7568 (uri (list (string-append
7569 "http://www.ifarchive.org/if-archive/infocom/interpreters/"
98e27db5 7570 "frotz/frotz-" version ".tar.gz")
39b5d8fd
BS
7571 (string-append
7572 "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
98e27db5 7573 "frotz/frotz-" version ".tar.gz")))
39b5d8fd
BS
7574 (sha256
7575 (base32
7576 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
7577 (build-system gnu-build-system)
7578 (arguments
7579 `(#:tests? #f ; there are no tests
7580 #:phases
7581 (modify-phases %standard-phases
7582 (delete 'configure)
7583 (replace 'build
7584 (lambda _
7585 (invoke "make" "dumb")))
7586 (replace 'install
7587 (lambda* (#:key outputs #:allow-other-keys)
7588 (let* ((out (assoc-ref outputs "out"))
7589 (bin (string-append out "/bin"))
7590 (man (string-append out "/share/man/man6")))
7591 (install-file "dfrotz" bin)
7592 (mkdir-p man)
7593 (install-file "doc/dfrotz.6" man)
7594 #t))))))
7595 (synopsis "Portable Z-machine dumb interpreter for text adventure games")
7596 (description "Frotz is an interpreter for Infocom games and
7597other Z-machine games in the text adventure/interactive fiction genre.
7598dfrotz is the dumb interface version. You get no screen control; everything
7599is just printed to the terminal line by line. The terminal handles all the
7600scrolling. Maybe you'd like to experience what it's like to play Adventure on
7601a teletype. A much cooler use for compiling Frotz with the dumb interface is
7602that it can be wrapped in CGI scripting, PHP, and the like to allow people
7603to play games on webpages. It can also be made into a chat bot.")
7604 (home-page "http://frotz.sourceforge.net")
7605 (license license:gpl2+)))
7606
7607(define-public frotz-sdl
7608 (let* ((commit "4de8c34f2116fff554af6216c30ec9d41bf50b24"))
7609 (package
7610 (name "frotz-sdl")
7611 (version "2.45pre")
7612 (source (origin
7613 (method git-fetch)
7614 (uri (git-reference
7615 (url "https://gitlab.com/DavidGriffith/frotz")
7616 (commit commit)))
7617 (sha256
7618 (base32
7619 "18ms21pcrl7ipcnyqnf8janamkryzx78frsgd9kfk67jvbj0z2k8"))
7620 (file-name (git-file-name name version))))
7621 (build-system gnu-build-system)
7622 (arguments
7623 `(#:tests? #f ; there are no tests
7624 #:phases
7625 (modify-phases %standard-phases
7626 (delete 'configure)
7627 (add-before 'build 'patch-makefile
7628 (lambda _
7629 (substitute* "Makefile"
7630 (("lcurses") "lncurses")
7631 (("^BUILD_DATE_TIME =.*$")
7632 "BUILD_DATE_TIME = \"2.45pre-20180907.00000\"\n"))
7633 #t))
7634 (replace 'build
7635 (lambda _
7636 (invoke "make" "sdl")))
7637 (replace 'install
7638 (lambda* (#:key outputs #:allow-other-keys)
7639 (let* ((out (assoc-ref outputs "out"))
7640 (bin (string-append out "/bin"))
7641 (man (string-append out "/share/man/man6")))
7642 (install-file "sfrotz" bin)
7643 (mkdir-p man)
7644 (install-file "doc/sfrotz.6" man)
7645 #t))))))
7646 (native-inputs
7647 `(("pkg-config" ,pkg-config)
7648 ("which" ,which)
7649 ("perl" ,perl)))
7650 (inputs `(("sdl2" ,sdl2)
7651 ("sdl2-mixer" ,sdl2-mixer)
7652 ("libmodplug" ,libmodplug)
7653 ("libsamplerate" ,libsamplerate)
7654 ("libsndfile" ,libsndfile)
7655 ("libvorbis" ,libvorbis)
7656 ("ncurses" ,ncurses)
7657 ("freetype" ,freetype)
7658 ("libjpeg-turbo" ,libjpeg-turbo)))
7659 (synopsis "Portable Z-machine interpreter (SDL port) for text adventure games")
7660 (description "Frotz is an interpreter for Infocom games and other Z-machine
7661games in the text adventure/interactive fiction genre. This version of Frotz
7662using SDL fully supports all these versions of the Z-Machine including the
7663graphical version 6. Graphics and sound are created through the use of the SDL
7664libraries. AIFF sound effects and music in MOD and OGG formats are supported
7665when packaged in Blorb container files or optionally from individual files.")
7666 (home-page "http://frotz.sourceforge.net")
7667 (license license:gpl2+))))
18ebaa9e 7668
ce84582b
NG
7669(define-public frozen-bubble
7670 ;; Last official release is very outdated (2010). Use latest commit (2017).
7671 (let ((commit "d6a029110ad6ab9e4960052e175addc98807fb7e")
7672 (revision "1"))
7673 (package
7674 (name "frozen-bubble")
7675 (version (git-version "2.2.1" revision commit))
7676 (source
7677 (origin
7678 (method git-fetch)
7679 (uri (git-reference
b0e7b699 7680 (url "https://github.com/kthakore/frozen-bubble")
ce84582b
NG
7681 (commit commit)))
7682 (file-name (git-file-name name version))
7683 (sha256
7684 (base32 "1rfrcym5lf4qac2qdklikb1ywijyxypq298azzxahy461dadl6cx"))))
7685 (build-system perl-build-system)
7686 (arguments
7687 `(#:phases
7688 (modify-phases %standard-phases
7689 ;; Build process needs to create files in the "server"
7690 ;; directory.
7691 (add-after 'unpack 'fix-permissions
7692 (lambda _
7693 (for-each make-file-writable
7694 (find-files "server" "." #:directories? #t))))
7695 ;; By default, build stops at warnings.
7696 (add-after 'unpack 'prevent-build-error
7697 (lambda _
7698 (substitute* "inc/My/Builder.pm"
7699 (("-Werror") ""))
7700 #t))
7701 (add-after 'install 'install-desktop-file-and-icons
7702 (lambda* (#:key outputs #:allow-other-keys)
7703 (let* ((share (string-append (assoc-ref outputs "out") "/share"))
7704 (hicolor (string-append share "/icons/hicolor")))
7705 ;; Create desktop entry.
7706 (make-desktop-entry-file
7707 (string-append share "/applications/" ,name ".desktop")
7708 #:name "Frozen Bubble"
7709 #:comment "Frozen Bubble arcade game"
7710 #:exec ,name
7711 #:icon ,name
7712 #:categories '("Game" "ArcadeGame"))
7713 ;; Add icons.
7714 (with-directory-excursion "share/icons"
7715 (for-each
7716 (lambda (size)
7717 (let* ((dim (string-append size "x" size))
7718 (dir (string-append hicolor "/" dim "/apps")))
7719 (mkdir-p dir)
7720 (copy-file
7721 (string-append "frozen-bubble-icon-" dim ".png")
7722 (string-append dir "/frozen-bubble.png"))))
7723 '("16" "32" "48" "64"))))
7724 #t))
7725 (add-after 'install 'wrap-perl-libs
7726 (lambda* (#:key outputs #:allow-other-keys)
7727 (let ((out (assoc-ref outputs "out"))
7728 (perl5lib (getenv "PERL5LIB")))
7729 (for-each (lambda (prog)
7730 (wrap-program (string-append out "/" prog)
7731 `("PERL5LIB" ":" prefix
7732 (,(string-append perl5lib ":" out
7733 "/lib/perl5/site_perl")))))
7734 (find-files "bin" ".")))
7735 #t)))))
7736 (native-inputs
7737 `(("perl-alien-sdl" ,perl-alien-sdl)
7738 ("perl-capture-tiny" ,perl-capture-tiny)
7739 ("perl-locale-maketext-lexicon" ,perl-locale-maketext-lexicon)
7740 ("perl-module-build" ,perl-module-build)
7741 ("pkg-config" ,pkg-config)))
7742 (inputs
7743 `(("glib" ,glib)
7744 ("perl-compress-bzip2" ,perl-compress-bzip2)
7745 ("perl-file-sharedir" ,perl-file-sharedir)
7746 ("perl-file-slurp" ,perl-file-slurp)
7747 ("perl-file-which" ,perl-file-which)
7748 ("perl-ipc-system-simple" ,perl-ipc-system-simple)
7749 ("perl-sdl" ,perl-sdl)
7750 ("sdl" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-pango sdl-ttf)))))
7751 (home-page "http://frozen-bubble.org/")
7752 (synopsis "Puzzle with bubbles")
7753 (description
7754 "Frozen-Bubble is a clone of the popular Puzzle Bobble game, in which
7755you attempt to shoot bubbles into groups of the same color to cause them to
7756pop.
7757
7758Players compete as penguins and must use the arrow keys to aim a colored
7759bubble at groups of bubbles. The objective is to clear all the bubbles off
7760the screen before a bubble passes below a line at the bottom.
7761
7762It features 100 single-player levels, a two-player mode, music and striking
7763graphics. A level editor is also included to allow players to create and play
7764their own levels.")
7765 (license license:gpl2))))
7766
18ebaa9e
EB
7767(define-public libmanette
7768 (package
7769 (name "libmanette")
6b87881c 7770 (version "0.2.4")
18ebaa9e
EB
7771 (source (origin
7772 (method url-fetch)
5b35bdaa 7773 (uri (string-append "mirror://gnome/sources/libmanette/"
18ebaa9e 7774 (version-major+minor version) "/"
5b35bdaa 7775 "libmanette-" version ".tar.xz"))
18ebaa9e
EB
7776 (sha256
7777 (base32
6b87881c 7778 "1xrc6rh73v5w3kbkflzv1yg8sbxk4wf06hfk95raxhxlssza9q2g"))))
18ebaa9e
EB
7779 (build-system meson-build-system)
7780 (native-inputs
7781 `(("glib" ,glib "bin") ; for glib-compile-resources
7782 ("gobject-introspection" ,gobject-introspection)
7783 ("pkg-config" ,pkg-config)
7784 ("vala" ,vala)))
7785 (inputs
7786 `(("libevdev" ,libevdev)
7787 ("libgudev" ,libgudev)))
7788 (home-page "https://wiki.gnome.org/Apps/Games")
7789 (synopsis "Game controller library")
7790 (description "Libmanette is a small GObject library giving you simple
7791access to game controllers. It supports the de-facto standard gamepads as
7792defined by the W3C standard Gamepad specification or as implemented by the SDL
7793GameController.")
7794 (license license:lgpl2.1+)))
39c676c4
EB
7795
7796(define-public quadrapassel
7797 (package
7798 (name "quadrapassel")
d6a454ad 7799 (version "3.36.05")
39c676c4
EB
7800 (source (origin
7801 (method url-fetch)
49598564 7802 (uri (string-append "mirror://gnome/sources/quadrapassel/"
39c676c4 7803 (version-major+minor version) "/"
49598564 7804 "quadrapassel-" version ".tar.xz"))
39c676c4
EB
7805 (sha256
7806 (base32
d6a454ad 7807 "04abxmimh5npw8rhz1sfi6wxilgc6i1wka9mlnfwp8v1p1cb00cv"))))
8a5bfb26
KK
7808 (build-system meson-build-system)
7809 (arguments
7810 '(#:glib-or-gtk? #t
7811 #:phases
7812 (modify-phases %standard-phases
7813 (add-after 'unpack 'skip-gtk-update-icon-cache
7814 ;; Don't create 'icon-theme.cache'.
7815 (lambda _
7816 (substitute* "build-aux/meson_post_install.py"
7817 (("gtk-update-icon-cache") (which "true")))
7818 #t)))))
39c676c4
EB
7819 (native-inputs
7820 `(("desktop-file-utils" ,desktop-file-utils) ;for desktop-file-validate
f2d97d57 7821 ("gettext" ,gettext-minimal)
39c676c4
EB
7822 ("glib" ,glib "bin") ;for glib-compile-resources
7823 ("itstool" ,itstool)
7824 ("libxml2" ,libxml2) ;for xmllint
7825 ("pkg-config" ,pkg-config)
7826 ("vala" ,vala)))
7827 (inputs
7828 `(("clutter" ,clutter)
7829 ("clutter-gtk" ,clutter-gtk)
2f648809 7830 ("gsound" ,gsound)
39c676c4
EB
7831 ("gtk+" ,gtk+)
7832 ("libcanberra" ,libcanberra)
7833 ("libmanette" ,libmanette)
7834 ("librsvg" ,librsvg)))
7835 (home-page "https://wiki.gnome.org/Apps/Quadrapassel")
7836 (synopsis "GNOME version of Tetris")
7837 (description "Quadrapassel comes from the classic falling-block game,
7838Tetris. The goal of the game is to create complete horizontal lines of
7839blocks, which will disappear. The blocks come in seven different shapes made
7840from four blocks each: one straight, two L-shaped, one square, and two
7841S-shaped. The blocks fall from the top center of the screen in a random
7842order. You rotate the blocks and move them across the screen to drop them in
7843complete lines. You score by dropping blocks fast and completing lines. As
7844your score gets higher, you level up and the blocks fall faster.")
7845 (license license:gpl2+)))
560df540
EF
7846
7847(define-public endless-sky
7848 (package
7849 (name "endless-sky")
e3bf2a66 7850 (version "0.9.12")
560df540
EF
7851 (source
7852 (origin
7853 (method git-fetch)
7854 (uri (git-reference
7855 (url "https://github.com/endless-sky/endless-sky")
7856 (commit (string-append "v" version))))
7857 (file-name (git-file-name name version))
7858 (sha256
e3bf2a66 7859 (base32 "18nkl4s3r5sy3sd9lhbdg9160c7fggklklprx0d5azifc8g6k0wj"))))
560df540
EF
7860 (build-system scons-build-system)
7861 (arguments
7862 `(#:scons ,scons-python2
7863 #:scons-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
7864 #:tests? #f ; no tests
7865 #:phases
7866 (modify-phases %standard-phases
7867 (add-after 'unpack 'patch-resource-locations
7868 (lambda* (#:key outputs #:allow-other-keys)
7869 (substitute* "source/Files.cpp"
7870 (("/usr/local/")
7871 (string-append (assoc-ref outputs "out") "/")))
7872 #t))
7873 (add-after 'unpack 'patch-scons
7874 (lambda _
7875 (substitute* "SConstruct"
7876 ;; Keep environmental variables
7877 (("Environment\\(\\)")
7878 "Environment(ENV = os.environ)")
7879 ;; Install into %out/bin
7880 (("games\"") "bin\""))
7881 #t)))))
7882 (inputs
7883 `(("glew" ,glew)
7884 ("libjpeg" ,libjpeg-turbo)
7885 ("libmad" ,libmad)
7886 ("libpng" ,libpng)
7887 ("openal" ,openal)
7888 ("sdl2" ,sdl2)))
7889 (home-page "https://endless-sky.github.io/")
7890 (synopsis "2D space trading and combat game")
7891 (description "Endless Sky is a 2D space trading and combat game. Explore
7892other star systems. Earn money by trading, carrying passengers, or completing
7893missions. Use your earnings to buy a better ship or to upgrade the weapons and
7894engines on your current one. Blow up pirates. Take sides in a civil war. Or
7895leave human space behind and hope to find friendly aliens whose culture is more
7896civilized than your own.")
7897 (license (list license:gpl3+
7898 license:cc-by-sa3.0
7899 license:cc-by-sa4.0
7900 license:public-domain))))
1faf0a04
NG
7901
7902(define-public stepmania
7903 (package
7904 (name "stepmania")
7905 (version "5.1.0-b2")
7906 (source
7907 (origin
7908 (method git-fetch)
7909 (uri (git-reference
b0e7b699 7910 (url "https://github.com/stepmania/stepmania")
1faf0a04
NG
7911 (commit (string-append "v" version))))
7912 (file-name (git-file-name name version))
7913 (sha256
7914 (base32
7915 "0a7y9l7xm510vgnpmj1is7p9m6d6yd0fcaxrjcickz295k5w3rdn"))
7916 (modules '((guix build utils)))
7917 (snippet
7918 '(begin
7919 ;; Remove song files, which are licensed under a non-commercial
7920 ;; clause, and a course pointing to them.
7921 (for-each delete-file-recursively
7922 '("Songs/StepMania 5/Goin' Under"
7923 "Songs/StepMania 5/MechaTribe Assault"
7924 "Songs/StepMania 5/Springtime"))
7925 (for-each delete-file '("Courses/Default/Jupiter.crs"
7926 "Courses/Default/Jupiter.png"))
7927 ;; Unbundle libpng.
7928 (substitute* "extern/CMakeLists.txt"
7929 (("include\\(CMakeProject-png.cmake\\)") ""))
7930 (delete-file-recursively "extern/libpng")
7931 #t))))
7932 (build-system cmake-build-system)
7933 (arguments
7934 `(#:tests? #f ;FIXME: couldn't find how to run tests
7935 #:build-type "Release"
7936 #:out-of-source? #f ;for the 'install-desktop' phase
7937 #:configure-flags
7938 (list "-DWITH_SYSTEM_FFMPEG=1"
296c8484
EF
7939 ;; SSE instructions are available on Intel systems only.
7940 ,@(if (any (cute string-prefix? <> (or (%current-target-system)
7941 (%current-system)))
2612ec80 7942 '("x86_64" "i686"))
296c8484
EF
7943 '()
7944 '("-DWITH_SSE2=NO"))
1faf0a04
NG
7945 ;; Configuration cannot find GTK2 without the two following
7946 ;; flags.
7947 (string-append "-DGTK2_GDKCONFIG_INCLUDE_DIR="
7948 (assoc-ref %build-inputs "gtk+")
7949 "/lib/gtk-2.0/include")
7950 (string-append "-DGTK2_GLIBCONFIG_INCLUDE_DIR="
7951 (assoc-ref %build-inputs "glib")
7952 "/lib/glib-2.0/include"))
7953 #:phases
7954 (modify-phases %standard-phases
47746772 7955 (add-after 'unpack 'ensure-application-files-can-be-found
45aba232 7956 (lambda* (#:key outputs #:allow-other-keys)
47746772
RW
7957 (let ((out (assoc-ref outputs "out")))
7958 (substitute* "src/arch/LoadingWindow/LoadingWindow_Gtk.cpp"
7959 (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\" \\+ \"GtkModule.so\"")
7960 (string-append "\"" out
7961 "/share/stepmania/GtkModule.so\"")))
7962 (substitute* "src/arch/ArchHooks/ArchHooks_Unix.cpp"
7963 (("Root = sDirOfExecutable")
7964 (string-append "Root = \"" out "/share/stepmania/\""))
7965 (("sDirOfExecutable \\+ \"/(Packages|Songs)\"" _ dir)
7966 (string-append "\"" out "/share/stepmania/" dir "\"")))
7967 (substitute* "src/RageFileManager.cpp"
7968 (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\"")
7969 (string-append "\"" out "/share/stepmania/\""))))
45aba232 7970 #t))
1faf0a04
NG
7971 (add-after 'unpack 'fix-install-subdir
7972 ;; Installation would be done in "%out/stepmania-X.Y", but we
7973 ;; prefer the more common layout "%out/share/stepmania".
7974 (lambda _
7975 (substitute* "src/CMakeLists.txt"
7976 (("\"stepmania-.*?\"") "\"share/stepmania\""))
7977 #t))
7978 (add-after 'unpack 'unbundle-libpng
7979 (lambda* (#:key inputs #:allow-other-keys)
7980 (substitute* "src/CMakeLists.txt"
7981 (("\\$\\{SM_EXTERN_DIR\\}/libpng/include")
7982 (string-append (assoc-ref inputs "libpng") "/include")))
7983 #t))
7984 (add-after 'install 'install-executable
7985 (lambda* (#:key outputs #:allow-other-keys)
7986 (let* ((out (assoc-ref outputs "out"))
7987 (bin (string-append out "/bin"))
7988 (exe (string-append out "/share/stepmania/stepmania")))
7989 (mkdir-p bin)
7990 (symlink exe (string-append bin "/stepmania"))
7991 #t)))
7992 (add-after 'install-executable 'install-desktop
7993 (lambda* (#:key outputs #:allow-other-keys)
7994 (let* ((out (assoc-ref outputs "out"))
7995 (share (string-append out "/share"))
7996 (applications (string-append share "/applications"))
7997 (icons (string-append share "/icons")))
7998 (install-file "stepmania.desktop" applications)
7999 (mkdir-p icons)
8000 (copy-recursively "icons" icons)
8001 #t)))
8002 ;; Move documentation in a more usual place, i.e.,
8003 ;; "%out/share/doc/stepmania/".
8004 (add-after 'install-desktop 'install-doc
8005 (lambda* (#:key outputs #:allow-other-keys)
8006 (let* ((out (assoc-ref outputs "out"))
8007 (share (string-append out "/share")))
8008 (with-directory-excursion share
8009 (mkdir-p "doc")
8010 (symlink "../stepmania/Docs" "doc/stepmania"))
8011 #t))))))
8012 (native-inputs
8013 `(("pkg-config" ,pkg-config)
8014 ("yasm" ,yasm)))
8015 (inputs
8016 `(("alsa-lib" ,alsa-lib)
8017 ;; Per upstream, StepMania is only guaranteed to work with a very
8018 ;; specific FFmpeg version, which is included in the repository as
8019 ;; a Git submodule. This particular version requirement usually
8020 ;; changes every few years.
8021 ("ffmpeg" ,ffmpeg-for-stepmania)
8022 ("glib" ,glib)
8023 ("glew" ,glew)
8024 ("gtk+" ,gtk+-2)
8025 ("jsoncpp" ,jsoncpp)
8026 ("libpng" ,libpng)
96738cb1 8027 ("libjpeg" ,libjpeg-turbo)
1faf0a04
NG
8028 ("libmad" ,libmad)
8029 ("libogg" ,libogg)
8030 ("libva" ,libva)
8031 ("libvorbis" ,libvorbis)
8032 ("libxinerama" ,libxinerama)
8033 ("libxrandr" ,libxrandr)
8034 ("mesa" ,mesa)
8035 ("pcre" ,pcre)
8036 ("pulseaudio" ,pulseaudio)
8037 ("sdl" ,sdl2)
8038 ("udev" ,eudev)
8039 ("zlib" ,zlib)))
8040 (synopsis "Advanced rhythm game designed for both home and arcade use")
8041 (description "StepMania is a dance and rhythm game. It features 3D
8042graphics, keyboard and dance pad support, and an editor for creating your own
8043steps.
8044
8045This package provides the core application, but no song is shipped. You need
8046to download and install them in @file{$HOME/.stepmania-X.Y/Songs} directory.")
8047 (home-page "https://www.stepmania.com")
8048 (license license:expat)))
8049
649220ad 8050(define-public btanks
ca32afac 8051 (package
649220ad 8052 (name "btanks")
ca32afac
RW
8053 (version "0.9.8083")
8054 (source
8055 (origin
8056 (method url-fetch)
8057 (uri (string-append "mirror://sourceforge/btanks/btanks-source/"
8058 "btanks-" version ".tar.bz2"))
8059 (sha256
8060 (base32
8061 "0ha35kxc8xlbg74wsrbapfgxvcrwy6psjkqi7c6adxs55dmcxliz"))))
8062 (build-system scons-build-system)
8063 (arguments
8064 `(#:tests? #f ; there are none
8065 #:scons ,scons-python2
8066 #:scons-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
8067 #:phases
8068 (modify-phases %standard-phases
8069 (add-after 'unpack 'replace-removed-scons-syntax
8070 (lambda _
8071 (substitute* "SConstruct"
8072 (("Options") "Variables")
8073 (("opts.Add\\(BoolOption.*") "opts.Add('gcc_visibility', 'gcc visibility', 'true')")
8074 (("opts.Add\\(EnumOption.*") "opts.Add('mode', 'build mode', 'release')"))
8075 #t))
8076 (add-after 'set-paths 'set-sdl-paths
8077 (lambda* (#:key inputs #:allow-other-keys)
8078 (setenv "CPATH"
8079 (string-append (assoc-ref inputs "sdl")
5ba856ab
MB
8080 "/include/SDL:"
8081 (or (getenv "CPATH") "")))
ca32afac
RW
8082 #t))
8083 (add-after 'unpack 'fix-compilation-errors
8084 (lambda _
8085 (substitute* "mrt/base_file.h"
8086 (("#include <string>" m)
8087 (string-append m "\n#include <sys/types.h>")))
8088 (substitute* '("engine/sl08/sl08.h"
8089 "engine/sl08/sl08.py")
8090 (("signal = NULL") "signal = 0")
8091 (("object\\(NULL\\)") "object(0)")
8092 (("func\\(NULL\\)") "func(0)")
8093 ((" connect\\(signal_ref\\)")
8094 " this->connect(signal_ref)"))
8095 (substitute* "math/range_list.h"
8096 ((" lower_bound\\(value\\)")
8097 " this->lower_bound(value)")
8098 ((" erase\\(i\\)")
8099 " this->erase(i)"))
8100 (substitute* "clunk/source.cpp"
8101 (("using namespace clunk" m)
8102 (string-append "# define pow10f(x) exp10f(x)\n" m)))
8103 #t))
8104 (add-after 'unpack 'find-lua
8105 (lambda _
8106 (substitute* "engine/SConscript"
8107 (("lua5.1") "lua-5.1")
8108 (("bt_libs.append\\(lua\\)")
8109 "bt_libs.append(\"lua\")"))
8110 #t)))))
8111 (inputs
8112 `(("expat" ,expat)
8113 ("glu" ,glu)
8114 ("libsmpeg" ,libsmpeg-with-sdl1)
8115 ("libvorbis" ,libvorbis)
8116 ("lua51" ,lua-5.1)
8117 ("sdl" ,(sdl-union (list sdl
8118 sdl-mixer
8119 sdl-image
8120 sdl-ttf)))
8121 ("zlib" ,zlib)))
8122 (native-inputs
8123 `(("pkg-config" ,pkg-config)
8124 ("zip" ,zip)))
8125 (home-page "http://btanks.sourceforge.net")
8126 (synopsis "Multiplayer tank battle game")
b1aee9fc
PN
8127 (description "Battle Tanks (also known as \"btanks\") is a funny battle
8128game, where you can choose one of three vehicles and eliminate your enemy
8129using the whole arsenal of weapons. It has original cartoon-like graphics and
8130cool music, it’s fun and dynamic, it has several network modes for deathmatch
8131and cooperative.")
ca32afac
RW
8132 ;; Some parts (e.g. mrt/b64.cpp) are LGPLv2.1+, but the whole package is
8133 ;; released under GPLv2 or later. It comes with extra exceptions for the
8134 ;; developers.
8135 (license (list license:gpl2+ license:lgpl2.1+))))
c06709b8
RW
8136
8137(define-public slingshot
8138 (package
8139 (name "slingshot")
8140 (version "0.9")
8141 (source
8142 (origin
8143 (method git-fetch)
8144 (uri (git-reference
b0e7b699 8145 (url "https://github.com/ryanakca/slingshot")
c06709b8
RW
8146 (commit version)))
8147 (file-name (git-file-name name version))
8148 (sha256
8149 (base32
8150 "19m8b6nsi786bc6gmkp185mwri3r5y249gjmqd5qsc23nnfhgrs1"))))
8151 (build-system python-build-system)
8152 (arguments
8153 `(#:python ,python-2))
8154 (inputs
8155 `(("python-pygame" ,python2-pygame)))
8156 (home-page "https://github.com/ryanakca/slingshot")
8157 (synopsis "Simple 2D shooting strategy game set in space")
8158 (description "Slingshot is a two-dimensional strategy game where two
8159players attempt to shoot one another through a section of space populated by
8160planets. The main feature of the game is that the shots, once fired, are
8161affected by the gravity of the planets.")
8162 (license license:gpl2+)))
8ada024b
RW
8163
8164(define-public 4dtris
8165 (package
8166 (name "4dtris")
8167 (version "0.4.3")
8168 (source
8169 (origin
8170 (method url-fetch)
8171 (uri (string-append "https://launchpad.net/4dtris/"
8172 (version-major+minor version)
8173 "/" version "/+download/4dtris_"
8174 version ".orig.tar.gz"))
8175 (sha256
8176 (base32
8177 "1nfkhcm0l89jyw8yr65na97g4l385zhjf7whkyg47c3v5sdqq2g7"))))
8178 (build-system gnu-build-system)
8179 (arguments
8180 `(#:phases
8181 (modify-phases %standard-phases
8182 (add-after 'unpack 'fix-install-directories
8183 (lambda* (#:key outputs #:allow-other-keys)
8184 (let ((out (assoc-ref outputs "out")))
8185 (substitute* "Makefile.in"
8186 (("bindir = /usr/games")
8187 (string-append "bindir = " out "/bin"))
8188 (("/usr/share/applications")
8189 (string-append out "/share/applications"))
8190 (("/usr/share/games/4dtris")
8191 (string-append out "/share/4dtris"))))
8192 #t))
8193 (add-after 'set-paths 'set-sdl-paths
8194 (lambda* (#:key inputs #:allow-other-keys)
8195 (setenv "CPATH"
8196 (string-append (assoc-ref inputs "sdl")
5ba856ab
MB
8197 "/include/SDL:"
8198 (or (getenv "CPATH") "")))
8ada024b
RW
8199 #t)))))
8200 (inputs
8201 `(("fontconfig" ,fontconfig)
8202 ("freeglut" ,freeglut)
8203 ("sdl" ,(sdl-union (list sdl sdl-ttf)))))
8204 (home-page "https://launchpad.net/4dtris/")
8205 (synopsis "4D Tetris")
8206 (description "4D-TRIS is an alteration of the well-known Tetris game. The
8207game field is extended to 4D space, which has to filled up by the gamer with
82084D hyper cubes.")
8209 (license license:gpl3)))
8210
8044e584
PN
8211(define-public arx-libertatis
8212 (package
8213 (name "arx-libertatis")
8214 (version "1.1.2")
8215 (source
8216 (origin
8217 (method url-fetch)
8218 (uri (string-append "http://arx-libertatis.org/files/arx-libertatis-"
8219 version ".tar.xz"))
8220 (sha256
8221 (base32
8222 "0hjfxlsmp8wwqr06snv2dlly2s79ra0d9aw49gkp6rn8m50b9bc2"))))
8223 (build-system cmake-build-system)
8224 (outputs '("out" "installer"))
8225 (arguments
8226 '(#:tests? #f ; No tests.
8227 #:phases
8228 (modify-phases %standard-phases
8229 (add-after 'unpack 'fix-install-helper-paths
8230 (lambda* (#:key inputs #:allow-other-keys)
8231 (let ((p7zip (assoc-ref inputs "p7zip"))
8232 (innoextract (assoc-ref inputs "innoextract"))
8233 (wget (assoc-ref inputs "wget"))
8234 (zenity (assoc-ref inputs "zenity")))
8235 (substitute* "scripts/arx-install-data"
8236 (("have innoextract")
8237 (string-append "have " innoextract "/bin/innoextract"))
8238 (("then innoextract")
8239 (string-append "then " innoextract "/bin/innoextract"))
8240 (("else innoextract")
8241 (string-append "else " innoextract "/bin/innoextract"))
8242 (("for _extract_zip_sz in 7za 7z")
8243 (string-append "for _extract_zip_sz in " p7zip "/bin/7za"))
8244 (("else if have 7z")
8245 (string-append "else if have " p7zip "/bin/7za"))
8246 (("7z x -tiso")
8247 (string-append p7zip "/bin/7z x -tiso"))
8248 (("if have wget")
8249 (string-append "if have " wget "/bin/wget"))
8250 (("wget -O")
8251 (string-append wget "/bin/wget -O"))
8252 (("for backend in \\$preferred zenity")
8253 (string-append "for backend in $preferred " zenity "/bin/zenity"))
8254 (("zenity +--title")
8255 (string-append zenity "/bin/zenity --title"))
8256 (("^zenity\\)")
8257 (string-append zenity "/bin/zenity)"))))
8258 #t))
8259 (add-after 'install 'move-installer
8260 (lambda* (#:key outputs #:allow-other-keys)
8261 (let ((out (assoc-ref outputs "out"))
8262 (installer (assoc-ref outputs "installer")))
8263 (mkdir-p (string-append installer "/bin"))
8264 (rename-file (string-append out "/bin/arx-install-data")
8265 (string-append installer "/bin/arx-install-data"))))))))
8266 (inputs
8267 `(("sdl" ,sdl) ; Switch to sdl2 in >1.1.2.
8268 ("mesa" ,mesa) ; Switch to libepoxy in >1.1.2.
8269 ("glew" ,glew)
8270 ("openal" ,openal)
8271 ("zlib" ,zlib)
8272 ("boost" ,boost)
8273 ("glm" ,glm)
8274 ("freetype" ,freetype)
8275 ;; The following are only needed by the arx-install-data script.
8276 ("p7zip" ,p7zip) ; Install-helper uses it to extract ISO and .cab archives.
8277 ("zenity" ,zenity) ; GUI for install-helper.
8278 ("wget" ,wget) ; Used by the install-helper to download the patch.
8279 ;; The install-helper needs it to extract the patch.
8280 ("innoextract" ,innoextract)))
8281 (home-page "https://arx-libertatis.org/")
8282 (synopsis "Port of Arx Fatalis, a first-person role-playing game")
37e47aa7
MB
8283 (description "Arx Libertatis is a cross-platform port of Arx Fatalis, a 2002
8284first-person role-playing game / dungeon crawler developed by Arkane Studios.
8285This port however does not include the game data, so you need to obtain a copy
8286of the original Arx Fatalis or its demo to play Arx Libertatis. Arx Fatalis
8287features crafting, melee and ranged combat, as well as a unique casting system
8288where the player draws runes in real time to effect the desired spell.")
8044e584 8289 (license license:gpl3+)))
47903653 8290
649220ad 8291(define-public edgar
47903653 8292 (package
649220ad 8293 (name "edgar")
d4d9f882 8294 (version "1.33")
47903653 8295 (source
8296 (origin
8297 (method url-fetch)
8298 (uri
8299 (string-append "https://github.com/riksweeney/edgar/releases/download/"
8300 version "/edgar-" version "-1.tar.gz"))
8301 (sha256
d4d9f882 8302 (base32 "1mbx7dvizdca4g1blcv3bdh6yxd13k47rkya4rdzg0nvvz24m175"))))
47903653 8303 (build-system gnu-build-system)
067826ab 8304 (arguments '(#:tests? #f ; there are no tests
47903653 8305 #:make-flags
8306 (list "CC=gcc"
8307 (string-append "PREFIX=" (assoc-ref %outputs "out"))
8308 (string-append "BIN_DIR=" (assoc-ref %outputs "out") "/bin/"))
8309 #:phases
8310 (modify-phases %standard-phases
8311 (delete 'configure)
8312 (add-before 'build 'fix-env
8313 (lambda* (#:key inputs #:allow-other-keys)
067826ab
TGR
8314 (setenv "CPATH"
8315 (string-append (assoc-ref inputs "sdl2-union")
5ba856ab
MB
8316 "/include/SDL2:"
8317 (or (getenv "CPATH") "")))
47903653 8318 #t)))))
067826ab
TGR
8319 (inputs
8320 `(("sdl2-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
8321 ("zlib" ,zlib)))
47903653 8322 (native-inputs
8323 `(("pkg-config" ,pkg-config)
8324 ("autoconf" ,autoconf)
8325 ("automake" ,automake)
f2d97d57 8326 ("gnu-gettext" ,gettext-minimal)
47903653 8327 ("libtool" ,libtool)
8328 ("which" ,which)))
8329 (synopsis "2d action platformer game")
8330 (description "The Legend of Edgar is a 2D platform game with a persistent world.
8331When Edgar's father fails to return home after venturing out one dark and stormy night,
8332Edgar fears the worst: he has been captured by the evil sorcerer who lives in
8333a fortress beyond the forbidden swamp.")
8334 (home-page "https://www.parallelrealities.co.uk/games/edgar/")
8335 (license license:gpl2+)))
f95e33a7 8336
4e43e317
NG
8337(define-public openclonk
8338 (package
8339 (name "openclonk")
8340 (version "8.1")
8341 (source (origin
8342 (method url-fetch)
8343 (uri (string-append
8344 "https://www.openclonk.org/builds/release/" version "/"
8345 "openclonk-" version "-src.tar.bz2"))
8346 (sha256
8347 (base32
8348 "0imkqjp8lww5p0cnqf4k4mb2v682mnsas63qmiz17rspakr7fxik"))))
8349 (build-system cmake-build-system)
8350 (arguments
8351 `(#:configure-flags '("-DAudio_TK=OpenAL")
8352 #:test-target "tests"
8353 #:phases
8354 (modify-phases %standard-phases
8355 (add-after 'unpack 'prepare-gmock
8356 (lambda* (#:key inputs #:allow-other-keys)
8357 (mkdir "gmock")
8358 (copy-recursively (assoc-ref inputs "googlemock") "gmock")
8359 (substitute* "tests/CMakeLists.txt"
8360 (("/usr/src/gmock")
8361 (string-append (getcwd) "/gmock/googlemock"))
8362 (("/usr/src/gtest")
8363 (string-append (getcwd) "/gmock/googletest"))
8364 (("PATH_SUFFIXES \"src\" \"gtest\"")
8365 "PATH_SUFFIXES \"src\""))
8366 #t))
ee9eafc1
MB
8367 (add-after 'unpack 'adjust-backward-cpp-includes
8368 (lambda _
8369 ;; XXX: The bundled backward-cpp exports a CMake "interface"
8370 ;; that includes external libraries such as libdl from glibc.
8371 ;; By default, CMake interface includes are treated as "system
8372 ;; headers", and GCC behaves poorly when glibc is passed as a
8373 ;; system header (causing #include_next failures).
8374
8375 ;; Here we prevent targets that consume the Backward::Backward
8376 ;; interface from treating it as "system includes".
8377 (substitute* "CMakeLists.txt"
8378 (("target_link_libraries\\((.+) Backward::Backward\\)" all target)
8379 (string-append "set_property(TARGET " target " PROPERTY "
8380 "NO_SYSTEM_FROM_IMPORTED true)\n"
8381 all)))
8382 #t))
4e43e317
NG
8383 (add-after 'unpack 'add-libiberty
8384 ;; Build fails upon linking executables without this.
8385 (lambda _
8386 (substitute* "thirdparty/backward-cpp/BackwardConfig.cmake"
8387 (("set\\(LIBBFD_LIBRARIES (.*?)\\)" _ libraries)
8388 (string-append "set(LIBBFD_LIBRARIES " libraries " iberty)")))
8389 #t))
8390 (add-after 'add-libiberty 'lax-freealut-requirement
8391 ;; TODO: We provide freealut 1.1.0, but pkg-config somehow detects
8392 ;; it as 1.0.1. Force minimal version.
8393 (lambda _
8394 (substitute* "cmake/FindAudio.cmake"
8395 (("freealut>=1.1.0") "freealut>=1.0.1"))
8396 #t))
8397 (add-after 'lax-freealut-requirement 'fix-directories
8398 ;; Prefer "$out/share/openclonk" over
8399 ;; "$out/share/games/openclonk". Also install "openclonk"
8400 ;; binary in "bin/", not "games/".
8401 (lambda _
8402 (substitute* "CMakeLists.txt"
8403 (("share/games/openclonk") "share/openclonk")
8404 (("TARGETS openclonk DESTINATION games")
8405 "TARGETS openclonk DESTINATION bin"))
8406 #t)))))
8407 (native-inputs
8408 `(("googlemock" ,(package-source googletest))
8409 ("googletest" ,googletest)
8410 ("pkg-config" ,pkg-config)))
8411 (inputs
8412 `(("freealut" ,freealut)
8413 ("freetype" ,freetype)
8414 ("glew" ,glew)
8415 ("libiberty" ,libiberty)
8416 ("libjpeg" ,libjpeg-turbo)
8417 ("libogg" ,libogg)
8418 ("libpng" ,libpng)
8419 ("libvorbis" ,libvorbis)
8420 ("libxrandr" ,libxrandr)
8421 ("mesa" ,mesa)
8422 ("miniupnpc" ,miniupnpc)
8423 ("openal" ,openal)
8424 ("qtbase" ,qtbase)
8425 ("readline" ,readline)
8426 ("sdl" ,sdl2)
8427 ("tinyxml" ,tinyxml)
8428 ("zlib" ,zlib)))
8429 (home-page "https://www.openclonk.org/")
8430 (synopsis
8431 "Multiplayer action game where you control small and nimble humanoids")
8432 (description "OpenClonk is a multiplayer action/tactics/skill game. It is
8433often referred to as a mixture of The Settlers and Worms. In a simple 2D
6018d26b 8434antfarm-style landscape, the player controls a crew of Clonks, small but
4e43e317
NG
8435robust humanoid beings. The game encourages free play but the normal goal is
8436to either exploit valuable resources from the earth by building a mine or
8437fight each other on an arena-like map.")
8438 ;; Software as a whole is licensed under ISC, artwork under CC-BY.
8439 (license (list license:isc license:cc-by3.0))))
ad4f6442
NG
8440
8441(define-public flare-engine
8442 (package
8443 (name "flare-engine")
f9622ec7 8444 (version "1.11")
ad4f6442
NG
8445 (source (origin
8446 (method git-fetch)
8447 (uri (git-reference
b0e7b699 8448 (url "https://github.com/flareteam/flare-engine")
ad4f6442
NG
8449 (commit (string-append "v" version))))
8450 (file-name (git-file-name name version))
8451 (sha256
8452 (base32
f9622ec7 8453 "1mqr1s72p5bdh4kq2a8hg72dk8lwnddicjnd2cdp1sbfa9lmjym8"))))
ad4f6442
NG
8454 (build-system cmake-build-system)
8455 (arguments
8456 `(#:tests? #f ;no test
8457 #:configure-flags '("-DBINDIR=bin" "-DDATADIR=share/flare")))
8458 (inputs
8459 `(("hicolor-icon-theme" ,hicolor-icon-theme)
8460 ("python" ,python-wrapper)
8461 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
8462 (home-page "http://www.flarerpg.org/")
8463 (synopsis "Action Roleplaying Engine")
8464 (description "Flare (Free Libre Action Roleplaying Engine) is a simple
8465game engine built to handle a very specific kind of game: single-player 2D
8466action RPGs.")
8467 (license license:gpl3+)))
8468
8469(define-public flare-game
8470 (package
8471 (name "flare-game")
ffbaefc7 8472 (version "1.11")
ad4f6442
NG
8473 (source (origin
8474 (method git-fetch)
8475 (uri (git-reference
b0e7b699 8476 (url "https://github.com/flareteam/flare-game")
ad4f6442
NG
8477 (commit (string-append "v" version))))
8478 (file-name (git-file-name name version))
8479 (sha256
8480 (base32
ffbaefc7 8481 "0bd5g7sd89a9176ilr408hdqzdfv4j7wj0idd685c1n6s01c3h6p"))))
ad4f6442
NG
8482 (build-system cmake-build-system)
8483 (arguments
8484 `(#:tests? #f ;no test
8485 #:configure-flags '("-DDATADIR=share/flare")
8486 #:phases
8487 (modify-phases %standard-phases
8488 ;; Flare expects the mods to be located in the same folder.
8489 ;; Yet, "default" mod is in the engine, whereas the others
8490 ;; are in the current package. Merge everything here with
8491 ;; a symlink.
8492 (add-after 'install 'add-default-mod
8493 (lambda* (#:key inputs outputs #:allow-other-keys)
8494 (let* ((out (assoc-ref outputs "out"))
8495 (mods (string-append out "/share/flare/mods")))
8496 (with-directory-excursion mods
8497 (symlink (string-append (assoc-ref inputs "flare-engine")
8498 "/share/flare/mods/default")
8499 "default")))
8500 #t))
8501 (add-after 'install 'install-executable
8502 ;; The package only provides assets for the game, the
8503 ;; executable coming from "flare-engine". Since more than
8504 ;; one game may use the engine, we create a new executable,
8505 ;; "flare-game", which launches the engine with appropriate
8506 ;; parameters.
8507 (lambda* (#:key inputs outputs #:allow-other-keys)
8508 (let* ((out (assoc-ref outputs "out"))
8509 (bash (string-append (assoc-ref inputs "bash")
8510 "/bin/bash"))
8511 (flare (string-append (assoc-ref inputs "flare-engine")
8512 "/bin/flare"))
8513 (script (string-append out "/bin/flare-game")))
8514 (mkdir-p (dirname script))
8515 (call-with-output-file script
8516 (lambda (port)
8517 (format port
8518 "#!~a
8519exec ~a --data-path=~a/share/flare --mods=empyrean_campaign~%"
8520 bash
8521 flare
8522 out)))
8523 (chmod script #o755))
8524 #t)))))
8525 (inputs
8526 `(("flare-engine" ,flare-engine)))
8527 (home-page "http://www.flarerpg.org/")
8528 (synopsis "Fantasy action RPG using the FLARE engine")
8529 (description "Flare is a single-player 2D action RPG with
8530fast-paced action and a dark fantasy style.")
8531 (license license:cc-by-sa3.0)))
660e0050
NG
8532
8533(define-public meritous
8534 (package
8535 (name "meritous")
8536 (version "1.5")
8537 (source (origin
8538 (method git-fetch)
8539 (uri (git-reference
8540 (url "https://gitlab.com/meritous/meritous.git")
8541 (commit (string-append "v" version))))
8542 (file-name (git-file-name name version))
8543 (sha256
8544 (base32
8545 "0n5jm4g0arjllgqmd2crv8h02i6hs3hlh1zyc7ng7yfpg1mbd8p8"))))
8546 (build-system gnu-build-system)
8547 (arguments
8548 `(#:tests? #f ;no test
8549 #:make-flags
8550 (list "CC=gcc"
8551 (string-append "prefix=" (assoc-ref %outputs "out")))
8552 #:phases
8553 (modify-phases %standard-phases
8554 (delete 'configure)
8555 (add-after 'unpack 'fix-sdl-path
8556 ;; XXX: For some reason, `sdl-config' reports stand-alone SDL
8557 ;; directory, not SDL-union provided as an input to the package.
8558 ;; We force the latter with "--prefix=" option.
8559 (lambda* (#:key inputs #:allow-other-keys)
8560 (substitute* "Makefile"
8561 (("sdl-config" command)
8562 (string-append command " --prefix=" (assoc-ref inputs "sdl"))))
8563 #t))
8564 (add-after 'unpack 'fix-crash
8565 ;; XXX: Songs are not present in the repository, due to licensing
8566 ;; issues. Yet, the game tries to load them, and, since it cannot
8567 ;; find them, crashes. Users cannot add them back, the store being
8568 ;; read-only, so we turn off background music altogether.
8569 (lambda _
8570 (substitute* "src/audio.c"
8571 (("PlayBackgroundMusic\\(new_track\\);" all)
8572 (string-append "// " all)))
8573 #t)))))
8574 (native-inputs
8575 `(("intltool" ,intltool)))
8576 (inputs
8577 `(("sdl" ,(sdl-union (list sdl sdl-image sdl-mixer)))
8578 ("zlib" ,zlib)))
8579 (home-page "https://gitlab.com/meritous/meritous")
8580 (synopsis "Action-adventure dungeon crawl game")
8581 (description "Far below the surface of the planet is a place of limitless
8582power. Those that seek to control such a utopia will soon bring an end to
8583themselves. Seeking an end to the troubles that plague him, PSI user Merit
8584journeys into the hallowed Orcus Dome in search of answers.
8585
8586Meritous is a action-adventure game with simple controls but a challenge to
8587find a balance of power versus recovery time during real-time battles. Set in
8588a procedurally generated world, the player can explore thousands of rooms in
8589search of powerful artifacts, tools to help them, and to eventually free the
8590Orcus Dome from evil.")
8591 (license license:gpl3+)))
472af999
RW
8592
8593(define-public marble-marcher
8594 (let ((commit "e580460a0c3826f9b28ab404607942a8ecb625d7")
8595 (revision "1"))
8596 (package
8597 (name "marble-marcher")
8598 (version (git-version "0" revision commit))
8599 (source (origin
8600 (method git-fetch)
8601 (uri (git-reference
b0e7b699 8602 (url "https://github.com/HackerPoet/MarbleMarcher")
472af999
RW
8603 (commit commit)))
8604 (file-name (git-file-name name version))
8605 (sha256
8606 (base32
8607 "0jjv832hl1v170n6gryp2sr3lgqndi9ab841qvgqk68bks8701mx"))))
8608 (build-system cmake-build-system)
8609 (arguments
8610 `(#:tests? #f ; there are none
8611 #:phases
8612 (modify-phases %standard-phases
8613 (add-after 'unpack 'embed-asset-directory
8614 (lambda* (#:key outputs #:allow-other-keys)
8615 (let ((assets (string-append (assoc-ref outputs "out")
8616 "/share/marble-marcher/assets/")))
8617 ;; Some of the files we're patching are
8618 ;; ISO-8859-1-encoded, so choose it as the default
8619 ;; encoding so the byte encoding is preserved.
8620 (with-fluids ((%default-port-encoding #f))
8621 (substitute* "src/Resource.rc"
8622 (("../assets/icon.ico")
8623 (string-append assets "icon.ico")))
8624 (substitute* "src/Res.h"
8625 (("assets/") assets))))
8626 #t))
8627 (replace 'install
8628 (lambda* (#:key outputs #:allow-other-keys)
8629 (let* ((out (assoc-ref outputs "out"))
8630 (assets (string-append out "/share/marble-marcher/assets"))
8631 (bin (string-append out "/bin/")))
8632 (mkdir-p bin)
8633 (mkdir-p assets)
8634 (copy-recursively "../source/assets" assets)
8635 (install-file "MarbleMarcher" bin))
8636 #t)))))
8637 (inputs
8638 `(("eigen" ,eigen)
8639 ("mesa" ,mesa)
8640 ("sfml" ,sfml)))
8641 (native-inputs
8642 `(("pkg-config" ,pkg-config)))
8643 (home-page "https://codeparade.itch.io/marblemarcher")
8644 (synopsis "Guide a marble across fractal landscapes")
8645 (description "Marble Marcher is a video game that uses a fractal physics
8646engine and fully procedural rendering to produce beautiful and unique
8647gameplay. The game is played on the surface of evolving fractals. The goal
8648of the game is to get your marble to the flag as quickly as possible. But be
8649careful not to fall off the level or get crushed by the fractal! There are 24
8650levels to unlock.")
8651 ;; Code is under GPLv2+, assets are under CC-BY-SA 3.0 and OFL 1.1.
8652 (license (list license:gpl2+
8653 license:silofl1.1
8654 license:cc-by-sa3.0)))))
20185e4f 8655
a84510f9 8656;; This must be updated together with flightgear.
20185e4f
RW
8657(define simgear
8658 (package
8659 (name "simgear")
8a3d0416
NG
8660 (version "2018.3.5")
8661 (source
8662 (origin
8663 (method url-fetch)
8664 (uri (string-append "mirror://sourceforge/flightgear/release-"
8665 (version-major+minor version) "/"
8666 "simgear-" version ".tar.bz2"))
8667 (sha256
8668 (base32 "1vkqm66r1205k3hdjmx5wmx5kvmsb0dgfzrs8n5gqnxj8szs42dl"))))
20185e4f
RW
8669 (build-system cmake-build-system)
8670 (arguments
8671 `(#:phases
8672 (modify-phases %standard-phases
8673 (replace 'check
8674 (lambda _
8675 ;; Skip tests that require internet access.
8676 (invoke "ctest" "-E" "(http|dns)"))))))
8677 (inputs
8a3d0416 8678 `(("boost" ,boost-for-mysql) ; fails with 1.69
20185e4f
RW
8679 ("curl" ,curl)
8680 ("expat" ,expat)
8681 ("mesa" ,mesa)
8682 ("openal" ,openal)
8683 ("openscenegraph" ,openscenegraph-3.4)
8684 ("zlib" ,zlib)))
8685 (home-page "https://home.flightgear.org/")
8686 (synopsis "Libraries for 3D simulations and games")
8687 (description "SimGear is a set of libraries designed to be used as
8688building blocks for quickly assembling 3D simulations, games, and
8689visualization applications. SimGear is developed by the FlightGear project
8690and also provides the base for the FlightGear Flight Simulator.")
8691 (license license:lgpl2.0+)))
a84510f9
RW
8692
8693(define-public flightgear
8694 (package
8695 (name "flightgear")
8696 (version (package-version simgear))
8a3d0416
NG
8697 (source
8698 (origin
8699 (method url-fetch)
8700 (uri (string-append "mirror://sourceforge/flightgear/release-"
8701 (version-major+minor version) "/"
8702 "flightgear-" version ".tar.bz2"))
8703 (sha256
8704 (base32 "0ya3vb539kwi1qrifqhsj5j3k4w6s06hrllp2vdzxf6id7cgf0hc"))
8705 (modules '((guix build utils)))
8706 (snippet
8707 '(begin
8708 ;; There are some bundled libraries.
8709 (for-each delete-file-recursively
8710 '("3rdparty/sqlite3/"))
8711 #t))))
a84510f9
RW
8712 (build-system cmake-build-system)
8713 (arguments
8714 `(#:configure-flags
8715 (list "-DSYSTEM_SQLITE=ON"
8716 (string-append "-DFG_DATA_DIR="
8717 (assoc-ref %outputs "out")
8718 "/share/flightgear"))
8719 ;; TODO: test cannot be run because the "run_test_suite" executable
8720 ;; does not seem to be built.
8721 #:tests? #f
8722 #:phases
8723 (modify-phases %standard-phases
8724 (add-after 'install 'wrap-executable
8725 (lambda* (#:key inputs outputs #:allow-other-keys)
8726 (let ((out (assoc-ref outputs "out")))
8727 (wrap-program (string-append out "/bin/fgfs")
8728 `("QT_PLUGIN_PATH" ":" prefix
8729 ,(map (lambda (label)
8730 (string-append (assoc-ref inputs label)
8731 "/lib/qt5/plugins"))
8732 '("qtbase" "qtdeclarative" "qtsvg")))
8733 `("QML2_IMPORT_PATH" ":" prefix
8734 ,(map (lambda (label)
8735 (string-append (assoc-ref inputs label)
8736 "/lib/qt5/qml"))
8737 '("qtdeclarative" "qtsvg"))))
8738 #t)))
8739 (add-after 'install 'install-data
8740 (lambda* (#:key inputs outputs #:allow-other-keys)
8741 (let ((share (string-append (assoc-ref outputs "out") "/share/flightgear")))
8742 (mkdir-p share)
8743 (with-directory-excursion share
8744 (invoke "tar" "xf" (assoc-ref inputs "flightgear-data")
8745 "--strip-components=1")))
8746 #t)))))
8747 (inputs
8748 `(("boost" ,boost-for-mysql) ; same as simgear
8749 ("dbus" ,dbus)
8750 ("eudev" ,eudev)
8751 ("freeglut" ,freeglut)
8752 ("freetype" ,freetype)
8753 ("glew" ,glew)
8754 ("libpng" ,libpng)
8755 ("openal" ,openal)
8756 ("openscenegraph" ,openscenegraph-3.4)
8757 ("plib" ,plib)
8758 ("qtbase" ,qtbase)
8759 ("qtdeclarative" ,qtdeclarative)
8760 ("qtsvg" ,qtsvg)
8761 ("simgear" ,simgear)
8762 ("speexdsp" ,speexdsp)
8763 ("sqlite" ,sqlite)
8764 ("zlib" ,zlib)))
8765 (native-inputs
8766 `(("cppunit" ,cppunit)
8767 ("pkg-config" ,pkg-config)
8768 ("qttools" ,qttools)
8769 ("flightgear-data"
8770 ,(origin
8771 (method url-fetch)
8772 (uri (string-append "mirror://sourceforge/flightgear/release-"
8773 (version-major+minor version) "/"
8774 "FlightGear-" version "-data.tar.bz2"))
8775 (sha256
8776 (base32
8a3d0416 8777 "04fv9za5zlyxlyfh6jx78y42l3jazvzl9dq2y6rzxqlcc9g5swhk"))))))
a84510f9
RW
8778 (home-page "https://home.flightgear.org/")
8779 (synopsis "Flight simulator")
8780 (description "The goal of the FlightGear project is to create a
8781sophisticated flight simulator framework for use in research or academic
8782environments, pilot training, as an industry engineering tool, for DIY-ers to
8783pursue their favorite interesting flight simulation idea, and last but
8784certainly not least as a fun, realistic, and challenging desktop flight
8785simulator.")
8786 (license license:gpl2+)))
e8a0696d
NG
8787
8788(define-public jumpnbump
8789 (package
8790 (name "jumpnbump")
60d2aaa5 8791 (version "1.61")
e8a0696d
NG
8792 (source (origin
8793 (method git-fetch)
8794 (uri (git-reference
8795 (url "https://gitlab.com/LibreGames/jumpnbump.git")
8796 (commit version)))
8797 (file-name (git-file-name name version))
8798 (sha256
8799 (base32
60d2aaa5 8800 "12lwl5sl5n009nb83r8l4lakb9286csqdf1ynpmwwydy17giqsdp"))))
e8a0696d
NG
8801 (build-system gnu-build-system)
8802 (arguments
8803 `(#:make-flags
8804 (list "CC=gcc"
8805 (string-append "PREFIX=" (assoc-ref %outputs "out")))
8806 #:tests? #f ;no test
8807 #:phases
8808 (modify-phases %standard-phases
8809 (delete 'configure) ;no configure script
8810 (add-after 'unpack 'fix-sdl-path
8811 ;; XXX: For some reason, `sdl2-config' reports stand-alone SDL
8812 ;; directory, not SDL-union provided as an input to the package.
8813 ;; We force the latter with "--prefix=" option.
8814 (lambda* (#:key inputs #:allow-other-keys)
8815 (substitute* "Makefile"
8816 (("sdl2-config" command)
8817 (string-append command " --prefix=" (assoc-ref inputs "sdl"))))
8818 #t)))))
8819 (inputs
8820 `(("bzip2" ,bzip2)
8821 ("sdl" ,(sdl-union (list sdl2 sdl2-mixer sdl2-net)))
8822 ("zlib" ,zlib)))
8823 (native-inputs
8824 `(("gettext" ,gettext-minimal))) ;for msgfmt
8825 (home-page "https://gitlab.com/LibreGames/jumpnbump")
8826 (synopsis "Multiplayer platform game with bunnies")
8827 (description "You, as a bunny, have to jump on your opponents to make them
8828explode. It is a true multiplayer game; you cannot play this alone. You can
8829play with up to four players simultaneously. It has network support.")
8830 (license license:gpl2+)))
a3d4a631
NG
8831
8832(define-public hedgewars
8833 (package
8834 (name "hedgewars")
ea042113 8835 (version "1.0.0")
a3d4a631
NG
8836 (source (origin
8837 (method url-fetch)
8838 (uri (string-append "https://www.hedgewars.org/download/releases/"
8839 "hedgewars-src-" version ".tar.bz2"))
8840 (sha256
8841 (base32
ea042113 8842 "0nqm9w02m0xkndlsj6ys3wr0ik8zc14zgilq7k6fwjrf3zk385i1"))))
a3d4a631
NG
8843 (build-system cmake-build-system)
8844 (arguments
8845 ;; XXX: Engine is built as Pascal source code, requiring Free Pascal
8846 ;; Compiler, which we haven't packaged yet. With the flag below, we use
8847 ;; a Pascal to C translator and Clang instead.
f14e808a
TS
8848 `(#:configure-flags (list "-DBUILD_ENGINE_C=ON"
8849 "-Dhaskell_flags=-dynamic;-fPIC")
a3d4a631
NG
8850 #:phases
8851 (modify-phases %standard-phases
a3d4a631 8852 (replace 'check
0fc715f9
TL
8853 (lambda _ (invoke "ctest")))
8854 (add-after 'install 'install-icon
8855 (lambda _
8856 ;; Install icon for the desktop file.
8857 (let* ((out (assoc-ref %outputs "out"))
8858 (icons (string-append out "/share/icons/hicolor/512x512/apps")))
8859 (with-directory-excursion (string-append "../hedgewars-src-" ,version)
8860 (install-file "misc/hedgewars.png" icons)))
8861 #t)))))
a3d4a631
NG
8862 (inputs
8863 `(("ffmpeg" ,ffmpeg)
8864 ("freeglut" ,freeglut)
8865 ("ghc-entropy" ,ghc-entropy)
8866 ("ghc-hslogger" ,ghc-hslogger)
8867 ("ghc-network" ,ghc-network)
8868 ("ghc-random" ,ghc-random)
8869 ("ghc-regex-tdfa" ,ghc-regex-tdfa)
8870 ("ghc-sandi" ,ghc-sandi)
8871 ("ghc-sha" ,ghc-sha)
8872 ("ghc-utf8-string" ,ghc-utf8-string)
8873 ("ghc-vector" ,ghc-vector)
8874 ("ghc-zlib" ,ghc-zlib)
8875 ("glew" ,glew)
8876 ("libpng" ,libpng)
8877 ("lua" ,lua-5.1)
8878 ("physfs" ,physfs)
8879 ("qtbase" ,qtbase)
8880 ("sdl" ,(sdl-union
8881 (list sdl2 sdl2-mixer sdl2-net sdl2-ttf sdl2-image)))))
8882 (native-inputs
8883 `(("clang" ,clang)
8884 ("ghc" ,ghc)
8885 ("pkg-config" ,pkg-config)
8886 ("qttools" ,qttools)))
8887 (home-page "https://hedgewars.org/")
8888 (synopsis "Turn-based artillery game featuring fighting hedgehogs")
8889 (description
8890 "Hedgewars is a turn based strategy, artillery, action and comedy game,
8891featuring the antics of pink hedgehogs with attitude as they battle from the
8892depths of hell to the depths of space.
8893
8894As commander, it's your job to assemble your crack team of hedgehog soldiers
8895and bring the war to your enemy.")
8896 ;; Software as a whole is licensed under GPL-2 terms. Artwork and
8897 ;; scripts are distributed under various terms.
8898 (license (list license:gpl2
8899 license:bsd-2 license:bsd-3 license:cc-by3.0 license:cc0
8900 license:expat license:fdl1.3+ license:public-domain
8901 license:zlib))))
1bba3e8c
JL
8902
8903(define-public harmonist
8904 (package
8905 (name "harmonist")
9f5cb517 8906 (version "0.3.0")
1bba3e8c
JL
8907 (source (origin
8908 (method git-fetch)
8909 (uri (git-reference
8910 (url "https://git.tuxfamily.org/harmonist/harmonist.git")
8911 (commit (string-append "v" version))))
8912 (file-name (git-file-name name version))
8913 (sha256
8914 (base32
9f5cb517 8915 "146wiyanag0zqj6fhyll2sw6sydnnll8mgxhhqf9sjqsl2rx4s5r"))))
1bba3e8c
JL
8916 (build-system go-build-system)
8917 (arguments
8918 '(#:import-path "git.tuxfamily.org/harmonist/harmonist"))
8919 (inputs
8920 `(("go-github.com-nsf-termbox-go" ,go-github.com-nsf-termbox-go)))
8921 (home-page "https://harmonist.tuxfamily.org/")
8922 (synopsis "Stealth coffee-break roguelike game")
8923 (description "Harmonist: Dayoriah Clan Infiltration is a stealth
8924coffee-break roguelike game. The game has a heavy focus on tactical
8925positioning, light and noise mechanisms, making use of various terrain types
8926and cones of view for monsters. Aiming for a replayable streamlined experience,
8927the game avoids complex inventory management and character building, relying
8928on items and player adaptability for character progression.")
8929 (license license:isc)))
e93352d6 8930
453365bc
JL
8931(define-public harmonist-tk
8932 (package
8933 (inherit harmonist)
8934 (name "harmonist-tk")
8935 (arguments
8936 (append
8937 (package-arguments harmonist)
8938 `(#:phases
8939 (modify-phases %standard-phases
8940 (replace 'build
8941 (lambda _
8942 (invoke "go" "install" "-v" "-x" "--tags" "tk"
8943 "git.tuxfamily.org/harmonist/harmonist")))
8944 (replace 'check
8945 (lambda _
8946 (invoke "go" "test" "--tags" "tk"
8947 "git.tuxfamily.org/harmonist/harmonist")))))))
8948 (inputs
8949 `(("go-github.com-nsf-gothic" ,go-github.com-nsf-gothic)))))
8950
e93352d6
NG
8951(define-public drascula
8952 (package
8953 (name "drascula")
8954 (version "1.0")
8955 (source (origin
8956 (method url-fetch)
8957 (uri (string-append "mirror://sourceforge/scummvm/extras/"
8958 "Drascula_%20The%20Vampire%20Strikes%20Back/"
8959 "drascula-" version ".zip"))
8960 (sha256
8961 (base32
8962 "1pj29rpb754sn6a56f8brfv6f2m1p5qgaqik7d68pfi2bb5zccdp"))))
8963 (build-system trivial-build-system)
8964 (arguments
8965 `(#:modules ((guix build utils))
8966 #:builder
8967 (begin
8968 (use-modules (guix build utils)
8969 (ice-9 match))
8970 (let* ((out (assoc-ref %outputs "out"))
8971 (share (string-append out "/share/drascula"))
8972 (scummvm (assoc-ref %build-inputs "scummvm")))
8973 ;; Install data.
8974 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
8975 "/bin/unzip"))
8976 (doc (string-append out "/share/doc/" ,name "-" ,version)))
8977 (for-each
8978 (lambda (input)
8979 (invoke unzip
8980 "-j"
8981 (assoc-ref %build-inputs input)
8982 "-x" "__MACOSX")
8983 ;; Every input provides "readme.txt", and we want to
8984 ;; preserve them all. Therefore we rename them first.
8985 (match input
8986 ("drascula-int"
8987 (rename-file "readme.txt" "readme-international.txt"))
8988 ("drascula-audio"
8989 (rename-file "readme.txt" "readme-audio.txt"))
8990 (_ #f))
8991 ;; Install documentation.
8992 (for-each (lambda (f) (install-file f doc))
8993 (find-files "." "\\.(txt|doc)$"))
8994 ;; Install data.
8995 (for-each (lambda (f) (install-file f share))
8996 (find-files "." "\\.(ogg|00[0-9])$")))
8997 '("drascula-audio" "drascula-int" "source")))
8998 ;; Create standalone executable.
8999 (let* ((bin (string-append out "/bin"))
9000 (executable (string-append bin "/drascula"))
9001 (bash (string-append (assoc-ref %build-inputs "bash")
9002 "/bin/bash")))
9003 (mkdir-p bin)
9004 (with-output-to-file executable
9005 (lambda ()
9006 (format #t "#!~a~%" bash)
9007 (format #t
9008 "exec ~a/bin/scummvm --path=~a drascula~%"
9009 scummvm share)))
9010 (chmod executable #o755))
9011 ;; Create desktop file. There is no dedicated icon for the
9012 ;; game, so we borrow SCUMMVM's.
9013 (let ((apps (string-append out "/share/applications")))
9014 (mkdir-p apps)
47f4df15
PN
9015 (make-desktop-entry-file
9016 (string-append apps "/drascula.desktop")
9017 #:name "Drascula: The Vampire Strikes Back"
9018 #:generic-name "Drascula"
9019 #:exec (string-append out "/bin/drascula")
9020 #:icon (string-append scummvm "/share/icons/hicolor/scalable/apps/scummvm.svg")
9021 #:categories '("AdventureGame" "Game" "RolePlaying")
9022 #:keywords '("game" "adventure" "roleplaying" "2D" "fantasy")
9023 #:comment '((#f "Classic 2D point and click adventure game")
9024 ("de" "Klassisches 2D-Abenteuerspiel in Zeigen-und-Klicken-Manier")
9025 ("fr" "Jeu classique d'aventure pointer-et-cliquer en 2D")
9026 ("it" "Gioco classico di avventura punta e clicca 2D"))))
e93352d6
NG
9027 #t))))
9028 (native-inputs
9029 `(("bash" ,bash)
9030 ("unzip" ,unzip)))
9031 (inputs
9032 `(("scummvm" ,scummvm)
9033 ("drascula-int"
9034 ,(let ((version "1.1"))
9035 (origin
9036 (method url-fetch)
9037 (uri (string-append "mirror://sourceforge/scummvm/extras/"
9038 "Drascula_%20The%20Vampire%20Strikes%20Back/"
9039 "drascula-int-" version ".zip"))
9040 (sha256
9041 (base32
9042 "12236i7blamal92p1i8dgp3nhp2yicics4whsl63v682bj999n14")))))
9043 ("drascula-audio"
9044 ,(let ((version "2.0"))
9045 (origin
9046 (method url-fetch)
9047 (uri (string-append "mirror://sourceforge/scummvm/extras/"
9048 "Drascula_%20The%20Vampire%20Strikes%20Back/"
9049 "drascula-audio-" version ".zip"))
9050 (sha256
9051 (base32
9052 "00g4izmsqzxb8ry1vhfx6jrygl58lvlij09nw01ds4zddsiznsky")))))))
9053 (home-page "https://www.scummvm.org")
9054 (synopsis "Classic 2D point and click adventure game")
9055 (description "Drascula: The Vampire Strikes Back is a classic humorous 2D
9056point and click adventure game.
9057
9058In Drascula you play the role of John Hacker, a British estate agent, that
9059gets to meet a gorgeous blond girl who is kidnapped by the notorious vampire
9060Count Drascula and embark on a fun yet dangerous quest to rescue her.
9061Unfortunately, Hacker is not aware of Drascula's real ambitions: DOMINATING
9062the World and demonstrating that he is even more evil than his brother Vlad.")
9063 ;; Drascula uses a BSD-like license.
9064 (license (license:non-copyleft "file:///readme.txt"))))
08c2fb8f 9065
e7db97db
NG
9066(define (make-lure-package name language hash)
9067 (package
9068 (name name)
9069 (version "1.1")
9070 (source
9071 (origin
9072 (method url-fetch)
9073 (uri (string-append
9074 "mirror://sourceforge/scummvm/extras/"
9075 "Lure%20of%20the%20Temptress/"
9076 name "-" version ".zip"))
9077 (sha256
9078 (base32 hash))))
9079 (build-system trivial-build-system)
9080 (arguments
9081 `(#:modules ((guix build utils))
9082 #:builder
9083 (begin
9084 (use-modules (guix build utils))
9085 (let* ((out (assoc-ref %outputs "out"))
9086 (share (string-append out "/share"))
eca528cc 9087 (data (string-append share "/" ,name "/" ,language))
e7db97db
NG
9088 (apps (string-append share "/applications"))
9089 (bin (string-append out "/bin"))
9090 (executable (string-append bin "/" ,name))
9091 (scummvm (assoc-ref %build-inputs "scummvm")))
9092 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
9093 "/bin/unzip")))
9094 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
eca528cc 9095 (let ((doc (string-append share "/doc/" ,name "-" ,version)))
e7db97db
NG
9096 (for-each (lambda (f) (install-file f doc))
9097 (find-files "." "\\.(txt|PDF|pdf)$")))
9098 (for-each (lambda (f) (install-file f data))
9099 (find-files "." "\\.(vga|VGA)$"))
9100 ;; Build the executable.
9101 (mkdir-p bin)
9102 (let ((bash (assoc-ref %build-inputs "bash")))
9103 (with-output-to-file executable
9104 (lambda ()
9105 (format #t "#!~a/bin/bash~%" bash)
9106 (format #t "exec ~a/bin/scummvm -q ~a -p ~a lure~%"
9107 scummvm ,language data))))
9108 (chmod executable #o755)
9109 ;; Create desktop file. There is no dedicated
9110 ;; icon for the game, so we borrow SCUMMVM's.
9111 (mkdir-p apps)
9112 (with-output-to-file (string-append apps "/" ,name ".desktop")
9113 (lambda _
9114 (format #t
9115 "[Desktop Entry]~@
9116 Name=Lure of the Temptress~@
9117 GenericName=Lure~@
9118 Exec=~a~@
9119 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
9120 Categories=AdventureGame;Game;RolePlaying;~@
9121 Keywords=game;adventure;roleplaying;2D,fantasy;~@
9122 Comment=Classic 2D point and click adventure game~@
9123 Comment[de]=klassisches 2D-Abenteuerspiel in Zeigen-und-Klicken-Manier~@
9124 Comment[fr]=Jeu classique d'aventure pointer-et-cliquer en 2D~@
9125 Comment[it]=Gioco classico di avventura punta e clicca 2D~@
9126 Type=Application~%"
9127 executable scummvm)))
9128 #t))))
9129 (native-inputs
eca528cc 9130 `(("unzip" ,unzip)))
e7db97db 9131 (inputs
eca528cc
NG
9132 `(("bash" ,bash)
9133 ("scummvm" ,scummvm)))
e7db97db
NG
9134 (home-page "https://www.scummvm.org")
9135 (synopsis "2D point and click fantasy adventure game")
9136 (description
9137 "Lure of the Temptress is a classic 2D point and click adventure game.
9138
9139You are Diermot, an unwilling hero who'd prefer a quiet life, and are, to all
9140intents and purposes, a good man. After decades of unrest the King has united
9141the warring factions in his kingdom and all his lands are at peace, except
9142a remote region around a town called Turnvale. A revolt has recently taken
9143place in Turnvale, a revolt orchestrated by an apprentice sorceress called
9144Selena, the titular temptress. The king calls together his finest horsemen
9145and heads off (with you in tow) to Turnvale just to witness how hellish
9146mercenary monsters called Skorl are invading the town.
9147
9148The king's men are defeated, the king is killed and you fall of your horse and
9149bang your head heavily on the ground. You have been *unconscious for a while
9150when you realize that you are in a dingy cell guarded by a not so friendly
9151Skorl. Maybe it would be an idea to try and escape...")
9152 (license (license:non-copyleft "file:///README"))))
9153
9154(define-public lure
9155 (make-lure-package
9156 "lure" "en" "0201i70qcs1m797kvxjx3ygkhg6kcl5yf49sihba2ga8l52q45zk"))
9157
9158(define-public lure-de
9159 (make-lure-package
9160 "lure-de" "de" "0sqq7h5llml6rv85x0bfv4bgzwhs4c82p4w4zmfcaab6cjlad0sy"))
9161
9162(define-public lure-es
9163 (make-lure-package
9164 "lure-es" "es" "1dvv5znvlsakw6w5r16calv9jkgw27aymgybsf4q22lcmpxbj1lk"))
9165
9166(define-public lure-fr
9167 (make-lure-package
9168 "lure-fr" "fr" "1y51jjb7f8023832g44vd1jsb6ni85586pi2n5hjg9qjk6gi90r9"))
9169
9170(define-public lure-it
9171 (make-lure-package
9172 "lure-it" "it" "1ks6n39r1cllisrrh6pcr39swsdv7ng3gx5c47vaw71zzfr70hjj"))
9173
35cb2ac5
NG
9174(define (make-queen-package name file-prefix release language hash)
9175 (package
9176 (name name)
9177 (version release)
9178 (source
9179 (origin
9180 (method url-fetch)
9181 (uri (string-append "mirror://sourceforge/scummvm/extras/"
9182 "Flight%20of%20the%20Amazon%20Queen/"
9183 file-prefix release ".zip"))
9184 (sha256
9185 (base32 hash))))
9186 (build-system trivial-build-system)
9187 (arguments
9188 `(#:modules ((guix build utils))
9189 #:builder
9190 (begin
9191 (use-modules (guix build utils))
9192 (let* ((out (assoc-ref %outputs "out"))
9193 (share (string-append out "/share"))
9194 (data (string-append share "/" ,name))
9195 (apps (string-append share "/applications"))
9196 (bin (string-append out "/bin"))
9197 (executable (string-append bin "/" ,name))
9198 (scummvm (assoc-ref %build-inputs "scummvm")))
9199 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
9200 "/bin/unzip")))
9201 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
9202 (let ((doc (string-append share "/doc/" ,name "-" ,version)))
9203 (install-file "readme.txt" doc))
9204 (install-file "queen.1c" data)
9205 (mkdir-p bin)
9206 (let ((bash (assoc-ref %build-inputs "bash")))
9207 (with-output-to-file executable
9208 (lambda ()
9209 (format #t "#!~a/bin/bash~%" bash)
9210 (format #t "exec ~a/bin/scummvm -q fr -p ~a queen~%"
9211 scummvm data))))
9212 (chmod executable #o755)
9213 ;; Create desktop file. There is no dedicated
9214 ;; icon for the game, so we borrow SCUMMVM's.
9215 (mkdir-p apps)
9216 (with-output-to-file (string-append apps "/" ,name ".desktop")
9217 (lambda _
9218 (format #t
9219 "[Desktop Entry]~@
9220 Name=Flight of the Amazon Queen~@
9221 GenericName=Queen~@
9222 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~@
9223 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~@
9224 Type=Application~@
9225 Exec=~a~@
9226 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
9227 Categories=AdventureGame;Game;RolePlaying;~@
9228 Keywords=adventure;game;roleplaying;fantasy;~%"
9229 executable scummvm))))
9230 #t)))
9231 (native-inputs
9232 `(("unzip" ,unzip)))
9233 (inputs
9234 `(("bash" ,bash)
9235 ("scummvm" ,scummvm)))
9236 (home-page "https://www.scummvm.org/")
9237 (synopsis "Classic 2D point and click adventure game")
9238 (description "Flight of the Amazon Queen is a 2D point-and-click
9239adventure game set in the 1940s.
9240
9241You assume the role of Joe King, a pilot for hire who is given the job
9242of flying Faye Russell (a famous movie star) into the Amazon jungle
9243for a photo shoot. Of course, things never go according to plans.
9244After an unfortunate turn of events they find themselves stranded in
9245the heart of the Amazon jungle, where Joe will embark on a quest to
9246rescue a kidnapped princess and in the process, discover the true
9247sinister intentions of a suspiciously located Lederhosen company. In
9248a rich 2D environment, Joe will cross paths with a variety of unlikely
9249jungle inhabitants including, but not limited to, a tribe of Amazon
9250women and 6-foot-tall pygmies.")
9251 (license (license:non-copyleft "file:///readme.txt"))))
9252
9253(define-public queen
9254 (make-queen-package
9255 "queen" "FOTAQ_Talkie-" "1.1" "en"
9256 "1a6q71q1dl9vvw2qqsxk5h1sv0gaqy6236zr5905w2is01gdsp52"))
9257
9258(define-public queen-de
9259 (make-queen-package
9260 "queen-de" "FOTAQ_Ger_talkie-" "1.0" "de"
9261 "13vn43x7214vyprlpqabvv71k890nff3d6fjscflr1ll7acjca3f"))
9262
9263(define-public queen-fr
9264 (make-queen-package
9265 "queen-fr" "FOTAQ_Fr_Talkie_" "1.0" "fr"
9266 "0hq5g4qrkcwm2kn5i4kv4hijs9hi7bw9xl1vrwd1l69qqn30crwy"))
9267
9268(define-public queen-it
9269 (make-queen-package
9270 "queen-it" "FOTAQ_It_Talkie_" "1.0" "it"
9271 "1h76y70lrpzfjkm53n4nr364nhyka54vbz9r7sadzyzl7c7ilv4d"))
9272
403d9fae
NG
9273(define-public sky
9274 (package
9275 (name "sky")
9276 (version "1.2") ;1.3 is floppy version
9277 (source
9278 (origin
9279 (method url-fetch)
9280 (uri (string-append "mirror://sourceforge/scummvm/extras/"
9281 "Beneath%20a%20Steel%20Sky/"
9282 "bass-cd-" version ".zip"))
9283 (sha256
9284 (base32 "14s5jz67kavm8l15gfm5xb7pbpn8azrv460mlxzzvdpa02a9n82k"))))
9285 (build-system trivial-build-system)
9286 (arguments
9287 `(#:modules ((guix build utils))
9288 #:builder
9289 (begin
9290 (use-modules (guix build utils))
9291 (let* ((out (assoc-ref %outputs "out"))
9292 (share (string-append out "/share"))
9293 (data (string-append share "/" ,name))
9294 (apps (string-append share "/applications"))
9295 (bin (string-append out "/bin"))
9296 (executable (string-append bin "/" ,name))
9297 (scummvm (assoc-ref %build-inputs "scummvm")))
9298 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
9299 "/bin/unzip")))
9300 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
9301 (let ((doc (string-append share "/doc/bass-" ,version)))
9302 (install-file "readme.txt" doc))
9303 (for-each (lambda (f) (install-file f data))
9304 (find-files "." "^sky\\."))
9305 ;; Build the executable.
9306 (mkdir-p bin)
9307 (let ((bash (assoc-ref %build-inputs "bash")))
9308 (with-output-to-file executable
9309 (lambda ()
9310 (format #t "#!~a/bin/bash~%" bash)
9311 (format #t "exec ~a/bin/scummvm -p ~a sky~%" scummvm data))))
9312 (chmod executable #o755)
9313 ;; Create desktop file. There is no dedicated
9314 ;; icon for the game, so we borrow SCUMMVM's.
9315 (mkdir-p apps)
9316 (with-output-to-file (string-append apps "/" ,name ".desktop")
9317 (lambda _
9318 (format #t
9319 "[Desktop Entry]~@
9320 Name=Beneath a Steel Sky~@
9321 GenericName=Bass~@
9322 Exec=~a~@
9323 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
9324 Categories=AdventureGame;Game;RolePlaying;~@
9325 Keywords=adventure;game;roleplaying;cyberpunk;~@
9326 Comment=A science-fiction adventure game set in a bleak post-apocalyptic vision of the future~@
9327 Comment[de]=Ein Science-Fiction-Abenteuerspiel \
9328angesiedelt in einer düsteren, postapokalyptischen Vision der Zukunft~@
9329 Type=Application~%"
9330 executable scummvm)))
9331 #t))))
9332 (native-inputs
9333 `(("unzip" ,unzip)))
9334 (inputs
9335 `(("bash" ,bash)
9336 ("scummvm" ,scummvm)))
9337 (home-page "https://www.scummvm.org/")
9338 (synopsis "Classic 2D point an click science-fiction adventure game")
9339 (description
9340 "Beneath a Steel Sky is a science-fiction thriller set in a bleak
9341post-apocalyptic vision of the future. It revolves around Union City,
9342where selfishness, rivalry, and corruption by its citizens seems to be
9343all too common, those who can afford it live underground, away from
9344the pollution and social problems which are plaguing the city.
9345
9346You take on the role of Robert Foster, an outcast of sorts from the
9347city since a boy who was raised in a remote environment outside of
9348Union City simply termed ``the gap''. Robert's mother took him away
9349from Union City as a child on their way to ``Hobart'' but the
9350helicopter crashed on its way. Unfortunately, Robert's mother died,
9351but he survived and was left to be raised by a local tribe from the
9352gap.
9353
9354Years later, Union City security drops by and abducts Robert, killing
9355his tribe in the process; upon reaching the city the helicopter taking
9356him there crashes with him escaping, high upon a tower block in the
9357middle of the city. He sets out to discover the truth about his past,
9358and to seek vengeance for the killing of his tribe.")
9359 (license (license:non-copyleft "file:///readme.txt"))))
9360
08c2fb8f
JG
9361(define-public gnurobots
9362 (package
9363 (name "gnurobots")
9364 (version "1.2.0")
9365 (source
9366 (origin
9367 (method url-fetch)
9368 (uri (string-append "mirror://gnu/gnurobots/gnurobots-"
9369 version ".tar.gz"))
9370 (sha256
9371 (base32
9372 "07gi3lsmbzzsjambgixj6xy79lh22km84z7bnzgwzxdy806lyvwb"))))
9373 (build-system gnu-build-system)
9374 (inputs
9375 `(("glib" ,glib)
9376 ("gtk+" ,gtk+-2)
9377 ("vte" ,vte/gtk+-2)
9378 ("readline" ,readline)
9379 ("guile" ,guile-1.8)))
9380 (native-inputs
9381 `(("pkg-config" ,pkg-config)))
9382 (arguments
9383 `(#:make-flags
9384 (list
9385 ;; Do not abort build on "deprecated-declarations" warnings.
9386 "CFLAGS=-Wno-error=deprecated-declarations"
9387 ;; Find readline headers in sub-directory.
9388 (string-append "READLINE_CFLAGS=-I"
9389 (assoc-ref %build-inputs "readline")
9390 "/include/readline/"))
9391 #:phases
9392 (modify-phases %standard-phases
9393 (add-after 'install 'install-doc
9394 (lambda* (#:key outputs #:allow-other-keys)
9395 (install-file "doc/Robots-HOWTO"
9396 (string-append (assoc-ref outputs "out")
9397 "/share/doc/gnurobots-"
9398 ,version))
9399 #t)))))
9400 (home-page "https://www.gnu.org/software/gnurobots/")
9401 (synopsis "Program a little robot and watch it explore a world")
9402 (description
9403 "GNU Robots is a game in which you program a robot to explore a world
9404full of enemies that can hurt it, obstacles and food to be eaten. The goal of
9405the game is to stay alive and collect prizes. The robot program conveniently
9406may be written in a plain text file in the Scheme programming language.")
9407 (license license:gpl3+)))
3745909d
NG
9408
9409(define-public ri-li
9410 (package
9411 (name "ri-li")
9412 (version "2.0.1")
9413 (source (origin
9414 (method url-fetch)
9415 (uri (string-append "mirror://sourceforge/ri-li/"
9416 "Ri-li%20Linux_Unix/Ri-li%20V" version "/"
9417 "Ri-li-" version ".tar.bz2"))
9418 (sha256
9419 (base32
9420 "1gcdsgnnbbn1mb1hkpwniv3fhkaj1nn8gq33v5c16q3wqchcq77p"))
9421 ;; Taken from
9422 ;; <https://github.com/NixOS/nixpkgs/blob/master/pkgs/games/rili/moderinze_cpp.patch>.
9423 ;; It doesn't build otherwise.
9424 (patches (search-patches "ri-li-modernize_cpp.patch"))))
9425 (build-system gnu-build-system)
9426 (arguments
9427 `(#:phases
9428 (modify-phases %standard-phases
9429 ;; Remove "gentoo" subdirectory from Makefile, as it is
9430 ;; missing a make file and generates a build failure.
9431 (add-after 'configure 'fix-build
9432 (lambda _
9433 (substitute* "Makefile"
9434 ((" gentoo") ""))
9435 #t))
9436 (add-after 'install 'install-desktop-file
9437 (lambda* (#:key outputs #:allow-other-keys)
9438 (let* ((out (assoc-ref outputs "out"))
9439 (apps (string-append out "/share/applications"))
9440 (pixmaps (string-append out "/share/pixmaps")))
9441 (for-each (lambda (f) (install-file f pixmaps))
9442 (find-files "data" "\\.(png|ico)$"))
9443 (mkdir-p apps)
9444 (with-output-to-file (string-append apps "/ri-li.desktop")
9445 (lambda _
9446 (format #t
9447 "[Desktop Entry]~@
9448 Name=Ri-li~@
9449 Exec=~a/bin/Ri_li~@
9450 Icon=~a/Ri-li-icon-32x32.png~@
9451 Categories=Game;ArcadeGame;~@
9452 Keywords=toy;train;wooden;snake-like;engine;~@
9453 Comment=a toy simulator game~@
9454 Comment[de]=Ein Spiel mit einem kleinen Zug~@
9455 Comment[fr]=un jeu de petit train~@
9456 Comment[ro_RO]=un joc cu un tren de jucărie~@
9457 Terminal=false~@
9458 Type=Application~%"
9459 out pixmaps))))
9460 #t))
9461 (add-after 'install-desktop-file 'remove-spurious-files
9462 ;; Delete redundant files already installed somewhere else.
9463 (lambda* (#:key outputs #:allow-other-keys)
9464 (let ((out (assoc-ref outputs "out")))
9465 (for-each delete-file
9466 (find-files (string-append out "/share/Ri-li")
9467 "\\.(png|ico)|COPYING"))
9468 #t))))))
9469 (inputs
9470 `(("sdl" ,(sdl-union (list sdl sdl-mixer)))))
9471 (home-page "http://www.ri-li.org")
9472 (synopsis "Toy train simulation game")
9473 (description "Ri-li is a game in which you drive a wooden toy
9474steam locomotive across many levels and collect all the coaches to
9475win.")
9476 ;; The project is dual-licensed GPL2+ and GPL3+.
9477 (license (list license:gpl2+ license:gpl3+))))
562a2a40
JG
9478
9479(define-public freeorion
9480 (package
9481 (name "freeorion")
0a00d157 9482 (version "0.4.10")
562a2a40
JG
9483 (source
9484 (origin
f6fdbb05
TGR
9485 (method url-fetch)
9486 (uri (string-append "https://github.com/freeorion/freeorion/releases/"
9487 "download/v" version "/FreeOrion_v" version
0a00d157 9488 "_2020-07-10.f3d403e_Source.tar.gz"))
562a2a40 9489 (sha256
0a00d157 9490 (base32 "12xspixrkx6mmmsdqjha0hg02r4y73pk229l0wjq9s0yp8nb8ap7"))
562a2a40
JG
9491 (modules '((guix build utils)))
9492 (snippet
9493 '(begin
9494 ;; There are some bundled fonts.
9495 (for-each delete-file-recursively '("default/data/fonts"))
9496 #t))))
9497 (build-system cmake-build-system)
9498 (arguments
9499 '(#:tests? #f ;no test
9500 #:phases
9501 (modify-phases %standard-phases
9502 (add-after 'unpack 'unbundle-fonts
9503 (lambda* (#:key inputs #:allow-other-keys)
9504 (let ((roboto-dir (string-append (assoc-ref inputs "font-roboto")
9505 "/share/fonts/truetype/")))
9506 (substitute* "UI/ClientUI.cpp"
7658904a 9507 (("\\(GetRootDataDir.*?Roboto-(Bold|Regular)\\.ttf\"\\)\\.string\\(\\)\\);"
562a2a40 9508 all type)
7658904a 9509 (string-append "\"" roboto-dir "Roboto-" type ".ttf\");")))
562a2a40
JG
9510 #t))))))
9511 (inputs
0a00d157 9512 `(("boost" ,boost)
562a2a40
JG
9513 ("boost_signals" ,boost-signals2)
9514 ("font-dejavu" ,font-dejavu)
9515 ("font-roboto" ,font-google-roboto)
9516 ("freetype2" ,freetype)
9517 ("glew" ,glew)
9518 ("glu" ,glu)
9519 ("libogg" ,libogg)
9520 ("libpng" ,libpng)
9521 ("libvorbis" ,libvorbis)
9522 ("openal" ,openal)
0a00d157 9523 ("python" ,python)
562a2a40
JG
9524 ("sdl2" ,sdl2)
9525 ("zlib" ,zlib)))
9526 (home-page "https://www.freeorion.org/index.php/Main_Page")
9527 (synopsis "Turn-based space empire and galactic conquest computer game")
9528 (description
9529 "FreeOrion is a turn-based space empire and galactic conquest (4X)
9530computer game being designed and built by the FreeOrion project. Control an
9531empire with the goal of exploring the galaxy, expanding your territory,
9532exploiting the resources, and exterminating rival alien empires. FreeOrion is
9533inspired by the tradition of the Master of Orion games, but is not a clone or
9534remake of that series or any other game.")
9535 ;; Source code is released under gpl2. Artwork, music and sounds, and
9536 ;; in-game text are released under cc-by-sa3.0. Game content scripts are
9537 ;; released under both gpl2 and cc-by-sa3.0. Bundled Gigi library is
9538 ;; released under lgpl2.1+.
9539 (license (list license:gpl2 license:cc-by-sa3.0 license:lgpl2.1+))))
fbfc07bd
GLV
9540
9541(define-public leela-zero
9542 (package
9543 (name "leela-zero")
9544 (version "0.17")
9545 (source
9546 (origin
9547 (method git-fetch)
9548 (uri (git-reference
b0e7b699 9549 (url "https://github.com/leela-zero/leela-zero")
fbfc07bd
GLV
9550 (commit (string-append "v" version))))
9551 (file-name (git-file-name name version))
9552 (sha256
9553 (base32
9554 "17px5iny8mql5c01bymcli7zfssswkzvb2i8gnsmjcck6i2n8srl"))
9555 (patches (search-patches "leela-zero-gtest.patch"))))
9556 (build-system cmake-build-system)
9557 (native-inputs
9558 `(("googletest" ,googletest)))
9559 (inputs
9560 `(("boost" ,boost)
9561 ("ocl-icd" ,ocl-icd)
9562 ("openblas" ,openblas)
9563 ("opencl-headers" ,opencl-headers)
9564 ("qtbase" ,qtbase)
9565 ("zlib" ,zlib)))
9566 (arguments
9567 '(#:configure-flags '("-DUSE_BLAS=YES")
9568 #:phases (modify-phases %standard-phases
9569 (add-before 'configure 'fix-tests
9570 (lambda* (#:key outputs #:allow-other-keys)
9571 (let ((home (getcwd)))
9572 (setenv "HOME" home)
9573 (substitute* "src/tests/gtests.cpp"
9574 (("\\.\\./src/tests/0k\\.txt")
9575 (string-append home "/src/tests/0k.txt"))
9576 (("cfg_gtp_mode = true;")
9577 "cfg_gtp_mode = true; cfg_cpu_only = true;")))
9578 #t))
9579 (replace 'check
9580 (lambda _
9581 (invoke "./tests"))))))
9582 (home-page "https://github.com/leela-zero/leela-zero")
9583 (synopsis "Program playing the game of Go")
9584 (description
9585 "Leela-zero is a Go engine with no human-provided knowledge, modeled after
9586the AlphaGo Zero paper. The current best network weights file for the engine
9587can be downloaded from @url{https://zero.sjeng.org/best-network}.")
9588 (license license:gpl3+)))
66977719
GLV
9589
9590(define-public q5go
9591 (package
9592 (name "q5go")
9593 (version "1.0")
9594 (source (origin
9595 (method git-fetch)
9596 (uri (git-reference
b0e7b699 9597 (url "https://github.com/bernds/q5Go")
66977719
GLV
9598 (commit (string-append "q5go-" version))))
9599 (file-name (git-file-name name version))
9600 (sha256
9601 (base32
9602 "1gdlfqcqkqv7vph3qwq78d0qz6dhmdsranxq9bmixiisbzkqby31"))))
9603 (build-system gnu-build-system)
9604 (native-inputs
9605 `(("pkg-config" ,pkg-config)))
9606 (inputs
9607 `(("qtbase" ,qtbase)
9608 ("qtmultimedia" ,qtmultimedia)
9609 ("qtsvg" ,qtsvg)))
9610 (arguments
9611 '(#:phases
9612 (modify-phases %standard-phases
9613 (add-after 'unpack 'fix-configure-script
9614 (lambda _
9615 ;; Bypass the unavailable qtchooser program.
9616 (substitute* "configure"
9617 (("test -z \"QTCHOOSER\"")
9618 "false")
9619 (("qtchooser -run-tool=(.*) -qt=qt5" _ command)
9620 command))
9621 #t))
9622 (add-after 'unpack 'fix-paths
9623 (lambda _
9624 (substitute* '("src/pics/Makefile.in"
9625 "src/translations/Makefile.in")
9626 (("\\$\\(datadir\\)/qGo/")
9627 "$(datadir)/q5go/"))
9628 #t))
9629 (add-after 'install 'install-desktop-file
9630 (lambda* (#:key outputs #:allow-other-keys)
9631 (let* ((out (assoc-ref outputs "out"))
9632 (apps (string-append out "/share/applications"))
9633 (pics (string-append out "/share/q5go/pics")))
9634 (delete-file-recursively (string-append out "/share/applnk"))
9635 (delete-file-recursively (string-append out "/share/mimelnk"))
9636 (install-file "../source/src/pics/Bowl.ico" pics)
9637 (mkdir-p apps)
9638 (with-output-to-file (string-append apps "/q5go.desktop")
9639 (lambda _
9640 (format #t
9641 "[Desktop Entry]~@
9642 Name=q5go~@
9643 Exec=~a/bin/q5go~@
9644 Icon=~a/Bowl.ico~@
9645 Categories=Game;~@
9646 Comment=Game of Go~@
9647 Comment[de]=Spiel des Go~@
9648 Comment[eo]=Goo~@
9649 Comment[es]=Juego de Go~@
9650 Comment[fr]=Jeu de Go~@
9651 Comment[ja]=囲碁~@
9652 Comment[ko]=바둑~@
9653 Comment[zh]=围棋~@
9654 Terminal=false~@
9655 Type=Application~%"
9656 out pics))))
9657 #t)))))
9658 (synopsis "Qt GUI to play the game of Go")
9659 (description
9660 "This a tool for Go players which performs the following functions:
9661@itemize
9662@item SGF editor,
9663@item Analysis frontend for Leela Zero (or compatible engines),
9664@item GTP interface (to play against an engine),
9665@item IGS client (to play on the internet),
9666@item Export games to a variety of formats.
9667@end itemize")
9668 (home-page "https://github.com/bernds/q5Go")
9669 (license license:gpl2+)))
3c1c5622
HG
9670
9671(define-public ktuberling
9672 (package
9673 (name "ktuberling")
9674 (version "19.08.3")
9675 (source
9676 (origin
9677 (method url-fetch)
9678 (uri (string-append "mirror://kde/stable/applications/" version
9679 "/src/ktuberling-" version ".tar.xz"))
9680 (sha256
9681 (base32 "1qdf4q6wjh1lnlqw5c8z4rpj9w5vbyjfri1dah6yjm3mwppbc12j"))))
3c1c5622
HG
9682 (build-system qt-build-system)
9683 (native-inputs
9684 `(("extra-cmake-modules" ,extra-cmake-modules)
9685 ("perl" ,perl)))
9686 (inputs
9687 `(("kcompletion" ,kcompletion)
9688 ("kconfigwidgets" ,kconfigwidgets)
9689 ("kcoreaddons" ,kcoreaddons)
9690 ("kcrash" ,kcrash)
9691 ("kdbusaddons" ,kdbusaddons)
9692 ("kdelibs4support" ,kdelibs4support)
9693 ("ki18n" ,ki18n)
9694 ("kwidgetsaddons" ,kwidgetsaddons)
9695 ("kxmlgui" ,kxmlgui)
9696 ("libkdegames" ,libkdegames)
9697 ("qtbase" ,qtbase)
9698 ("qtmultimedia" ,qtmultimedia)
9699 ("qtdeclarative" ,qtdeclarative)
9700 ("qtsvg" ,qtsvg)))
9701 (home-page "https://games.kde.org/")
9702 (synopsis "Stamp drawing toy")
9703 (description "KTuberling is a drawing toy intended for small children and
9704adults who remain young at heart. The game has no winner; the only purpose is
dd77434a 9705to make the funniest faces you can. Several activities are possible, e.g.:
3c1c5622
HG
9706
9707@itemize
9708@item Give the potato a funny face, clothes, and other goodies
9709@item Build a small town, complete with school, zoo, and fire department
9710@item Create a fantastic moonscape with spaceships and aliens
9711@item Top a pizza
9712@end itemize
9713
9714KTuberling can speak the name of each the object in several languages,
9715to assist in learning basic vocabulary.
9716
9717This package is part of the KDE games module.")
9718 (license (list license:gpl2+ license:fdl1.2+))))
f9913977
HG
9719
9720(define-public picmi
9721 (package
9722 (name "picmi")
9723 (version "19.08.3")
9724 (source
9725 (origin
9726 (method url-fetch)
9727 (uri (string-append "mirror://kde/stable/applications/" version
9728 "/src/picmi-" version ".tar.xz"))
9729 (sha256
9730 (base32 "0z9mpmv49w914gqdx274brdzl6d1bz9j9nkvbwgmr3iq1ba49m3f"))))
f9913977
HG
9731 (build-system qt-build-system)
9732 (native-inputs
9733 `(("extra-cmake-modules" ,extra-cmake-modules)
9734 ("kdoctools" ,kdoctools)))
9735 (inputs
9736 `(("kcoreaddons" ,kcoreaddons)
9737 ("kcrash" ,kcrash)
9738 ("kdbusaddons" ,kdbusaddons)
9739 ("kdeclarative" ,kdeclarative)
9740 ("ki18n" ,ki18n)
9741 ("kio" ,kio)
9742 ("knewstuff" ,knewstuff)
9743 ("kxmlgui" ,kxmlgui)
9744 ("libkdegames" ,libkdegames)
9745 ("qtbase" ,qtbase)
9746 ("qtdeclarative" ,qtdeclarative)
9747 ("qtsvg" ,qtsvg)))
9748 (home-page "https://games.kde.org/")
9749 (synopsis "Number logic game")
9750 (description "Picmi is a number logic game in which cells in a grid have
9751to be colored or left blank according to numbers given at the side of the
9752grid. The aim is to reveal a hidden picture.
9753
9754This package is part of the KDE games module.")
9755 (license (list license:gpl2+ license:fdl1.2+))))
e1b174eb
HG
9756
9757(define-public kolf
9758 (package
9759 (name "kolf")
9760 (version "19.08.3")
9761 (source
9762 (origin
9763 (method url-fetch)
9764 (uri (string-append "mirror://kde/stable/applications/" version
9765 "/src/kolf-" version ".tar.xz"))
9766 (sha256
9767 (base32 "06sfd0llr5cc3zf1vrpcxgw9bm009ky7y8822kynic9ipcd4z1hw"))))
e1b174eb
HG
9768 (build-system qt-build-system)
9769 (native-inputs
9770 `(("extra-cmake-modules" ,extra-cmake-modules)
9771 ("kdoctools" ,kdoctools)))
9772 (inputs
9773 `(("kcompletion" ,kcompletion)
9774 ("kconfigwidgets" ,kconfigwidgets)
9775 ("kcoreaddons" ,kcoreaddons)
9776 ("kcrash" ,kcrash)
9777 ("kdbusaddons" ,kdbusaddons)
9778 ("ki18n" ,ki18n)
9779 ("kio" ,kio)
9780 ("kwidgetsaddons" ,kwidgetsaddons)
9781 ("kxmlgui" ,kxmlgui)
9782 ("ktextwidgets" ,ktextwidgets)
9783 ("libkdegames" ,libkdegames)
9784 ("qtbase" ,qtbase)
9785 ("qtdeclarative" ,qtdeclarative)))
9786 (home-page "https://games.kde.org/")
9787 (synopsis "Miniature golf game")
9788 (description "Kolf is a miniature golf game for one to ten players. The
9789game is played from an overhead view, with a short bar representing the golf
9790club. Kolf features many different types of objects, such as water hazards,
9791slopes, sand traps, and black holes (warps), among others.
9792
9793Features are:
9794@itemize
9795@item Single and Multi-player (up to ten players) modes
9796@item High scores table
9797@item Dynamic courses
9798@item Third-party courses
9799@item Course editor
9800@end itemize
9801
9802This package is part of the KDE games module.")
9803 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
2582f582
HG
9804
9805(define-public libkmahjongg
9806 (package
9807 (name "libkmahjongg")
9808 (version "19.08.3")
9809 (source
9810 (origin
9811 (method url-fetch)
9812 (uri (string-append "mirror://kde/stable/applications/"
9813 version "/src/libkmahjongg-" version ".tar.xz"))
9814 (sha256
9815 (base32 "0rdimk11hrc8qrmiv26z0ddjzi1k6806c0rfskx4cwmildmh6zgx"))))
9816 (build-system qt-build-system)
9817 (native-inputs
9818 `(("extra-cmake-modules" ,extra-cmake-modules)))
9819 (inputs
9820 `(("kauth" ,kauth)
9821 ("kcompletion" ,kcompletion)
9822 ;("kconfig" ,kconfig)
9823 ("kcodecs" ,kcodecs)
9824 ("kconfigwidgets" ,kconfigwidgets)
9825 ("kcoreaddons" ,kcoreaddons)
9826 ("ki18n" ,ki18n)
9827 ("kwidgetsaddons" ,kwidgetsaddons)
9828 ("qtbase" ,qtbase)
9829 ("qtsvg" ,qtsvg)))
9830 (home-page "https://games.kde.org/")
9831 (synopsis "Shared library for kmahjongg and kshisen")
9832 (description "Shared library and common files for kmahjongg, kshisen and
9833other Mah Jongg like games.")
9834 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
c57e31fb
HG
9835
9836(define-public kmahjongg
9837 (package
9838 (name "kmahjongg")
9839 (version "19.08.3")
9840 (source
9841 (origin
9842 (method url-fetch)
9843 (uri (string-append "mirror://kde/stable/applications/"
9844 version "/src/kmahjongg-" version ".tar.xz"))
9845 (sha256
9846 (base32 "08na845h0nhmfrszdmvfq5y1dy7kgbrlzjp0f5snvbbf7w44ci6p"))))
c57e31fb
HG
9847 (build-system qt-build-system)
9848 (native-inputs
9849 `(("extra-cmake-modules" ,extra-cmake-modules)
9850 ("kdoctools" ,kdoctools)))
9851 (inputs
9852 `(("kcompletion" ,kcompletion)
9853 ("kcrash" ,kcrash)
9854 ("kdbusaddons" ,kdbusaddons)
9855 ("kdeclarative" ,kdeclarative)
9856 ("ki18n" ,ki18n)
9857 ("knewstuff" ,knewstuff)
9858 ("kxmlgui" ,kxmlgui)
9859 ("libkdegames" ,libkdegames)
9860 ("libkmahjongg" ,libkmahjongg)
9861 ("qtbase" ,qtbase)
9862 ("qtdeclarative" ,qtdeclarative)
9863 ("qtsvg" ,qtsvg)))
9864 (home-page "https://games.kde.org/")
9865 (synopsis "Tile laying patience")
9866 (description "In KMahjongg the tiles are scrambled and staked on top of
9867each other to resemble a certain shape. The player is then expected to remove
9868all the tiles off the game board by locating each tile's matching pair.
9869
9870A variety of tile layouts are included, as well as an editor to create new
9871layouts.
9872
9873This package is part of the KDE games module.")
9874 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
110b738b
HG
9875
9876(define-public kshisen
9877 (package
9878 (name "kshisen")
9879 (version "19.08.3")
9880 (source
9881 (origin
9882 (method url-fetch)
9883 (uri (string-append "mirror://kde/stable/applications/"
9884 version "/src/kshisen-" version ".tar.xz"))
9885 (sha256
9886 (base32 "1bq5m48af4h5apfp3bfsp76nlpv6h5sc0gd544zv7cgpfznz1sds"))))
110b738b
HG
9887 (build-system qt-build-system)
9888 (native-inputs
9889 `(("extra-cmake-modules" ,extra-cmake-modules)
9890 ;("perl" ,perl)
9891 ;("pkg-config" ,pkg-config)
9892 ("kdoctools" ,kdoctools)))
9893 (inputs
9894 `(("kauth" ,kauth)
9895 ("kcompletion" ,kcompletion)
9896 ("kconfigwidgets" ,kconfigwidgets)
9897 ("kcoreaddons" ,kcoreaddons)
9898 ("kcrash" ,kcrash)
9899 ("kdbusaddons" ,kdbusaddons)
9900 ("ki18n" ,ki18n)
9901 ("kxmlgui" ,kxmlgui)
9902 ("libkdegames" ,libkdegames)
9903 ("libkmahjongg" ,libkmahjongg)
9904 ("qtbase" ,qtbase)
9905 ("qtdeclarative" ,qtdeclarative)))
9906 (home-page "https://games.kde.org/")
9907 (synopsis "Shisen-Sho solitaire game")
9908 (description "KShisen is a solitaire-like game played using the standard
9909set of Mahjong tiles. Unlike Mahjong however, KShisen has only one layer of
9910scrambled tiles
9911
9912This package is part of the KDE games module.")
9913 (license license:gpl2+)))
321bd0c3
HG
9914
9915(define-public kajongg
9916 (package
9917 (name "kajongg")
9918 (version "19.08.3")
9919 (source
9920 (origin
9921 (method url-fetch)
9922 (uri (string-append "mirror://kde/stable/applications/"
9923 version "/src/kajongg-" version ".tar.xz"))
9924 (sha256
9925 (base32 "0ql6p5zifdpdf65r7ki9ml123azpwwk9x3x8r9ij6xhjnf7p7x6w"))))
321bd0c3
HG
9926 (build-system qt-build-system)
9927 (native-inputs
9928 `(("extra-cmake-modules" ,extra-cmake-modules)
9929 ;("perl" ,perl)
9930 ("kdoctools" ,kdoctools)))
9931 (inputs
9932 `(("kconfig" ,kconfig)
9933 ("kconfigwidgets" ,kconfigwidgets)
9934 ("kcoreaddons" ,kcoreaddons)
9935 ("ki18n" ,ki18n)
9936 ("libkmahjongg" ,libkmahjongg)
9937 ("python" ,python)
9938 ("qtbase" ,qtbase)
9939 ("qtsvg" ,qtsvg)))
9940 (propagated-inputs
9941 `(("python-twisted" ,python-twisted)
9942 ("python-pyqt" ,python-pyqt)))
9943 ;; FIXME: Need to wrap PYTHONPATH
9944 (home-page "https://games.kde.org/")
9945 (synopsis "Classical Mah Jongg game for 4 players")
9946 (description "Kajongg is the ancient Chinese board game for 4 players.
9947
9948If you are looking for the Mah Jongg solitaire please use the application
9949kmahjongg.
9950
9951Kajongg can be used in two different ways: Scoring a manual game where you
9952play as always and use Kajongg for the computation of scores and for
9953bookkeeping. Or you can use Kajongg to play against any combination of other
9954human players or computer players.
9955
9956This package is part of the KDE games module.")
9957 (license (list license:gpl2+ license:fdl1.2+))))
f4195446
HG
9958
9959(define-public kbreakout
9960 (package
9961 (name "kbreakout")
9962 (version "19.08.3")
9963 (source
9964 (origin
9965 (method url-fetch)
9966 (uri (string-append "mirror://kde/stable/applications/" version
9967 "/src/kbreakout-" version ".tar.xz"))
9968 (sha256
9969 (base32 "0gwzx1z9mxrjlcjzglg8cxkyd6900whcar3b5j9laxxarc6xhj8w"))))
f4195446
HG
9970 (build-system qt-build-system)
9971 (native-inputs
9972 `(("extra-cmake-modules" ,extra-cmake-modules)
9973 ("kdoctools" ,kdoctools)))
9974 (inputs
9975 `(("kcompletion" ,kcompletion)
9976 ("kconfig" ,kconfig)
9977 ("kconfigwidgets" ,kconfigwidgets)
9978 ("kcoreaddons" ,kcoreaddons)
9979 ("kcrash" ,kcrash)
9980 ("kdbusaddons" ,kdbusaddons)
9981 ("ki18n" ,ki18n)
9982 ("kwidgetsaddons" ,kwidgetsaddons)
9983 ("kxmlgui" ,kxmlgui)
9984 ("libkdegames" ,libkdegames)
9985 ("qtbase" ,qtbase)
9986 ("qtdeclarative" ,qtdeclarative)))
9987 (home-page "https://games.kde.org/")
9988 (synopsis "Breakout like game")
9989 (description "KBreakout is similar to the classics breakout and xboing,
9990featuring a number of added graphical enhancements and effects. You control a
9991paddle at the bottom of the playing-field, and must destroy bricks at the top
9992by bouncing balls against them.
9993
9994This package is part of the KDE games module.")
9995 (license (list license:gpl2+ license:fdl1.2+))))
df3d90c7
HG
9996
9997(define-public kmines
9998 (package
9999 (name "kmines")
10000 (version "19.08.3")
10001 (source
10002 (origin
10003 (method url-fetch)
10004 (uri (string-append "mirror://kde/stable/applications/" version
10005 "/src/kmines-" version ".tar.xz"))
10006 (sha256
10007 (base32 "0ac3za36lh8hpx6mqfic9amwmzhzhzplm9hg3pw12gxl5a9mvfsf"))))
df3d90c7
HG
10008 (build-system qt-build-system)
10009 (native-inputs
10010 `(("extra-cmake-modules" ,extra-cmake-modules)
10011 ("kdoctools" ,kdoctools)))
10012 (inputs
10013 `(("kcompletion" ,kcompletion)
10014 ("kconfig" ,kconfig)
10015 ("kconfigwidgets" ,kconfigwidgets)
10016 ("kcoreaddons" ,kcoreaddons)
10017 ("kcrash" ,kcrash)
10018 ("kdbusaddons" ,kdbusaddons)
10019 ("ki18n" ,ki18n)
10020 ("ktextwidgets" ,ktextwidgets)
10021 ("kwidgetsaddons" ,kwidgetsaddons)
10022 ("kxmlgui" ,kxmlgui)
10023 ("libkdegames" ,libkdegames)
10024 ("qtbase" ,qtbase)
10025 ("qtdeclarative" ,qtdeclarative)))
10026 (home-page "https://games.kde.org/")
10027 (synopsis "Classical mine sweeper game")
10028 (description "KMines is a classic Minesweeper game. The idea is to
10029uncover all the squares without blowing up any mines. When a mine is blown
10030up, the game is over.
10031
10032This package is part of the KDE games module.")
10033 (license (list license:gpl2+ license:fdl1.2+))))
72b69fa9
HG
10034
10035(define-public konquest
10036 (package
10037 (name "konquest")
10038 (version "19.08.3")
10039 (source
10040 (origin
10041 (method url-fetch)
10042 (uri (string-append "mirror://kde/stable/applications/"
10043 version "/src/konquest-" version ".tar.xz"))
10044 (sha256
10045 (base32 "02gjxskhi10a1sqh3skcild8zria7wncz1a4sbz7ax1p851q76k1"))))
72b69fa9
HG
10046 (build-system qt-build-system)
10047 (native-inputs
10048 `(("extra-cmake-modules" ,extra-cmake-modules)
10049 ("kdoctools" ,kdoctools)))
10050 (inputs
10051 `(("kcompletion" ,kcompletion)
10052 ("kconfig" ,kconfig)
10053 ("kcoreaddons" ,kcoreaddons)
10054 ("kcrash" ,kcrash)
10055 ("kdbusaddons" ,kdbusaddons)
10056 ("kguiaddons" ,kguiaddons)
10057 ("ki18n" ,ki18n)
10058 ("kwidgetsaddons" ,kwidgetsaddons)
10059 ("kxmlgui" ,kxmlgui)
10060 ("libkdegames" ,libkdegames)
10061 ("qtbase" ,qtbase)
10062 ("qtdeclarative" ,qtdeclarative)
10063 ("qtsvg" ,qtsvg)))
10064 (home-page "https://games.kde.org/")
10065 (synopsis "Simple turn-based strategy game")
10066 (description "Konquest is the KDE version of Gnu-Lactic Konquest. Players
10067conquer other planets by sending ships to them. The goal is to build an
10068interstellar empire and ultimately conquer all other player's planets. The
10069game can be played with up to nine empires, commanded either by the computer
10070or by puny earthlings.
10071
10072This package is part of the KDE games module.")
10073 (license (list license:gpl2+ license:fdl1.2+))))
d980ddb8
HG
10074
10075(define-public kbounce
10076 (package
10077 (name "kbounce")
10078 (version "19.08.3")
10079 (source
10080 (origin
10081 (method url-fetch)
10082 (uri (string-append "mirror://kde/stable/applications/"
10083 version "/src/kbounce-" version ".tar.xz"))
10084 (sha256
10085 (base32 "02rfv0qzz5cmyfx8f56a45hbm9gsp6m3dcy8ajwx88rw5wpbrr11"))))
d980ddb8
HG
10086 (build-system qt-build-system)
10087 (native-inputs
10088 `(("extra-cmake-modules" ,extra-cmake-modules)
10089 ("kdoctools" ,kdoctools)))
10090 (inputs
10091 `(("kcompletion" ,kcompletion)
10092 ("kconfigwidgets" ,kconfigwidgets)
10093 ("kcoreaddons" ,kcoreaddons)
10094 ("kcrash" ,kcrash)
10095 ("kdbusaddons" ,kdbusaddons)
10096 ("ki18n" ,ki18n)
10097 ("kio" ,kio)
10098 ("kwidgetsaddons" ,kwidgetsaddons)
10099 ("kxmlgui" ,kxmlgui)
10100 ("libkdegames" ,libkdegames)
10101 ("qtbase" ,qtbase)
10102 ("qtdeclarative" ,qtdeclarative)
10103 ("qtsvg" ,qtsvg)))
10104 (home-page "https://games.kde.org/")
10105 (synopsis "Jezzball arcade game")
10106 (description "KBounce is a single player arcade game with the elements of
10107puzzle. It is played on a field, surrounded by wall, with two or more balls
10108bouncing around within the walls. The object of the game is to build new
10109walls to decrease the size of the active field.
10110
10111This package is part of the KDE games module.")
10112 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
d685f860
HG
10113
10114(define-public kblocks
10115 (package
10116 (name "kblocks")
10117 (version "19.08.3")
10118 (source
10119 (origin
10120 (method url-fetch)
10121 (uri (string-append "mirror://kde/stable/applications/"
10122 version "/src/kblocks-" version ".tar.xz"))
10123 (sha256
10124 (base32 "0qrm0dihzhkxsq9l49ndzms802x6jn92vvabb2zf2q9z593m69cx"))))
d685f860
HG
10125 (build-system qt-build-system)
10126 (native-inputs
10127 `(("extra-cmake-modules" ,extra-cmake-modules)
10128 ("kdoctools" ,kdoctools)))
10129 (inputs
10130 `(("kcompletion" ,kcompletion)
10131 ("kconfig" ,kconfig)
10132 ("kconfigwidgets" ,kconfigwidgets)
10133 ("kcoreaddons" ,kcoreaddons)
10134 ("kcrash" ,kcrash)
10135 ("kdbusaddons" ,kdbusaddons)
10136 ("ki18n" ,ki18n)
10137 ("kwidgetsaddons" ,kwidgetsaddons)
10138 ("kxmlgui" ,kxmlgui)
10139 ("libkdegames" ,libkdegames)
10140 ("qtbase" ,qtbase)
10141 ("qtdeclarative" ,qtdeclarative)
10142 ("qtsvg" ,qtsvg)))
10143 (home-page "https://games.kde.org/")
10144 (synopsis "Single player falling blocks puzzle game")
10145 (description "KBlocks is the classic Tetris-like falling blocks game.
10146
10147The idea is to stack the falling blocks to create horizontal lines without any
10148gaps. When a line is completed it is removed, and more space is available in
10149the play area. When there is not enough space for blocks to fall, the game is
10150over.
10151
10152This package is part of the KDE games module.")
10153 (license (list license:gpl2+ license:fdl1.2+))))
f6e9a6e2
HG
10154
10155(define-public ksudoku
10156 (package
10157 (name "ksudoku")
10158 (version "19.08.3")
10159 (source
10160 (origin
10161 (method url-fetch)
10162 (uri (string-append "mirror://kde/stable/applications/"
10163 version "/src/ksudoku-" version ".tar.xz"))
10164 (sha256
10165 (base32 "0rcscz91hilm7l3am5w02n0n8l7xhi4l0n4sskznh68kblw0ggw2"))))
f6e9a6e2
HG
10166 (build-system qt-build-system)
10167 (native-inputs
10168 `(("extra-cmake-modules" ,extra-cmake-modules)
10169 ("kdoctools" ,kdoctools)))
10170 (inputs
10171 `(("karchive", karchive)
10172 ("kconfig" ,kconfig)
10173 ("kconfigwidgets" ,kconfigwidgets)
10174 ("kcoreaddons" ,kcoreaddons)
10175 ("kcrash" ,kcrash)
10176 ("kguiaddons" ,kguiaddons)
10177 ("ki18n" ,ki18n)
10178 ("kiconthemes" ,kiconthemes)
10179 ("kio" ,kio)
10180 ("kwidgetsaddons" ,kwidgetsaddons)
10181 ("kxmlgui" ,kxmlgui)
10182 ("libkdegames" ,libkdegames)
10183 ("glu" ,glu)
10184 ("qtbase" ,qtbase)
10185 ("qtdeclarative" ,qtdeclarative)
10186 ("qtsvg" ,qtsvg)))
10187 (home-page "https://games.kde.org/")
10188 (synopsis "Sudoku puzzle game and solver")
10189 (description "KSudoku is a Sudoku game and solver, supporting a range of
101902D and 3D Sudoku variants. In addition to playing Sudoku, it can print Sudoku
10191puzzle sheets and find the solution to any Sudoku puzzle.
10192
10193The word Sudoku means \"single number in an allotted place\" in Japanese.
10194These are the basic rules: Every Sudoku is a square divided into 3x3
10195subsquares with 3x3 cells each.
10196
10197Some cells are filled with a number at the beginning. The remaining ones are
10198to be filled by the player using numbers from 1 to 9, without repeating a
10199number twice on each column, row or subsquare (each of them must contain only
10200one 1, one 2, one 3, and so on). The game requires logic and patience.
10201Solving takes usually 10 to 30 minutes, depending on puzzle level, your skill
10202and experience.
10203
10204The numerals in Sudoku puzzles are used for convenience (for example in 16x16
10205board we use letters): arithmetic relationships between numbers are
10206irrelevant.
10207
10208This program supports also 16x16 games with numbers from 1 to 16 and 256
10209cells with 16 cols, rows and subsquares!
10210
10211More information at http://en.wikipedia.org/wiki/Sudoku
10212
10213This package is part of the KDE games module.")
10214 (license (list license:gpl2+ license:fdl1.2+))))
ec9ce951
HG
10215
10216(define-public klines
10217 (package
10218 (name "klines")
10219 (version "19.08.3")
10220 (source
10221 (origin
10222 (method url-fetch)
10223 (uri (string-append "mirror://kde/stable/applications/" version
10224 "/src/klines-" version ".tar.xz"))
10225 (sha256
10226 (base32 "1g1f46jp0rb8gpqkgcf915ydpsscn1sxk3gjvm8bcqgx9ddq59xa"))))
ec9ce951
HG
10227 (build-system qt-build-system)
10228 (native-inputs
10229 `(("extra-cmake-modules" ,extra-cmake-modules)
10230 ("kdoctools" ,kdoctools)))
10231 (inputs
10232 `(("kcompletion" ,kcompletion)
10233 ("kconfigwidgets" ,kconfigwidgets)
10234 ("kcoreaddons" ,kcoreaddons)
10235 ("kcrash" ,kcrash)
10236 ("kdbusaddons" ,kdbusaddons)
10237 ("ki18n" ,ki18n)
10238 ("kwidgetsaddons" ,kwidgetsaddons)
10239 ("kxmlgui" ,kxmlgui)
10240 ("libkdegames" ,libkdegames)
10241 ("qtbase" ,qtbase)
10242 ("qtdeclarative" ,qtdeclarative)))
10243 (home-page "https://games.kde.org/")
10244 (synopsis "Place 5 equal pieces together, but wait, there are 3 new ones")
10245 (description "KLines is a simple but highly addictive one player game.
10246
10247The player has to move the colored balls around the game board, gathering them
10248into the lines of the same color by five. Once the line is complete it is
10249removed from the board, therefore freeing precious space. In the same time
10250the new balls keep arriving by three after each move, filling up the game
10251board.
10252
10253KLines is a single-player game where the player removes colored balls from the
10254board by arranging them into lines of five or more. However, every time the
10255player moves a ball, three more balls are added to the board.
10256
10257This package is part of the KDE games module.")
10258 (license (list license:gpl2+ license:fdl1.2+))))
5a0fc695
HG
10259
10260(define-public kgoldrunner
10261 (package
10262 (name "kgoldrunner")
10263 (version "19.08.3")
10264 (source
10265 (origin
10266 (method url-fetch)
10267 (uri (string-append "mirror://kde/stable/applications/" version "/src/kgoldrunner-"
10268 version ".tar.xz"))
10269 (sha256
10270 (base32 "16rcvq796r3asz4v4ap75xvwnxd3dd2nsq5r9vxvzl6rrf1w9bj4"))))
5a0fc695
HG
10271 (build-system qt-build-system)
10272 (native-inputs
10273 `(("extra-cmake-modules" ,extra-cmake-modules)
10274 ("kdoctools" ,kdoctools)))
10275 (inputs
10276 `(("kcompletion" ,kcompletion)
10277 ("kcoreaddons" ,kcoreaddons)
10278 ("kcrash" ,kcrash)
10279 ("kdbusaddons" ,kdbusaddons)
10280 ("ki18n" ,ki18n)
10281 ("kio" ,kio)
10282 ("kwidgetsaddons" ,kwidgetsaddons)
10283 ("kxmlgui" ,kxmlgui)
10284 ("libkdegames" ,libkdegames)
10285 ("qtbase" ,qtbase)
10286 ("qtdeclarative" ,qtdeclarative)))
10287 (home-page "https://games.kde.org/")
10288 (synopsis "Action and puzzle solving game")
10289 (description "KGoldrunner is an action game where the hero runs through a
10290maze, climbs stairs, dig holes and dodges enemies in order to collect all the
10291gold nuggets and escape to the next level. Your enemies are also after the
10292gold. Worse still, they are after you!.
10293
10294KGoldrunner is a fast-paced platform game where the player must navigate a
10295maze while collecting gold nuggets and avoiding enemies. A variety of level
10296packs are included, as well as an editor to create new levels.
10297
10298This package is part of the KDE games module.")
10299 (license (list license:gpl2+ license:fdl1.2+))))
4c5ef9ba
HG
10300
10301(define-public kdiamond
10302 (package
10303 (name "kdiamond")
10304 (version "19.08.3")
10305 (source
10306 (origin
10307 (method url-fetch)
10308 (uri (string-append "mirror://kde/stable/applications/" version
10309 "/src/kdiamond-" version ".tar.xz"))
10310 (sha256
10311 (base32 "1v5yb9hb26lk277zhw8d37ks829yfqr5anzx1qhms44gca5kqhva"))))
4c5ef9ba
HG
10312 (build-system qt-build-system)
10313 (native-inputs
10314 `(("extra-cmake-modules" ,extra-cmake-modules)
10315 ("kdoctools" ,kdoctools)))
10316 (inputs
10317 `(("kcompletion", kcompletion)
10318 ("kconfig" ,kconfig)
10319 ("kconfigwidgets" ,kconfigwidgets)
10320 ("kcoreaddons" ,kcoreaddons)
10321 ("kcrash" ,kcrash)
10322 ("kdbusaddons" ,kdbusaddons)
10323 ("ki18n" ,ki18n)
10324 ("knotifications" ,knotifications)
10325 ("knotifyconfig" ,knotifyconfig)
10326 ("kwidgetsaddons" ,kwidgetsaddons)
10327 ("kxmlgui" ,kxmlgui)
10328 ("libkdegames" ,libkdegames)
10329 ("qtbase" ,qtbase)
10330 ("qtdeclarative" ,qtdeclarative)))
10331 (home-page "https://games.kde.org/")
10332 (synopsis "Three-in-a-row game")
10333 (description "KDiamond is a three-in-a-row game like Bejeweled. It
10334features unlimited fun with randomly generated games and five difficulty
10335levels with varying number of diamond colors and board sizes.
10336
10337This package is part of the KDE games module.")
10338 (license (list license:gpl2+ license:fdl1.2+))))
601f29cd
HG
10339
10340(define-public kfourinline
10341 (package
10342 (name "kfourinline")
10343 (version "19.08.3")
10344 (source
10345 (origin
10346 (method url-fetch)
10347 (uri (string-append "mirror://kde/stable/applications/" version
10348 "/src/kfourinline-" version ".tar.xz"))
10349 (sha256
10350 (base32 "1vprs6dc1ccn3g6k594i9s94xy4b91vzlqjysyc6fqcq2fs54ny3"))))
601f29cd
HG
10351 (build-system qt-build-system)
10352 (native-inputs
10353 `(("extra-cmake-modules" ,extra-cmake-modules)
10354 ("kdoctools" ,kdoctools)))
10355 (inputs
10356 `(("kcompletion" ,kcompletion)
10357 ("kconfig" ,kconfig)
10358 ("kconfigwidgets" ,kconfigwidgets)
10359 ("kcoreaddons" ,kcoreaddons)
10360 ("kcrash" ,kcrash)
10361 ("kdelibs4support" ,kdelibs4support)
10362 ("kdnssd" ,kdnssd)
10363 ("ki18n" ,ki18n)
10364 ("kxmlgui" ,kxmlgui)
10365 ("libkdegames" ,libkdegames)
10366 ("qtbase" ,qtbase)
10367 ("qtdeclarative" ,qtdeclarative)
10368 ("qtsvg" ,qtsvg)))
10369 (home-page "https://games.kde.org/")
10370 (synopsis "Place 4 pieces in a row")
10371 (description "KFourInLine is a board game for two players based on the
10372Connect-Four game.
10373
10374KFourInLine is a game where two players take turns dropping pieces into a
10375grid, the winner being the first to place four pieces in a line.
10376
10377This package is part of the KDE games module.")
10378 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
cc1cca9f
HG
10379
10380(define-public kblackbox
10381 (package
10382 (name "kblackbox")
10383 (version "19.08.3")
10384 (source
10385 (origin
10386 (method url-fetch)
10387 (uri (string-append "mirror://kde/stable/applications/" version
10388 "/src/kblackbox-" version ".tar.xz"))
10389 (sha256
10390 (base32 "1x42sfpf75c6mavwkc7g7dm11y9s5dpj8igphly5kvm0pajqby0n"))))
cc1cca9f
HG
10391 (build-system qt-build-system)
10392 (native-inputs
10393 `(("extra-cmake-modules" ,extra-cmake-modules)
10394 ("kdoctools" ,kdoctools)))
10395 (inputs
10396 `(("karchive" ,karchive)
10397 ("kcompletion" ,kcompletion)
10398 ("kconfig" ,kconfig)
10399 ("kcoreaddons" ,kcoreaddons)
10400 ("kcrash" ,kcrash)
10401 ("kdbusaddons" ,kdbusaddons)
10402 ("ki18n" ,ki18n)
10403 ("ktextwidgets" ,ktextwidgets)
10404 ("kxmlgui" ,kxmlgui)
10405 ("libkdegames" ,libkdegames)
10406 ("qtbase" ,qtbase)
10407 ("qtdeclarative" ,qtdeclarative)
10408 ("qtsvg" ,qtsvg)))
10409 (home-page "https://games.kde.org/")
10410 (synopsis "Find atoms in a grid by shooting electrons")
10411 (description "KBlackbox is a game of hide and seek played on a grid of
10412boxes where the computer has hidden several balls. The position of the hidden
10413balls can be deduced by shooting beams into the box
10414
10415KBlackBox is a game of hide and seek played on an grid of boxes, where the
10416player shoots rays into the grid to deduce the positions of hidden objects.
10417
10418This package is part of the KDE games module.")
10419 (license (list license:gpl2+ license:fdl1.2+))))
d6973ec9
HG
10420
10421(define-public knetwalk
10422 (package
10423 (name "knetwalk")
10424 (version "19.08.3")
10425 (source
10426 (origin
10427 (method url-fetch)
10428 (uri (string-append "mirror://kde/stable/applications/" version
10429 "/src/knetwalk-" version ".tar.xz"))
10430 (sha256
10431 (base32 "1i340salzgqdw8y33wrrydmpgx3pvwf5wrbljlh67cjf6s4csx7d"))))
d6973ec9
HG
10432 (build-system qt-build-system)
10433 (native-inputs
10434 `(("extra-cmake-modules" ,extra-cmake-modules)
10435 ("kdoctools" ,kdoctools)))
10436 (inputs
10437 `(("kcompletion" ,kcompletion)
10438 ("kconfig" ,kconfig)
10439 ("kconfigwidgets" ,kconfigwidgets)
10440 ("kcoreaddons" ,kcoreaddons)
10441 ("kcrash" ,kcrash)
10442 ("kdbusaddons" ,kdbusaddons)
10443 ("ki18n" ,ki18n)
10444 ("ktextwidgets" ,ktextwidgets)
10445 ("kwidgetsaddons" ,kwidgetsaddons)
10446 ("kxmlgui" ,kxmlgui)
10447 ("libkdegames" ,libkdegames)
10448 ("qtbase" ,qtbase)
10449 ("qtdeclarative" ,qtdeclarative)))
10450 (home-page "https://games.kde.org/")
10451 (synopsis "Turn the board pieces to get all computers connected")
10452 (description "KNetWalk is a small game where you have to build up a
10453computer network by rotating the wires to connect the terminals to the server.
10454When the network is build, a highscore-list comes up where competitions can be
10455fought out.
10456
10457KNetwalk is a puzzle game where the player arranges sections of wire to
10458connect all the computers on the board.
10459
10460This package is part of the KDE games module.")
10461 (license (list license:gpl2+ license:fdl1.2+))))
69436285
HG
10462
10463(define-public bomber
10464 (package
10465 (name "bomber")
10466 (version "19.08.3")
10467 (source
10468 (origin
10469 (method url-fetch)
10470 (uri (string-append "mirror://kde/stable/applications/" version
10471 "/src/bomber-" version ".tar.xz"))
10472 (sha256
10473 (base32 "1lvzd0mzgq25akvwvkm57l3plm65k731v2i1ahakn985bb5gc3is"))))
69436285
HG
10474 (build-system qt-build-system)
10475 (native-inputs
10476 `(("extra-cmake-modules" ,extra-cmake-modules)
10477 ("kdoctools" ,kdoctools)))
10478 (inputs
10479 `(("kcompletiom" ,kcompletion)
10480 ("kconfig" ,kconfig)
10481 ("kcoreaddons" ,kcoreaddons)
10482 ("kcrash" ,kcrash)
10483 ("kdbusaddons" ,kdbusaddons)
10484 ("ki18n" ,ki18n)
10485 ("kxmlgui" ,kxmlgui)
10486 ("libkdegames" ,libkdegames)
10487 ("qtbase" ,qtbase)
10488 ("qtdeclarative" ,qtdeclarative)))
10489 (home-page "https://games.kde.org/")
10490 (synopsis "Arcade bombing game")
10491 (description "Bomber is a single player arcade game.
10492
10493The player is invading various cities in a plane that is decreasing in height.
10494The goal of the game is to destroy all the buildings and advance to the next
10495level. Each level gets a bit harder by increasing the speed of the plane and
10496the height of the buildings.
10497
10498Bomber is a game where you fly a spaceship and attempt to bomb the buildings
10499below you. Each pass the spaceship makes, it gets lower and lower. If you've
10500not destroyed a building in your path, you will crash into it.
10501
10502This package is part of the KDE games module.")
10503 (license (list license:gpl2+ license:fdl1.2+))))
4f0b3368
HG
10504
10505(define-public granatier
10506 (package
10507 (name "granatier")
10508 (version "19.08.3")
10509 (source
10510 (origin
10511 (method url-fetch)
10512 (uri (string-append "mirror://kde/stable/applications/" version
10513 "/src/granatier-" version ".tar.xz"))
10514 (sha256
10515 (base32 "141qmdinz7ikbbrs8dq6cap3nl22sl7pw62r80pf3xxwn2q4phpa"))))
4f0b3368
HG
10516 (build-system qt-build-system)
10517 (native-inputs
10518 `(("extra-cmake-modules" ,extra-cmake-modules)
10519 ("kdoctools" ,kdoctools)))
10520 (inputs
10521 `(("kcompletion" ,kcompletion)
10522 ("kconfig" ,kconfig)
10523 ("kconfigwidgets" ,kconfigwidgets)
10524 ("kcoreaddons" ,kcoreaddons)
10525 ("kcrash" ,kcrash)
10526 ("kdbusaddons" ,kdbusaddons)
10527 ("ki18n" ,ki18n)
10528 ("knewstuff" ,knewstuff)
10529 ("kwidgetsaddons" ,kwidgetsaddons)
10530 ("kxmlgui" ,kxmlgui)
10531 ("libkdegames" ,libkdegames)
10532 ("qtbase" ,qtbase)
10533 ("qtdeclarative" ,qtdeclarative)
10534 ("qtsvg" ,qtsvg)))
10535 (home-page "https://games.kde.org/")
10536 (synopsis "Bomberman clone")
10537 (description "Granatier is a clone of the classic Bomberman game,
10538inspired by the work of the Clanbomber clone.
10539
10540This package is part of the KDE games module.")
10541 (license (list license:gpl2+ license:fdl1.2+))))
584e07ee
HG
10542
10543(define-public ksirk
10544 (package
10545 (name "ksirk")
10546 (version "19.08.3")
10547 (source
10548 (origin
10549 (method url-fetch)
10550 (uri (string-append "mirror://kde/stable/applications/" version
10551 "/src/ksirk-" version ".tar.xz"))
10552 (sha256
10553 (base32 "1b1wixs2hp5qnvdygfwa3kvy0kn94ysa4ifmx90q6r3yfr2lpfca"))))
584e07ee
HG
10554 (build-system qt-build-system)
10555 (native-inputs
10556 `(("extra-cmake-modules" ,extra-cmake-modules)
10557 ("kdoctools" ,kdoctools)))
10558 (inputs
10559 `(("kcrash" ,kcrash)
10560 ("ki18n" ,ki18n)
10561 ("kiconthemes" ,kiconthemes)
10562 ("kio" ,kio)
10563 ("knewstuff" ,knewstuff)
10564 ("kwallet" ,kwallet)
10565 ("kxmlgui" ,kxmlgui)
10566 ("libkdegames" ,libkdegames)
10567 ("phonon" ,phonon)
10568 ("qca" ,qca)
10569 ("qtbase" ,qtbase)
10570 ("qtdeclarative" ,qtdeclarative)
10571 ("qtsvg" ,qtsvg)
10572 ("zlib" ,zlib)))
10573 (home-page "https://games.kde.org/")
10574 (synopsis "Computerized version of the well known strategy board game
10575'Risk'")
10576 (description "KsirK is a multi-player network-enabled game. The goal of
10577the game is simply to conquer the world by attacking your neighbors with your
10578armies.
10579
10580At the beginning of the game, countries are distributed to all the players.
10581Each country contains one army represented by an infantryman. Each player has
10582some armies to distribute to his countries. On each turn, each player can
10583attack his neighbours, eventually conquering one or more countries. At the
10584end of each turn, some bonus armies are distributed to the players in function
10585of the number of countries they own. The winner is the player that conquered
10586all the world.
10587
10588Features:
10589@itemize
10590@item Support for 1-6 human or computer players
10591@item Multi-player gaming over a network
10592@item You can easily create new skins with SVG graphics and the skin editor
10593@item Hot New Stuff support. You can easily download and install new skins
10594@end itemize
10595
10596This package is part of the KDE games module.")
10597 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
56064cd7
HG
10598
10599(define-public palapeli
10600 (package
10601 (name "palapeli")
10602 (version "19.08.3")
10603 (source
10604 (origin
10605 (method url-fetch)
10606 (uri (string-append "mirror://kde/stable/applications/" version
10607 "/src/palapeli-" version ".tar.xz"))
10608 (sha256
10609 (base32 "1g91ydbc0x2y2gn3lcb5w03mn7k78l5bq4cb1s59kx6yjbflv3pw"))))
56064cd7
HG
10610 (build-system qt-build-system)
10611 (native-inputs
10612 `(("extra-cmake-modules" ,extra-cmake-modules)
10613 ("kdoctools" ,kdoctools)))
10614 (inputs
10615 `(("karchive" ,karchive)
10616 ("kcompletion" ,kcompletion)
10617 ("kconfig" ,kconfig)
10618 ("kconfigwidgets" ,kconfigwidgets)
10619 ("kcoreaddons" ,kcoreaddons)
10620 ("kcrash" ,kcrash)
10621 ("kcrash" ,kcrash)
10622 ("ki18n" ,ki18n)
10623 ("ki18n" ,ki18n)
10624 ("kio" ,kio)
10625 ("kitemviews" ,kitemviews)
10626 ("knotifications" ,knotifications)
10627 ("kservice" ,kservice)
10628 ("kwidgetsaddons" ,kwidgetsaddons)
10629 ("kxmlgui" ,kxmlgui)
10630 ("libkdegames" ,libkdegames)
10631 ("qtbase" ,qtbase)
10632 ("qtdeclarative" ,qtdeclarative)
10633 ("qtsvg" ,qtsvg)
10634 ("shared-mime-info" ,shared-mime-info)))
10635 (home-page "https://games.kde.org/")
10636 (synopsis "Jigsaw puzzle game")
10637 (description "Palapeli is a jigsaw puzzle game. Unlike other games in
10638that genre, you are not limited to aligning pieces on imaginary grids. The
10639pieces are freely moveable. Also, Palapeli features real persistency, i.e.
10640everything you do is saved on your disk immediately.
10641
10642Palapeli is the Finnish word for jigsaw puzzle.
10643
10644This package is part of the KDE games module.")
10645 (license license:gpl2+)))
bf6bfdbe
HG
10646
10647(define-public kiriki
10648 (package
10649 (name "kiriki")
10650 (version "19.08.3")
10651 (source
10652 (origin
10653 (method url-fetch)
10654 (uri (string-append "mirror://kde/stable/applications/" version
10655 "/src/kiriki-" version ".tar.xz"))
10656 (sha256
10657 (base32 "1xg25dj95g81dc5l7k47am4j52abrwwfx4h73lvsbn4lc8lfmshw"))))
bf6bfdbe
HG
10658 (build-system qt-build-system)
10659 (native-inputs
10660 `(("extra-cmake-modules" ,extra-cmake-modules)
10661 ("kdoctools" ,kdoctools)))
10662 (inputs
10663 `(("kcompletion" ,kcompletion)
10664 ("kconfig" ,kconfig)
10665 ("kconfigwidgets" ,kconfigwidgets)
10666 ("kcoreaddons" ,kcoreaddons)
10667 ("kcrash" ,kcrash)
10668 ("kdbusaddons" ,kdbusaddons)
10669 ("ki18n" ,ki18n)
10670 ("kiconthemes" ,kiconthemes)
10671 ("kxmlgui" ,kxmlgui)
10672 ("libkdegames" ,libkdegames)
10673 ("qtbase" ,qtbase)
10674 ("qtdeclarative" ,qtdeclarative)))
10675 (home-page "https://games.kde.org/")
10676 (synopsis "Yahtzee dice game")
10677 (description "Kiriki is an addictive and fun dice game, designed to be
10678played by as many as six players.
10679
10680Participants have to collect points by rolling five dice for up to three times
10681per single turn to make combinations with the highest score.
10682
10683This package is part of the KDE games module.")
10684 (license (list license:gpl2+ license:fdl1.2+))))
f0b21b8d
HG
10685
10686(define-public kigo
10687 (package
10688 (name "kigo")
10689 (version "19.08.3")
10690 (source
10691 (origin
10692 (method url-fetch)
10693 (uri (string-append "mirror://kde/stable/applications/" version
10694 "/src/kigo-" version ".tar.xz"))
10695 (sha256
10696 (base32 "00l5gcbi8xyj9c1lngkrddka3a4m4cd78prfplrpq32ma9xq681f"))))
f0b21b8d
HG
10697 (build-system qt-build-system)
10698 (native-inputs
10699 `(("extra-cmake-modules" ,extra-cmake-modules)
10700 ("kdoctools" ,kdoctools)))
10701 (inputs
10702 `(("kconfig" ,kconfig)
10703 ("kconfigwidgets" ,kconfigwidgets)
10704 ("kcoreaddons" ,kcoreaddons)
10705 ("kcrash" ,kcrash)
10706 ("kdbusaddons" ,kdbusaddons)
10707 ("ki18n" ,ki18n)
10708 ("kio" ,kio)
10709 ("knewstuff", knewstuff)
10710 ("ktextwidgets" ,ktextwidgets)
10711 ("kxmlgui" ,kxmlgui)
10712 ("libkdegames" ,libkdegames)
10713 ("qtbase" ,qtbase)
10714 ("qtdeclarative" ,qtdeclarative)
10715 ("qtsvg" ,qtsvg)))
10716 (home-page "https://games.kde.org/")
10717 (synopsis "Go board game")
10718 (description "Kigo is an open-source implementation of the popular Go
10719game.
10720
10721Go is a strategic board game for two players. It is also known as
10722igo (Japanese), weiqi or wei ch'i (Chinese) or baduk (Korean). Go is noted
10723for being rich in strategic complexity despite its simple rules. The game is
10724played by two players who alternately place black and white stones (playing
10725pieces, now usually made of glass or plastic) on the vacant intersections of a
10726grid of 19x19 lines (9x9 or 13x13 for easier games).
10727
10728You also need to install a go engine, e.g. @code{gnugo}.
10729
10730This package is part of the KDE games module.")
10731 (license license:gpl3+)))
90e594d3
HG
10732
10733(define-public kubrick
10734 (package
10735 (name "kubrick")
10736 (version "19.08.3")
10737 (source
10738 (origin
10739 (method url-fetch)
10740 (uri (string-append "mirror://kde/stable/applications/" version
10741 "/src/kubrick-" version ".tar.xz"))
10742 (sha256
10743 (base32 "0ma8wja4rqlsmsr8cyicfpkwlgqva4450ls4c0ql53p0kabf04gx"))))
90e594d3
HG
10744 (build-system qt-build-system)
10745 (native-inputs
10746 `(("extra-cmake-modules" ,extra-cmake-modules)
10747 ("kdoctools" ,kdoctools)))
10748 (inputs
10749 `(("glu" ,glu)
10750 ("kconfig" ,kconfig)
10751 ("kconfigwidgets" ,kconfigwidgets)
10752 ("kcoreaddons" ,kcoreaddons)
10753 ("kcrash" ,kcrash)
10754 ("ki18n" ,ki18n)
10755 ("kio" ,kio)
10756 ("kwidgetsaddons" ,kwidgetsaddons)
10757 ("kxmlgui" ,kxmlgui)
10758 ("libkdegames" ,libkdegames)
10759 ("qtbase" ,qtbase)
10760 ("qtdeclarative" ,qtdeclarative)
10761 ("qtsvg" ,qtsvg)))
10762 (home-page "https://games.kde.org/")
10763 (synopsis "Game based on Rubik's Cube")
10764 (description "Kubrick is a game based on the Rubik's Cube puzzle.
10765
10766The cube sizes range from 2x2x2 up to 6x6x6, or you can play with irregular
10767\"bricks\" such as 5x3x2 or \"mats\" such as 6x4x1 or 2x2x1. The game has a
10768selection of puzzles at several levels of difficulty, as well as demos of
10769pretty patterns and solution moves, or you can make up your own puzzles. The
10770game has unlimited undo, redo, save and reload capabilities.
10771
10772This package is part of the KDE games module.")
10773 (license (list license:gpl2+ license:fdl1.2+))))
01e2f2ed
HG
10774
10775(define-public lskat
10776 (package
10777 (name "lskat")
10778 (version "19.08.3")
10779 (source
10780 (origin
10781 (method url-fetch)
10782 (uri (string-append "mirror://kde/stable/applications/" version
10783 "/src/lskat-" version ".tar.xz"))
10784 (sha256
10785 (base32 "1qk5hd27zb42pbcxq5wyzz62nj5f0qdmgy54r9rnk92pzzzk94s9"))))
01e2f2ed
HG
10786 (build-system qt-build-system)
10787 (native-inputs
10788 `(("extra-cmake-modules" ,extra-cmake-modules)
10789 ("kdoctools" ,kdoctools)))
10790 (inputs
10791 `(("kcompletion" ,kcompletion)
10792 ("kconfig" ,kconfig)
10793 ("kcoreaddons" ,kcoreaddons)
10794 ("kcrash" ,kcrash)
10795 ("kguiaddons" ,kguiaddons)
10796 ("ki18n" ,ki18n)
10797 ("kwidgetsaddons" ,kwidgetsaddons)
10798 ("kxmlgui" ,kxmlgui)
10799 ("libkdegames" ,libkdegames)
10800 ("qtbase" ,qtbase)
10801 ("qtdeclarative" ,qtdeclarative)
10802 ("qtsvg" ,qtsvg)))
10803 (home-page "https://games.kde.org/")
10804 (synopsis "Lieutnant Skat card game")
10805 (description "Lieutnant Skat (from German \"Offiziersskat\") is a fun and
10806engaging card game for two players, where the second player is either live
10807opponent, or a built in artificial intelligence.
10808
10809Lieutnant Skat is a simplified variant of the Skat card game for two players.
10810
10811This package is part of the KDE games module.")
10812 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
ed88e67d
HG
10813
10814(define-public kapman
10815 (package
10816 (name "kapman")
10817 (version "19.08.3")
10818 (source
10819 (origin
10820 (method url-fetch)
10821 (uri (string-append "mirror://kde/stable/applications/" version
10822 "/src/kapman-" version ".tar.xz"))
10823 (sha256
10824 (base32 "03pq38caam30q4bw14c045kayw2d87xq1yaa3s2jkrylylfq3p0f"))))
ed88e67d
HG
10825 (build-system qt-build-system)
10826 (native-inputs
10827 `(("extra-cmake-modules" ,extra-cmake-modules)
10828 ("kdoctools" ,kdoctools)))
10829 (inputs
10830 `(("kcompletion" ,kcompletion)
10831 ("kconfig" ,kconfig)
10832 ("kconfigwidgets" ,kconfigwidgets)
10833 ("kcoreaddons" ,kcoreaddons)
10834 ("kcrash" ,kcrash)
10835 ("kdbusaddons" ,kdbusaddons)
10836 ("ki18n" ,ki18n)
10837 ("kxmlgui" ,kxmlgui)
10838 ("libkdegames" ,libkdegames)
10839 ("qtbase" ,qtbase)
10840 ("qtdeclarative" ,qtdeclarative)
10841 ("qtsvg" ,qtsvg)))
10842 (home-page "https://games.kde.org/")
10843 (synopsis "Pac-Man clone")
10844 (description "Kapman is a clone of the well known game Pac-Man.
10845
10846You must run through the maze to eat all pills without being captured by a
10847ghost. By eating an energizer, Kapman gets the ability to eat ghosts for a
10848few seconds. When a stage is cleared of pills and energizer the player is
10849taken to the next stage with slightly increased game speed
10850
10851This package is part of the KDE games module.")
10852 (license (list license:gpl2+ license:fdl1.2+))))
fb05eed9
HG
10853
10854(define-public kspaceduel
10855 (package
10856 (name "kspaceduel")
10857 (version "19.08.3")
10858 (source
10859 (origin
10860 (method url-fetch)
10861 (uri (string-append "mirror://kde/stable/applications/" version
10862 "/src/kspaceduel-" version ".tar.xz"))
10863 (sha256
10864 (base32 "1hppni0ihs7psc0dly5rxyy2a38nzhlig9yfyhi3lkh36z05pql8"))))
fb05eed9
HG
10865 (build-system qt-build-system)
10866 (native-inputs
10867 `(("extra-cmake-modules" ,extra-cmake-modules)
10868 ("kdoctools" ,kdoctools)))
10869 (inputs
10870 `(("kcompletion" ,kcompletion)
10871 ("kconfig" ,kconfig)
10872 ("kconfigwidgets" ,kconfigwidgets)
10873 ("kcoreaddons" ,kcoreaddons)
10874 ("kcrash" ,kcrash)
10875 ("kdbusaddons" ,kdbusaddons)
10876 ("ki18n" ,ki18n)
10877 ("kxmlgui" ,kxmlgui)
10878 ("libkdegames" ,libkdegames)
10879 ("qtbase" ,qtbase)
10880 ("qtdeclarative" ,qtdeclarative)
10881 ("qtsvg" ,qtsvg)))
10882 (home-page "https://games.kde.org/")
10883 (synopsis "Two player game with shooting spaceships flying around a sun")
10884 (description "KSpaceduel is a space battle game for one or two players,
10885where two ships fly around a star in a struggle to be the only survivor.
10886
10887This package is part of the KDE games module.")
10888 (license (list license:gpl2+ license:fdl1.2+))))
37ea126d
HG
10889
10890(define-public bovo
10891 (package
10892 (name "bovo")
10893 (version "19.08.3")
10894 (source
10895 (origin
10896 (method url-fetch)
10897 (uri (string-append "mirror://kde/stable/applications/" version
10898 "/src/bovo-" version ".tar.xz"))
10899 (sha256
10900 (base32 "0dbpng0w52nahmx7brsll66zw23ql1g6pcvn2k4g2lnvxch0i59g"))))
37ea126d
HG
10901 (build-system qt-build-system)
10902 (native-inputs
10903 `(("extra-cmake-modules" ,extra-cmake-modules)
10904 ("kdoctools" ,kdoctools)))
10905 (inputs
10906 `(("kcompletion" ,kcompletion)
10907 ("kcoreaddons" ,kcoreaddons)
10908 ("kcrash" ,kcrash)
10909 ("kdbusaddons" ,kdbusaddons)
10910 ("ki18n" ,ki18n)
10911 ("kxmlgui" ,kxmlgui)
10912 ("libkdegames" ,libkdegames)
10913 ("qtbase" ,qtbase)
10914 ("qtdeclarative" ,qtdeclarative)
10915 ("qtsvg" ,qtsvg)))
10916 (home-page "https://games.kde.org/")
10917 (synopsis "Classic pen and paper game: five in a line")
10918 (description "Bovo is a Gomoku (from Japanese 五目並べ - lit. \"five
10919points\") like game for two players, where the opponents alternate in placing
10920their respective pictogram on the game board. The winner is the first to
10921complete a line of five markers. (Also known as: Connect Five, Five in a row,
10922X and O, Naughts and Crosses)
10923
10924This package is part of the KDE games module.")
10925 (license (list license:gpl2+ license:fdl1.2+))))
2fbf14e1
HG
10926
10927(define-public killbots
10928 (package
10929 (name "killbots")
10930 (version "19.08.3")
10931 (source
10932 (origin
10933 (method url-fetch)
10934 (uri (string-append "mirror://kde/stable/applications/" version
10935 "/src/killbots-" version ".tar.xz"))
10936 (sha256
10937 (base32 "1qi86q7diw7glkp9v33yim9nhz2da4balbxa1hjrdgjdv8zdbxbm"))))
2fbf14e1
HG
10938 (build-system qt-build-system)
10939 (native-inputs
10940 `(("extra-cmake-modules" ,extra-cmake-modules)
10941 ("kdoctools" ,kdoctools)))
10942 (inputs
10943 `(("kcompletion" ,kcompletion)
10944 ("kconfig" ,kconfig)
10945 ("kconfigwidgets" ,kconfigwidgets)
10946 ("kcoreaddons" ,kcoreaddons)
10947 ("kcrash" ,kcrash)
10948 ("kdbusaddons" ,kdbusaddons)
10949 ("ki18n" ,ki18n)
10950 ("kwidgetsaddons" ,kwidgetsaddons)
10951 ("kxmlgui" ,kxmlgui)
10952 ("libkdegames" ,libkdegames)
10953 ("qtbase" ,qtbase)
10954 ("qtdeclarative" ,qtdeclarative)))
10955 (home-page "https://games.kde.org/")
10956 (synopsis "Port of the classic BSD console game robots")
10957 (description "Killbots is a simple game of evading killer robots.
10958
10959Who created the robots and why they have been programmed to destroy, no one
10960knows. All that is known is that the robots are numerous and their sole
10961objective is to destroy you. Fortunately for you, their creator has focused
10962on quantity rather than quality and as a result the robots are severely
10963lacking in intelligence. Your superior wit and a fancy teleportation device
10964are your only weapons against the never-ending stream of mindless automatons.
10965
10966This package is part of the KDE games module.")
10967 (license (list license:gpl2+ license:fdl1.2+))))
f2f0ef92
HG
10968
10969(define-public ksnakeduel
10970 (package
10971 (name "ksnakeduel")
10972 (version "19.08.3")
10973 (source
10974 (origin
10975 (method url-fetch)
10976 (uri (string-append "mirror://kde/stable/applications/" version
10977 "/src/ksnakeduel-" version ".tar.xz"))
10978 (sha256
10979 (base32 "0mprrnpax8pv7ab36zwhvdfj8id52w8g6x76nnj8qvkdlkjiqdnn"))))
f2f0ef92
HG
10980 (build-system qt-build-system)
10981 (native-inputs
10982 `(("extra-cmake-modules" ,extra-cmake-modules)
10983 ("kdoctools" ,kdoctools)))
10984 (inputs
10985 `(("kcompletion" ,kcompletion)
10986 ("kconfig" ,kconfig)
10987 ("kconfigwidgets" ,kconfigwidgets)
10988 ("kcoreaddons" ,kcoreaddons)
10989 ("kcrash" ,kcrash)
10990 ("kdbusaddons" ,kdbusaddons)
10991 ("kguiaddons" ,kguiaddons)
10992 ("ki18n" ,ki18n)
10993 ("kxmlgui" ,kxmlgui)
10994 ("libkdegames" ,libkdegames)
10995 ("qtbase" ,qtbase)
10996 ("qtdeclarative" ,qtdeclarative)
10997 ("qtsvg" ,qtsvg)))
10998 (home-page "https://games.kde.org/")
10999 (synopsis "Snake race played against the computer")
11000 (description "KSnakeDuel is a fast action game where you steer a snake
11001which has to eat food. While eating the snake grows. But once a player
11002collides with the other snake or the wall the game is lost. This becomes of
11003course more and more difficult the longer the snakes grow.
11004
11005This package is part of the KDE games module.")
11006 (license (list license:gpl2+ license:fdl1.2+))))
f114a689
HG
11007
11008(define-public kollision
11009 (package
11010 (name "kollision")
11011 (version "19.08.3")
11012 (source
11013 (origin
11014 (method url-fetch)
11015 (uri (string-append "mirror://kde/stable/applications/" version
11016 "/src/kollision-" version ".tar.xz"))
11017 (sha256
11018 (base32 "1p7qrn3d0ybpvc9k6k5wzj54dsrp1rqh39844maz0ay2fhvmch12"))))
f114a689
HG
11019 (build-system qt-build-system)
11020 (native-inputs
11021 `(("extra-cmake-modules" ,extra-cmake-modules)
11022 ("kdoctools" ,kdoctools)))
11023 (inputs
11024 `(("kcompletion" ,kcompletion)
11025 ("kconfig" ,kconfig)
11026 ("kcoreaddons" ,kcoreaddons)
11027 ("kcrash" ,kcrash)
11028 ("kdbusaddons" ,kdbusaddons)
11029 ("ki18n" ,ki18n)
11030 ("kwidgetsaddons" ,kwidgetsaddons)
11031 ("kxmlgui" ,kxmlgui)
11032 ("libkdegames" ,libkdegames)
11033 ("qtbase" ,qtbase)
11034 ("qtdeclarative" ,qtdeclarative)))
11035 (home-page "https://games.kde.org/")
11036 (synopsis "Simple ball dodging game")
11037 (description "In Kollision you use mouse to control a small blue ball in a
11038closed space environment filled with small red balls, which move about
11039chaotically. Your goal is to avoid touching any of those red balls with your
11040blue one, because the moment you do the game will be over. The longer you can
11041stay in game the higher will your score be.
11042
11043This package is part of the KDE games module.")
11044 (license (list license:gpl2+ license:fdl1.2+))))
4e759110
HG
11045
11046(define-public knavalbattle
11047 (package
11048 (name "knavalbattle")
11049 (version "19.08.3")
11050 (source
11051 (origin
11052 (method url-fetch)
11053 (uri (string-append "mirror://kde/stable/applications/" version
11054"/src/knavalbattle-" version ".tar.xz"))
11055 (sha256
11056 (base32 "0sdfjplqkb30x2mvh66pkzay6vn5px87779sh2s8lpl6fcw0v9g4"))))
4e759110
HG
11057 (build-system qt-build-system)
11058 (native-inputs
11059 `(("extra-cmake-modules" ,extra-cmake-modules)
11060 ("kdoctools" ,kdoctools)))
11061 (inputs
11062 `(("kauth" ,kauth)
11063 ("kcompletion" ,kcompletion)
11064 ("kconfig" ,kconfig)
11065 ("kconfigwidgets" ,kconfigwidgets)
11066 ("kcoreaddons" ,kcoreaddons)
11067 ("kcrash" ,kcrash)
11068 ("kdbusaddons" ,kdbusaddons)
11069 ("kdnssd" ,kdnssd)
11070 ("ki18n" ,ki18n)
11071 ("ktextwidgets" ,ktextwidgets)
11072 ("kxmlgui" ,kxmlgui)
11073 ("libkdegames" ,libkdegames)
11074 ("qtbase" ,qtbase)
11075 ("qtdeclarative" ,qtdeclarative)))
11076 (home-page "https://games.kde.org/")
11077 (synopsis "Battleship board game with built-in game server")
11078 (description "KBattleship is a Battle Ship game for KDE.
11079
11080Ships are placed on a board which represents the sea. Players try to hit each
11081others ships in turns without knowing where they are placed. The first player
11082to destroy all ships wins the game.
11083
11084This package is part of the KDE games module.")
11085 (license (list license:gpl2+ license:fdl1.2+))))
a605b25b
HG
11086
11087(define-public kreversi
11088 (package
11089 (name "kreversi")
11090 (version "19.08.3")
11091 (source
11092 (origin
11093 (method url-fetch)
11094 (uri (string-append "mirror://kde/stable/applications/" version
11095"/src/kreversi-" version ".tar.xz"))
11096 (sha256
11097 (base32 "0b6q8df2bawgnrswhq59z37axad0q3zpvvzxdds7sz1lw505xw9h"))))
a605b25b
HG
11098 (build-system qt-build-system)
11099 (native-inputs
11100 `(("extra-cmake-modules" ,extra-cmake-modules)
11101 ("kdoctools" ,kdoctools)))
11102 (inputs
11103 `(("kconfig" ,kconfig)
11104 ("kconfigwidgets" ,kconfigwidgets)
11105 ("kcoreaddons" ,kcoreaddons)
11106 ("kcrash" ,kcrash)
11107 ("kdbusaddons" ,kdbusaddons)
11108 ("kdeclarative" ,kdeclarative)
11109 ("ki18n" ,ki18n)
11110 ("kiconthemes" ,kiconthemes)
11111 ("kio" ,kio)
11112 ("kxmlgui" ,kxmlgui)
11113 ("libkdegames" ,libkdegames)
11114 ("qtbase" ,qtbase)
11115 ("qtdeclarative" ,qtdeclarative)
11116 ("qtsvg" ,qtsvg)))
11117 (home-page "https://games.kde.org/")
11118 (synopsis "Old reversi board game, also known as othello")
11119 (description "KReversi is a simple one player strategy game played
11120against the computer.
11121
11122If a player's piece is captured by an opposing player, that piece is turned
11123over to reveal the color of that player. A winner is declared when one player
11124has more pieces of his own color on the board and there are no more possible
11125moves.
11126
11127This package is part of the KDE games module.")
11128 (license (list license:gpl2+ license:fdl1.2+))))
4fe74238
HG
11129
11130(define-public ksquares
11131 (package
11132 (name "ksquares")
11133 (version "19.08.3")
11134 (source
11135 (origin
11136 (method url-fetch)
11137 (uri (string-append "mirror://kde/stable/applications/" version
11138 "/src/ksquares-" version ".tar.xz"))
11139 (sha256
11140 (base32 "0hv8hls5s627lys08nnw72rfzsafj3dmp49mh2afzmh6lgk9h5vy"))))
4fe74238
HG
11141 (build-system qt-build-system)
11142 (native-inputs
11143 `(("extra-cmake-modules" ,extra-cmake-modules)
11144 ("kdoctools" ,kdoctools)))
11145 (inputs
11146 `(("kcompletion" ,kcompletion)
11147 ("kconfig" ,kconfig)
11148 ("kconfigwidgets" ,kconfigwidgets)
11149 ("kcoreaddons" ,kcoreaddons)
11150 ("kcrash" ,kcrash)
11151 ("kdbusaddons" ,kdbusaddons)
11152 ("ki18n" ,ki18n)
11153 ("kwidgetsaddons" ,kwidgetsaddons)
11154 ("kxmlgui" ,kxmlgui)
11155 ("libkdegames" ,libkdegames)
11156 ("qtbase" ,qtbase)
11157 ("qtdeclarative" ,qtdeclarative)))
11158 (home-page "https://games.kde.org/")
11159 (synopsis "Dots and Boxes game")
11160 (description "KSquares is an implementation of the popular paper based
11161game Squares. Two players take turns connecting dots on a grid to complete
11162squares, the player with the most squares wins.
11163
11164This package is part of the KDE games module.")
11165 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
95563d62
HG
11166
11167(define-public kjumpingcube
11168 (package
11169 (name "kjumpingcube")
11170 (version "19.08.3")
11171 (source
11172 (origin
11173 (method url-fetch)
11174 (uri (string-append "mirror://kde/stable/applications/" version
11175 "/src/kjumpingcube-" version ".tar.xz"))
11176 (sha256
11177 (base32 "0d67zqkf2xffjkj671gl2n6nj6jajyn6rgqqj5i6gm500mqi9rm1"))))
95563d62
HG
11178 (build-system qt-build-system)
11179 (native-inputs
11180 `(("extra-cmake-modules" ,extra-cmake-modules)
11181 ("kdoctools" ,kdoctools)))
11182 (inputs
11183 `(("kconfig" ,kconfig)
11184 ("kconfigwidgets" ,kconfigwidgets)
11185 ("kcoreaddons" ,kcoreaddons)
11186 ("kcrash" ,kcrash)
11187 ("kdbusaddons" ,kdbusaddons)
11188 ("ki18n" ,ki18n)
11189 ("kio" ,kio)
11190 ("kwidgetsaddons" ,kwidgetsaddons)
11191 ("kxmlgui" ,kxmlgui)
11192 ("libkdegames" ,libkdegames)
11193 ("qtbase" ,qtbase)
11194 ("qtdeclarative" ,qtdeclarative)
11195 ("qtsvg" ,qtsvg)))
11196 (home-page "https://games.kde.org/")
11197 (synopsis "Simple tactical game for number-crunchers")
11198 (description "KJumpingcube is a simple tactical game for one or two
11199players, played on a grid of numbered squares. Each turn, players compete for
11200control of the board by capturing or adding to one square.
11201
11202This package is part of the KDE games module.")
11203 (license (list license:gpl2+ license:fdl1.2+))))
40d2bddd
NG
11204
11205(define-public xmoto
37ab7837
NG
11206 (package
11207 (name "xmoto")
11208 (version "0.6.1")
11209 (source
11210 (origin
11211 (method git-fetch)
11212 (uri (git-reference
b0e7b699 11213 (url "https://github.com/xmoto/xmoto")
37ab7837
NG
11214 (commit version)))
11215 (file-name (git-file-name name version))
11216 (sha256
11217 (base32 "00f5ha79lfa2iiaz66wl0hl5dapa1l15qdr7m7knzi0ll7j6z66n"))
11218 (modules '((guix build utils)
11219 (ice-9 ftw)
11220 (srfi srfi-1)))
11221 ;; XXX: Remove some bundled libraries. Guix provides Chipmunk, but
11222 ;; it appears to be incompatible with the (older) one bundled.
11223 (snippet
11224 `(begin
11225 (let ((keep '("chipmunk" "glad" "md5sum")))
11226 (with-directory-excursion "vendor"
11227 (for-each delete-file-recursively
11228 (lset-difference string=?
11229 (scandir ".")
11230 (cons* "." ".." keep))))
11231 (substitute* "src/CMakeLists.txt"
11232 (("add_subdirectory\\(.*?/vendor/(.+?)\".*" line library)
11233 (if (member library keep) line ""))))
11234 #t))))
11235 (build-system cmake-build-system)
11236 (arguments
11237 `(#:tests? #f ;no test
11238 #:phases
11239 (modify-phases %standard-phases
11240 (add-after 'unpack 'fix-hard-coded-directory
11241 (lambda* (#:key outputs #:allow-other-keys)
11242 (substitute* "src/common/VFileIO.cpp"
11243 (("/usr/share")
11244 (string-append (assoc-ref outputs "out") "/share")))
11245 #t))
11246 (add-before 'build 'set-SDL
11247 ;; Set correct environment for SDL.
11248 (lambda* (#:key inputs #:allow-other-keys)
11249 (setenv "CPATH"
11250 (string-append
11251 (assoc-ref inputs "sdl") "/include/SDL:"
11252 (or (getenv "CPATH") "")))
11253 #t))
11254 (add-after 'install 'unbundle-fonts
11255 ;; Unbundle DejaVuSans TTF files.
11256 (lambda* (#:key outputs inputs #:allow-other-keys)
11257 (let ((font-dir (string-append (assoc-ref inputs "font-dejavu")
11258 "/share/fonts/truetype/"))
11259 (target-dir (string-append (assoc-ref outputs "out")
11260 "/share/xmoto/Textures/Fonts/")))
11261 (for-each (lambda (f)
11262 (let ((font (string-append font-dir f))
11263 (target (string-append target-dir f)))
11264 (delete-file target)
11265 (symlink font target)))
11266 '("DejaVuSans.ttf" "DejaVuSansMono.ttf"))
11267 #t))))))
11268 (native-inputs
11269 `(("gettext" ,gettext-minimal)
11270 ("pkg-config" ,pkg-config)))
11271 (inputs
11272 `(("bzip2" ,bzip2)
11273 ("curl" ,curl)
11274 ("font-dejavu" ,font-dejavu)
11275 ("glu" ,glu)
11276 ("libjpeg" ,libjpeg-turbo)
11277 ("libpng" ,libpng)
11278 ("libxdg-basedir" ,libxdg-basedir)
11279 ("libxml2" ,libxml2)
11280 ("lua" ,lua-5.1)
11281 ("ode" ,ode)
11282 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-net sdl-ttf)))
11283 ("sqlite" ,sqlite)
11284 ("zlib" ,zlib)))
11285 (home-page "https://xmoto.tuxfamily.org/")
11286 (synopsis "2D motocross platform game")
11287 (description
11288 "X-Moto is a challenging 2D motocross platform game, where
fb529660
NG
11289physics play an all important role in the gameplay. You need to
11290control your bike to its limit, if you want to have a chance finishing
11291the more difficult challenges.")
37ab7837
NG
11292 (license (list license:gpl2+ ;whole project
11293 license:bsd-3 ;vendor/md5sum
11294 license:lgpl2.1+
11295 license:expat))))
371ca8ca
GLV
11296
11297(define-public eboard
11298 (package
11299 (name "eboard")
11300 (version "1.1.3")
11301 (source
11302 (origin
11303 (method git-fetch)
11304 (uri (git-reference
b0e7b699 11305 (url "https://github.com/fbergo/eboard")
371ca8ca
GLV
11306 (commit (string-append "v" version))))
11307 (file-name (git-file-name name version))
11308 (sha256
11309 (base32 "1z4pwpqyvxhlda99h6arh2rjk90fbms9q29fqizjblrdn01dlxn1"))))
11310 (build-system gnu-build-system)
11311 (native-inputs
11312 `(("perl" ,perl)
11313 ("pkg-config" ,pkg-config)))
11314 (inputs
11315 `(("gtk+" ,gtk+-2)
11316 ("libpng" ,libpng)
11317 ("gstreamer" ,gstreamer)))
11318 (arguments
11319 `(#:tests? #f
11320 #:phases
11321 (modify-phases %standard-phases
11322 (replace 'configure
11323 (lambda* (#:key outputs #:allow-other-keys)
11324 (make-file-writable "eboard-config")
11325 (setenv "CC" "gcc")
11326 (invoke "./configure"
11327 (string-append "--prefix=" (assoc-ref outputs "out")))
11328 #t))
11329 (add-before 'install 'make-required-directories
11330 (lambda* (#:key outputs #:allow-other-keys)
11331 (mkdir-p (string-append (assoc-ref outputs "out")
11332 "/share/eboard"))
11333 #t)))))
11334 (synopsis "Graphical user interface to play chess")
11335 (description
11336 "Eboard is a chess board interface for ICS (Internet Chess Servers)
11337and chess engines.")
11338 (home-page "https://www.bergo.eng.br/eboard/")
11339 (license license:gpl2+)))
d8cae6cf
GLV
11340
11341(define-public chessx
11342 (package
11343 (name "chessx")
5b87bacd 11344 (version "1.5.4")
d8cae6cf
GLV
11345 (source
11346 (origin
11347 (method url-fetch)
11348 (uri (string-append "mirror://sourceforge/chessx/chessx/"
11349 version "/chessx-" version ".tgz"))
11350 (sha256
5b87bacd 11351 (base32 "1a3541vl5hp6jllgx998w9kjh9kp3wrl80yfwkxmq1bc5bzsrnz2"))))
d8cae6cf
GLV
11352 (build-system qt-build-system)
11353 (native-inputs
11354 `(("qttools" ,qttools)))
11355 (inputs
11356 `(("qtbase" ,qtbase)
11357 ("qtmultimedia" ,qtmultimedia)
5b87bacd 11358 ("qtspeech" ,qtspeech)
d8cae6cf
GLV
11359 ("qtsvg" ,qtsvg)
11360 ("zlib" ,zlib)))
11361 (arguments
11362 `(#:tests? #f
11363 #:phases
11364 (modify-phases %standard-phases
11365 (add-after 'unpack 'fix-paths
11366 (lambda* (#:key inputs #:allow-other-keys)
11367 (substitute* "chessx.pro"
11368 (("\\$\\$\\[QT_INSTALL_BINS\\]/lrelease")
5b87bacd
MR
11369 (string-append (assoc-ref inputs "qttools") "/bin/lrelease"))
11370 ;; Fix missing translations.
11371 (("TRANSLATIONS = i18n/chessx_de.ts")
11372 "TRANSLATIONS = i18n/chessx_de.ts i18n/chessx_da.ts \\
11373i18n/chessx_fr.ts i18n/chessx_it.ts i18n/chessx_cz.ts i18n/chessx_ru.ts \\
11374i18n/chessx_es.ts"))
d8cae6cf
GLV
11375 #t))
11376 (add-after 'fix-paths 'make-qt-deterministic
11377 (lambda _
11378 (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1")
11379 #t))
11380 (replace 'configure
11381 (lambda _
11382 (invoke "qmake")
11383 #t))
11384 (replace 'install
11385 (lambda* (#:key outputs #:allow-other-keys)
11386 (let ((out (assoc-ref outputs "out")))
11387 (install-file "release/chessx" (string-append out "/bin"))
11388 (install-file "unix/chessx.desktop"
11389 (string-append out "/share/applications")))
11390 #t)))))
11391 (synopsis "Chess game database")
11392 (description
11393 "ChessX is a chess database. With ChessX you can operate on your
11394collection of chess games in many ways: browse, edit, add, organize, analyze,
11395etc. You can also play games on FICS or against an engine.")
11396 (home-page "http://chessx.sourceforge.net/")
11397 (license license:gpl2+)))
814091ef
GLV
11398
11399(define-public stockfish
11400 (package
11401 (name "stockfish")
11402 (version "11")
11403 (source
11404 (origin
11405 (method git-fetch)
11406 (uri (git-reference
b0e7b699 11407 (url "https://github.com/official-stockfish/Stockfish")
814091ef
GLV
11408 (commit (string-append "sf_" version))))
11409 (file-name (git-file-name name version))
11410 (sha256
11411 (base32 "12mppipinymj8s1ipq9a7is453vncly49c32ym9wvyklsgyxfzlk"))))
11412 (build-system gnu-build-system)
11413 (arguments
11414 `(#:tests? #f
11415 #:make-flags (list "-C" "src"
11416 "build"
11417 (string-append "PREFIX="
11418 (assoc-ref %outputs "out"))
11419 (string-append "ARCH="
11420 ,(match (%current-system)
11421 ("x86_64-linux" "x86-64")
11422 ("i686-linux" "x86-32")
11423 ("aarch64-linux" "general-64")
11424 ("armhf-linux" "armv7")
11425 ("mips64el-linux" "general-64")
11426 (_ "general-32"))))
11427 #:phases (modify-phases %standard-phases
11428 (delete 'configure))))
11429 (synopsis "Strong chess engine")
11430 (description
11431 "Stockfish is a very strong chess engines. It is much stronger than the
11432best human chess grandmasters. It can be used with UCI-compatible GUIs like
11433ChessX.")
11434 (home-page "https://stockfishchess.org/")
11435 (license license:gpl3+)))
79a48038
AEFG
11436
11437(define-public barrage
11438 (package
11439 (name "barrage")
11440 (version "1.0.5")
11441 (source
11442 (origin
11443 (method url-fetch)
11444 (uri (string-append "mirror://sourceforge/lgames/barrage/"
11445 "barrage-" version ".tar.gz"))
11446 (sha256
11447 (base32 "0139wxyrir10cbkvkjn548xgmp84wax8mfwk80yxbxlcdamrg257"))))
11448 (build-system gnu-build-system)
11449 (inputs
11450 `(("hicolor-icon-theme" ,hicolor-icon-theme)
11451 ("sdl" ,sdl)
11452 ("sdl-mixer" ,sdl-mixer)))
11453 (arguments
11454 `(#:configure-flags
11455 (list
11456 (string-append "CFLAGS="
11457 "-I" (assoc-ref %build-inputs "sdl-mixer")
11458 "/include/SDL"))))
11459 (home-page "http://lgames.sourceforge.net/Barrage/")
11460 (synopsis "Violent point-and-click shooting game with nice effects")
11461 (description
11462 "Barrage is a rather destructive action game that puts you on a shooting
11463range with the objective to hit as many dummy targets as possible within
114643 minutes. You control a gun that may either fire small or large grenades at
11465soldiers, jeeps and tanks. The gameplay is simple but it is not that easy to
11466get high scores.")
11467 (license license:gpl2+)))
db47adb0 11468
19c0280f
NG
11469(define-public burgerspace
11470 (package
11471 (name "burgerspace")
11472 (version "1.9.3")
11473 (source
11474 (origin
11475 (method url-fetch)
11476 (uri (string-append "http://perso.b2b2c.ca/~sarrazip/dev/"
11477 "burgerspace-" version ".tar.gz"))
11478 (sha256
11479 (base32 "1005a04rbn4lzjrpfg0m394k2mfaji63fm2qhdqdsxila8a6kjbv"))))
11480 (build-system gnu-build-system)
11481 (native-inputs
11482 `(("pkg-config" ,pkg-config)))
11483 (inputs
11484 `(("flatzebra" ,flatzebra)))
11485 (home-page "http://perso.b2b2c.ca/~sarrazip/dev/burgerspace.html")
11486 (synopsis "Avoid evil foodstuffs and make burgers")
11487 (description
11488 "This is a clone of the classic game BurgerTime. In it, you play
11489the part of a chef who must create burgers by stepping repeatedly on
11490the ingredients until they fall into place. And to make things more
11491complicated, you also must avoid evil animate food items while
11492performing this task, with nothing but your trusty pepper shaker to
11493protect you.")
11494 (license license:gpl2+)))
11495
db47adb0
NM
11496(define-public 7kaa
11497 (package
11498 (name "7kaa")
6052fd73 11499 (version "2.15.4p1")
db47adb0
NM
11500 (source
11501 (origin
11502 (method url-fetch)
11503 (uri (string-append "https://github.com/the3dfxdude/7kaa/"
11504 "releases/download/v" version "/"
11505 "7kaa-" version ".tar.xz"))
11506 (sha256
6052fd73 11507 (base32 "1y7v0jhp3apb619p7asikqr1dnwb2yxbh40wbx1ppmr5f03mq9ph"))))
db47adb0
NM
11508 (build-system gnu-build-system)
11509 (native-inputs
11510 `(("gettext" ,gettext-minimal)
11511 ("pkg-config" ,pkg-config)))
11512 (inputs
11513 `(("curl" ,curl)
11514 ("enet" ,enet)
11515 ("openal" ,openal)
11516 ("sdl2" ,sdl2)))
11517 (home-page "https://7kfans.com/")
11518 (synopsis "Seven Kingdoms Ancient Adversaries: real-time strategy game")
11519 (description
11520 "Seven Kingdoms, designed by Trevor Chan, brings a blend of Real-Time
11521Strategy with the addition of trade, diplomacy, and espionage. The game
11522enables players to compete against up to six other kingdoms allowing players
11523to conquer opponents by defeating them in war (with troops or machines),
11524capturing their buildings with spies, or offering opponents money for their
11525kingdom.")
11526 (license license:gpl2+)))
3de5b404
VS
11527
11528(define-public neverball
11529 ;; Git version is 6-years younger than latest release.
11530 (let ((commit "760a25d32a5fb0661b99426d4ddcb9ac9f3d1644")
11531 (revision "1"))
11532 (package
11533 (name "neverball")
11534 (version (git-version "1.6.0" revision commit))
11535 (source
11536 (origin
11537 (method git-fetch)
11538 (uri (git-reference
b0e7b699 11539 (url "https://github.com/Neverball/neverball")
3de5b404
VS
11540 (commit commit)))
11541 (sha256
11542 (base32
11543 "0bwh67df3lyf33bv710y25l3frjdd34j9b7gsjadwxviz6r1vpj5"))
11544 (file-name (git-file-name name version))
11545 (modules '((guix build utils)))
11546 (snippet
11547 '(begin
11548 ;; Octocat seems to be non-free. Oddly, Debian doesn't strip it.
11549 (delete-file-recursively "data/ball/octocat")
11550 #t))))
11551 (build-system copy-build-system)
11552 (arguments
11553 `(#:install-plan
11554 '(("neverball" "bin/")
11555 ("neverputt" "bin/")
11556 ("mapc" "bin/")
11557 ("data" "share/games/neverball/")
11558 ("locale" "share/")
11559 ("dist/" "share/games/neverball" #:include ("neverball_replay.png"
11560 "neverlogos.svg"
11561 "svg readme.txt"))
11562 ("dist/" "share/applications" #:include ("neverball.desktop"
11563 "neverputt.desktop"))
11564 ("dist/neverball_16.png"
11565 "/share/icons/hicolor/16x16/apps/neverball.png")
11566 ("dist/neverball_24.png"
11567 "/share/icons/hicolor/24x24/apps/neverball.png")
11568 ("dist/neverball_32.png"
11569 "/share/icons/hicolor/32x32/apps/neverball.png")
11570 ("dist/neverball_48.png"
11571 "/share/icons/hicolor/48x48/apps/neverball.png")
11572 ("dist/neverball_64.png"
11573 "/share/icons/hicolor/64x64/apps/neverball.png")
11574 ("dist/neverball_128.png"
11575 "/share/icons/hicolor/128x128/apps/neverball.png")
11576 ("dist/neverball_256.png"
11577 "/share/icons/hicolor/256x256/apps/neverball.png")
11578 ("dist/neverball_512.png"
11579 "/share/icons/hicolor/512x512/apps/neverball.png")
11580 ("dist/neverputt_16.png"
11581 "/share/icons/hicolor/16x16/apps/neverputt.png")
11582 ("dist/neverputt_24.png"
11583 "/share/icons/hicolor/24x24/apps/neverputt.png")
11584 ("dist/neverputt_32.png"
11585 "/share/icons/hicolor/32x32/apps/neverputt.png")
11586 ("dist/neverputt_48.png"
11587 "/share/icons/hicolor/48x48/apps/neverputt.png")
11588 ("dist/neverputt_64.png"
11589 "/share/icons/hicolor/64x64/apps/neverputt.png")
11590 ("dist/neverputt_128.png"
11591 "/share/icons/hicolor/128x128/apps/neverputt.png")
11592 ("dist/neverputt_256.png"
11593 "/share/icons/hicolor/256x256/apps/neverputt.png")
11594 ("dist/neverputt_512.png"
11595 "/share/icons/hicolor/512x512/apps/neverputt.png")
11596 ("dist/" "share/man/man1" #:include ("mapc.1"))
11597 ("dist/" "share/man/man6" #:include ("neverball.6" "neverputt.6"))
11598 ("doc/" "share/doc/neverball")
11599 ("README.md" "share/doc/neverball/"))
11600 #:phases
11601 (modify-phases %standard-phases
11602 (add-before 'install 'build
11603 (lambda* (#:key inputs outputs #:allow-other-keys)
11604 (let* ((out (assoc-ref outputs "out"))
11605 (sdl (assoc-ref inputs "sdl")))
11606 (invoke "make" "-j" (number->string (parallel-job-count))
11607 "--environment-overrides"
11608 "CC=gcc" "BUILD=release"
11609 (string-append "DATADIR="
11610 out
11611 "/share/games/neverball/data")
11612 (string-append "LOCALEDIR=" out "/share/locale")
11613 (string-append "SDL_CPPFLAGS=-I"
11614 sdl
11615 "/include/SDL2/")))
11616 #t))
11617 (add-after 'install 'fix-some-broken-fonts
11618 (lambda* (#:key outputs #:allow-other-keys)
11619 (let* ((out (assoc-ref outputs "out")))
11620 (wrap-program (string-append out "/bin/neverball")
11621 `("LANG" = ("en_US.utf8")))
11622 (wrap-program (string-append out "/bin/neverputt")
11623 `("LANG" = ("en_US.utf8"))))
11624 #t)))))
11625 (native-inputs
11626 `(("gettext" ,gettext-minimal))) ;for msgfmt
11627 (inputs
27783023 11628 `(("libjpeg" ,libjpeg-turbo)
3de5b404
VS
11629 ("libpng" ,libpng)
11630 ("libvorbis" ,libvorbis)
11631 ("physfs" ,physfs)
11632 ("sdl" ,(sdl-union (list sdl2 sdl2-ttf)))))
11633 (home-page "https://neverball.org/")
11634 (synopsis "3D floor-tilting game")
11635 (description
11636 "In the grand tradition of Marble Madness and Super Monkey Ball,
11637Neverball has you guide a rolling ball through dangerous territory. Balance
11638on narrow bridges, navigate mazes, ride moving platforms, and dodge pushers
11639and shovers to get to the goal. Race against the clock to collect coins to
11640earn extra balls. Also included is Neverputt, which is a 3D miniature golf
11641game.") ;thanks to Debian for description
11642 (license license:gpl2+))))
c02af11d
GLV
11643
11644(define-public pokerth
11645 (package
11646 (name "pokerth")
11647 (version "1.1.2")
11648 (source
11649 (origin
11650 (method url-fetch)
11651 (uri (string-append "mirror://sourceforge/pokerth/pokerth/"
11652 version "/pokerth-" version ".tar.gz"))
11653 (sha256
11654 (base32 "0yi9bj3k8yc1gkwmaf14zbbvvn13n54n1dli8k6j1pkph3p3vjq2"))
11655 (modules '((guix build utils)))
11656 (snippet
11657 '(begin
11658 ;; Remove bundled websocketpp.
11659 (delete-file-recursively "src/third_party/websocketpp")
11660 (substitute* "pokerth_lib.pro"
11661 (("src/third_party/websocketpp")
11662 ""))
11663 #t))))
11664 (build-system qt-build-system)
11665 (inputs
11666 `(("boost" ,boost)
11667 ("curl" ,curl)
11668 ("gsasl" ,gsasl)
11669 ("libgcrypt" ,libgcrypt)
11670 ("libircclient" ,libircclient)
50dee556 11671 ("protobuf" ,protobuf-2) ; remove package when no longer needed
c02af11d
GLV
11672 ("qtbase" ,qtbase)
11673 ("sdl" ,(sdl-union (list sdl sdl-mixer)))
11674 ("sqlite" ,sqlite)
11675 ("tinyxml" ,tinyxml)
11676 ("websocketpp" ,websocketpp)
11677 ("zlib" ,zlib)))
11678 (arguments
11679 `(#:tests? #f ; No test suite
11680 #:phases
11681 (modify-phases %standard-phases
11682 (add-after 'unpack 'fix-paths
11683 (lambda* (#:key inputs #:allow-other-keys)
11684 (substitute* (find-files "." "\\.pro$")
11685 (("/opt/gsasl")
11686 (assoc-ref inputs "gsasl"))
11687 (("\\$\\$\\{PREFIX\\}/include/libircclient")
11688 (string-append (assoc-ref inputs "libircclient")
11689 "/include/libircclient"))
11690 (("LIB_DIRS =")
11691 (string-append "LIB_DIRS = "
11692 (assoc-ref inputs "boost") "/lib")))
11693 #t))
11694 (add-after 'unpack 'fix-build
11695 (lambda _
11696 ;; Fixes for Boost versions >= 1.66.
11697 (substitute* '("src/net/common/clientthread.cpp"
11698 "src/net/serveraccepthelper.h")
11699 (("boost::asio::socket_base::non_blocking_io command\\(true\\);")
11700 "")
11701 (("newSock->io_control\\(command\\);")
11702 "newSock->non_blocking(true);")
11703 (("acceptedSocket->io_control\\(command\\);")
11704 "acceptedSocket->non_blocking(true);"))
11705 #t))
11706 (replace 'configure
11707 (lambda* (#:key outputs #:allow-other-keys)
11708 (invoke "qmake" "pokerth.pro" "CONFIG+=client"
11709 (string-append "PREFIX=" (assoc-ref outputs "out"))))))))
11710 (home-page "https://www.pokerth.net")
11711 (synopsis "Texas holdem poker game")
11712 (description
11713 "With PokerTH you can play the Texas holdem poker game, either against
11714computer opponents or against real players online.")
11715 (license license:agpl3+)))
fb38560c
TH
11716
11717(define-public azimuth
11718 (package
11719 (name "azimuth")
11720 ;; Not marked as latest release, but it fixes a compiling issue
11721 ;; and adds the install target.
11722 (version "1.0.3")
11723 (source
11724 (origin
11725 (method git-fetch)
11726 (uri (git-reference
11727 (url "https://github.com/mdsteele/azimuth")
11728 (commit (string-append "v" version))))
11729 (file-name (git-file-name name version))
11730 (sha256
11731 (base32
11732 "1znfvpmqiixd977jv748glk5zc4cmhw5813zp81waj07r9b0828r"))))
11733 (build-system gnu-build-system)
11734 (arguments
11735 `(#:test-target "test"
11736 #:phases
11737 (modify-phases %standard-phases
11738 (delete 'configure) ; no configure script
11739 ;; Build release version instead of debug version.
11740 (add-after 'unpack 'set-release
11741 (lambda _
11742 (setenv "BUILDTYPE" "release") #t))
11743 (add-after 'unpack 'fix-install ; set install directory
11744 (lambda* (#:key outputs #:allow-other-keys)
11745 (substitute* "Makefile" (("/usr") (assoc-ref outputs "out"))) #t)))))
11746 (inputs `(("sdl" ,sdl)))
11747 (home-page "https://mdsteele.games/azimuth/")
11748 (synopsis "Metroidvania game with vector graphics")
11749 (description
11750 "Pilot your ship inside a planet to find and rescue the colonists trapped
11751inside the Zenith Colony.")
11752 (license license:gpl3+)))
062448f3
OP
11753
11754(define-public paperview
11755 (let ((commit "9f8538eb6734c76877b878b8f1e52587f2ae19e6")
11756 (revision "1"))
11757 (package
11758 (name "paperview")
11759 (version (git-version "0.0.1" revision commit)) ;no upstream release
11760 (source (origin
11761 (method git-fetch)
11762 (uri (git-reference
11763 (url "https://github.com/glouw/paperview")
11764 (commit commit)))
11765 (file-name (git-file-name name version))
11766 (sha256
11767 (base32
11768 "09sb9sg44fvkgfdyycrm1ndpx7cnkrglxhci41y8f3gpagnvi7jk"))))
11769 (build-system gnu-build-system)
11770 (inputs
11771 `(("sdl2" ,sdl2)))
11772 (arguments
11773 '(#:tests? #f ;no tests
11774 #:make-flags
11775 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
11776 #:phases
11777 (modify-phases %standard-phases
11778 (delete 'configure))))
11779 (home-page "https://github.com/glouw/paperview/")
11780 (synopsis "High performance X11 animated wallpaper setter")
11781 (description "High performance animated desktop background setter for
11782X11 that won't set your CPU on fire, drain your laptop battery, or lower video
11783game FPS.")
11784 (license license:unlicense))))