gnu: sbcl-cl-cffi-gtk: Update to 20200417.
[jackhill/guix/guix.git] / gnu / packages / games.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2013 John Darrington <jmd@gnu.org>
3 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
4 ;;; Copyright © 2014, 2016 David Thompson <dthompson2@worcester.edu>
5 ;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020 Eric Bavier <bavier@posteo.net>
6 ;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com>
7 ;;; Copyright © 2014 Sylvain Beucler <beuc@beuc.net>
8 ;;; Copyright © 2014, 2015, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
9 ;;; Copyright © 2014, 2015, 2016 Sou Bunnbu <iyzsong@gmail.com>
10 ;;; Copyright © 2014, 2015, 2019 Mark H Weaver <mhw@netris.org>
11 ;;; Copyright © 2015, 2016 Andreas Enge <andreas@enge.fr>
12 ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
13 ;;; Copyright © 2015, 2017, 2018 Christopher Lemmer Webber <cwebber@dustycloud.org>
14 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
15 ;;; Copyright © 2015, 2016, 2017 Alex Kost <alezost@gmail.com>
16 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
17 ;;; Copyright © 2016, 2017 Rodger Fox <thylakoid@openmailbox.org>
18 ;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is>
19 ;;; Copyright © 2016 Albin Söderqvist <albin@fripost.org>
20 ;;; Copyright © 2016, 2017, 2018, 2019 Kei Kebreau <kkebreau@posteo.net>
21 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
22 ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
23 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
24 ;;; Copyright © 2016 Steve Webber <webber.sl@gmail.com>
25 ;;; Copyright © 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@hyperbola.info>
26 ;;; Copyright © 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
27 ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
28 ;;; Copyright © 2017, 2019 nee <nee-git@hidamari.blue>
29 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
30 ;;; Copyright © 2017, 2019 Marius Bakke <mbakke@fastmail.com>
31 ;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
32 ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
33 ;;; Copyright © 2017, 2018, 2019, 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
34 ;;; Copyright © 2018 okapi <okapi@firemail.cc>
35 ;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
36 ;;; Copyright © 2018 Madalin Ionel-Patrascu <madalinionel.patrascu@mdc-berlin.de>
37 ;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net>
38 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
39 ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
40 ;;; Copyright © 2019, 2020 Oleg Pykhalov <go.wigust@gmail.com>
41 ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
42 ;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
43 ;;; Copyright © 2019 Jesse Gibbons <jgibbons2357+guix@gmail.com>
44 ;;; Copyright © 2019 Dan Frumin <dfrumin@cs.ru.nl>
45 ;;; Copyright © 2019, 2020 Guillaume Le Vaillant <glv@posteo.net>
46 ;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar@araneo.si>
47 ;;; Copyright © 2019 Josh Holland <josh@inv.alid.pw>
48 ;;; Copyright © 2017, 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
49 ;;; Copyright © 2020 Alberto Eleuterio Flores Guerrero <barbanegra+guix@posteo.mx>
50 ;;; Copyright © 2020 Naga Malleswari <nagamalli@riseup.net>
51 ;;; Copyright © 2020 Vitaliy Shatrov <D0dyBo0D0dyBo0@protonmail.com>
52 ;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us>
53 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
54 ;;;
55 ;;; This file is part of GNU Guix.
56 ;;;
57 ;;; GNU Guix is free software; you can redistribute it and/or modify it
58 ;;; under the terms of the GNU General Public License as published by
59 ;;; the Free Software Foundation; either version 3 of the License, or (at
60 ;;; your option) any later version.
61 ;;;
62 ;;; GNU Guix is distributed in the hope that it will be useful, but
63 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
64 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
65 ;;; GNU General Public License for more details.
66 ;;;
67 ;;; You should have received a copy of the GNU General Public License
68 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
69
70 (define-module (gnu packages games)
71 #:use-module (ice-9 match)
72 #:use-module ((guix licenses) #:prefix license:)
73 #:use-module (guix utils)
74 #:use-module (guix packages)
75 #:use-module (guix download)
76 #:use-module (guix git-download)
77 #:use-module (guix svn-download)
78 #:use-module (guix gexp)
79 #:use-module (gnu packages)
80 #:use-module (gnu packages algebra)
81 #:use-module (gnu packages autotools)
82 #:use-module (gnu packages backup)
83 #:use-module (gnu packages base)
84 #:use-module (gnu packages build-tools)
85 #:use-module (gnu packages admin)
86 #:use-module (gnu packages audio)
87 #:use-module (gnu packages avahi)
88 #:use-module (gnu packages assembly)
89 #:use-module (gnu packages bash)
90 #:use-module (gnu packages bison)
91 #:use-module (gnu packages boost)
92 #:use-module (gnu packages check)
93 #:use-module (gnu packages cmake)
94 #:use-module (gnu packages compression)
95 #:use-module (gnu packages curl)
96 #:use-module (gnu packages crypto)
97 #:use-module (gnu packages cyrus-sasl)
98 #:use-module (gnu packages documentation)
99 #:use-module (gnu packages docbook)
100 #:use-module (gnu packages emulators)
101 #:use-module (gnu packages flex)
102 #:use-module (gnu packages fltk)
103 #:use-module (gnu packages fonts)
104 #:use-module (gnu packages fontutils)
105 #:use-module (gnu packages freedesktop)
106 #:use-module (gnu packages fribidi)
107 #:use-module (gnu packages game-development)
108 #:use-module (gnu packages gcc)
109 #:use-module (gnu packages gettext)
110 #:use-module (gnu packages ghostscript)
111 #:use-module (gnu packages gimp)
112 #:use-module (gnu packages gl)
113 #:use-module (gnu packages glib)
114 #:use-module (gnu packages gnome)
115 #:use-module (gnu packages gnuzilla)
116 #:use-module (gnu packages gperf)
117 #:use-module (gnu packages graphics)
118 #:use-module (gnu packages gstreamer)
119 #:use-module (gnu packages gtk)
120 #:use-module (gnu packages guile)
121 #:use-module (gnu packages haskell)
122 #:use-module (gnu packages haskell-crypto)
123 #:use-module (gnu packages haskell-xyz)
124 #:use-module (gnu packages icu4c)
125 #:use-module (gnu packages image)
126 #:use-module (gnu packages imagemagick)
127 #:use-module (gnu packages kde)
128 #:use-module (gnu packages kde-frameworks)
129 #:use-module (gnu packages less)
130 #:use-module (gnu packages libcanberra)
131 #:use-module (gnu packages libedit)
132 #:use-module (gnu packages libunwind)
133 #:use-module (gnu packages linux)
134 #:use-module (gnu packages llvm)
135 #:use-module (gnu packages lua)
136 #:use-module (gnu packages man)
137 #:use-module (gnu packages maths)
138 #:use-module (gnu packages mp3)
139 #:use-module (gnu packages music)
140 #:use-module (gnu packages multiprecision)
141 #:use-module (gnu packages ncurses)
142 #:use-module (gnu packages netpbm)
143 #:use-module (gnu packages networking)
144 #:use-module (gnu packages ocaml)
145 #:use-module (gnu packages opencl)
146 #:use-module (gnu packages pcre)
147 #:use-module (gnu packages perl)
148 #:use-module (gnu packages perl-check)
149 #:use-module (gnu packages pkg-config)
150 #:use-module (gnu packages pulseaudio)
151 #:use-module (gnu packages python)
152 #:use-module (gnu packages python-xyz)
153 #:use-module (gnu packages qt)
154 #:use-module (gnu packages readline)
155 #:use-module (gnu packages shells)
156 #:use-module (gnu packages sdl)
157 #:use-module (gnu packages serialization)
158 #:use-module (gnu packages sqlite)
159 #:use-module (gnu packages squirrel)
160 #:use-module (gnu packages swig)
161 #:use-module (gnu packages tcl)
162 #:use-module (gnu packages terminals)
163 #:use-module (gnu packages texinfo)
164 #:use-module (gnu packages textutils)
165 #:use-module (gnu packages tls)
166 #:use-module (gnu packages upnp)
167 #:use-module (gnu packages video)
168 #:use-module (gnu packages vulkan)
169 #:use-module (gnu packages web)
170 #:use-module (gnu packages wget)
171 #:use-module (gnu packages wxwidgets)
172 #:use-module (gnu packages xdisorg)
173 #:use-module (gnu packages xorg)
174 #:use-module (gnu packages xiph)
175 #:use-module (gnu packages xml)
176 #:use-module (gnu packages messaging)
177 #:use-module (gnu packages networking)
178 #:use-module (guix build-system copy)
179 #:use-module (guix build-system glib-or-gtk)
180 #:use-module (guix build-system gnu)
181 #:use-module (guix build-system go)
182 #:use-module (guix build-system meson)
183 #:use-module (guix build-system scons)
184 #:use-module (guix build-system python)
185 #:use-module (guix build-system cmake)
186 #:use-module (guix build-system qt)
187 #:use-module (guix build-system trivial)
188 #:use-module ((srfi srfi-1) #:hide (zip))
189 #:use-module (srfi srfi-26))
190
191 ;; Data package for adanaxisgpl.
192 (define adanaxis-mush
193 (let ((version "1.1.0"))
194 (origin
195 (method url-fetch)
196 (uri (string-append "http://www.mushware.com/files/adanaxis-mush-"
197 version ".tar.gz"))
198 (sha256
199 (base32 "0mk9ibis5nkdcalcg1lkgnsdxxbw4g5w2i3icjzy667hqirsng03")))))
200
201 (define-public adanaxisgpl
202 (package
203 (name "adanaxisgpl")
204 (version "1.2.5")
205 (source
206 (origin
207 (method url-fetch)
208 (uri (string-append "http://www.mushware.com/files/adanaxisgpl-"
209 version ".tar.gz"))
210 (sha256
211 (base32 "0jkn637jaabvlhd6hpvzb57vvjph94l6fbf7qxbjlw9zpr19dw1f"))
212 (modules '((guix build utils)))
213 (snippet
214 '(begin
215 ;; Necessary for building with gcc >=4.7.
216 (substitute* "src/Mushcore/MushcoreSingleton.h"
217 (("SingletonPtrSet\\(new SingletonType\\);")
218 "MushcoreSingleton::SingletonPtrSet(new SingletonType);"))
219 ;; Avoid an "invalid conversion from const char* to char*" error.
220 (substitute* "src/Platform/X11/PlatformMiscUtils.cpp"
221 (("char \\*end, \\*result;")
222 (string-append "const char *end;"
223 "\n"
224 "char *result;")))
225 #t))))
226 (build-system gnu-build-system)
227 (arguments
228 `(#:tests? #f ; no check target
229 #:phases
230 (modify-phases %standard-phases
231 (add-after 'install 'install-data
232 (lambda* (#:key inputs outputs #:allow-other-keys)
233 (let ((data (assoc-ref inputs "adanaxis-mush"))
234 (share (string-append (assoc-ref outputs "out")
235 "/share/" ,name "-" ,version)))
236 (mkdir-p share)
237 (invoke "tar" "xvf" data "-C" share)))))))
238 (native-inputs
239 `(("adanaxis-mush" ,adanaxis-mush))) ; game data
240 (inputs
241 `(("expat" ,expat)
242 ("freeglut" ,freeglut)
243 ("glu" ,glu)
244 ("libjpeg" ,libjpeg)
245 ("libogg" ,libogg)
246 ("libtiff" ,libtiff)
247 ("libvorbis" ,libvorbis)
248 ("libx11" ,libx11)
249 ("libxext" ,libxext)
250 ("pcre" ,pcre)
251 ("sdl" ,sdl)
252 ("sdl-mixer" ,sdl-mixer)))
253 (home-page "https://www.mushware.com")
254 (synopsis "Action game in four spatial dimensions")
255 (description
256 "Adanaxis is a fast-moving first person shooter set in deep space, where
257 the fundamentals of space itself are changed. By adding another dimension to
258 space this game provides an environment with movement in four directions and
259 six planes of rotation. Initially the game explains the 4D control system via
260 a graphical sequence, before moving on to 30 levels of gameplay with numerous
261 enemy, ally, weapon and mission types. Features include simulated 4D texturing,
262 mouse and joystick control, and original music.")
263 (license license:gpl2)))
264
265 (define-public alex4
266 (package
267 (name "alex4")
268 (version "1.2.1")
269 (source
270 (origin
271 (method git-fetch)
272 (uri (git-reference
273 (url "https://github.com/carstene1ns/alex4.git")
274 (commit version)))
275 (file-name (git-file-name name version))
276 (sha256
277 (base32 "098wy72mh4lsvq3gm0rhamjssf9l1hp6hhkpzrv7klpb97cwwc3h"))))
278 (build-system gnu-build-system)
279 (arguments
280 `(#:tests? #f ; no check target
281 #:make-flags
282 (list "CC=gcc"
283 "CFLAGS=-D_FILE_OFFSET_BITS=64"
284 (string-append "PREFIX=" (assoc-ref %outputs "out")))
285 #:phases
286 (modify-phases %standard-phases
287 (delete 'configure) ; no configure script
288 (add-after 'install 'install-data
289 (lambda* (#:key outputs #:allow-other-keys)
290 (let ((share (string-append (assoc-ref outputs "out")
291 "/share/" ,name)))
292 (install-file "alex4.ini" share)
293 #t))))))
294 (inputs
295 `(("allegro" ,allegro-4)
296 ("dumb" ,dumb-allegro4)))
297 (home-page "http://allegator.sourceforge.net/")
298 (synopsis "Retro platform game")
299 (description
300 "Guide Alex the Allegator through the jungle in order to save his
301 girlfriend Lola from evil humans who want to make a pair of shoes out of her.
302 Plenty of classic platforming in four nice colors guaranteed!
303
304 The game includes a built-in editor so you can design and share your own maps.")
305 (license license:gpl2+)))
306
307 (define-public armagetronad
308 (package
309 (name "armagetronad")
310 (version "0.2.8.3.5")
311 (source (origin
312 (method url-fetch)
313 (uri (string-append "mirror://sourceforge/armagetronad/stable/"
314 version "/armagetronad-" version ".src.tar.gz"))
315 (sha256
316 (base32
317 "1z266haq22n5b0733h7qsg1rpzhz8lvm82f7wd06r008iiar7jdl"))))
318 (build-system gnu-build-system)
319 (inputs
320 `(("libxml2" ,libxml2)
321 ("sdl" ,sdl)
322 ("sdl-image" ,sdl-image)
323 ("freeglut" ,freeglut)
324 ("libpng" ,libpng)
325 ("libjpeg-turbo" ,libjpeg-turbo)))
326 (home-page "http://www.armagetronad.org")
327 (synopsis "Tron clone in 3D")
328 (description "Armagetron Advanced is a multiplayer game in 3d that
329 attempts to emulate and expand on the lightcycle sequence from the movie Tron.
330 It's an old school arcade game slung into the 21st century. Highlights
331 include a customizable playing arena, HUD, unique graphics, and AI bots. For
332 the more advanced player there are new game modes and a wide variety of
333 physics settings to tweak as well.")
334 (license license:gpl2+)))
335
336 (define-public bastet
337 (package
338 (name "bastet")
339 (version "0.43.2")
340 (source
341 (origin
342 (method git-fetch)
343 (uri (git-reference
344 (url "https://github.com/fph/bastet.git")
345 (commit version)))
346 (file-name (git-file-name name version))
347 (sha256
348 (base32 "09kamxapm9jw9przpsgjfg33n9k94bccv65w95dakj0br33a75wn"))
349 (patches
350 (search-patches "bastet-change-source-of-unordered_set.patch"))))
351 (build-system gnu-build-system)
352 (arguments
353 `(#:make-flags
354 (list (string-append "CXXFLAGS=-I"
355 (assoc-ref %build-inputs "boost") "/include"))
356 #:phases
357 (modify-phases %standard-phases
358 (delete 'configure) ; no configure script
359 (replace 'check
360 ;; The 'Test' target builds the tests, but doesn't actually run them.
361 (lambda* (#:key make-flags #:allow-other-keys)
362 (apply invoke "make" "Test" make-flags)
363 (setenv "HOME" ".")
364 (invoke "./Test")))
365 (replace 'install
366 (lambda* (#:key outputs #:allow-other-keys)
367 (let* ((out (assoc-ref outputs "out"))
368 (share (string-append out "/share"))
369 (hicolor (string-append share "/icons/hicolor")))
370 (install-file "bastet"
371 (string-append out "/bin"))
372
373 (install-file "bastet.desktop"
374 (string-append share "/applications"))
375 (install-file "bastet.svg"
376 (string-append hicolor "/scalable/apps"))
377
378 (install-file "bastet.appdata.xml"
379 (string-append share "/appdata"))
380
381 (install-file "bastet.6"
382 (string-append out "/share/man/man6"))
383 #t))))))
384 (native-inputs
385 `(("hicolor-icon-theme" ,hicolor-icon-theme)))
386 (inputs
387 `(("boost" ,boost)
388 ("ncurses" ,ncurses)))
389 (home-page "https://fph.altervista.org/prog/bastet.html")
390 (synopsis "Antagonistic Tetris-style falling brick game for text terminals")
391 (description
392 "Bastet (short for Bastard Tetris) is a simple ncurses-based falling brick
393 game. Unlike normal Tetris, Bastet does not choose the next brick at random.
394 Instead, it uses a special algorithm to choose the worst brick possible.
395
396 Playing bastet can be a painful experience, especially if you usually make
397 canyons and wait for the long I-shaped block to clear four rows at a time.")
398 (license license:gpl3+)))
399
400 (define-public blobwars
401 (package
402 (name "blobwars")
403 (version "2.00")
404 (source
405 (origin
406 (method url-fetch)
407 (uri (string-append "mirror://sourceforge/blobwars/"
408 "blobwars-" version ".tar.gz"))
409 (sha256
410 (base32 "16aagvkx6azf75gm5kaa94bh5npydvhqp3fvdqyfsanzdjgjf1n4"))))
411 (build-system gnu-build-system)
412 (arguments
413 `(#:tests? #f ;no test
414 #:make-flags
415 (let ((out (assoc-ref %outputs "out")))
416 (list (string-append "PREFIX=" out)
417 (string-append "BINDIR=" out "/bin/")
418 "USEPAK=1"
419 "RELEASE=1"))
420 #:phases
421 (modify-phases %standard-phases
422 (add-after 'unpack 'werror-begone
423 (lambda _
424 (substitute* "Makefile" (("-Werror") ""))
425 #t))
426 (delete 'configure)))) ;no configure script
427 (native-inputs
428 `(("gettext" ,gettext-minimal)
429 ("pkg-config" ,pkg-config)))
430 (inputs
431 `(("hicolor-icon-theme" ,hicolor-icon-theme)
432 ("sdl" ,(sdl-union (list sdl2
433 sdl2-image
434 sdl2-mixer
435 sdl2-ttf
436 sdl2-net)))))
437 (home-page "https://sourceforge.net/projects/blobwars/")
438 (synopsis "Platform action game featuring a blob with a lot of weapons")
439 (description "Blobwars: Metal Blob Solid is a 2D platform game, the first
440 in the Blobwars series. You take on the role of a fearless Blob agent. Your
441 mission is to infiltrate various enemy bases and rescue as many MIAs as
442 possible, while battling many vicious aliens.")
443 (license (list license:gpl2 ; For code and graphics
444 license:cc0 ; Music and sounds have specific licenses
445 license:cc-by3.0 ; see /doc/readme
446 license:cc-by-sa3.0
447 license:lgpl2.1+
448 license:bsd-2))))
449
450 (define-public cataclysm-dda
451 (package
452 (name "cataclysm-dda")
453 (version "0.E")
454 (source
455 (origin
456 (method git-fetch)
457 (uri (git-reference
458 (url "https://github.com/CleverRaven/Cataclysm-DDA.git")
459 (commit version)))
460 (sha256
461 (base32 "0pbi0fw37zimzdklfj58s1ql0wlqq7dy6idkcsib3hn910ajaxan"))
462 (file-name (git-file-name name version))))
463 (build-system gnu-build-system)
464 (arguments
465 '(#:make-flags
466 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
467 "USE_HOME_DIR=1" "DYNAMIC_LINKING=1" "RELEASE=1"
468 "LOCALIZE=1" "LANGUAGES=all")
469 #:phases
470 (modify-phases %standard-phases
471 (delete 'configure)
472 (add-after 'build 'build-tiles
473 (lambda* (#:key make-flags outputs #:allow-other-keys)
474 ;; Change prefix directory and enable tile graphics and sound.
475 (apply invoke "make" "TILES=1" "SOUND=1"
476 (string-append "PREFIX="
477 (assoc-ref outputs "tiles"))
478 (cdr make-flags))))
479 (add-after 'install 'install-tiles
480 (lambda* (#:key make-flags outputs #:allow-other-keys)
481 (apply invoke "make" "install" "TILES=1" "SOUND=1"
482 (string-append "PREFIX="
483 (assoc-ref outputs "tiles"))
484 (cdr make-flags)))))
485 ;; TODO: Add libtap++ from https://github.com/cbab/libtappp as a native
486 ;; input in order to support tests.
487 #:tests? #f))
488 (outputs '("out"
489 "tiles")) ;for tile graphics and sound support
490 (native-inputs
491 `(("gettext" ,gettext-minimal)
492 ("pkg-config" ,pkg-config)))
493 (inputs
494 `(("freetype" ,freetype)
495 ("libogg" ,libogg)
496 ("libvorbis" ,libvorbis)
497 ("ncurses" ,ncurses)
498 ("sdl2" ,sdl2)
499 ("sdl2-image" ,sdl2-image)
500 ("sdl2-ttf" ,sdl2-ttf)
501 ("sdl2-mixer" ,sdl2-mixer)))
502 (home-page "https://cataclysmdda.org/")
503 (synopsis "Survival horror roguelike video game")
504 (description
505 "Cataclysm: Dark Days Ahead (or \"DDA\" for short) is a roguelike set
506 in a post-apocalyptic world. Struggle to survive in a harsh, persistent,
507 procedurally generated world. Scavenge the remnants of a dead civilization
508 for food, equipment, or, if you are lucky, a vehicle with a full tank of gas
509 to get you out of Dodge. Fight to defeat or escape from a wide variety of
510 powerful monstrosities, from zombies to giant insects to killer robots and
511 things far stranger and deadlier, and against the others like yourself, that
512 want what you have.")
513 (license license:cc-by-sa3.0)))
514
515 (define-public corsix-th
516 (package
517 (name "corsix-th")
518 (version "0.63")
519 (source
520 (origin
521 (method git-fetch)
522 (uri (git-reference
523 (url "https://github.com/CorsixTH/CorsixTH.git")
524 (commit (string-append "v" version))))
525 (file-name (git-file-name name version))
526 (sha256
527 (base32 "1rkyk8g55xny276s0hr5k8mq6f4nzz56d3k2mp09dzfymrqb8hgi"))))
528 (build-system cmake-build-system)
529 (arguments
530 `(#:phases
531 (modify-phases %standard-phases
532 (add-after 'install 'wrap-binary
533 (lambda _
534 ;; Set Lua module paths and default MIDI soundfont on startup.
535 (let* ((out (assoc-ref %outputs "out"))
536 (fluid (assoc-ref %build-inputs "fluid-3"))
537 (lua-version ,(version-major+minor (package-version lua)))
538 (lua-cpath
539 (map (lambda (lib)
540 (string-append
541 (assoc-ref %build-inputs (string-append "lua-" lib))
542 "/lib/lua/" lua-version "/?.so"))
543 '("filesystem" "lpeg"))))
544 (wrap-program (string-append out "/bin/corsix-th")
545 `("LUA_CPATH" ";" = ,lua-cpath)
546 `("SDL_SOUNDFONTS" ":" suffix
547 (,(string-append fluid "/share/soundfonts/FluidR3Mono_GM.sf3")))))
548 #t)))
549 #:tests? #f)) ; TODO need busted package to run tests
550 ;; Omit Lua-Socket dependency to disable automatic updates.
551 (inputs
552 `(("ffmpeg" ,ffmpeg)
553 ("fluid-3" ,fluid-3)
554 ("freetype" ,freetype)
555 ("lua" ,lua)
556 ("lua-filesystem" ,lua-filesystem)
557 ("lua-lpeg" ,lua-lpeg)
558 ("sdl2" ,sdl2)
559 ("sdl2-mixer" ,sdl2-mixer)))
560 (home-page "https://corsixth.com")
561 (synopsis "Implementation of the @i{Theme Hospital} game engine")
562 (description
563 "This package provides a reimplementation of the 1997 Bullfrog business
564 simulation game @i{Theme Hospital}. As well as faithfully recreating the
565 original engine, CorsixTH adds support for high resolutions, custom levels and
566 more. This package does @emph{not} provide the game assets.")
567 (license (list
568 license:expat ; main license
569 license:bsd-3)))) ; CorsixTH/Src/random.c
570
571 (define-public cowsay
572 (package
573 (name "cowsay")
574 (version "3.04")
575 (source (origin
576 (method git-fetch)
577 (uri (git-reference
578 (url "https://github.com/tnalpgge/rank-amateur-cowsay.git")
579 (commit (string-append name "-" version))))
580 (file-name (git-file-name name version))
581 (sha256
582 (base32
583 "06455kq37hvq1xb7adyiwrx0djs50arsxvjgixyxks16lm1rlc7n"))))
584 (build-system gnu-build-system)
585 (arguments
586 `(#:phases
587 (modify-phases %standard-phases
588 (delete 'configure) ; no configure script
589 (delete 'build) ; nothing to be built
590 (replace 'install
591 (lambda* (#:key outputs #:allow-other-keys)
592 (invoke "sh" "install.sh"
593 (assoc-ref outputs "out"))))
594 (delete 'check)
595 (add-after 'install 'check
596 (lambda* (#:key outputs #:allow-other-keys)
597 (invoke (string-append (assoc-ref outputs "out")
598 "/bin/cowsay")
599 "We're done!"))))))
600 (inputs
601 `(("perl" ,perl)))
602 (home-page (string-append "https://web.archive.org/web/20071026043648/"
603 "http://www.nog.net:80/~tony/warez/cowsay.shtml"))
604 (synopsis "Speaking cow text filter")
605 (description "Cowsay is basically a text filter. Send some text into it,
606 and you get a cow saying your text. If you think a talking cow isn't enough,
607 cows can think too: all you have to do is run @command{cowthink}. If you're
608 tired of cows, a variety of other ASCII-art messengers are available.")
609 (license license:gpl3+)))
610
611 (define-public lolcat
612 (let ((commit "35dca3d0a381496d7195cd78f5b24aa7b62f2154")
613 (revision "0"))
614 (package
615 (name "lolcat")
616 (version (git-version "1.0" revision commit))
617 (source
618 (origin
619 (method git-fetch)
620 (uri (git-reference
621 (url "https://github.com/jaseg/lolcat.git")
622 (commit commit)))
623 (sha256
624 (base32
625 "0jjbkqcc2ikjxd1xgdyv4rb0vsw218181h89f2ywg29ffs3ypd8g"))
626 (file-name (git-file-name name version))))
627 (build-system gnu-build-system)
628 (arguments
629 `(#:tests? #f ;; no check target
630 #:make-flags (list "CC=gcc")
631 #:phases
632 (modify-phases %standard-phases
633 (delete 'bootstrap)
634 (delete 'configure)
635 (replace 'install
636 (lambda* (#:key outputs #:allow-other-keys)
637 (let* ((out (assoc-ref outputs "out"))
638 (dest (string-append out "/bin")))
639 (mkdir-p dest)
640 (install-file "lolcat" dest)
641 (install-file "censor" dest)
642 #t))))))
643 (home-page "https://github.com/jaseg/lolcat")
644 (synopsis "Rainbow coloring effect for text console display")
645 (description "@command{lolcat} concatenates files and streams like
646 regular @command{cat}, but it also adds terminal escape codes between
647 characters and lines resulting in a rainbow effect.")
648 (license license:wtfpl2))))
649
650 (define-public foobillard++
651 ;; Even though this latest revision is old already, stable release is
652 ;; lagging way behind it, and has issues with textures rendering.
653 (let ((svn-revision 170))
654 (package
655 (name "foobillard++")
656 (version (string-append "3.43-r" (number->string svn-revision)))
657 (source
658 (origin
659 (method svn-fetch)
660 (uri (svn-reference
661 (url "svn://svn.code.sf.net/p/foobillardplus/code/")
662 (revision svn-revision)))
663 (file-name (git-file-name name version))
664 (sha256
665 (base32 "00b693ys5zvzjbjzzj3dqfzm5xw64gwjf9m8qv6bkmf0klbhmayk"))
666 (patches
667 (search-patches "foobillard++-pkg-config.patch"))
668 (modules '((guix build utils)))
669 (snippet
670 '(begin
671 ;; Unfortunately, the game includes background music with
672 ;; a non-commercial clause. Delete it.
673 (for-each delete-file (find-files "data/music" "\\.ogg$"))
674 #t))))
675 (build-system gnu-build-system)
676 (arguments
677 `(#:configure-flags
678 (list
679 ;; Install data in a less exotic location.
680 (string-append "--prefix=" (assoc-ref %outputs "out") "/share")
681 ;; Prevent a build error about undefined trigonometric functions.
682 "--enable-fastmath=no")
683 #:phases
684 (modify-phases %standard-phases
685 (add-after 'unpack 'fix-makefile
686 ;; Remove hard-coded directories. Also fix installation
687 ;; rule: it tries to move around non-existent files or
688 ;; files already moved.
689 (lambda* (#:key outputs #:allow-other-keys)
690 (substitute* "Makefile.am"
691 (("/usr") (assoc-ref outputs "out"))
692 (("cp .*?/foobillardplus\\.desktop.*") "")
693 (("cp .*?/foobillardplus\\.(png|xbm) \\$\\(datarootdir\\).*")
694 ""))
695 #t))
696 (add-after 'unpack 'unbundle-font
697 ;; XXX: The package ships with LinBiolinum_aSB.ttf and
698 ;; LinBiolinum_aS.ttf, which are not provided by
699 ;; `font-linuxlibertine' package. Therefore, we cannot replace
700 ;; them yet.
701 (lambda* (#:key inputs #:allow-other-keys)
702 (let ((dejavu (string-append (assoc-ref inputs "font-dejavu")
703 "/share/fonts/truetype/")))
704 (with-directory-excursion "data"
705 (for-each (lambda (f)
706 (delete-file f)
707 (symlink (string-append dejavu f) f))
708 '("DejaVuSans-Bold.ttf" "DejaVuSans.ttf"))))
709 #t))
710 (replace 'bootstrap
711 (lambda _
712 (invoke "aclocal" "--force")
713 (invoke "autoconf" "-f")
714 (invoke "autoheader" "-f")
715 (invoke "automake" "-a" "-c" "-f")))
716 (add-before 'build 'prepare-build
717 ;; Set correct environment for SDL.
718 (lambda* (#:key inputs #:allow-other-keys)
719 (setenv "CPATH"
720 (string-append (assoc-ref inputs "sdl")
721 "/include/SDL:"
722 (or (getenv "CPATH") "")))
723 #t))
724 (add-before 'build 'fix-settings-directory
725 ;; Hide foobillardplus settings directory in $HOME.
726 (lambda _
727 (substitute* "src/history.c"
728 (("/foobillardplus-data") "/.foobillardplus"))
729 #t))
730 (add-before 'install 'create-directories
731 ;; Install process does not create directories before
732 ;; trying to move file in it.
733 (lambda* (#:key outputs #:allow-other-keys)
734 (let ((out (assoc-ref outputs "out")))
735 (mkdir-p (string-append out "/share/icons"))
736 (mkdir-p (string-append out "/share/applications")))
737 #t))
738 (add-after 'install 'symlink-executable
739 ;; Symlink executable to $out/bin.
740 (lambda* (#:key outputs #:allow-other-keys)
741 (let* ((out (assoc-ref outputs "out"))
742 (bin (string-append out "/bin")))
743 (mkdir-p bin)
744 (with-directory-excursion bin
745 (symlink "../share/foobillardplus/bin/foobillardplus"
746 "foobillardplus"))
747 #t))))))
748 (native-inputs
749 `(("autoconf" ,autoconf)
750 ("automake" ,automake)
751 ("pkg-config" ,pkg-config)))
752 (inputs
753 `(("font-dejavu" ,font-dejavu)
754 ("freetype" ,freetype)
755 ("glu" ,glu)
756 ("libpng" ,libpng)
757 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-net)))))
758 (home-page "http://foobillardplus.sourceforge.net/")
759 (synopsis "3D billiard game")
760 (description "FooBillard++ is an advanced 3D OpenGL billiard game
761 based on the original foobillard 3.0a sources from Florian Berger.
762 You can play it with one or two players or against the computer.
763
764 The game features:
765
766 @itemize
767 @item Wood paneled table with gold covers and gold diamonds.
768 @item Reflections on balls.
769 @item Zoom in and out, rotation, different angles and bird's eye view.
770 @item Different game modes: 8 or 9-ball, Snooker or Carambole.
771 @item Tournaments. Compete against other players.
772 @item Animated cue with strength and eccentric hit adjustment.
773 @item Jump shots and snipping.
774 @item Realistic gameplay and billiard sounds.
775 @item Red-Green stereo.
776 @item And much more.
777 @end itemize")
778 (license (list license:gpl2 license:silofl1.1)))))
779
780 (define-public freedoom
781 (package
782 (name "freedoom")
783 (version "0.12.1")
784 (source
785 (origin
786 (method git-fetch)
787 (uri (git-reference
788 (url "https://github.com/freedoom/freedoom.git")
789 (commit (string-append "v" version))))
790 (file-name (git-file-name name version))
791 (sha256
792 (base32 "1mq60lfwaaxmch7hsz8403pwafnlsmsd5z2df2j77ppwndwcrypb"))))
793 (build-system gnu-build-system)
794 (arguments
795 '(#:make-flags
796 (list (string-append "prefix=" (assoc-ref %outputs "out")))
797 #:tests? #f ; no check target
798 #:phases
799 (modify-phases %standard-phases
800 (delete 'bootstrap)
801 (replace 'configure
802 (lambda* (#:key inputs outputs #:allow-other-keys)
803 (let* ((freedoom (assoc-ref outputs "out"))
804 (wad-dir (string-append freedoom "/share/games/doom")))
805 ;; Make sure that the install scripts know where to find
806 ;; the appropriate WAD files.
807 (substitute* "dist/freedoom"
808 (("IWAD=freedm.wad")
809 (string-append "IWAD=" wad-dir "/freedm.wad"))
810 (("IWAD=freedoom1.wad")
811 (string-append "IWAD=" wad-dir "/freedoom1.wad"))
812 (("IWAD=freedoom2.wad")
813 (string-append "IWAD=" wad-dir "/freedoom2.wad")))
814 #t))))))
815 (native-inputs
816 `(("asciidoc" ,asciidoc)
817 ("deutex" ,deutex)
818 ("python" ,python)
819 ("python-pillow" ,python-pillow)))
820 (home-page "https://freedoom.github.io/")
821 (synopsis "Free content game based on the Doom engine")
822 (native-search-paths
823 (list (search-path-specification
824 (variable "DOOMWADDIR")
825 (files '("share/games/doom")))
826 (search-path-specification
827 (variable "DOOMWADPATH")
828 (files '("share/games/doom")))))
829 (description
830 "The Freedoom project aims to create a complete free content first person
831 shooter game. Freedoom by itself is just the raw material for a game: it must
832 be paired with a compatible game engine (such as @code{prboom-plus}) to be
833 played. Freedoom complements the Doom engine with free levels, artwork, sound
834 effects and music to make a completely free game.")
835 (license license:bsd-3)))
836
837 (define-public freedroidrpg
838 (package
839 (name "freedroidrpg")
840 (version "0.16.1")
841 (source
842 (origin
843 (method url-fetch)
844 (uri (string-append "http://ftp.osuosl.org/pub/freedroid/"
845 "freedroidRPG-" (version-major+minor version) "/"
846 "freedroidRPG-" version ".tar.gz"))
847 (sha256
848 (base32 "0n4kn38ncmcy3lrxmq8fjry6c1z50z4q1zcqfig0j4jb0dsz2va2"))))
849 (build-system gnu-build-system)
850 (arguments
851 `(#:configure-flags
852 (list
853 (string-append "CFLAGS="
854 "-I" (assoc-ref %build-inputs "sdl-gfx") "/include/SDL "
855 "-I" (assoc-ref %build-inputs "sdl-image") "/include/SDL "
856 "-I" (assoc-ref %build-inputs "sdl-mixer") "/include/SDL")
857 "--enable-opengl")
858 ;; FIXME: the test suite fails with the following error output:
859 ;; 4586 Segmentation fault env SDL_VIDEODRIVER=dummy \
860 ;; SDL_AUDIODRIVER=dummy ./src/freedroidRPG -nb text
861 #:tests? #f))
862 (native-inputs
863 `(("pkg-config" ,pkg-config)))
864 (inputs
865 `(("glu" ,glu)
866 ("libjpeg" ,libjpeg)
867 ("libogg" ,libogg)
868 ("libpng" ,libpng)
869 ("libvorbis" ,libvorbis)
870 ("mesa" ,mesa)
871 ("python" ,python-wrapper)
872 ("sdl" ,sdl)
873 ("sdl-gfx" ,sdl-gfx)
874 ("sdl-image" ,sdl-image)
875 ("sdl-mixer" ,sdl-mixer)
876 ("zlib" ,zlib)))
877 (home-page "http://www.freedroid.org/")
878 (synopsis "Isometric role-playing game against killer robots")
879 (description
880 "Freedroid RPG is an @dfn{RPG} (Role-Playing Game) with isometric graphics.
881 The game tells the story of a world destroyed by a conflict between robots and
882 their human masters. To restore peace to humankind, the player must complete
883 numerous quests while fighting off rebelling robots---either by taking control
884 of them, or by simply blasting them to pieces with melee and ranged weapons in
885 real-time combat.")
886 (license (list license:expat ; lua/
887 license:gpl3 ; src/gen_savestruct.py
888 license:gpl2+)))) ; the rest
889
890 (define-public golly
891 (package
892 (name "golly")
893 (version "3.3")
894 (source (origin
895 (method url-fetch)
896 (uri (string-append "mirror://sourceforge/golly/golly/golly-"
897 version "/golly-" version
898 "-src.tar.gz"))
899 (sha256
900 (base32
901 "1j3ksnar4rdam4xiyspgyrs1pifbvxfxkrn65brkwxpx39mpgzc8"))))
902 (build-system gnu-build-system)
903 (arguments
904 '(#:make-flags (list "CC=gcc"
905 (string-append "GOLLYDIR="
906 (assoc-ref %outputs "out")
907 "/share/golly"))
908 #:tests? #f ; no check target
909 #:phases
910 (modify-phases %standard-phases
911 (replace 'configure
912 (lambda* (#:key inputs #:allow-other-keys)
913 ;; For some reason, setting the PYTHON_SHLIB make flag doesn't
914 ;; properly set the path to the Python shared library. This
915 ;; substitution acheives the same end by different means.
916 (substitute* "gui-wx/wxprefs.cpp"
917 (("pythonlib = wxT\\(STRINGIFY\\(PYTHON_SHLIB\\)\\)")
918 (string-append "pythonlib = \""
919 (assoc-ref inputs "python")
920 "/lib/libpython-2.7.so\"")))
921 #t))
922 (replace 'build
923 (lambda* (#:key make-flags outputs #:allow-other-keys)
924 (with-directory-excursion "gui-wx"
925 (apply invoke `("make" ,@make-flags "-f" "makefile-gtk")))))
926 (replace 'install
927 (lambda* (#:key outputs #:allow-other-keys)
928 (let* ((out (assoc-ref outputs "out"))
929 (bin (string-append out "/bin"))
930 (doc (string-append out "/share/doc/golly"))
931 (pixmaps (string-append out "/share/pixmaps"))
932 (share (string-append out "/share/golly")))
933 (for-each (lambda (binary)
934 (install-file binary bin))
935 '("bgolly" "golly"))
936 (for-each (lambda (document)
937 (install-file
938 (string-append "docs/" document ".html")
939 doc))
940 '("License" "ReadMe" "ToDo"))
941 (install-file "gui-wx/icons/appicon.xpm" pixmaps)
942 (for-each (lambda (folder)
943 (copy-recursively
944 folder
945 (string-append share "/" folder)))
946 '("Help" "Patterns" "Rules" "Scripts")))
947 #t)))))
948 (native-inputs
949 `(("lua" ,lua)))
950 (inputs
951 `(("glu" ,glu)
952 ("mesa" ,mesa)
953 ("python" ,python-2)
954 ("wxwidgets" ,wxwidgets-gtk2)
955 ("zlib" ,zlib)))
956 (home-page "http://golly.sourceforge.net/")
957 (synopsis "Software for exploring cellular automata")
958 (description
959 "Golly simulates Conway's Game of Life and many other types of cellular
960 automata. The following features are available:
961 @enumerate
962 @item Support for bounded and unbounded universes, with cells of up to 256
963 states.
964 @item Support for multiple algorithms, including Bill Gosper's Hashlife
965 algorithm.
966 @item Loading patterns from BMP, PNG, GIF and TIFF image files.
967 @item Reading RLE, macrocell, Life 1.05/1.06, dblife and MCell files.
968 @item Scriptable via Lua or Python.
969 @item Extracting patterns, rules and scripts from zip files.
970 @item Downloading patterns, rules and scripts from online archives.
971 @item Pasting patterns from the clipboard.
972 @item Unlimited undo/redo.
973 @item Configurable keyboard shortcuts.
974 @item Auto fit option to keep patterns within the view.
975 @end enumerate")
976 (license license:gpl2+)))
977
978 (define-public julius
979 (package
980 (name "julius")
981 (version "1.3.0")
982 (source
983 (origin
984 (method git-fetch)
985 (uri (git-reference
986 (url "https://github.com/bvschaik/julius.git")
987 (commit (string-append "v" version))))
988 (file-name (git-file-name name version))
989 (sha256
990 (base32 "1ws5lmwdhla73676fj0w26v859n47s0wyxa0mgd0dmkx0x91qriy"))))
991 (build-system cmake-build-system)
992 (inputs
993 `(("sdl2" ,sdl2)
994 ("sdl2-mixer" ,sdl2-mixer)))
995 (home-page "https://github.com/bvschaik/julius")
996 (synopsis "Re-implementation of Caesar III game engine")
997 (description
998 "Engine for Caesar III, a city-building real-time strategy game.
999 Julius includes some UI enhancements while preserving the logic (including
1000 bugs) of the original game, so that saved games are compatible. This package
1001 does not include game data.")
1002 (license (list license:agpl3
1003 license:expat ; ext/dirent
1004 license:zlib)))) ; ext/tinyfiledialogs
1005
1006 (define-public meandmyshadow
1007 (package
1008 (name "meandmyshadow")
1009 (version "0.5a")
1010 (source (origin
1011 (method url-fetch)
1012 (uri (string-append "mirror://sourceforge/meandmyshadow/"
1013 version "/meandmyshadow-" version
1014 "-src.tar.gz"))
1015 (sha256
1016 (base32
1017 "0i98v6cgmpsxy7mbb0s2y6f6qq6mkwzk2nrv1nz39ncf948aky2h"))))
1018 (build-system cmake-build-system)
1019 (arguments
1020 `(#:tests? #f)) ; there are no tests
1021 (native-inputs
1022 `(("pkg-config" ,pkg-config)))
1023 (inputs
1024 `(("curl" ,curl)
1025 ("libarchive" ,libarchive)
1026 ("lua" ,lua)
1027 ("sdl" ,(sdl-union (list sdl2
1028 sdl2-image
1029 sdl2-mixer
1030 sdl2-ttf)))))
1031 (home-page "https://acmepjz.github.io/meandmyshadow/")
1032 (synopsis "Puzzle/platform game")
1033 (description "Me and My Shadow is a puzzle/platform game in which you try
1034 to reach the exit by solving puzzles. Spikes, moving blocks, fragile blocks
1035 and much more stand between you and the exit. Record your moves and let your
1036 shadow mimic them to reach blocks you couldn't reach alone.")
1037 (license license:gpl3+)))
1038
1039 (define-public opensurge
1040 (package
1041 (name "opensurge")
1042 (version "0.5.1.2")
1043 (source
1044 (origin
1045 (method git-fetch)
1046 (uri (git-reference
1047 (url "https://github.com/alemart/opensurge.git")
1048 (commit (string-append "v" version))))
1049 (file-name (git-file-name name version))
1050 (sha256
1051 (base32 "0ih7hlqjnp9rv0m4lqf7c0s1ai532way5i4pk45jq1gqm8325dbv"))))
1052 (build-system cmake-build-system)
1053 (arguments
1054 `(#:tests? #f ;there are no tests
1055 #:configure-flags
1056 (let* ((out (assoc-ref %outputs "out"))
1057 (share (string-append out "/share")))
1058 (list (string-append "-DCMAKE_INSTALL_PREFIX=" out "/bin")
1059 (string-append "-DGAME_DATADIR=" share "/" ,name)
1060 (string-append "-DDESKTOP_ENTRY_PATH=" share "/applications")
1061 (string-append "-DDESKTOP_ICON_PATH=" share "/pixmaps")
1062 (string-append "-DDESKTOP_METAINFO_PATH=" share "/metainfo")))
1063 #:phases
1064 (modify-phases %standard-phases
1065 (add-after 'unpack 'fix-xdg-open-path
1066 (lambda* (#:key inputs #:allow-other-keys)
1067 ;; Look for xdg-open in the store.
1068 (substitute* "src/core/web.c"
1069 (("/usr(/bin/xdg-open)" _ bin)
1070 (string-append (assoc-ref inputs "xdg-utils") bin)))
1071 #t))
1072 (add-after 'unpack 'unbundle-fonts
1073 (lambda* (#:key inputs #:allow-other-keys)
1074 ;; Replace bundled Roboto fonts with links to the store.
1075 (with-directory-excursion "fonts"
1076 (let ((roboto-dir (string-append
1077 (assoc-ref inputs "font-google-roboto")
1078 "/share/fonts/truetype/")))
1079 (for-each
1080 (lambda (font)
1081 (delete-file font)
1082 (symlink (string-append roboto-dir font) font))
1083 '("Roboto-Black.ttf" "Roboto-Bold.ttf" "Roboto-Medium.ttf")))
1084 #t))))))
1085 (inputs
1086 `(("allegro" ,allegro)
1087 ("font-google-roboto" ,font-google-roboto)
1088 ("surgescript" ,surgescript)
1089 ("xdg-utils" ,xdg-utils)))
1090 (home-page "https://opensurge2d.org")
1091 (synopsis "2D retro side-scrolling game")
1092 (description "@code{Open Surge} is a 2D retro side-scrolling platformer
1093 inspired by the Sonic games. The player runs at high speeds through each
1094 level while collecting items and avoiding obstacles. The game includes a
1095 built-in level editor.")
1096 (license
1097 ;; Code is under GPL 3+, assets are under various licenses.
1098 ;; See src/misc/credits.c for details.
1099 (list license:gpl3+
1100 license:cc0
1101 license:cc-by3.0
1102 license:cc-by-sa3.0
1103 license:expat
1104 license:public-domain
1105 license:silofl1.1))))
1106
1107 (define-public knights
1108 (package
1109 (name "knights")
1110 (version "025")
1111 (source (origin
1112 (method url-fetch)
1113 (uri (string-append "http://www.knightsgame.org.uk/files/knights_"
1114 version "_src.tar.gz"))
1115 (sha256
1116 (base32
1117 "18vp2ygvn0s0jz8rm585jqf6hjqkam1ximq81k0r9hpmfj7wb88f"))))
1118 (build-system gnu-build-system)
1119 (arguments
1120 '(#:make-flags
1121 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
1122 #:phases
1123 (modify-phases %standard-phases
1124 ;; No configure script.
1125 (delete 'configure))
1126 #:tests? #f)) ;; No check target.
1127 (inputs
1128 `(("boost" ,boost)
1129 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
1130 ("freetype" ,freetype)
1131 ("fontconfig" ,fontconfig)
1132 ("curl" ,curl)))
1133 (native-inputs
1134 `(("pkg-config" ,pkg-config)))
1135 (home-page "http://www.knightsgame.org.uk/")
1136 (synopsis "Multiplayer dungeon game involving knights and quests")
1137 (description "Knights is a multiplayer game involving several knights who
1138 must run around a dungeon and complete various quests. Each game revolves
1139 around a quest – for example, you might have to find some items and carry them
1140 back to your starting point. This may sound easy, but as there are only
1141 enough items in the dungeon for one player to win, you may end up having to
1142 kill your opponents to get their stuff! Other quests involve escaping from
1143 the dungeon, fighting a duel to the death against the enemy knights, or
1144 destroying an ancient book using a special wand.")
1145 ;; This package includes modified sources of lua (X11), enet (Expat), and
1146 ;; guichan (BSD-3). The "Coercri" library is released under the Boost
1147 ;; license. The whole package is released under GPLv3+.
1148 (license license:gpl3+)))
1149
1150 (define-public gnome-chess
1151 (package
1152 (name "gnome-chess")
1153 (version "3.36.0")
1154 (source (origin
1155 (method url-fetch)
1156 (uri (string-append "mirror://gnome/sources/" name "/"
1157 (version-major+minor version) "/"
1158 name "-" version ".tar.xz"))
1159 (sha256
1160 (base32
1161 "1a9fgi749gy1f60vbcyrqqkab9vqs42hji70q73k1xx8rv0agmg0"))))
1162 (build-system meson-build-system)
1163 (arguments
1164 '(#:glib-or-gtk? #t
1165 #:phases
1166 (modify-phases %standard-phases
1167 (add-after 'unpack 'skip-gtk-update-icon-cache
1168 ;; Don't create 'icon-theme.cache'.
1169 (lambda _
1170 (substitute* "meson_post_install.py"
1171 (("gtk-update-icon-cache") "true"))
1172 #t)))))
1173 (inputs
1174 `(("gtk+" ,gtk+)
1175 ("librsvg" ,librsvg)))
1176 (native-inputs
1177 `(("gettext" ,gettext-minimal)
1178 ("glib:bin" ,glib "bin") ; for desktop-file-validate and appstream-util
1179 ("itstool" ,itstool)
1180 ("pkg-config" ,pkg-config)
1181 ("vala" ,vala)))
1182 (home-page "https://wiki.gnome.org/Apps/Chess")
1183 (synopsis "Chess board for GNOME")
1184 (description "GNOME Chess provides a 2D board for playing chess games
1185 against human or computer players. It supports loading and saving games in
1186 Portable Game Notation. To play against a computer, install a chess engine
1187 such as chess or stockfish.")
1188 (license license:gpl3+)))
1189
1190 (define-public gnubg
1191 (package
1192 (name "gnubg")
1193 (version "1.06.002")
1194 (source
1195 (origin
1196 (method url-fetch)
1197 (uri (string-append "mirror://gnu/gnubg/gnubg-release-"
1198 version "-sources.tar.gz"))
1199 (sha256
1200 (base32
1201 "11xwhcli1h12k6rnhhyq4jphzrhfik7i8ah3k32pqw803460n6yf"))))
1202 (build-system gnu-build-system)
1203 (inputs `(("glib" ,glib)
1204 ("readline" ,readline)
1205 ("gtk+" ,gtk+-2)
1206 ("mesa" ,mesa)
1207 ("glu" ,glu)
1208 ("gtkglext" ,gtkglext)
1209 ("sqlite" ,sqlite)
1210 ("libcanberra" ,libcanberra)))
1211 (native-inputs `(("python-2" ,python-2)
1212 ("pkg-config" ,pkg-config)))
1213 (arguments
1214 `(#:phases
1215 (modify-phases %standard-phases
1216 (add-after 'install 'install-desktop-file
1217 (lambda* (#:key outputs #:allow-other-keys)
1218 (let* ((out (assoc-ref outputs "out"))
1219 (apps (string-append out "/share/applications")))
1220 (mkdir-p apps)
1221 (with-output-to-file (string-append apps "/gnubg.desktop")
1222 (lambda _
1223 (format #t
1224 "[Desktop Entry]~@
1225 Name=GNU Backgammon~@
1226 Exec=~a/bin/gnubg -w~@
1227 Icon=gnubg~@
1228 Categories=Game;~@
1229 Terminal=false~@
1230 Type=Application~%"
1231 out))))
1232 #t)))))
1233 (home-page "https://www.gnu.org/software/gnubg/")
1234 (synopsis "Backgammon game")
1235 (description "The GNU backgammon application (also known as \"gnubg\") can
1236 be used for playing, analyzing and teaching the game. It has an advanced
1237 evaluation engine based on artificial neural networks suitable for both
1238 beginners and advanced players. In addition to a command-line interface, it
1239 also features an attractive, 3D representation of the playing board.")
1240 (license license:gpl3+)))
1241
1242 (define-public gnubik
1243 (package
1244 (name "gnubik")
1245 (version "2.4.3")
1246 (source
1247 (origin
1248 (method url-fetch)
1249 (uri (string-append "mirror://gnu/gnubik/gnubik-"
1250 version ".tar.gz"))
1251 (sha256
1252 (base32
1253 "1vlf924mq8hg93bsjj0rzvs0crc6psmlxyc6zn0fr7msnmpx6gib"))))
1254 (build-system gnu-build-system)
1255 (inputs `(("gtk+" ,gtk+-2)
1256 ("mesa" ,mesa)
1257 ("glu" ,glu)
1258 ("libx11" ,libx11)
1259 ("guile" ,guile-2.0)
1260 ("gtkglext" ,gtkglext)))
1261 (native-inputs `(("gettext" ,gettext-minimal)
1262 ("pkg-config" ,pkg-config)))
1263 (home-page "https://www.gnu.org/software/gnubik/")
1264 (synopsis "3d Rubik's cube game")
1265 (description
1266 "GNUbik is a puzzle game in which you must manipulate a cube to make
1267 each of its faces have a uniform color. The game is customizable, allowing
1268 you to set the size of the cube (the default is 3x3) or to change the colors.
1269 You may even apply photos to the faces instead of colors. The game is
1270 scriptable with Guile.")
1271 (license license:gpl3+)))
1272
1273 (define-public gnushogi
1274 (package
1275 (name "gnushogi")
1276 (version "1.4.2")
1277 (source
1278 (origin
1279 (method url-fetch)
1280 (uri (string-append "mirror://gnu/gnushogi/gnushogi-"
1281 version ".tar.gz"))
1282 (sha256
1283 (base32
1284 "0a9bsl2nbnb138lq0h14jfc5xvz7hpb2bcsj4mjn6g1hcsl4ik0y"))))
1285 (arguments `(#:tests? #f)) ;; No check target.
1286 (build-system gnu-build-system)
1287 (home-page "https://www.gnu.org/software/gnushogi/")
1288 (synopsis "The game of Shogi (Japanese chess)")
1289 (description "GNU Shogi is a program that plays the game Shogi (Japanese
1290 Chess). It is similar to standard chess but this variant is far more complicated.")
1291 (license license:gpl3+)))
1292
1293 (define-public ltris
1294 (package
1295 (name "ltris")
1296 (version "1.0.19")
1297 (source
1298 (origin
1299 (method url-fetch)
1300 (uri (string-append "http://prdownloads.sourceforge.net/lgames/"
1301 "ltris-" version ".tar.gz"))
1302 (sha256
1303 (base32
1304 "1895wv1fqklrj4apkz47rnkcfhfav7zjknskw6p0886j35vrwslg"))))
1305 (build-system gnu-build-system)
1306 (arguments
1307 '(;; The code in LTris uses traditional GNU semantics for inline functions
1308 #:configure-flags '("CFLAGS=-fgnu89-inline")
1309 #:phases
1310 (modify-phases %standard-phases
1311 (add-after 'set-paths 'set-sdl-paths
1312 (lambda* (#:key inputs #:allow-other-keys)
1313 (setenv "CPATH"
1314 (string-append (assoc-ref inputs "sdl-union")
1315 "/include/SDL:"
1316 (or (getenv "CPATH") "")))
1317 #t)))))
1318 (inputs
1319 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))))
1320 (home-page "http://lgames.sourceforge.net/LTris/")
1321 (synopsis "Tetris clone based on the SDL library")
1322 (description
1323 "LTris is a tetris clone: differently shaped blocks are falling down the
1324 rectangular playing field and can be moved sideways or rotated by 90 degree
1325 units with the aim of building lines without gaps which then disappear (causing
1326 any block above the deleted line to fall down). LTris has three game modes: In
1327 Classic you play until the stack of blocks reaches the top of the playing field
1328 and no new blocks can enter. In Figures the playing field is reset to a new
1329 figure each level and later on tiles and lines suddenly appear. In Multiplayer
1330 up to three players (either human or CPU) compete with each other sending
1331 removed lines to all opponents. There is also a Demo mode in which you can
1332 watch your CPU playing while enjoying a cup of tea!")
1333 (license license:gpl2+)))
1334
1335 (define-public nethack
1336 (package
1337 (name "nethack")
1338 (version "3.6.6")
1339 (source
1340 (origin
1341 (method url-fetch)
1342 (uri
1343 (string-append "https://www.nethack.org/download/" version "/nethack-"
1344 (string-join (string-split version #\.) "") "-src.tgz"))
1345 (sha256
1346 (base32 "1liyckjp34j354qnxc1zn9730lh1p2dabrg1hap24z6xnqx0rpng"))))
1347 (native-inputs
1348 `(("bison" ,bison)
1349 ("flex" ,flex)))
1350 (inputs
1351 `(("ncurses" ,ncurses)
1352 ("less" ,less)))
1353 (build-system gnu-build-system)
1354 (arguments
1355 '(#:make-flags
1356 `(,(string-append "PREFIX=" (assoc-ref %outputs "out")))
1357 #:phases
1358 (modify-phases %standard-phases
1359 (add-before 'configure 'patch-paths
1360 (lambda _
1361 (substitute* "sys/unix/nethack.sh"
1362 (("^ *cd .*$") ""))
1363 (substitute* "sys/unix/Makefile.utl"
1364 (("^YACC *=.*$") "YACC = bison -y\n")
1365 (("^LEX *=.*$") "LEX = flex\n")
1366 (("^# CC = gcc") "CC = gcc"))
1367 (substitute* "sys/unix/hints/linux"
1368 (("/bin/gzip") (string-append
1369 (assoc-ref %build-inputs "gzip")
1370 "/bin/gzip"))
1371 (("^WINTTYLIB=.*") "WINTTYLIB=-lncurses"))
1372 (substitute* "include/config.h"
1373 (("^.*define CHDIR.*$") "")
1374 (("^/\\* *#*define *REPRODUCIBLE_BUILD *\\*/")
1375 ;; Honor SOURCE_DATE_EPOCH.
1376 "#define REPRODUCIBLE_BUILD"))
1377
1378 ;; Note: 'makedefs' rejects and ignores dates that are too old
1379 ;; or too new, so we must choose something reasonable here.
1380 (setenv "SOURCE_DATE_EPOCH" "1531865062")
1381
1382 (substitute* "sys/unix/Makefile.src"
1383 (("^# CC = gcc") "CC = gcc"))
1384 #t))
1385 (replace 'configure
1386 (lambda _
1387 (let ((bash (string-append
1388 (assoc-ref %build-inputs "bash")
1389 "/bin/bash")))
1390 (with-directory-excursion "sys/unix"
1391 (substitute* "setup.sh" (("/bin/sh") bash))
1392 (invoke bash "setup.sh" "hints/linux"))
1393 #t)))
1394 (add-after 'install 'fixup-paths
1395 (lambda _
1396 (let* ((output (assoc-ref %outputs "out"))
1397 (nethack-script (string-append output "/bin/nethack")))
1398 (mkdir-p (string-append output "/games/lib/nethackuserdir"))
1399 (for-each
1400 (lambda (file)
1401 (rename-file
1402 (string-append output "/games/lib/nethackdir/" file)
1403 (string-append output "/games/lib/nethackuserdir/"
1404 file)))
1405 '("xlogfile" "logfile" "perm" "record" "save"))
1406 (mkdir-p (string-append output "/bin"))
1407 (call-with-output-file nethack-script
1408 (lambda (port)
1409 (format port "#!~a/bin/sh
1410 PATH=~a:$PATH
1411 if [ ! -d ~~/.config/nethack ]; then
1412 mkdir -p ~~/.config/nethack
1413 cp -r ~a/games/lib/nethackuserdir/* ~~/.config/nethack
1414 chmod -R +w ~~/.config/nethack
1415 fi
1416
1417 RUNDIR=$(mktemp -d)
1418
1419 cleanup() {
1420 rm -rf $RUNDIR
1421 }
1422 trap cleanup EXIT
1423
1424 cd $RUNDIR
1425 for i in ~~/.config/nethack/*; do
1426 ln -s $i $(basename $i)
1427 done
1428 for i in ~a/games/lib/nethackdir/*; do
1429 ln -s $i $(basename $i)
1430 done
1431 ~a/games/nethack"
1432 (assoc-ref %build-inputs "bash")
1433 (list->search-path-as-string
1434 (list
1435 (string-append
1436 (assoc-ref %build-inputs "coreutils") "/bin")
1437 (string-append
1438 (assoc-ref %build-inputs "less") "/bin"))
1439 ":")
1440 output
1441 output
1442 output)))
1443 (chmod nethack-script #o555)
1444 #t)))
1445 (delete 'check))))
1446 (home-page "https://nethack.org")
1447 (synopsis "Classic dungeon crawl game")
1448 (description "NetHack is a single player dungeon exploration game that runs
1449 on a wide variety of computer systems, with a variety of graphical and text
1450 interfaces all using the same game engine. Unlike many other Dungeons &
1451 Dragons-inspired games, the emphasis in NetHack is on discovering the detail of
1452 the dungeon and not simply killing everything in sight - in fact, killing
1453 everything in sight is a good way to die quickly. Each game presents a
1454 different landscape - the random number generator provides an essentially
1455 unlimited number of variations of the dungeon and its denizens to be discovered
1456 by the player in one of a number of characters: you can pick your race, your
1457 role, and your gender.")
1458 (license
1459 (license:fsdg-compatible
1460 "https://nethack.org/common/license.html"))))
1461
1462 (define-public pipewalker
1463 (package
1464 (name "pipewalker")
1465 (version "0.9.4")
1466 (source
1467 (origin
1468 (method url-fetch)
1469 (uri (string-append "http://downloads.sourceforge.net/pipewalker/"
1470 "pipewalker-" version ".tar.gz"))
1471 (sha256
1472 (base32 "1x46wgk0s55562pd96cxagxkn6wpgglq779f9b64ff1k3xzp3myn"))))
1473 (build-system gnu-build-system)
1474 (arguments
1475 `(#:configure-flags
1476 (list (string-append "--docdir=" (assoc-ref %outputs "out")
1477 "/share/doc/" ,name "-" ,version))
1478 #:phases
1479 (modify-phases %standard-phases
1480 (add-after 'configure 'patch-docdir
1481 ;; Makefile.in ignores configure's ‘--docdir=...’ option. Fix that.
1482 (lambda _
1483 (substitute* "Makefile"
1484 (("(pkgdocdatadir = ).*" _ assignment)
1485 (string-append assignment "$(docdir)\n")))
1486 #t)))))
1487 (inputs
1488 `(("libpng" ,libpng)
1489 ("mesa" ,mesa)
1490 ("sdl" ,sdl)))
1491 (home-page "http://pipewalker.sourceforge.net/")
1492 (synopsis "Logical tile puzzle")
1493 (description
1494 "PipeWalker is a simple puzzle game with many diffent themes: connect all
1495 computers to one network server, bring water from a source to the taps, etc.
1496 The underlying mechanism is always the same: you must turn each tile in the
1497 grid in the right direction to combine all components into a single circuit.
1498 Every puzzle has a complete solution, although there may be more than one.")
1499 (license license:gpl3+)))
1500
1501 (define-public prboom-plus
1502 (package
1503 (name "prboom-plus")
1504 (version "2.5.1.4")
1505 (source (origin
1506 (method url-fetch)
1507 (uri (string-append "mirror://sourceforge/prboom-plus/prboom-plus/"
1508 version "/prboom-plus-" version ".tar.gz"))
1509 (sha256
1510 (base32 "151v6nign86m1a2vqz27krsccpc9m4d1jax4y43v2fa82wfj9qp0"))
1511 (modules '((guix build utils)))
1512 (snippet
1513 '(begin
1514 (substitute* "src/version.c"
1515 (("__DATE__") "")
1516 (("__TIME__") ""))
1517 #t))))
1518 (build-system gnu-build-system)
1519 (arguments
1520 '(#:configure-flags '("--disable-cpu-opt")
1521 #:make-flags `(,(string-append "gamesdir="
1522 (assoc-ref %outputs "out") "/bin"))
1523 #:phases
1524 (modify-phases %standard-phases
1525 (add-after 'set-paths 'set-sdl'paths
1526 (lambda* (#:key inputs #:allow-other-keys)
1527 (setenv "CPATH"
1528 (string-append (assoc-ref inputs "sdl-union")
1529 "/include/SDL:"
1530 (or (getenv "CPATH") "")))
1531 #t)))))
1532 (inputs
1533 `(("fluidsynth" ,fluidsynth)
1534 ("glu" ,glu)
1535 ("libmad" ,libmad)
1536 ("libpng" ,libpng)
1537 ("libvorbis" ,libvorbis)
1538 ("pcre" ,pcre)
1539 ("portmidi" ,portmidi)
1540 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-net)))))
1541 (home-page "http://prboom-plus.sourceforge.net/")
1542 (synopsis "Version of the classic 3D shoot'em'up game Doom")
1543 (description
1544 "PrBoom+ is a Doom source port developed from the original PrBoom project.")
1545 (license license:gpl2+)))
1546
1547 (define-public retux
1548 (package
1549 (name "retux")
1550 (version "1.3.6")
1551 (source (origin
1552 (method url-fetch)
1553 (uri (string-append "mirror://savannah/retux/"
1554 (version-major+minor version) "/retux-"
1555 version "-src.tar.gz"))
1556 (sha256
1557 (base32
1558 "01bidh4zisjp3nc436x0g85v60dvwb3ig37i7y01sa71j8fm4fmb"))))
1559 (build-system python-build-system)
1560 (arguments
1561 `(#:tests? #f ; no check target
1562 #:phases
1563 (modify-phases %standard-phases
1564 ;; no setup.py script
1565 (delete 'build)
1566 (replace 'install
1567 (lambda* (#:key outputs #:allow-other-keys)
1568 (let* ((out (assoc-ref outputs "out"))
1569 (bin (string-append out "/bin"))
1570 (data (string-append out "/share/retux"))
1571 (doc (string-append out "/share/doc/retux")))
1572 (mkdir-p bin)
1573
1574 (substitute* "retux.py"
1575 ;; Use the correct data directory.
1576 (("os\\.path\\.join\\(os\\.path\\.dirname\\(__file__\\), \"data\"\\),")
1577 (string-append "\"" data "\","))
1578 ;; Use Python 3 so the patch-shebangs phase works properly.
1579 ((".*python2.*") "#!/usr/bin/python3"))
1580
1581 (copy-file "retux.py" (string-append bin "/retux"))
1582
1583 (copy-recursively "data" data)
1584
1585 (install-file "COPYING" doc)
1586 #t))))))
1587 (inputs
1588 `(("python-sge-pygame" ,python-sge-pygame)
1589 ("python-six" ,python-six)
1590 ("python-xsge" ,python-xsge)))
1591 (home-page "http://retux.nongnu.org")
1592 (synopsis "Action platformer game")
1593 (description
1594 "ReTux is an action platformer loosely inspired by the Mario games,
1595 utilizing the art assets from the @code{SuperTux} project.")
1596 ;; GPL version 3 or later is the license for the code and some art.
1597 ;; The rest of the licenses are for the art exclusively, as listed in
1598 ;; data/LICENSES.
1599 (license (list license:cc0
1600 license:cc-by3.0
1601 license:cc-by-sa3.0
1602 license:cc-by-sa4.0
1603 license:gpl2+
1604 license:gpl3+))))
1605
1606 (define-public roguebox-adventures
1607 (package
1608 (name "roguebox-adventures")
1609 (version "3.0.1")
1610 (source
1611 (origin
1612 (method url-fetch)
1613 (uri (string-append
1614 "http://download.tuxfamily.org/rba/RogueBoxAdventures_v"
1615 (string-join (string-split version #\.) "_") "_Source.zip"))
1616 (file-name (string-append name "-" version ".zip"))
1617 (sha256
1618 (base32
1619 "05zd03s5w9kcpklfgcggbaa6rwf59nm0q9vcj6gh9v2lh402k067"))))
1620 (build-system python-build-system)
1621 (arguments
1622 `(#:tests? #f ; no check target
1623 #:phases
1624 (modify-phases %standard-phases
1625 (replace 'unpack
1626 (lambda* (#:key source #:allow-other-keys)
1627 (and (invoke "unzip" source)
1628 ;; The actual source is buried a few directories deep.
1629 (chdir (string-append "RogueBoxAdventures_v"
1630 (string-join
1631 (string-split ,version #\.) "_")
1632 "_Source")))))
1633 ;; no setup.py script
1634 (replace 'build
1635 (lambda* (#:key outputs #:allow-other-keys)
1636 (let* ((out (assoc-ref outputs "out"))
1637 (data (string-append
1638 out "/share/games/roguebox-adventures")))
1639 ;; Use the correct data directory.
1640 (substitute* '("main.py" "LIB/getch.py" "LIB/getch_gcwz.py")
1641 (("basic_path + os\\.sep + 'DATA'")
1642 (string-append "'" data "'"))
1643 (("^basic_path.*$")
1644 (string-append "basic_path ='" data "'\n")))
1645 (substitute* "LIB/dialog.py"
1646 (("d_path = os\\.path\\.dirname\\(.*\\)\\)")
1647 (string-append "d_path = '" data "'")))
1648 (substitute* "LIB/gra_files.py"
1649 (("basic_path = b_path\\.replace\\('/LIB',''\\)")
1650 (string-append "basic_path ='" data "'\n")))
1651
1652 ;; The game must save in the user's home directory because
1653 ;; the store is read-only.
1654 (substitute* "main.py"
1655 (("home_save = False") "home_save = True")
1656 (("'icon_small.png'")
1657 (string-append "'" data "/icon_small.png'"))))
1658 #t))
1659 (replace 'install
1660 (lambda* (#:key outputs #:allow-other-keys)
1661 (let* ((out (assoc-ref outputs "out"))
1662 (bin (string-append out "/bin"))
1663 (roguebox-adventures
1664 (string-append bin "/roguebox-adventures"))
1665 (data (string-append
1666 out "/share/games/roguebox-adventures"))
1667 (lib (string-append data "/LIB"))
1668 (doc (string-append
1669 out "/share/doc/roguebox-adventures")))
1670 (mkdir-p bin)
1671 (mkdir-p doc)
1672
1673 (for-each (lambda (file)
1674 (copy-recursively file
1675 (string-append data "/" file)))
1676 '("AUDIO" "FONT" "GRAPHIC" "LIB" "LICENSE"
1677 "icon_big.png" "icon_small.png"))
1678 (for-each (lambda (file)
1679 (chmod file #o555)
1680 (install-file file lib))
1681 '("main.py" "run.py"))
1682
1683 (copy-recursively "DOC" doc)
1684
1685 (call-with-output-file
1686 roguebox-adventures
1687 (lambda (p)
1688 (format p "\
1689 #!~a
1690 export PYTHONPATH=~a/LIB:~a
1691 exec -a \"~a\" ~a \"$@\"\n"
1692 (which "bash") data (getenv "PYTHONPATH")
1693 (which "python3")
1694 (string-append lib "/main.py"))))
1695 (chmod roguebox-adventures #o555))
1696 #t)))))
1697 (native-inputs
1698 `(("unzip" ,unzip)))
1699 (inputs
1700 `(("python-pygame" ,python-pygame)
1701 ("python-tmx" ,python-tmx)))
1702 (home-page "https://rogueboxadventures.tuxfamily.org")
1703 (synopsis "A classical roguelike/sandbox game")
1704 (description
1705 "RogueBox Adventures is a graphical roguelike with strong influences
1706 from sandbox games like Minecraft or Terraria. The main idea of RogueBox
1707 Adventures is to offer the player a kind of roguelike toy-world. This world
1708 can be explored and changed freely.")
1709 ;; The GPL3+ is for code, the rest are for art.
1710 (license (list license:cc0
1711 license:cc-by3.0
1712 license:gpl3+
1713 license:silofl1.1))))
1714
1715 (define-public xshogi
1716 (package
1717 (name "xshogi")
1718 (version "1.4.2")
1719 (source
1720 (origin
1721 (method url-fetch)
1722 (uri (string-append "mirror://gnu/gnushogi/xshogi-"
1723 version ".tar.gz"))
1724 (sha256
1725 (base32
1726 "1dns0nhymak44by18sv48m4xb2skiwbi2i3nb9hl6w9iwd2i2brf"))))
1727 (build-system gnu-build-system)
1728 (inputs
1729 `(("libxaw" ,libxaw)
1730 ("libxt" ,libxt)))
1731 (home-page "https://www.gnu.org/software/gnushogi/")
1732 (synopsis "User interface for gnushogi")
1733 (description "A graphical user interface for the package @code{gnushogi}.")
1734 ;; Contains a copy of GPLv3 but the licence notices simply
1735 ;; state "GNU General Public Licence" without specifying a version.
1736 (license license:gpl1+)))
1737
1738 (define-public abbaye
1739 (package
1740 (name "abbaye")
1741 (version "2.0.1")
1742 (source
1743 (origin
1744 (method git-fetch)
1745 (uri (git-reference
1746 (url "https://github.com/nevat/abbayedesmorts-gpl.git")
1747 (commit (string-append "v" version))))
1748 (file-name (git-file-name name version))
1749 (sha256
1750 (base32 "1pwqf7r9bqb2p3xrw9i7y8pgr1401fy3mnnqpb1qkhmdl3gqi9hb"))
1751 (modules '((guix build utils)))
1752 (snippet
1753 ;; Unbundle fonts.
1754 '(begin
1755 (delete-file-recursively "fonts")
1756 #t))))
1757 (build-system gnu-build-system)
1758 (arguments
1759 '(#:make-flags '("CC=gcc")
1760 #:phases (modify-phases %standard-phases
1761 (add-after 'set-paths 'set-sdl-paths
1762 (lambda* (#:key inputs #:allow-other-keys)
1763 (setenv "CPATH"
1764 (string-append (assoc-ref inputs "sdl-union")
1765 "/include/SDL:"
1766 (or (getenv "CPATH") "")))))
1767 (add-after 'patch-source-shebangs 'patch-makefile
1768 (lambda* (#:key outputs #:allow-other-keys)
1769 ;; Replace /usr with package output directory.
1770 (substitute* "Makefile"
1771 (("/usr") (assoc-ref outputs "out")))))
1772 (add-before 'install 'make-install-dirs
1773 (lambda* (#:key outputs #:allow-other-keys)
1774 (let ((prefix (assoc-ref outputs "out")))
1775 ;; Create directories that the makefile assumes exist.
1776 (mkdir-p (string-append prefix "/bin"))
1777 (mkdir-p (string-append prefix "/share/applications"))
1778 (mkdir-p (string-append prefix "/share/pixmaps")))))
1779 ;; No configure script.
1780 (delete 'configure))
1781 #:tests? #f)) ;; No check target.
1782 (native-inputs `(("pkg-config" ,pkg-config)))
1783 (inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer)))))
1784 (home-page "https://github.com/nevat/abbayedesmorts-gpl")
1785 (synopsis "GNU/Linux port of the indie game \"l'Abbaye des Morts\"")
1786 (description "L'Abbaye des Morts is a 2D platform game set in 13th century
1787 France. The Cathars, who preach about good Christian beliefs, were being
1788 expelled by the Catholic Church out of the Languedoc region in France. One of
1789 them, called Jean Raymond, found an old church in which to hide, not knowing
1790 that beneath its ruins lay buried an ancient evil.")
1791 (license license:gpl3)))
1792
1793 (define-public angband
1794 (package
1795 (name "angband")
1796 (version "4.2.0")
1797 (source
1798 (origin
1799 (method url-fetch)
1800 (uri (string-append "http://rephial.org/downloads/"
1801 (version-major+minor version)
1802 "/angband-" version ".tar.gz"))
1803 (sha256
1804 (base32
1805 "0vdm1ymm28wawp94nl1p5q3lhc0k7cnn2kkvvrkfx962gif4kqfk"))
1806 (modules '((guix build utils)))
1807 (snippet
1808 ;; So, some of the sounds/graphics/tilesets are under different
1809 ;; licenses... some of them even nonfree! This is a console-only
1810 ;; version of this package so we just remove them.
1811 ;; In the future, if someone tries to make a graphical variant of
1812 ;; this package, they can deal with that mess themselves. :)
1813 '(begin
1814 (for-each (lambda (subdir)
1815 (let ((lib-subdir (string-append "lib/" subdir)))
1816 (delete-file-recursively lib-subdir)))
1817 '("fonts" "icons" "sounds" "tiles"))
1818 (substitute* "lib/Makefile"
1819 ;; And don't try to invoke makefiles in the directories we removed.
1820 (("gamedata customize help screens fonts tiles sounds icons user")
1821 "gamedata customize help screens user"))
1822 #t))))
1823 (build-system gnu-build-system)
1824 (arguments
1825 `(#:tests? #f ; no check target
1826 #:configure-flags (list (string-append "--bindir=" %output "/bin"))
1827 #:phases
1828 (modify-phases %standard-phases
1829 (replace 'bootstrap
1830 (lambda _
1831 (substitute* "acinclude.m4"
1832 (("ncursesw5-config") "ncursesw6-config"))
1833 (invoke "sh" "autogen.sh"))))))
1834 (native-inputs
1835 `(("autoconf" ,autoconf)
1836 ("automake" ,automake)))
1837 (inputs `(("ncurses" ,ncurses)))
1838 (home-page "http://rephial.org/")
1839 (synopsis "Dungeon exploration roguelike")
1840 (description "Angband is a Classic dungeon exploration roguelike. Explore
1841 the depths below Angband, seeking riches, fighting monsters, and preparing to
1842 fight Morgoth, the Lord of Darkness.")
1843 (license license:gpl2)))
1844
1845 (define-public pingus
1846 (package
1847 (name "pingus")
1848 (version "0.7.6")
1849 (source
1850 (origin
1851 (method git-fetch)
1852 (uri (git-reference
1853 (url "https://gitlab.com/pingus/pingus.git")
1854 (commit (string-append "v" version))))
1855 (file-name (git-file-name name version))
1856 (sha256
1857 (base32
1858 "0wp06kcmknsnxz7bjnsndb8x062z7r23fb3yrnbfnj68qhz18y74"))
1859 (patches (search-patches "pingus-boost-headers.patch"
1860 "pingus-sdl-libs-config.patch"))
1861 (modules '((guix build utils)))
1862 (snippet
1863 '(begin
1864 (substitute* "src/pingus/screens/demo_session.cpp"
1865 (("#include <iostream>")
1866 ;; std::function moved to <functional> with C++ 11.
1867 ;; Remove this for versions newer than 0.7.6.
1868 "#include <iostream>\n#include <functional>"))
1869 #t))))
1870 (build-system gnu-build-system)
1871 (native-inputs `(("pkg-config" ,pkg-config)
1872 ("scons-python2" ,scons-python2)))
1873 (inputs `(("sdl" ,sdl)
1874 ("sdl-image" ,sdl-image)
1875 ("sdl-mixer" ,sdl-mixer)
1876 ("mesa" ,mesa)
1877 ("glu" ,glu)
1878 ("libpng" ,libpng)
1879 ("boost" ,boost)))
1880 (arguments
1881 '(#:make-flags (list (string-append "PREFIX=" %output))
1882 #:tests? #f ; no check target
1883 #:phases
1884 (modify-phases %standard-phases
1885 (delete 'configure)))) ; no configure script
1886 (home-page "https://pingus.seul.org/")
1887 (synopsis "Lemmings clone")
1888 (description
1889 "Pingus is a free Lemmings-like puzzle game in which the player takes
1890 command of a bunch of small animals and has to guide them through levels.
1891 Since the animals walk on their own, the player can only influence them by
1892 giving them commands, like build a bridge, dig a hole, or redirect all animals
1893 in the other direction. Multiple such commands are necessary to reach the
1894 level's exit. The game is presented in a 2D side view.")
1895 ;; Some source files are under bsd-3 and gpl2+ licenses.
1896 (license license:gpl3+)))
1897
1898 (define-public talkfilters
1899 (package
1900 (name "talkfilters")
1901 (version "2.3.8")
1902 (source
1903 (origin
1904 (method url-fetch)
1905 (uri (string-append "http://www.hyperrealm.com/talkfilters/"
1906 "talkfilters-" version ".tar.gz"))
1907 (sha256
1908 (base32 "19nc5vq4bnkjvhk8srqddzhcs93jyvpm9r6lzjzwc1mgf08yg0a6"))))
1909 (build-system gnu-build-system)
1910 (home-page "https://www.gnu.org/software/talkfilters/")
1911 (synopsis "Convert English text to humorous dialects")
1912 (description "The GNU Talk Filters are programs that convert English text
1913 into stereotyped or otherwise humorous dialects. The filters are provided as
1914 a C library, so they can easily be integrated into other programs.")
1915 (license license:gpl2+)))
1916
1917 (define-public cmatrix
1918 (package
1919 (name "cmatrix")
1920 (version "2.0")
1921 (source
1922 (origin
1923 (method git-fetch)
1924 (uri (git-reference
1925 (url "https://github.com/abishekvashok/cmatrix.git")
1926 (commit (string-append "v" version))))
1927 (file-name (git-file-name name version))
1928 (sha256
1929 (base32
1930 "1h9jz4m4s5l8c3figaq46ja0km1gimrkfxm4dg7mf4s84icmasbm"))))
1931 (build-system gnu-build-system)
1932 (native-inputs
1933 `(("autoconf" ,autoconf)
1934 ("automake" ,automake)))
1935 (arguments
1936 '(#:phases
1937 (modify-phases %standard-phases
1938 (replace 'configure
1939 (lambda* (#:key outputs #:allow-other-keys)
1940 ;; This old ‘configure’ script doesn't support
1941 ;; variables passed as arguments.
1942 (let ((out (assoc-ref outputs "out")))
1943 (setenv "CONFIG_SHELL" (which "bash"))
1944 (invoke "./configure"
1945 (string-append "--prefix=" out))))))))
1946 (inputs `(("ncurses" ,ncurses)))
1947 (home-page "http://www.asty.org/cmatrix")
1948 (synopsis "Simulate the display from \"The Matrix\"")
1949 (description "CMatrix simulates the display from \"The Matrix\" and is
1950 based on the screensaver from the movie's website. It works with terminal
1951 settings up to 132x300 and can scroll lines all at the same rate or
1952 asynchronously and at a user-defined speed.")
1953 (license license:gpl2+)))
1954
1955 (define-public chess
1956 (package
1957 (name "chess")
1958 (version "6.2.6")
1959 (source
1960 (origin
1961 (method url-fetch)
1962 (uri (string-append "mirror://gnu/chess/gnuchess-" version
1963 ".tar.gz"))
1964 (sha256
1965 (base32
1966 "0kxhdv01ia91v2y0cmzbll391ns2vbmn65jjrv37h4s1srszh5yn"))))
1967 (build-system gnu-build-system)
1968 (home-page "https://www.gnu.org/software/chess/")
1969 (synopsis "Full chess implementation")
1970 (description "GNU Chess is a chess engine. It allows you to compete
1971 against the computer in a game of chess, either through the default terminal
1972 interface or via an external visual interface such as GNU XBoard.")
1973 (properties '((upstream-name . "gnuchess")
1974 (ftp-directory . "/chess")))
1975 (license license:gpl3+)))
1976
1977 (define freedink-engine
1978 (package
1979 (name "freedink-engine")
1980 (version "109.6")
1981 (source (origin
1982 (method url-fetch)
1983 (uri (string-append "mirror://gnu/freedink/freedink-" version
1984 ".tar.gz"))
1985 (sha256
1986 (base32
1987 "00hhk1bjdrc1np2qz44sa5n1mb62qzwxbvsnws3vpms6iyn3a2sy"))))
1988 (build-system gnu-build-system)
1989 (arguments
1990 `(#:configure-flags '("--disable-embedded-resources")
1991 #:phases
1992 (modify-phases %standard-phases
1993 (add-after 'unpack 'disable-graphical-tests
1994 (lambda _
1995 ;; These tests require a graphical interface.
1996 (substitute* "src/Makefile.am"
1997 (("test_gfx_fonts TestIOGfxDisplay") ""))
1998 #t)))))
1999 (native-inputs `(("autoconf" ,autoconf)
2000 ("automake" ,automake)
2001 ("cxxtest" ,cxxtest)
2002 ("gettext" ,gettext-minimal)
2003 ("help2man" ,help2man)
2004 ("pkg-config" ,pkg-config)))
2005 (inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer
2006 sdl2-ttf sdl2-gfx)))
2007 ("fontconfig" ,fontconfig)
2008 ("glm" ,glm)))
2009 (properties '((ftp-directory . "/freedink")
2010 (upstream-name . "freedink")))
2011 (home-page "https://www.gnu.org/software/freedink/")
2012 (synopsis "Twisted adventures of young pig farmer Dink Smallwood")
2013 (description
2014 "GNU FreeDink is a free and portable re-implementation of the engine
2015 for the role-playing game Dink Smallwood. It supports not only the original
2016 game data files but it also supports user-produced game mods or \"D-Mods\".
2017 To that extent, it also includes a front-end for managing all of your D-Mods.")
2018 (license license:gpl3+)))
2019
2020 (define freedink-data
2021 (package
2022 (name "freedink-data")
2023 (version "1.08.20190120")
2024 (source (origin
2025 (method url-fetch)
2026 (uri (string-append "mirror://gnu/freedink/freedink-data-"
2027 version ".tar.gz"))
2028 (sha256
2029 (base32
2030 "17gvryadlxk172mblbsil7hina1z5wahwaxnr6g3mdq57dvl8pvi"))))
2031 (build-system gnu-build-system)
2032 (arguments
2033 `(#:phases
2034 (modify-phases %standard-phases
2035 (delete 'configure) ; no configure script
2036 (delete 'check)) ; no tests
2037 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))))
2038 (properties '((ftp-directory . "/freedink")))
2039 (home-page "https://www.gnu.org/software/freedink/")
2040 (synopsis "Game data for GNU Freedink")
2041 (description
2042 "This package contains the game data of GNU Freedink.")
2043 (license license:gpl3+)))
2044
2045 (define-public freedink-dfarc
2046 (package
2047 (name "freedink-dfarc")
2048 (version "3.14")
2049 (source (origin
2050 (method url-fetch)
2051 (uri (string-append "mirror://gnu/freedink/dfarc-"
2052 version ".tar.gz"))
2053 (sha256
2054 (base32
2055 "1yp8n3w426xnlp10xk06vfi2y3k9xrcfyck7s7qs1v0ys7n284d5"))))
2056 (build-system gnu-build-system)
2057 (native-inputs
2058 `(("intltool" ,intltool)))
2059 (inputs
2060 `(("bzip2" ,bzip2)
2061 ("wxwidgets" ,wxwidgets)))
2062 (properties '((ftp-directory . "/freedink")
2063 (upstream-name . "dfarc")))
2064 (home-page "https://www.gnu.org/software/freedink/")
2065 (synopsis "Front-end for managing and playing Dink Modules")
2066 (description "DFArc makes it easy to play and manage the GNU FreeDink game
2067 and its numerous D-Mods.")
2068 (license license:gpl3+)))
2069
2070 (define-public freedink
2071 ;; This is a wrapper that tells the engine where to find the data.
2072 (package (inherit freedink-engine)
2073 (name "freedink")
2074 (build-system trivial-build-system)
2075 (arguments
2076 '(#:builder (begin
2077 (use-modules (guix build utils))
2078
2079 (let* ((output (assoc-ref %outputs "out"))
2080 (bin (string-append output "/bin"))
2081 (executable (string-append bin "/freedink")))
2082 (mkdir-p bin)
2083 (call-with-output-file executable
2084 (lambda (port)
2085 (format port "#!~a/bin/sh
2086 exec ~a/bin/freedink -refdir ~a/share/dink\n"
2087 (assoc-ref %build-inputs "bash")
2088 (assoc-ref %build-inputs "engine")
2089 (assoc-ref %build-inputs "data"))
2090 (chmod port #o777)))
2091 #t))
2092 #:modules ((guix build utils))))
2093 (inputs `(("engine" ,freedink-engine)
2094 ("data" ,freedink-data)
2095 ("bash" ,bash)))
2096 (native-inputs '())))
2097
2098 (define-public xboard
2099 (package
2100 (name "xboard")
2101 (version "4.9.1")
2102 (source
2103 (origin
2104 (method url-fetch)
2105 (uri (string-append "mirror://gnu/xboard/xboard-" version
2106 ".tar.gz"))
2107 (sha256
2108 (base32
2109 "1mkh36xnnacnz9r00b5f9ld9309k32jv6mcavklbdnca8bl56bib"))))
2110 (build-system gnu-build-system)
2111 (inputs
2112 `(("gtk+" ,gtk+-2)
2113 ("librsvg" ,librsvg)))
2114 (native-inputs
2115 `(("texinfo" ,texinfo)
2116 ("pkg-config" ,pkg-config)))
2117 (home-page "https://www.gnu.org/software/xboard/")
2118 (synopsis "Graphical user interface for chess programs")
2119 (description "GNU XBoard is a graphical board for all varieties of chess,
2120 including international chess, xiangqi (Chinese chess), shogi (Japanese chess)
2121 and Makruk. Several lesser-known variants are also supported. It presents a
2122 fully interactive graphical interface and it can load and save games in the
2123 Portable Game Notation.")
2124 (license license:gpl3+)))
2125
2126 (define-public gtypist
2127 (package
2128 (name "gtypist")
2129 (version "2.9.5")
2130 (source (origin
2131 (method url-fetch)
2132 (uri (string-append "mirror://gnu/gtypist/gtypist-"
2133 version ".tar.xz"))
2134 (sha256
2135 (base32
2136 "0xzrkkmj0b1dw3yr0m9hml2y634cc4h61im6zwcq57s7285z8fn1"))
2137 (modules '((guix build utils)))
2138 (snippet
2139 ;; We do not provide `ncurses.h' within an `ncursesw'
2140 ;; sub-directory, so patch the source accordingly. See
2141 ;; <http://bugs.gnu.org/19018>.
2142 '(begin
2143 (for-each (lambda (file)
2144 (substitute* file
2145 (("ncursesw/ncurses.h")
2146 "ncurses.h")))
2147 (find-files "." "configure$|\\.c$"))
2148 #t))))
2149 (build-system gnu-build-system)
2150 (inputs `(("ncurses" ,ncurses)
2151 ("perl" ,perl)))
2152 (home-page "https://www.gnu.org/software/gtypist/")
2153 (synopsis "Typing tutor")
2154 (description
2155 "GNU Typist is a universal typing tutor. It can be used to learn and
2156 practice touch-typing. Several tutorials are included; in addition to
2157 tutorials for the standard QWERTY layout, there are also tutorials for the
2158 alternative layouts Dvorak and Colemak, as well as for the numpad. Tutorials
2159 are primarily in English, however some in other languages are provided.")
2160 (license license:gpl3+)))
2161
2162 (define-public irrlicht
2163 (package
2164 (name "irrlicht")
2165 (version "1.8.4")
2166 (source (origin
2167 (method url-fetch)
2168 (uri (string-append
2169 "mirror://sourceforge/irrlicht/Irrlicht%20SDK/"
2170 (version-major+minor version)
2171 "/" version "/irrlicht-" version ".zip"))
2172 (sha256
2173 (base32
2174 "0cz4z4dwrv5ypl19ll67wl6jjpy5k6ly4vr042w4br88qq5jhazl"))
2175 (patches (search-patches "irrlicht-use-system-libs.patch"))
2176 (modules '((guix build utils)))
2177 (snippet
2178 '(begin
2179 (for-each delete-file-recursively
2180 '("bin" ; bundled compiled Windows binaries"
2181 "source/Irrlicht/MacOSX"
2182 "source/Irrlicht/bzip2"
2183 "source/Irrlicht/jpeglib"
2184 "source/Irrlicht/libpng"
2185 "source/Irrlicht/lzma"
2186 "source/Irrlicht/zlib"))
2187 (delete-file "source/Irrlicht/glext.h")
2188 (delete-file "source/Irrlicht/glxext.h")
2189 (delete-file "source/Irrlicht/wglext.h")
2190 #t))))
2191 (build-system gnu-build-system)
2192 (arguments
2193 `(#:phases
2194 (modify-phases %standard-phases
2195 (add-after 'unpack 'chdir-to-source
2196 (lambda _
2197 ;; The actual source is buried a few directories deep.
2198 (chdir "source/Irrlicht/")
2199 #t))
2200 (add-after 'chdir-to-source 'fix-build-env
2201 (lambda* (#:key outputs #:allow-other-keys)
2202 (let ((out (assoc-ref outputs "out")))
2203 (substitute* "Makefile"
2204 (("INSTALL_DIR = /usr/local/lib")
2205 (string-append "INSTALL_DIR = " out "/lib"))
2206 ;; Add '-fpermissive' to the CXXFLAGS
2207 (("-Wall") "-Wall -fpermissive")) ; CImageLoaderJPG.cpp
2208 ;; The Makefile assumes these directories exist.
2209 (mkdir-p (string-append out "/lib"))
2210 (mkdir-p (string-append out "/include")))))
2211 (delete 'configure)) ; no configure script
2212 #:tests? #f ; no check target
2213 #:make-flags '("CC=gcc" "sharedlib")))
2214 (inputs
2215 `(("bzip2" ,bzip2)
2216 ("libjpeg" ,libjpeg)
2217 ("libpng" ,libpng)
2218 ("libx11" ,libx11)
2219 ("libxxf86vm" ,libxxf86vm)
2220 ("mesa" ,mesa)))
2221 (synopsis "3D game engine written in C++")
2222 (description
2223 "The Irrlicht Engine is a high performance realtime 3D engine written in
2224 C++. Features include an OpenGL renderer, extensible materials, scene graph
2225 management, character animation, particle and other special effects, support
2226 for common mesh file formats, and collision detection.")
2227 (home-page "http://irrlicht.sourceforge.net/")
2228 (license license:zlib)))
2229
2230 (define-public mars
2231 ;; The latest release on SourceForge relies on an unreleased version of SFML
2232 ;; with a different API, so we take the latest version from the official
2233 ;; repository on Github.
2234 (let ((commit "c855d044094a1d92317e38935d81ba938946132e")
2235 (revision "1"))
2236 (package
2237 (name "mars")
2238 (version (string-append "0.7.5." revision "." (string-take commit 7) ))
2239 (source (origin
2240 (method git-fetch)
2241 (uri (git-reference
2242 (url "https://github.com/thelaui/M.A.R.S..git")
2243 (commit commit)))
2244 (file-name (git-file-name name version))
2245 (sha256
2246 (base32
2247 "1r4c5gap1z2zsv4yjd34qriqkxaq4lb4rykapyzkkdf4g36lc3nh"))
2248 (patches (search-patches "mars-sfml-2.3.patch"
2249 "mars-install.patch"))))
2250 (build-system cmake-build-system)
2251 (arguments
2252 `(#:tests? #f ; There are no tests
2253 #:phases
2254 (modify-phases %standard-phases
2255 (add-after 'unpack 'fix-install-path
2256 (lambda _
2257 (substitute* "src/CMakeLists.txt"
2258 (("\\$\\{CMAKE_INSTALL_PREFIX\\}/games")
2259 "${CMAKE_INSTALL_PREFIX}/bin"))
2260 #t))
2261 (add-after 'unpack 'fix-data-path
2262 (lambda* (#:key outputs #:allow-other-keys)
2263 (substitute* "src/System/settings.cpp"
2264 (("C_dataPath = \"./data/\";")
2265 (string-append "C_dataPath = \""
2266 (assoc-ref outputs "out")
2267 "/share/games/marsshooter/\";")))
2268 #t)))))
2269 (inputs
2270 `(("mesa" ,mesa)
2271 ("fribidi" ,fribidi)
2272 ("taglib" ,taglib)
2273 ("sfml" ,sfml)))
2274 (home-page "http://mars-game.sourceforge.net/")
2275 (synopsis "2D space shooter")
2276 (description
2277 "M.A.R.S. is a 2D space shooter with pretty visual effects and
2278 attractive physics. Players can battle each other or computer controlled
2279 enemies in different game modes such as space ball, death match, team death
2280 match, cannon keep, and grave-itation pit.")
2281 (license license:gpl3+))))
2282
2283 (define minetest-data
2284 (package
2285 (name "minetest-data")
2286 (version "5.1.1")
2287 (source (origin
2288 (method git-fetch)
2289 (uri (git-reference
2290 (url "https://github.com/minetest/minetest_game")
2291 (commit version)))
2292 (file-name (git-file-name name version))
2293 (sha256
2294 (base32
2295 "1r9fxz2j24q74a9injvbxbf2xk67fzabv616i676zw2cvgv9hn39"))))
2296 (build-system trivial-build-system)
2297 (native-inputs
2298 `(("source" ,source)))
2299 (arguments
2300 `(#:modules ((guix build utils))
2301 #:builder (begin
2302 (use-modules (guix build utils))
2303 (let ((install-dir (string-append
2304 %output
2305 "/share/minetest/games/minetest_game")))
2306 (mkdir-p install-dir)
2307 (copy-recursively
2308 (assoc-ref %build-inputs "source")
2309 install-dir)
2310 #t))))
2311 (synopsis "Main game data for the Minetest game engine")
2312 (description
2313 "Game data for the Minetest infinite-world block sandbox game.")
2314 (home-page "https://www.minetest.net/")
2315 (license license:lgpl2.1+)))
2316
2317 (define-public minetest
2318 (package
2319 (name "minetest")
2320 (version "5.1.1")
2321 (source (origin
2322 (method git-fetch)
2323 (uri (git-reference
2324 (url "https://github.com/minetest/minetest")
2325 (commit version)))
2326 (file-name (git-file-name name version))
2327 (sha256
2328 (base32
2329 "0cjj63333b7j4ydfq0h9yc6d2jvmyjd7n7zbd08yrf0rcibrj2k0"))
2330 (modules '((guix build utils)))
2331 (snippet
2332 '(begin
2333 ;; Delete bundled libraries.
2334 (delete-file-recursively "lib")
2335 #t))))
2336 (build-system cmake-build-system)
2337 (arguments
2338 '(#:configure-flags
2339 (list "-DRUN_IN_PLACE=0"
2340 "-DENABLE_FREETYPE=1"
2341 "-DENABLE_GETTEXT=1"
2342 "-DENABLE_SYSTEM_JSONCPP=TRUE"
2343 (string-append "-DIRRLICHT_INCLUDE_DIR="
2344 (assoc-ref %build-inputs "irrlicht")
2345 "/include/irrlicht")
2346 (string-append "-DCURL_INCLUDE_DIR="
2347 (assoc-ref %build-inputs "curl")
2348 "/include/curl"))
2349 #:tests? #f)) ;no check target
2350 (native-search-paths
2351 (list (search-path-specification
2352 (variable "MINETEST_SUBGAME_PATH")
2353 (files '("share/minetest/games")))))
2354 (native-inputs
2355 `(("pkg-config" ,pkg-config)))
2356 (inputs
2357 `(("curl" ,curl)
2358 ("freetype" ,freetype)
2359 ("gettext" ,gettext-minimal)
2360 ("gmp" ,gmp)
2361 ("irrlicht" ,irrlicht)
2362 ("jsoncpp" ,jsoncpp)
2363 ("libjpeg" ,libjpeg)
2364 ("libpng" ,libpng)
2365 ("libogg" ,libogg)
2366 ("libvorbis" ,libvorbis)
2367 ("libxxf86vm" ,libxxf86vm)
2368 ("luajit" ,luajit)
2369 ("mesa" ,mesa)
2370 ("ncurses" ,ncurses)
2371 ("openal" ,openal)
2372 ("sqlite" ,sqlite)))
2373 (propagated-inputs
2374 `(("minetest-data" ,minetest-data)))
2375 (synopsis "Infinite-world block sandbox game")
2376 (description
2377 "Minetest is a sandbox construction game. Players can create and destroy
2378 various types of blocks in a three-dimensional open world. This allows
2379 forming structures in every possible creation, on multiplayer servers or as a
2380 single player. Mods and texture packs allow players to personalize the game
2381 in different ways.")
2382 (home-page "https://www.minetest.net/")
2383 (license license:lgpl2.1+)))
2384
2385 (define glkterm
2386 (package
2387 (name "glkterm")
2388 (version "1.0.4")
2389 (source
2390 (origin
2391 (method url-fetch)
2392 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
2393 "glk/implementations/glkterm-104.tar.gz"))
2394 (sha256
2395 (base32
2396 "0zlj9nlnkdlvgbiliczinirqygiq8ikg5hzh5vgcmnpg9pvnwga7"))))
2397 (build-system gnu-build-system)
2398 (propagated-inputs `(("ncurses" ,ncurses))) ; required by Make.glkterm
2399 (arguments
2400 '(#:tests? #f ; no check target
2401 #:phases
2402 (modify-phases %standard-phases
2403 (replace 'install
2404 (lambda* (#:key outputs #:allow-other-keys)
2405 (let* ((out (assoc-ref outputs "out"))
2406 (inc (string-append out "/include"))
2407 (lib (string-append out "/lib")))
2408 (for-each
2409 (lambda (file)
2410 (install-file file inc))
2411 '("glk.h" "glkstart.h" "gi_blorb.h" "gi_dispa.h" "Make.glkterm"))
2412 (install-file "libglkterm.a" lib))
2413 #t))
2414 (delete 'configure)))) ; no configure script
2415 (home-page "http://www.eblong.com/zarf/glk/")
2416 (synopsis "Curses Implementation of the Glk API")
2417 (description
2418 "Glk defines a portable API for applications with text UIs. It was
2419 primarily designed for interactive fiction, but it should be suitable for many
2420 interactive text utilities, particularly those based on a command line.
2421 This is an implementation of the Glk library which runs in a terminal window,
2422 using the @code{curses.h} library for screen control.")
2423 (license (license:fsf-free "file://README"))))
2424
2425 (define-public glulxe
2426 (package
2427 (name "glulxe")
2428 (version "0.5.4")
2429 (source
2430 (origin
2431 (method url-fetch)
2432 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
2433 "glulx/interpreters/glulxe/glulxe-054.tar.gz"))
2434 (sha256
2435 (base32
2436 "0vipydg6ra90yf9b3ipgppwxyb2xdhcxwvirgjy0v20wlf56zhhz"))))
2437 (build-system gnu-build-system)
2438 (inputs `(("glk" ,glkterm)))
2439 (arguments
2440 '(#:tests? #f ; no check target
2441 #:make-flags
2442 (let* ((glk (assoc-ref %build-inputs "glk")))
2443 (list (string-append "GLKINCLUDEDIR=" glk "/include")
2444 (string-append "GLKLIBDIR=" glk "/lib")
2445 (string-append "GLKMAKEFILE=" "Make.glkterm")))
2446 #:phases
2447 (modify-phases %standard-phases
2448 (replace 'install
2449 (lambda* (#:key outputs #:allow-other-keys)
2450 (let* ((out (assoc-ref outputs "out"))
2451 (bin (string-append out "/bin")))
2452 (install-file "glulxe" bin))
2453 #t))
2454 (delete 'configure)))) ; no configure script
2455 (home-page "https://www.eblong.com/zarf/glulx/")
2456 (synopsis "Interpreter for Glulx VM")
2457 (description
2458 "Glulx is a 32-bit portable virtual machine intended for writing and
2459 playing interactive fiction. It was designed by Andrew Plotkin to relieve
2460 some of the restrictions in the venerable Z-machine format. This is the
2461 reference interpreter, using the Glk API.")
2462 (license license:expat)))
2463
2464 (define-public fifechan
2465 (package
2466 (name "fifechan")
2467 (version "0.1.5")
2468 (source (origin
2469 (method url-fetch)
2470 (uri (string-append "https://codeload.github.com/fifengine/"
2471 "fifechan/tar.gz/" version))
2472 (file-name (string-append name "-" version ".tar.gz"))
2473 (sha256
2474 (base32
2475 "0wxs9vz5x9y8chghd8vp7vfk089lfb0qnzggi17zrqkrngs5zgi9"))))
2476 (build-system cmake-build-system)
2477 (inputs
2478 `(("sdl2" ,sdl2)
2479 ("sdl2-image" ,sdl2-image)
2480 ("mesa" ,mesa)))
2481 (arguments
2482 '(#:tests? #f)) ; No included tests
2483 (home-page "https://fifengine.github.io/fifechan/")
2484 (synopsis "Cross platform GUI library specifically for games")
2485 (description
2486 "Fifechan is a lightweight cross platform GUI library written in C++
2487 specifically designed for games. It has a built in set of extendable GUI
2488 Widgets, and allows users to create more.")
2489 (license license:lgpl2.1+)))
2490
2491 (define-public fifengine
2492 (package
2493 (name "fifengine")
2494 (version "0.4.2")
2495 (source (origin
2496 (method url-fetch)
2497 (uri (string-append "https://codeload.github.com/fifengine/"
2498 "fifengine/tar.gz/" version))
2499 (file-name (string-append name "-" version ".tar.gz"))
2500 (sha256
2501 (base32
2502 "1y4grw25cq5iqlg05rnbyxw1njl11ypidnlsm3qy4sm3xxdvb0p8"))))
2503 (build-system cmake-build-system)
2504 (arguments
2505 `(#:tests? #f ; TODO The test running fails to run some tests.
2506 #:modules ((srfi srfi-1)
2507 (guix build cmake-build-system)
2508 (guix build utils))
2509 #:configure-flags
2510 (list
2511 (string-append "-DOPENALSOFT_INCLUDE_DIR="
2512 (assoc-ref %build-inputs "openal")
2513 "/include/AL")
2514 (string-append "-DPYTHON_SITE_PACKAGES="
2515 (assoc-ref %outputs "out")
2516 "/lib/python3.7/site-packages"))
2517 #:phases
2518 (modify-phases %standard-phases
2519 (add-after 'unpack 'patch-run_tests.py
2520 (lambda _
2521 ;; Patch the test runner to exit with a status of 1 if any test
2522 ;; fails, to allow detecting failures.
2523 (substitute* "run_tests.py"
2524 (("ERROR\\. One or more tests failed!'\\)")
2525 "ERROR. One or more tests failed!')
2526 \t\texit(1)"))
2527 #t))
2528 ;; Run tests after installation so that we can make use of the built
2529 ;; python modules.
2530 (delete 'check)
2531 (add-after 'install 'check
2532 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
2533 (define python-version
2534 (let* ((version (last (string-split
2535 (assoc-ref inputs "python")
2536 #\-)))
2537 (components (string-split version #\.))
2538 (major+minor (take components 2)))
2539 (string-join major+minor ".")))
2540
2541 (when tests?
2542 ;; Set PYTHONPATH so that python finds the installed modules.
2543 (setenv "PYTHONPATH"
2544 (string-append (getenv "PYTHONPATH") ":"
2545 (assoc-ref outputs "out")
2546 "/lib/python"
2547 python-version
2548 "/site-packages"))
2549 ;; The tests require an X server.
2550 (system "Xvfb :1 &")
2551 (setenv "DISPLAY" ":1")
2552 (setenv "XDG_RUNTIME_DIR" "/tmp")
2553 ;; Run tests
2554 (chdir ,(string-append "../" name "-" version))
2555 (invoke "python3" "run_tests.py" "-a"))
2556 #t)))))
2557 (inputs
2558 `(("sdl2" ,sdl2)
2559 ("sdl2-image" ,sdl2-image)
2560 ("sdl2-ttf" ,sdl2-ttf)
2561 ("tinyxml" ,tinyxml)
2562 ("openal" ,openal)
2563 ("libogg" ,libogg)
2564 ("glew" ,glew)
2565 ("libvorbis" ,libvorbis)
2566 ("boost" ,boost)
2567 ("fifechan" ,fifechan)
2568 ("swig" ,swig)
2569 ("python" ,python)))
2570 (native-inputs
2571 `(("python" ,python)
2572 ("swig" ,swig)
2573 ("xvfb" ,xorg-server)))
2574 (propagated-inputs
2575 `(("python-future" ,python-future)))
2576 (home-page "https://www.fifengine.net/")
2577 (synopsis "FIFE is a multi-platform isometric game engine written in C++")
2578 (description
2579 "@acronym{FIFE, Flexible Isometric Free Engine} is a multi-platform
2580 isometric game engine. Python bindings are included allowing users to create
2581 games using Python as well as C++.")
2582 (license license:lgpl2.1+)))
2583
2584 (define-public fizmo
2585 (package
2586 (name "fizmo")
2587 (version "0.8.5")
2588 (source (origin
2589 (method url-fetch)
2590 (uri (string-append "https://fizmo.spellbreaker.org/source/"
2591 "fizmo-" version ".tar.gz"))
2592 (sha256
2593 (base32
2594 "1amyc4n41jf08kxmdgkk30bzzx54miaxa97w28f417qwn8lrl98w"))))
2595 (build-system gnu-build-system)
2596 (arguments
2597 '(#:configure-flags
2598 (let ((libjpeg (assoc-ref %build-inputs "libjpeg"))
2599 (ncurses (assoc-ref %build-inputs "ncurses")))
2600 (list (string-append "--with-jpeg-includedir=" libjpeg "/include")))))
2601 (native-inputs
2602 `(("pkg-config" ,pkg-config)))
2603 (inputs
2604 `(("freetype" ,freetype)
2605 ("libjpeg" ,libjpeg)
2606 ("libpng" ,libpng)
2607 ("libsndfile" ,libsndfile)
2608 ("libxml2" ,libxml2)
2609 ("ncurses" ,ncurses)
2610 ("sdl2" ,sdl2)))
2611 (home-page "https://fizmo.spellbreaker.org/")
2612 (synopsis "Z-machine interpreter")
2613 (description
2614 "Fizmo is a console-based Z-machine interpreter. It is used to play
2615 interactive fiction, also known as text adventures, which were implemented
2616 either by Infocom or created using the Inform compiler.")
2617 (license license:bsd-3)))
2618
2619 (define-public gnugo
2620 (package
2621 (name "gnugo")
2622 (version "3.8")
2623 (source (origin
2624 (method url-fetch)
2625 (uri (string-append "mirror://gnu/gnugo/gnugo-" version
2626 ".tar.gz"))
2627 (sha256
2628 (base32
2629 "0wkahvqpzq6lzl5r49a4sd4p52frdmphnqsfdv7gdp24bykdfs6s"))))
2630 (build-system gnu-build-system)
2631 (inputs `(("readline" ,readline)))
2632 (synopsis "Play the game of Go")
2633 (description
2634 "GNU Go is a program that plays the game of Go, in which players
2635 place stones on a grid to form territory or capture other stones. While
2636 it can be played directly from the terminal, rendered in ASCII characters,
2637 it is also possible to play GNU Go with 3rd party graphical interfaces or
2638 even in Emacs. It supports the standard game storage format (SGF, Smart
2639 Game Format) and inter-process communication format (GMP, Go Modem
2640 Protocol).")
2641 (home-page "https://www.gnu.org/software/gnugo/")
2642 (license license:gpl3+)))
2643
2644 (define-public extremetuxracer
2645 (package
2646 (name "extremetuxracer")
2647 (version "0.8.0")
2648 (source (origin
2649 (method url-fetch)
2650 (uri (string-append
2651 "mirror://sourceforge/extremetuxracer/releases/"
2652 version "/etr-" version ".tar.xz"))
2653 (sha256
2654 (base32
2655 "05ysaxvsgps9fxc421kdifsxmc1sn6n79cjaa0k0i3fs9qqrja2b"))))
2656 (build-system gnu-build-system)
2657 (native-inputs
2658 `(("pkg-config" ,pkg-config)))
2659 (inputs
2660 `(("glu" ,glu)
2661 ("sfml" ,sfml)))
2662 (synopsis "High-speed arctic racing game based on Tux Racer")
2663 ;; Snarfed straight from Debian.
2664 (description "Extreme Tux Racer, or etracer as it is called for short, is
2665 a simple OpenGL racing game featuring Tux, the Linux mascot. The goal of the
2666 game is to slide down a snow- and ice-covered mountain as quickly as possible,
2667 avoiding the trees and rocks that will slow you down.
2668
2669 Collect herrings and other goodies while sliding down the hill, but avoid fish
2670 bones.
2671
2672 This game is based on the GPL version of the famous game TuxRacer.")
2673 (home-page "https://sourceforge.net/projects/extremetuxracer/")
2674 (license license:gpl2+)))
2675
2676 (define-public supertuxkart
2677 (package
2678 (name "supertuxkart")
2679 (version "1.1")
2680 (source
2681 (origin
2682 (method url-fetch)
2683 (uri (string-append "mirror://sourceforge/supertuxkart/SuperTuxKart/"
2684 version "/supertuxkart-" version "-src.tar.xz"))
2685 (sha256
2686 (base32
2687 "1s0ai07g3sswck9mr0142989mrgzzq1njc1qxk5als5b245jpc79"))
2688 (modules '((guix build utils)))
2689 (snippet
2690 ;; Delete bundled library sources
2691 '(begin
2692 ;; Supertuxkart uses modified versions of the Irrlicht engine
2693 ;; and the bullet library. The developers gave an explanation
2694 ;; here: http://forum.freegamedev.net/viewtopic.php?f=17&t=3906
2695 ;; FIXME: try to unbundle angelscript and libraqm
2696 (for-each delete-file-recursively
2697 '("lib/zlib"
2698 "lib/libpng"
2699 "lib/jpeglib"
2700 "lib/glew"
2701 "lib/wiiuse"
2702 "lib/enet"))
2703 #t))))
2704 (build-system cmake-build-system)
2705 (arguments
2706 `(#:tests? #f ; no check target
2707 #:configure-flags
2708 (list "-DUSE_WIIUSE=0"
2709 ;; Do not use the bundled zlib, glew and enet.
2710 "-DNO_IRR_COMPILE_WITH_ZLIB_=TRUE"
2711 "-DUSE_SYSTEM_GLEW=TRUE"
2712 "-DUSE_SYSTEM_ENET=TRUE"
2713 ;; In order to use the system ENet library, IPv6 support (added in
2714 ;; SuperTuxKart version 1.1) must be disabled.
2715 "-DUSE_IPV6=FALSE"
2716 ;; FIXME: needs libopenglrecorder
2717 "-DBUILD_RECORDER=0"
2718 ;; Irrlicht returns an integer instead of a boolean
2719 "-DCMAKE_C_FLAGS=-fpermissive")))
2720 (inputs
2721 `(("glew" ,glew)
2722 ("zlib" ,zlib)
2723 ("openal" ,openal)
2724 ("libvorbis" ,libvorbis)
2725 ("freetype" ,freetype)
2726 ("fribidi" ,fribidi)
2727 ("harfbuzz" ,harfbuzz)
2728 ("mesa" ,mesa)
2729 ("libx11" ,libx11)
2730 ("libxrandr" ,libxrandr)
2731 ("curl" ,curl)
2732 ;; The following input is needed to build the bundled and modified
2733 ;; version of irrlicht.
2734 ("libjpeg" ,libjpeg)
2735 ("openssl" ,openssl)
2736 ("enet" ,enet)))
2737 (native-inputs
2738 `(("pkg-config" ,pkg-config)))
2739 (home-page "https://supertuxkart.net/Main_Page")
2740 (synopsis "3D kart racing game")
2741 (description "SuperTuxKart is a 3D kart racing game, with a focus on
2742 having fun over realism. You can play with up to 4 friends on one PC, racing
2743 against each other or just trying to beat the computer; single-player mode is
2744 also available.")
2745 (license license:gpl3+)))
2746
2747 (define-public unknown-horizons
2748 (package
2749 (name "unknown-horizons")
2750 (version "2019.1")
2751 (source (origin
2752 (method url-fetch)
2753 (uri (string-append "https://codeload.github.com/unknown-horizons/"
2754 "unknown-horizons/tar.gz/" version))
2755 (file-name (string-append name "-" version ".tar.gz"))
2756 (sha256
2757 (base32
2758 "1n747p7h0qp48szgp262swg0xh8kxy1bw8ag1qczs4i26hyzs5x4"))))
2759 (build-system python-build-system)
2760 (arguments
2761 '(#:phases
2762 (modify-phases %standard-phases
2763 (add-before 'build 'set-HOME
2764 (lambda _
2765 (setenv "HOME" "/tmp")))
2766 (add-after 'build 'build-extra
2767 (lambda _
2768 (invoke "python3" "./setup.py" "build_i18n")
2769 (invoke "python3" "horizons/engine/generate_atlases.py" "2048")
2770 #t))
2771 (add-after 'install 'patch
2772 (lambda* (#:key outputs #:allow-other-keys)
2773 (let ((out (assoc-ref outputs "out")))
2774 (substitute* (string-append out "/bin/unknown-horizons")
2775 (("os\\.chdir\\(get\\_content\\_dir\\_parent_path\\(\\)\\)")
2776 (string-append "os.chdir(\""
2777 (assoc-ref outputs "out")
2778 "/share/unknown-horizons\")"))))
2779 #t))
2780 ;; TODO: Run GUI tests as well
2781 (replace 'check
2782 (lambda _
2783 (substitute* "horizons/constants.py"
2784 (("IS_DEV_VERSION = False")
2785 "IS_DEV_VERSION = True"))
2786 (invoke "pytest" "tests")
2787 (substitute* "horizons/constants.py"
2788 (("IS_DEV_VERSION = True")
2789 "IS_DEV_VERSION = False"))
2790 #t)))))
2791 (inputs
2792 `(("fifengine" ,fifengine)
2793 ("python:tk" ,python "tk")
2794 ("python-pillow" ,python-pillow)
2795 ("python-pyyaml" ,python-pyyaml)))
2796 (native-inputs
2797 `(("intltool" ,intltool)
2798
2799 ;; Required for tests
2800 ("python-greenlet" ,python-greenlet)
2801 ("python-polib" ,python-polib)
2802 ("python-pytest" ,python-pytest)
2803 ("python-pytest-mock" ,python-pytest-mock)))
2804 (home-page "http://unknown-horizons.org/")
2805 (synopsis "Isometric realtime strategy, economy and city building simulation")
2806 (description
2807 "Unknown Horizons is a 2D realtime strategy simulation with an emphasis
2808 on economy and city building. Expand your small settlement to a strong and
2809 wealthy colony, collect taxes and supply your inhabitants with valuable
2810 goods. Increase your power with a well balanced economy and with strategic
2811 trade and diplomacy.")
2812 (license (list
2813 license:gpl2+ ; Covers code
2814 license:expat ; tests/dummy.py, ext/polib.py
2815 license:cc-by-sa3.0 ; Covers some media content
2816 license:cc-by3.0 ; Covers some media content
2817 license:bsd-3)))) ; horizons/ext/speaklater.py
2818
2819 (define-public gnujump
2820 (package
2821 (name "gnujump")
2822 (version "1.0.8")
2823 (source (origin
2824 (method url-fetch)
2825 (uri (string-append "mirror://gnu/gnujump/gnujump-"
2826 version ".tar.gz"))
2827 (sha256
2828 (base32
2829 "05syy9mzbyqcfnm0hrswlmhwlwx54f0l6zhcaq8c1c0f8dgzxhqk"))))
2830 (build-system gnu-build-system)
2831 (arguments
2832 '(#:phases
2833 (modify-phases %standard-phases
2834 (add-before
2835 'configure 'link-libm
2836 (lambda _ (setenv "LIBS" "-lm")))
2837 (add-after 'install 'create-desktop-entry
2838 (lambda* (#:key outputs #:allow-other-keys)
2839 (let* ((out (assoc-ref outputs "out"))
2840 (apps (string-append out "/share/applications")))
2841 (mkdir-p apps)
2842 (with-output-to-file
2843 (string-append apps "/gnujump.desktop")
2844 (lambda _
2845 (format #t
2846 "[Desktop Entry]~@
2847 Name=GNUjump~@
2848 Comment=Jump up the tower to survive~@
2849 Exec=~a/bin/gnujump~@
2850 Terminal=false~@
2851 Type=Application~@
2852 Categories=Game;ArcadeGame~%"
2853 out)))))))))
2854 (inputs
2855 `(("glu" ,glu)
2856 ("mesa" ,mesa)
2857 ("sdl" ,sdl)
2858 ("sdl-image" ,sdl-image)
2859 ("sdl-mixer" ,sdl-mixer)))
2860 (home-page "http://gnujump.es.gnu.org/")
2861 (synopsis
2862 "Game of jumping to the next floor, trying not to fall")
2863 (description
2864 "GNUjump is a simple, yet addictive game in which you must jump from
2865 platform to platform to avoid falling, while the platforms drop at faster rates
2866 the higher you go. The game features multiplayer, unlimited FPS, smooth floor
2867 falling, themeable graphics and sounds, and replays.")
2868 (license license:gpl3+)))
2869
2870 (define-public wesnoth
2871 (package
2872 (name "wesnoth")
2873 (version "1.14.11")
2874 (source (origin
2875 (method url-fetch)
2876 (uri (string-append "mirror://sourceforge/wesnoth/wesnoth-"
2877 (version-major+minor version)
2878 "/wesnoth-" version "/"
2879 "wesnoth-" version ".tar.bz2"))
2880 (sha256
2881 (base32
2882 "1i8mz6gw3qar09bscczhki0g4scj8pl58v85rp0g55r4bcq41l5v"))))
2883 (build-system cmake-build-system)
2884 (arguments
2885 `(#:tests? #f ;no check target
2886 #:phases (modify-phases %standard-phases
2887 (add-before 'configure 'treat-boost-as-system-header
2888 (lambda* (#:key inputs #:allow-other-keys)
2889 (let ((boost (assoc-ref inputs "boost")))
2890 ;; Ensure Boost is treated as "system headers" to
2891 ;; pacify compiler warnings induced by Boost headers.
2892 (for-each (lambda (variable)
2893 (setenv variable
2894 (string-append boost "/include:"
2895 (or (getenv variable)
2896 ""))))
2897 '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"))
2898 #t))))))
2899 (native-inputs
2900 `(("gettext" ,gettext-minimal)
2901 ("pkg-config" ,pkg-config)))
2902 (inputs
2903 `(("boost" ,boost)
2904 ("dbus" ,dbus)
2905 ("fribidi" ,fribidi)
2906 ("libvorbis" ,libvorbis)
2907 ("openssl" ,openssl)
2908 ("pango" ,pango)
2909 ("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
2910 (home-page "https://www.wesnoth.org/")
2911 (synopsis "Turn-based strategy game")
2912 (description
2913 "The Battle for Wesnoth is a fantasy, turn based tactical strategy game,
2914 with several single player campaigns, and multiplayer games (both networked and
2915 local).
2916
2917 Battle for control on a range of maps, using variety of units which have
2918 advantages and disadvantages against different types of attacks. Units gain
2919 experience and advance levels, and are carried over from one scenario to the
2920 next campaign.")
2921 (license license:gpl2+)))
2922
2923 (define-public wesnoth-server
2924 (package
2925 (inherit wesnoth)
2926 (name "wesnoth-server")
2927 (inputs
2928 `(("boost" ,boost)
2929 ("icu4c" ,icu4c)
2930 ("openssl" ,openssl)
2931 ("sdl2" ,sdl2)))
2932 (arguments
2933 `(#:configure-flags '("-DENABLE_GAME=OFF")
2934 ,@(package-arguments wesnoth)))
2935 (synopsis "Dedicated @emph{Battle for Wesnoth} server")
2936 (description "This package contains a dedicated server for @emph{The
2937 Battle for Wesnoth}.")))
2938
2939 (define-public gamine
2940 (package
2941 (name "gamine")
2942 (version "1.6")
2943 (source (origin
2944 (method url-fetch)
2945 (uri (string-append "mirror://sourceforge/gamine-game/"
2946 "gamine-" version ".tar.gz"))
2947 (sha256
2948 (base32
2949 "1sc6f4445ciigd6yw0ri92746k4hk6ps0bvj9fm1gbp3c3fslk5n"))))
2950 (build-system gnu-build-system)
2951 (native-inputs
2952 `(("pkg-config" ,pkg-config)
2953 ("intltool" ,intltool)))
2954 (inputs
2955 `(("gstreamer" ,gstreamer)
2956 ("gst-plugins-base" ,gst-plugins-base) ; playbin plugin
2957 ("gst-plugins-good" ,gst-plugins-good) ; for wav playback
2958 ("gtk+" ,gtk+)))
2959 (arguments
2960 `(#:tests? #f
2961 #:make-flags
2962 (let ((out (assoc-ref %outputs "out")))
2963 (list (string-append "PREFIX=" out)
2964 (string-append "SYSCONFDIR=" out "/etc")))
2965 #:phases
2966 (modify-phases %standard-phases
2967 (delete 'configure)
2968 (add-after
2969 'install 'wrap-gamine
2970 (lambda* (#:key outputs #:allow-other-keys)
2971 (let ((out (assoc-ref outputs "out"))
2972 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
2973 (wrap-program (string-append out "/bin/gamine")
2974 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))))
2975 #t)))))
2976 (home-page "http://gamine-game.sourceforge.net/")
2977 (synopsis "Mouse and keyboard discovery for children")
2978 (description
2979 "Gamine is a game designed for young children who are learning to use the
2980 mouse and keyboard. The child uses the mouse to draw colored dots and lines
2981 on the screen and keyboard to display letters.")
2982 ;; Most files under gpl2+ or gpl3+, but eat.wav under gpl3
2983 (license license:gpl3)))
2984
2985 (define-public manaplus
2986 (package
2987 (name "manaplus")
2988 (version "1.9.3.23")
2989 (source (origin
2990 (method url-fetch)
2991 (uri (string-append
2992 "https://repo.manaplus.org/manaplus/download/"
2993 version "/manaplus-" version ".tar.xz"))
2994 (sha256
2995 (base32
2996 "1ky182p4svwdqm6cf7jbns85hidkhkhq4s17cs2p381f0klapfjz"))))
2997 (build-system gnu-build-system)
2998 (arguments
2999 '(#:configure-flags
3000 (list (string-append "CPPFLAGS=-I"
3001 (assoc-ref %build-inputs "sdl-union")
3002 "/include/SDL"))))
3003 (native-inputs
3004 `(("pkg-config" ,pkg-config)))
3005 (inputs
3006 `(("glu" ,glu)
3007 ("curl" ,curl)
3008 ("libxml2" ,libxml2)
3009 ("mesa" ,mesa)
3010 ("sdl-union" ,(sdl-union))))
3011 (home-page "https://manaplus.org")
3012 (synopsis "Client for 'The Mana World' and similar games")
3013 (description
3014 "ManaPlus is a 2D MMORPG client for game servers. It is the only
3015 fully supported client for @uref{http://www.themanaworld.org, The mana
3016 world}, @uref{http://evolonline.org, Evol Online} and
3017 @uref{http://landoffire.org, Land of fire}.")
3018 ;; "src/debug/*" and "src/sdl2gfx/*" are under Zlib.
3019 ;; "data/themes/{golden-delicious,jewelry}/*" are under CC-BY-SA.
3020 ;; The rest is under GPL2+.
3021 (license (list license:gpl2+ license:zlib license:cc-by-sa4.0))))
3022
3023 (define openttd-engine
3024 (package
3025 (name "openttd-engine")
3026 (version "1.10.0")
3027 (source
3028 (origin (method url-fetch)
3029 (uri (string-append "https://cdn.openttd.org/openttd-releases/"
3030 version "/openttd-" version "-source.tar.xz"))
3031 (sha256
3032 (base32
3033 "0lz2y2rjc23k0d97y65cqhy2splw9cmrbvhgz0iqps8xkan1m8hv"))))
3034 (build-system gnu-build-system)
3035 (arguments
3036 `(#:tests? #f ; no "check" target
3037 #:phases
3038 (modify-phases %standard-phases
3039 ;; The build process fails if the configure script is passed the
3040 ;; option "--enable-fast-install".
3041 (replace 'configure
3042 (lambda* (#:key inputs outputs (configure-flags '())
3043 #:allow-other-keys)
3044 (let ((out (assoc-ref outputs "out"))
3045 (lzo (assoc-ref inputs "lzo")))
3046 (apply invoke "./configure"
3047 (string-append "--prefix=" out)
3048 ;; Provide the "lzo" path.
3049 (string-append "--with-liblzo2="
3050 lzo "/lib/liblzo2.a")
3051 ;; Put the binary in 'bin' instead of 'games'.
3052 "--binary-dir=bin"
3053 configure-flags)))))))
3054 (native-inputs `(("pkg-config" ,pkg-config)))
3055 (inputs
3056 `(("allegro" ,allegro)
3057 ("fontconfig" ,fontconfig)
3058 ("freetype" ,freetype)
3059 ("icu4c" ,icu4c)
3060 ("libpng" ,libpng)
3061 ("lzo" ,lzo)
3062 ("sdl" ,sdl)
3063 ("xz" ,xz)
3064 ("zlib" ,zlib)))
3065 (synopsis "Transportation economics simulator game")
3066 (description "OpenTTD is a game in which you transport goods and
3067 passengers by land, water and air. It is a re-implementation of Transport
3068 Tycoon Deluxe with many enhancements including multiplayer mode,
3069 internationalization support, conditional orders and the ability to clone,
3070 autoreplace and autoupdate vehicles. This package only includes the game
3071 engine. When you start it you will be prompted to download a graphics set.")
3072 (home-page "https://www.openttd.org/")
3073 ;; This package is GPLv2, except for a few files located in
3074 ;; "src/3rdparty/" which are under the 3-clause BSD, LGPLv2.1+ and Zlib
3075 ;; licenses. In addition, this software contains an in-game downloader
3076 ;; from which the user may find non-functional data licensed under
3077 ;; different terms.
3078 (license (list license:bsd-3 license:gpl2 license:lgpl2.1+ license:zlib))))
3079
3080 (define openttd-opengfx
3081 (package
3082 (name "openttd-opengfx")
3083 (version "0.6.0")
3084 (source
3085 (origin
3086 (method url-fetch)
3087 (uri (string-append "https://cdn.openttd.org/opengfx-releases/"
3088 version "/opengfx-" version "-source.tar.xz"))
3089 (sha256
3090 (base32
3091 "0qxc6gl2gxcrn1np88dnjgbaaakkkx96b13rcmy1spryc8c09hyr"))))
3092 (build-system gnu-build-system)
3093 (arguments
3094 '(#:make-flags (list "CC=gcc"
3095 (string-append "INSTALL_DIR="
3096 (assoc-ref %outputs "out")
3097 "/share/games/openttd/baseset/opengfx"))
3098 #:phases
3099 (modify-phases %standard-phases
3100 (replace 'configure
3101 (lambda _
3102 ;; Make sure HOME is writable for GIMP.
3103 (setenv "HOME" (getcwd))
3104
3105 ;; Redirect stdout, not stderr, to /dev/null. This prevents
3106 ;; dos2unix from receiving its version information as a flag.
3107 (substitute* "Makefile"
3108 (("\\$\\(UNIX2DOS\\) -q --version 2>/dev/null")
3109 "$(UNIX2DOS) -q --version 1>/dev/null")))))
3110 ;; The check phase for this package only checks the md5sums of the built
3111 ;; GRF files against the md5sums of the release versions. Because we use
3112 ;; different software versions than upstream does, some of the md5sums
3113 ;; are different. However, the package is still reproducible, it's safe
3114 ;; to disable this test.
3115 #:tests? #f
3116 #:parallel-build? #f))
3117 (native-inputs `(("dos2unix" ,dos2unix)
3118 ("gimp" ,gimp)
3119 ("grfcodec" ,grfcodec)
3120 ("nml" ,nml)
3121 ("which" ,which)
3122 ("python" ,python-2)))
3123 (home-page "http://dev.openttdcoop.org/projects/opengfx")
3124 (synopsis "Base graphics set for OpenTTD")
3125 (description
3126 "The OpenGFX projects is an implementation of the OpenTTD base grahics
3127 set that aims to ensure the best possible out-of-the-box experience.
3128
3129 OpenGFX provides you with...
3130 @enumerate
3131 @item All graphics you need to enjoy OpenTTD.
3132 @item Uniquely drawn rail vehicles for every climate.
3133 @item Completely snow-aware rivers.
3134 @item Different river and sea water.
3135 @item Snow-aware buoys.
3136 @end enumerate")
3137 (license license:gpl2)))
3138
3139 (define openttd-opensfx
3140 (package
3141 (name "openttd-opensfx")
3142 (version "0.2.3")
3143 (source
3144 (origin
3145 (method url-fetch)
3146 (uri (string-append
3147 "https://binaries.openttd.org/extra/opensfx/"
3148 version "/opensfx-" version "-source.tar.gz"))
3149 (sha256
3150 (base32
3151 "03jxgp02ks31hmsdh4xh0xcpkb70ds8jakc9pfc1y9vdrdavh4p5"))))
3152 (build-system gnu-build-system)
3153 (native-inputs
3154 `(("catcodec" ,catcodec)
3155 ("python" ,python-2)))
3156 (arguments
3157 `(#:make-flags
3158 (list (string-append "INSTALL_DIR=" %output
3159 "/share/games/openttd/baseset/opensfx"))
3160 #:phases
3161 (modify-phases %standard-phases
3162 (add-after 'unpack 'make-reproducible
3163 (lambda _
3164 ;; Remove the time dependency of the installed tarball by setting
3165 ;; the modification times if its members to 0.
3166 (substitute* "scripts/Makefile.def"
3167 (("-cf") " --mtime=@0 -cf"))
3168 #t))
3169 (delete 'configure))))
3170 (home-page "http://dev.openttdcoop.org/projects/opensfx")
3171 (synopsis "Base sounds for OpenTTD")
3172 (description "OpenSFX is a set of free base sounds for OpenTTD which make
3173 it possible to play OpenTTD without requiring the proprietary sound files from
3174 the original Transport Tycoon Deluxe.")
3175 (license license:cc-sampling-plus-1.0)))
3176
3177 (define openttd-openmsx
3178 (package
3179 (name "openttd-openmsx")
3180 (version "0.3.1")
3181 (source
3182 (origin
3183 (method url-fetch)
3184 (uri (string-append
3185 "https://binaries.openttd.org/extra/openmsx/"
3186 version "/openmsx-" version "-source.tar.gz"))
3187 (sha256
3188 (base32
3189 "0nskq97a6fsv1v6d62zf3yb8whzhqnlh3lap3va3nzvj7csjgf7c"))))
3190 (build-system gnu-build-system)
3191 (native-inputs
3192 `(("python" ,python-2)))
3193 (arguments
3194 `(#:make-flags
3195 (list (string-append "INSTALL_DIR=" %output
3196 "/share/games/openttd/baseset"))
3197 #:phases
3198 (modify-phases %standard-phases
3199 (delete 'configure)
3200 (add-after 'install 'post-install
3201 ;; Rename openmsx-version to openmsx
3202 (lambda* (#:key outputs #:allow-other-keys)
3203 (let ((install-directory (string-append (assoc-ref outputs "out")
3204 "/share/games/openttd/baseset")))
3205 (rename-file (string-append install-directory "/openmsx-" ,version)
3206 (string-append install-directory "/openmsx"))
3207 #t))))))
3208 (home-page "http://dev.openttdcoop.org/projects/openmsx")
3209 (synopsis "Music set for OpenTTD")
3210 (description "OpenMSX is a music set for OpenTTD which makes it possible
3211 to play OpenTTD without requiring the proprietary music from the original
3212 Transport Tycoon Deluxe.")
3213 (license license:gpl2)))
3214
3215 (define-public openttd
3216 (package
3217 (inherit openttd-engine)
3218 (name "openttd")
3219 (arguments
3220 `(#:configure-flags
3221 (list (string-append "--with-midi=" (assoc-ref %build-inputs "timidity++")
3222 "/bin/timidity"))
3223 ,@(substitute-keyword-arguments (package-arguments openttd-engine)
3224 ((#:phases phases)
3225 `(modify-phases ,phases
3226 (add-after 'install 'install-data
3227 (lambda* (#:key inputs outputs #:allow-other-keys)
3228 (for-each
3229 (lambda (input)
3230 (copy-recursively (assoc-ref inputs input)
3231 (assoc-ref outputs "out")))
3232 (list "opengfx" "openmsx" "opensfx"))
3233 #t)))))))
3234 (inputs
3235 `(("timidity++" ,timidity++)
3236 ,@(package-inputs openttd-engine)))
3237 (native-inputs
3238 `(("opengfx" ,openttd-opengfx)
3239 ("openmsx" ,openttd-openmsx)
3240 ("opensfx" ,openttd-opensfx)
3241 ,@(package-native-inputs openttd-engine)))))
3242
3243 (define openrct2-title-sequences
3244 (package
3245 (name "openrct2-title-sequences")
3246 (version "0.1.2")
3247 (source
3248 (origin
3249 (method url-fetch)
3250 (uri (string-append "https://github.com/OpenRCT2/title-sequences/releases/download/v"
3251 version "/title-sequence-v" version ".zip"))
3252 (file-name (string-append name "-" version ".zip"))
3253 (sha256
3254 (base32
3255 "0qbyxrsw8hlgaq0r5d7lx7an3idy4qbfv7yiw9byhldk763n9cfw"))))
3256 (build-system trivial-build-system)
3257 (native-inputs
3258 `(("bash" ,bash)
3259 ("coreutils" ,coreutils)
3260 ("unzip" ,unzip)))
3261 (arguments
3262 `(#:modules ((guix build utils))
3263 #:builder
3264 (begin
3265 (use-modules (guix build utils))
3266 (let* ((out (assoc-ref %outputs "out"))
3267 (openrct2-title-sequences (string-append out
3268 "/share/openrct2/title-sequences"))
3269 (source (assoc-ref %build-inputs "source"))
3270 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
3271 (copy-file source (string-append ,name "-" ,version ".zip"))
3272 (invoke unzip (string-append ,name "-" ,version ".zip"))
3273 (delete-file (string-append ,name "-" ,version ".zip"))
3274 (mkdir-p openrct2-title-sequences)
3275 (copy-recursively "."
3276 openrct2-title-sequences)
3277 #t))))
3278 (home-page "https://github.com/OpenRCT2/OpenRCT2")
3279 (synopsis "Title sequences for OpenRCT2")
3280 (description
3281 "openrct2-title-sequences is a set of title sequences for OpenRCT2.")
3282 (license license:gpl3+)))
3283
3284 (define openrct2-objects
3285 (package
3286 (name "openrct2-objects")
3287 (version "1.0.9")
3288 (source
3289 (origin
3290 (method url-fetch)
3291 (uri (string-append "https://github.com/OpenRCT2/objects/releases/download/v"
3292 version "/objects.zip"))
3293 (file-name (string-append name "-" version ".zip"))
3294 (sha256
3295 (base32 "02apb8h553m7d6jvysgb1zahvxc1yzyygfca2iclb21b3fhpsas4"))))
3296 (build-system trivial-build-system)
3297 (native-inputs
3298 `(("bash" ,bash)
3299 ("coreutils" ,coreutils)
3300 ("unzip" ,unzip)))
3301 (arguments
3302 `(#:modules ((guix build utils))
3303 #:builder
3304 (begin
3305 (use-modules (guix build utils))
3306 (let* ((out (assoc-ref %outputs "out"))
3307 (openrct2-objects (string-append out
3308 "/share/openrct2/objects"))
3309 (source (assoc-ref %build-inputs "source"))
3310 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
3311 (copy-file source (string-append ,name "-" ,version ".zip"))
3312 (invoke unzip (string-append ,name "-" ,version ".zip"))
3313 (delete-file (string-append ,name "-" ,version ".zip"))
3314 (mkdir-p openrct2-objects)
3315 (copy-recursively "."
3316 openrct2-objects)
3317 #t))))
3318 (home-page "https://github.com/OpenRCT2/OpenRCT2")
3319 (synopsis "Objects for OpenRCT2")
3320 (description
3321 "openrct2-objects is a set of objects for OpenRCT2.")
3322 (license license:gpl3+)))
3323
3324 (define-public openrct2
3325 (package
3326 (name "openrct2")
3327 (version "0.2.4")
3328 (source
3329 (origin
3330 (method git-fetch)
3331 (uri (git-reference
3332 (url "https://github.com/OpenRCT2/OpenRCT2.git")
3333 (commit (string-append "v" version))))
3334 (file-name (git-file-name name version))
3335 (sha256
3336 (base32 "1rlw3w20llg36sj3bk50g661qw766ng8ma3p42sdkj8br9dw800h"))))
3337 (build-system cmake-build-system)
3338 (arguments
3339 `(#:configure-flags (list "-DDOWNLOAD_OBJECTS=OFF"
3340 "-DDOWNLOAD_TITLE_SEQUENCES=OFF")
3341 #:tests? #f ; tests require network access
3342 #:phases
3343 (modify-phases %standard-phases
3344 (add-after 'unpack 'fix-usr-share-paths&add-data
3345 (lambda* (#:key inputs outputs #:allow-other-keys)
3346 (let ((titles (assoc-ref inputs "openrct2-title-sequences"))
3347 (objects (assoc-ref inputs "openrct2-objects")))
3348 ;; Fix some references to /usr/share.
3349 (substitute* "src/openrct2/platform/Platform.Linux.cpp"
3350 (("/usr/share")
3351 (string-append (assoc-ref %outputs "out") "/share")))
3352 (copy-recursively
3353 (string-append titles "/share/openrct2/title-sequences")
3354 "data/title")
3355 (copy-recursively
3356 (string-append objects "/share/openrct2/objects")
3357 "data/object"))))
3358 (add-before 'configure 'get-rid-of-errors
3359 (lambda _
3360 ;; Don't treat warnings as errors.
3361 (substitute* "CMakeLists.txt"
3362 (("-Werror") ""))
3363 #t)))))
3364 (inputs `(("curl" ,curl)
3365 ("fontconfig" ,fontconfig)
3366 ("freetype" ,freetype)
3367 ("icu4c" ,icu4c)
3368 ("jansson" ,jansson)
3369 ("libpng" ,libpng)
3370 ("libzip" ,libzip)
3371 ("mesa" ,mesa)
3372 ("openrct2-objects" ,openrct2-objects)
3373 ("openrct2-title-sequences" ,openrct2-title-sequences)
3374 ("openssl" ,openssl)
3375 ("sdl2" ,sdl2)
3376 ("speexdsp" ,speexdsp)
3377 ("zlib" ,zlib)))
3378 (native-inputs
3379 `(("pkg-config" ,pkg-config)))
3380 (home-page "https://github.com/OpenRCT2/OpenRCT2")
3381 (synopsis "Free software re-implementation of RollerCoaster Tycoon 2")
3382 (description "OpenRCT2 is a free software re-implementation of
3383 RollerCoaster Tycoon 2 (RCT2). The gameplay revolves around building and
3384 maintaining an amusement park containing attractions, shops and facilities.
3385
3386 Note that this package does @emph{not} provide the game assets (sounds,
3387 images, etc.)")
3388 ;; See <https://github.com/OpenRCT2/OpenRCT2/wiki/Required-RCT2-files>
3389 ;; regarding assets.
3390 (license license:gpl3+)))
3391
3392 (define-public pinball
3393 (package
3394 (name "pinball")
3395 (version "0.3.1")
3396 (source
3397 (origin (method url-fetch)
3398 (uri (string-append "mirror://sourceforge/pinball/pinball/"
3399 "pinball-" version "/"
3400 "pinball-" version ".tar.gz"))
3401 (sha256
3402 (base32
3403 "1f2whlrfidwfh8lvr8cspcyirc6840r5d1ajm7x99qmngygrhixs"))
3404 (patches (search-patches "pinball-const-fix.patch"
3405 "pinball-cstddef.patch"
3406 "pinball-missing-separators.patch"
3407 "pinball-src-deps.patch"
3408 "pinball-system-ltdl.patch"))))
3409 (build-system gnu-build-system)
3410 (inputs
3411 `(("glu" ,glu)
3412 ("mesa" ,mesa)
3413 ("sdl" ,sdl)
3414 ("sdl-image" ,sdl-image)
3415 ("sdl-mixer" ,sdl-mixer)))
3416 (arguments
3417 '(#:configure-flags
3418 (list (string-append "CPPFLAGS=-I"
3419 (assoc-ref %build-inputs "sdl-image")
3420 "/include/SDL -I"
3421 (assoc-ref %build-inputs "sdl-mixer")
3422 "/include/SDL"))))
3423 (home-page "http://pinball.sourceforge.net")
3424 (synopsis "Pinball simulator")
3425 (description "The Emilia Pinball Project is a pinball simulator. There
3426 are only two levels to play with, but they are very addictive.")
3427 (license license:gpl2)))
3428
3429 (define-public pioneers
3430 (package
3431 (name "pioneers")
3432 (version "15.5")
3433 (source (origin
3434 (method url-fetch)
3435 (uri (string-append "http://downloads.sourceforge.net/pio/"
3436 "pioneers-" version ".tar.gz"))
3437 (sha256
3438 (base32
3439 "037gdiiw690jw3wd1s9lxmkqx0caxyk0b4drpm7i9p28gig43q9y"))))
3440 (build-system gnu-build-system)
3441 (inputs `(("avahi" ,avahi)
3442 ("gtk+" ,gtk+)
3443 ("librsvg" ,librsvg)))
3444 (native-inputs `(("intltool" ,intltool)
3445 ("itstool" ,itstool)
3446 ("libxml2" ,libxml2)
3447 ("pkg-config" ,pkg-config)))
3448 (synopsis "Board game inspired by The Settlers of Catan")
3449 (description "Pioneers is an emulation of the board game The Settlers of
3450 Catan. It can be played on a local network, on the internet, and with AI
3451 players.")
3452 (home-page "http://pio.sourceforge.net/")
3453 (license license:gpl2+)))
3454
3455 (define-public einstein
3456 (package
3457 (name "einstein")
3458 (version "2.0")
3459 (source (origin
3460 (method url-fetch)
3461 (uri (string-append "mirror://debian/pool/main/e/"
3462 "einstein/einstein_2.0.dfsg.2.orig.tar.gz"))
3463 (sha256
3464 (base32
3465 "1hxrlv6n8py48j487i6wbb4n4vd55w0na69r7ccmmr9vmrsw5mlk"))
3466 (patches (search-patches "einstein-build.patch"))))
3467 (build-system gnu-build-system)
3468 (inputs
3469 `(("freetype" ,freetype)
3470 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf)))
3471 ("zlib" ,zlib)))
3472 (native-inputs
3473 `(("font-dejavu" ,font-dejavu)))
3474 (arguments
3475 `(#:tests? #f ; no check target
3476 #:phases
3477 (modify-phases %standard-phases
3478 (replace 'configure
3479 (lambda* (#:key outputs inputs #:allow-other-keys)
3480 (let ((out (assoc-ref outputs "out"))
3481 (dejavu (string-append (assoc-ref inputs "font-dejavu")
3482 "/share/fonts/truetype/DejaVuSans.ttf")))
3483 (substitute* "Makefile"
3484 (("PREFIX=/usr/local") (string-append "PREFIX=" out)))
3485 ;; The patch above registers a free font for use by the binary,
3486 ;; but the font is copied during the compile phase into a
3487 ;; resources file, so we need to make the ttf file available.
3488 (symlink dejavu "res/DejaVuSans.ttf")
3489 #t))))))
3490 (synopsis "Logic puzzle game")
3491 (description "The goal of this logic game is to open all cards in a 6x6
3492 grid, using a number of hints as to their relative position. The game idea
3493 is attributed to Albert Einstein.")
3494 ;; The original home page has disappeared.
3495 (home-page (string-append "http://web.archive.org/web/20120521062745/"
3496 "http://games.flowix.com/en/index.html"))
3497 ;; License according to
3498 ;; http://web.archive.org/web/20150222180355/http://www.babichev.info/en/projects/index.html
3499 ;; The source code is a DFSG-sanitized tarball and does not contain any
3500 ;; license information.
3501 (license license:gpl3+)))
3502
3503 (define-public powwow
3504 (package
3505 (name "powwow")
3506 (version "1.2.19")
3507 (source (origin
3508 (method url-fetch)
3509 (uri (string-append
3510 "https://www.hoopajoo.net/static/projects/powwow-"
3511 version ".tar.gz"))
3512 (sha256
3513 (base32
3514 "10rjl63hmf62qslyhzqrbw3i2zf09dgxv65avhj0iiz0m4pbc9wy"))))
3515 (inputs
3516 `(("ncurses" ,ncurses)))
3517 (build-system gnu-build-system)
3518 (home-page "https://www.hoopajoo.net/projects/powwow.html")
3519 (synopsis "MUD and telnet client")
3520 (description
3521 "POWWOW is a client software which can be used for telnet as well as for
3522 @dfn{Multi-User Dungeon} (MUD). Additionally it can serve as a nice client for
3523 the chat server psyced with the specific config located at
3524 http://lavachat.symlynx.com/unix/")
3525 (license license:gpl2+)))
3526
3527 (define-public red-eclipse
3528 (let ((release "2.0.0")
3529 (revision 0))
3530 (package
3531 (name "red-eclipse")
3532 (version (if (zero? revision)
3533 release
3534 (string-append release "-"
3535 (number->string revision))))
3536 (source
3537 (origin
3538 (method git-fetch)
3539 (uri (git-reference
3540 (url "https://github.com/redeclipse/base.git")
3541 (commit (string-append "v" release))
3542 (recursive? #t))) ; for game data
3543 (file-name (git-file-name name version))
3544 (sha256
3545 (base32 "0sz0mqhwx8r9n4mk3qrxw420nlsm3y0n48gd0lazgd64lfqjh3ab"))
3546 (modules '((guix build utils)))
3547 (snippet
3548 ;; Remove proprietary libraries and other pre-compiled binaries.
3549 '(begin
3550 (delete-file-recursively "bin")
3551 #t))))
3552 (build-system gnu-build-system)
3553 (arguments
3554 `(#:tests? #f ; no check target
3555 #:make-flags (list "CC=gcc" "-Csrc"
3556 (string-append "INSTDIR="
3557 (assoc-ref %outputs "out") "/bin")
3558 (string-append "prefix="
3559 (assoc-ref %outputs "out")))
3560 #:phases
3561 (modify-phases %standard-phases
3562 (add-after 'unpack 'add-store-data-package-path-as-default
3563 (lambda* (#:key outputs #:allow-other-keys)
3564 (substitute* "src/engine/server.cpp"
3565 (("data = \"data\"")
3566 (string-append "data = \""
3567 (assoc-ref outputs "out")
3568 "/share/redeclipse/data\"")))
3569 #t))
3570 (delete 'configure) ; no configure script
3571 (add-after 'set-paths 'set-sdl-paths
3572 (lambda* (#:key inputs #:allow-other-keys)
3573 (setenv "CPATH"
3574 (string-append (assoc-ref inputs "sdl-union")
3575 "/include/SDL2:"
3576 (or (getenv "CPATH") "")))
3577 #t))
3578 (add-after 'install 'copy-data
3579 (lambda* (#:key outputs #:allow-other-keys)
3580 (let ((out (assoc-ref outputs "out")))
3581 (copy-recursively "config"
3582 (string-append out "/config"))
3583 (copy-file "doc/examples/servinit.cfg"
3584 (string-append out "/config/servinit.cfg"))
3585 (copy-recursively "data"
3586 (string-append out "/share/redeclipse/data"))
3587 (mkdir-p (string-append out "/lib/redeclipse"))
3588 (symlink (string-append out "/share/redeclipse/data")
3589 (string-append out "/lib/redeclipse/data")))
3590 #t))
3591 (add-after 'copy-data 'wrap-program
3592 (lambda* (#:key inputs outputs #:allow-other-keys)
3593 (let* ((out (assoc-ref outputs "out"))
3594 (bin (string-append out "/bin")))
3595 (with-directory-excursion bin
3596 (rename-file "redeclipse_linux"
3597 ".redeclipse_linux-real")
3598 (rename-file "redeclipse_server_linux"
3599 ".redeclipse_server_linux-real")
3600 (call-with-output-file "redeclipse_linux"
3601 (lambda (port)
3602 (format port "#!~a/bin/sh
3603 # Run the thing from its home, otherwise it just bails out.
3604 cd \"~a\"
3605 exec -a \"$0\" ~a/.redeclipse_linux-real~%"
3606 (assoc-ref inputs "bash") ;implicit input
3607 (string-append out)
3608 (string-append bin))))
3609 (call-with-output-file "redeclipse_server_linux"
3610 (lambda (port)
3611 (format port "#!~a/bin/sh
3612 # Run the thing from its home, otherwise it just bails out.
3613 cd \"~a\"
3614 exec -a \"$0\" ~a/.redeclipse_server_linux-real~%"
3615 (assoc-ref inputs "bash") ;implicit input
3616 (string-append out)
3617 (string-append bin))))
3618 (chmod "redeclipse_linux" #o555)
3619 (chmod "redeclipse_server_linux" #o555)))
3620 #t)))))
3621 (native-inputs
3622 `(("pkg-config" ,pkg-config)))
3623 (inputs
3624 `(("curl" ,curl)
3625 ("freetype" ,freetype)
3626 ("glu" ,glu)
3627 ("sdl-union" ,(sdl-union (list sdl2
3628 sdl2-image
3629 sdl2-mixer)))))
3630 (home-page "https://redeclipse.net/")
3631 (synopsis "Arena shooter derived from the Cube 2 engine")
3632 (description
3633 "Red Eclipse is an arena shooter, created from the Cube2 engine.
3634 Offering an innovative parkour system and distinct but all potent weapons,
3635 Red Eclipse provides fast paced and accessible gameplay.")
3636 ;; The engine is under Zlib; data files are covered by the other
3637 ;; licenses. More details at file:///doc/all-licenses.txt.
3638 (license (list license:expat
3639 license:zlib
3640 license:cc-by-sa4.0
3641 license:cc-by-sa3.0
3642 license:cc-by3.0
3643 license:cc0
3644 license:public-domain
3645 license:silofl1.1)))))
3646
3647 (define-public grue-hunter
3648 (package
3649 (name "grue-hunter")
3650 (version "1.0")
3651 (source (origin
3652 (method url-fetch)
3653 (uri (string-append "https://jxself.org/grue-hunter.tar.gz"))
3654 (sha256
3655 (base32
3656 "1hjcpy5439qs3v2zykis7hsi0i17zjs62gks3zd8mnfw9ni4i2h3"))))
3657 (build-system trivial-build-system) ; no Makefile.PL
3658 (arguments `(#:modules ((guix build utils))
3659 #:builder
3660 (begin
3661 (use-modules (guix build utils))
3662 (use-modules (srfi srfi-1))
3663
3664 (let* ((tarball (assoc-ref %build-inputs "tarball"))
3665 (perl (string-append (assoc-ref %build-inputs
3666 "perl")
3667 "/bin"))
3668 (gzip (string-append (assoc-ref %build-inputs
3669 "gzip")
3670 "/bin/gzip"))
3671 (tar (string-append (assoc-ref %build-inputs
3672 "tar")
3673 "/bin/tar"))
3674 (out (assoc-ref %outputs "out"))
3675 (bin (string-append out "/bin"))
3676 (doc (string-append out
3677 "/share/doc/grue-hunter")))
3678 (copy-file tarball "grue-hunter.tar.gz")
3679 (invoke gzip "-d" "grue-hunter.tar.gz")
3680 (invoke tar "xvf" "grue-hunter.tar")
3681
3682 (mkdir-p bin)
3683 (copy-file "grue-hunter/gh.pl"
3684 (string-append bin "/grue-hunter"))
3685 (patch-shebang (string-append bin "/grue-hunter")
3686 (list perl))
3687
3688 (install-file "grue-hunter/AGPLv3.txt" doc)
3689
3690 #t))))
3691 (inputs `(("perl" ,perl)
3692 ("tar" ,tar)
3693 ("gzip" ,gzip)
3694 ("tarball" ,source)))
3695 (home-page "https://jxself.org/grue-hunter.shtml")
3696 (synopsis "Text adventure game")
3697 (description
3698 "Grue Hunter is a text adventure game written in Perl. You must make
3699 your way through an underground cave system in search of the Grue. Can you
3700 capture it and get out alive?")
3701 (license license:agpl3+)))
3702
3703 (define-public lierolibre
3704 (package
3705 (name "lierolibre")
3706 (version "0.5")
3707 (source (origin
3708 (method url-fetch)
3709 (uri (string-append "https://launchpad.net/lierolibre/trunk/"
3710 version "/+download/lierolibre-"
3711 version ".tar.xz"))
3712 (sha256
3713 (base32
3714 "1cf1gvsn4qq190lrf9k5bpjnqwlcfw7pajvdnh7z5r4jqw0rsbl9"))
3715 (patches
3716 (search-patches "lierolibre-check-unaligned-access.patch"
3717 "lierolibre-try-building-other-arch.patch"
3718 "lierolibre-remove-arch-warning.patch"
3719 "lierolibre-newer-libconfig.patch"
3720 "lierolibre-is-free-software.patch"))
3721 (modules '((guix build utils)))
3722 (snippet
3723 '(begin
3724 ;; Delete pre-compiled files.
3725 (delete-file "data/LIERO.CHR")
3726 (delete-file "data/LIERO.SND")
3727 #t))))
3728 (build-system gnu-build-system)
3729 (native-inputs
3730 `(("imagemagick" ,imagemagick)
3731 ("pkg-config" ,pkg-config)
3732 ("util-linux" ,util-linux)
3733 ("sox" ,sox)))
3734 (inputs
3735 `(("boost" ,boost)
3736 ("libconfig" ,libconfig)
3737 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
3738 ("zlib" ,zlib)))
3739 (home-page "https://gitlab.com/lierolibre/lierolibre")
3740 (synopsis "Old-school earthworm action game")
3741 (description
3742 "lierolibre is an earthworm action game where you fight another player
3743 (or the computer) underground using a wide array of weapons.
3744
3745 Features:
3746 @itemize
3747 @item 2 worms, 40 weapons, great playability, two game modes: Kill'em All
3748 and Game of Tag, plus AI-players without true intelligence!
3749 @item Dat nostalgia.
3750 @item Extensions via a hidden F1 menu:
3751 @itemize
3752 @item Replays
3753 @item Game controller support
3754 @item Powerlevel palettes
3755 @end itemize
3756 @item Ability to write game variables to plain text files.
3757 @item Ability to load game variables from both EXE and plain text files.
3758 @item Scripts to extract and repack graphics, sounds and levels.
3759 @end itemize
3760
3761 To switch between different window sizes, use F6, F7 and F8, to switch to
3762 fullscreen, use F5 or Alt+Enter.")
3763 ;; Code mainly BSD-2, some parts under Boost 1.0. All assets are WTFPL2.
3764 (license (list license:bsd-2 license:boost1.0 license:wtfpl2))))
3765
3766 (define-public tennix
3767 (package
3768 (name "tennix")
3769 (version "1.3.1")
3770 (source
3771 (origin
3772 (method git-fetch)
3773 (uri (git-reference
3774 (url "https://repo.or.cz/tennix.git")
3775 (commit (string-append "tennix-" version))))
3776 (file-name (git-file-name name version))
3777 (sha256
3778 (base32 "02cj4lrdrisal5s9pnbf2smx7qz9czczjzndfkhfx0qy67b957sk"))
3779 ;; Remove non-free images.
3780 (modules '((guix build utils)))
3781 (snippet
3782 '(begin
3783 (for-each delete-file
3784 '("data/loc_training_camp.png"
3785 "data/loc_austrian_open.png"
3786 "data/loc_olympic_green_tennis.png"))
3787 #t))))
3788 (build-system gnu-build-system)
3789 (arguments
3790 `(#:tests? #f ;no test
3791 #:phases
3792 (modify-phases %standard-phases
3793 (add-after 'unpack 'fix-include
3794 (lambda _
3795 (substitute* '("src/graphics.h" "src/sound.h")
3796 (("#include \"(SDL_(image|ttf|mixer)\\.h)\"" _ header)
3797 (string-append "#include \"SDL/" header "\"")))
3798 (substitute* '("src/tennix.h" "src/network.h" "src/SDL_rotozoom.h")
3799 (("#include <SDL.h>") "#include <SDL/SDL.h>")
3800 (("#include <SDL_net.h>") "#include <SDL/SDL_net.h>"))
3801 #t))
3802 (add-after 'unpack 'locate-install
3803 ;; Build process cannot expand "$(INSTALL)" in Makefile.
3804 (lambda _
3805 (substitute* "makefile"
3806 (("^CONFIGURE_OUTPUT :=.*" all)
3807 (string-append "INSTALL := install -c\n" all)))
3808 #t))
3809 (replace 'configure
3810 ;; The "configure" script is picky about the arguments it
3811 ;; gets. Call it ourselves.
3812 (lambda _
3813 (invoke "./configure" "--prefix" (assoc-ref %outputs "out")))))))
3814 (native-inputs
3815 `(("which" ,which)))
3816 (inputs
3817 `(("python" ,python-wrapper)
3818 ("sdl" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf sdl-net)))))
3819 (home-page "http://icculus.org/tennix/")
3820 (synopsis "Play tennis against the computer or a friend")
3821 (description "Tennix is a 2D tennis game. You can play against the
3822 computer or against another player using the keyboard. The game runs
3823 in-window at 640x480 resolution or fullscreen.")
3824 ;; Project is licensed under GPL2+ terms. It includes images
3825 ;; released under Public Domain terms, and SDL_rotozoom, released
3826 ;; under LGPL2.1 terms.
3827 (license (list license:gpl2+ license:public-domain license:lgpl2.1))))
3828
3829 (define-public warzone2100
3830 (package
3831 (name "warzone2100")
3832 (version "3.2.3")
3833 (source
3834 (origin
3835 (method url-fetch)
3836 (uri (string-append "mirror://sourceforge/warzone2100/archives/"
3837 "unsupported/Warzone2100-"
3838 (version-major+minor version) "/" version
3839 "/warzone2100-" version ".tar.xz"))
3840 (sha256
3841 (base32 "10kmpr4cby95zwqsl1zwx95d9achli6khq7flv6xmrq30a39xazw"))))
3842 (build-system gnu-build-system)
3843 (arguments
3844 `(#:configure-flags '("--with-distributor=Guix")
3845 #:phases
3846 (modify-phases %standard-phases
3847 (add-after 'unpack 'link-tests-with-qt
3848 (lambda _
3849 (substitute* "tests/Makefile.in"
3850 (("(framework_linktest_LDADD|maptest_LDADD) = " prefix)
3851 (string-append prefix "$(QT5_LIBS) ")))
3852 #t))
3853 (add-after 'unpack 'fix-ivis-linktest
3854 (lambda _
3855 (substitute* "tests/ivis_linktest.cpp"
3856 (("iV_DrawTextRotated.*;")
3857 (string-append "iV_DrawTextRotated(\"Press ESC to exit.\", "
3858 "100, 100, 0.0f, font_regular);")))
3859 #t)))))
3860 (native-inputs `(("gettext" ,gettext-minimal)
3861 ("pkg-config" ,pkg-config)
3862 ("unzip" ,unzip)
3863 ("zip" ,zip)))
3864 (inputs `(("fontconfig" ,fontconfig)
3865 ("freetype" ,freetype)
3866 ("fribidi" ,fribidi)
3867 ("glew" ,glew)
3868 ("harfbuzz" ,harfbuzz)
3869 ("libtheora" ,libtheora)
3870 ("libvorbis" ,libvorbis)
3871 ("libxrandr" ,libxrandr)
3872 ("openal" ,openal)
3873 ("physfs" ,physfs)
3874 ("qtbase" ,qtbase)
3875 ("qtscript" ,qtscript)
3876 ("openssl" ,openssl)
3877 ("sdl2" ,sdl2)))
3878 (home-page "https://wz2100.net")
3879 (synopsis "3D Real-time strategy and real-time tactics game")
3880 (description
3881 "Warzone 2100 offers campaign, multi-player, and single-player skirmish
3882 modes. An extensive tech tree with over 400 different technologies, combined
3883 with the unit design system, allows for a wide variety of possible units and
3884 tactics.")
3885 ; Everything is GPLv2+ unless otherwise specified in COPYING.NONGPL
3886 (license (list license:bsd-3
3887 license:cc0
3888 license:cc-by-sa3.0
3889 license:expat
3890 license:gpl2+
3891 license:lgpl2.1+))))
3892
3893 (define-public starfighter
3894 (package
3895 (name "starfighter")
3896 (version "2.0.0.3")
3897 (source (origin
3898 (method url-fetch)
3899 (uri (string-append
3900 "https://github.com/pr-starfighter/starfighter/releases"
3901 "/download/v" version "/starfighter-"
3902 (version-major+minor version) "-src.tar.gz"))
3903 (sha256
3904 (base32
3905 "13vi5kh9ahws4f52421cbyw0jn7pmbnld358lqfmr6flql7ilj3b"))))
3906 (build-system gnu-build-system)
3907 (native-inputs
3908 `(("pkg-config" ,pkg-config)))
3909 (inputs
3910 `(("pango" ,pango)
3911 ("sdl2" ,sdl2)
3912 ("sdl2-image" ,sdl2-image)
3913 ("sdl2-mixer" ,sdl2-mixer)
3914 ("sdl2-ttf" ,sdl2-ttf)))
3915 (home-page "https://pr-starfighter.github.io/")
3916 (synopsis "2D scrolling shooter game")
3917 (description
3918 "In the year 2579, the intergalactic weapons corporation, WEAPCO, has
3919 dominated the galaxy. Guide Chris Bainfield and his friend Sid Wilson on
3920 their quest to liberate the galaxy from the clutches of WEAPCO. Along the
3921 way, you will encounter new foes, make new allies, and assist local rebels
3922 in strikes against the evil corporation.")
3923 ;; gfx and music are under CC-BY 3.0, CC-BY-SA 3.0, CC0 or Public Domain.
3924 (license (list license:gpl3+
3925 license:cc-by3.0
3926 license:cc-by-sa3.0
3927 license:cc0
3928 license:public-domain))))
3929
3930 (define-public chromium-bsu
3931 (package
3932 (name "chromium-bsu")
3933 (version "0.9.16.1")
3934 (source (origin
3935 (method url-fetch)
3936 (uri (string-append "mirror://sourceforge/chromium-bsu"
3937 "/Chromium B.S.U. source code/"
3938 "chromium-bsu-" version ".tar.gz"))
3939 (sha256
3940 (base32
3941 "0jk2w5b6s6nkzri585bbz16cif2fhqcnl5l1mq3rd98r9nil3hd1"))))
3942 (build-system gnu-build-system)
3943 (native-inputs `(("pkg-config" ,pkg-config)))
3944 (inputs `(("gettext" ,gettext-minimal)
3945 ("glu" ,glu)
3946 ("quesoglc" ,quesoglc)
3947 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))))
3948 (home-page "http://chromium-bsu.sourceforge.net/")
3949 (synopsis "Fast-paced, arcade-style, top-scrolling space shooter")
3950 (description
3951 "In this game you are the captain of the cargo ship Chromium B.S.U. and
3952 are responsible for delivering supplies to the troops on the front line. Your
3953 ship has a small fleet of robotic fighters which you control from the relative
3954 safety of the Chromium vessel.")
3955 ;; Clarified Artistic License for everything but sound, which is covered
3956 ;; by the Expat License.
3957 (license (list license:clarified-artistic license:expat))))
3958
3959 (define-public tuxpaint
3960 (package
3961 (name "tuxpaint")
3962 (version "0.9.23") ;keep VER_DATE below in sync
3963 (source
3964 (origin
3965 (method url-fetch)
3966 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint/"
3967 version "/tuxpaint-" version ".tar.gz"))
3968 (sha256
3969 (base32
3970 "09k9pxi88r3dx6dyjwf9h85d4qpva4i29qz63dc558hg9v21k69l"))
3971 (modules '((guix build utils)))
3972 (snippet
3973 '(begin
3974 ;; Remove win32 directory which contains binary dll's and the
3975 ;; deprecated visualc directory.
3976 (for-each delete-file-recursively '("win32" "visualc"))
3977 (substitute* "Makefile"
3978 ;; Do not rely on $(GPERF) being an absolute file name
3979 (("\\[ -x \\$\\(GPERF\\) \\]")
3980 "$(GPERF) --version >/dev/null 2>&1"))
3981 #t))
3982 (patches (search-patches "tuxpaint-stamps-path.patch"))))
3983 (build-system gnu-build-system)
3984 (native-inputs
3985 `(("gperf" ,gperf)
3986 ("pkg-config" ,pkg-config)))
3987 (inputs
3988 `(("cairo" ,cairo)
3989 ("fribidi" ,fribidi)
3990 ("gettext" ,gettext-minimal)
3991 ("libpng" ,libpng)
3992 ("librsvg" ,librsvg)
3993 ("libpaper" ,libpaper)
3994 ("netpbm" ,netpbm)
3995 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf sdl-image)))))
3996 ;; TODO: Use system fonts rather than those in data/fonts
3997 (arguments
3998 `(#:make-flags `("VER_DATE=2018-09-02"
3999 "GPERF=gperf" "CC=gcc"
4000 "SDL_PCNAME=sdl SDL_image SDL_mixer SDL_ttf"
4001 ,(string-append "PREFIX=" %output)
4002 "KDE_PREFIX=$(PREFIX)/share/applications"
4003 "KDE_ICON_PREFIX=$(PREFIX)/share/icons/"
4004 "COMPLETIONDIR=$(PREFIX)/etc/bash_completion.d")
4005 #:parallel-build? #f ;fails on some systems
4006 #:tests? #f ;No tests
4007 #:phases (modify-phases %standard-phases
4008 (delete 'configure) ;no configure phase
4009 (add-before 'install 'no-sys-cache
4010 (lambda _ ;do not rebuild system conf cache
4011 (substitute* "Makefile"
4012 (("kbuildsycoca4") ""))
4013 #t))
4014 (add-after 'install 'fix-import
4015 (lambda* (#:key inputs outputs #:allow-other-keys)
4016 (let* ((out (assoc-ref outputs "out"))
4017 (net (assoc-ref inputs "netpbm"))
4018 (tpi (string-append out "/bin/tuxpaint-import")))
4019 (substitute* tpi
4020 ;; Point to installation prefix so that the default
4021 ;; configure file is found.
4022 (("/usr/local") out))
4023 ;; tuxpaint-import uses a bunch of programs from
4024 ;; netpbm, so make sure it knows where those are
4025 (wrap-program tpi
4026 `("PATH" ":" prefix
4027 (,(string-append net "/bin"))))))))))
4028 (native-search-paths
4029 (list (search-path-specification
4030 (variable "TUXPAINT_STAMPS_PATH")
4031 (files '("share/tuxpaint/stamps")))))
4032 (home-page "http://www.tuxpaint.org")
4033 (synopsis "Drawing software for children")
4034 (description
4035 "Tux Paint is a free drawing program designed for young children (kids
4036 ages 3 and up). It has a simple, easy-to-use interface; fun sound effects;
4037 and an encouraging cartoon mascot who helps guide children as they use the
4038 program. It provides a blank canvas and a variety of drawing tools to help
4039 your child be creative.")
4040 (license license:gpl2+)))
4041
4042 (define-public tuxpaint-stamps
4043 (package
4044 (name "tuxpaint-stamps")
4045 (version "2018.09.01")
4046 (source
4047 (origin
4048 (method url-fetch)
4049 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-stamps/"
4050 (string-map (λ (x) (if (eq? x #\.) #\- x)) version)
4051 "/tuxpaint-stamps-" version ".tar.gz"))
4052 (sha256
4053 (base32
4054 "1skr23k27yj3vgwfazpzxp90lb2a278gxrkr3bxw7az6zpkmb3yp"))))
4055 (build-system trivial-build-system)
4056 (native-inputs
4057 `(("tar" ,tar)
4058 ("gzip" ,gzip)))
4059 (arguments
4060 `(#:modules ((guix build utils))
4061 #:builder (begin
4062 (use-modules (guix build utils))
4063 (setenv "PATH"
4064 (string-append
4065 (assoc-ref %build-inputs "tar") "/bin" ":"
4066 (assoc-ref %build-inputs "gzip") "/bin"))
4067 (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
4068 (chdir (string-append ,name "-" ,version))
4069 (let ((dir (string-append %output "/share/tuxpaint/stamps")))
4070 (mkdir-p dir)
4071 (copy-recursively "stamps" dir))
4072 #t)))
4073 (home-page (package-home-page tuxpaint))
4074 (synopsis "Stamp images for Tux Paint")
4075 (description
4076 "This package contains a set of \"Rubber Stamp\" images which can be used
4077 with the \"Stamp\" tool within Tux Paint.")
4078 (license license:gpl2+)))
4079
4080 (define-public tuxpaint-config
4081 (package
4082 (name "tuxpaint-config")
4083 (version "0.0.14") ;keep VER_DATE below in sync
4084 (source
4085 (origin
4086 (method url-fetch)
4087 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-config/"
4088 version "/tuxpaint-config-" version ".tar.gz"))
4089 (sha256
4090 (base32
4091 "0zkgxk436nqcp43zghkfmh397c7dvh5bwn2as7gwvv208bzyij6g"))))
4092 (build-system gnu-build-system)
4093 (native-inputs
4094 `(("gettext" ,gettext-minimal)))
4095 (inputs
4096 `(("fltk" ,fltk)
4097 ("libpaper" ,libpaper)
4098 ;; TODO: Should the following be propagated by fltk?
4099 ("libx11" ,libx11)
4100 ("libxft" ,libxft)
4101 ("mesa" ,mesa)))
4102 (arguments
4103 `(#:make-flags `("VER_DATE=2018-09-01"
4104 "CONFDIR=/etc/tuxpaint" ;don't write to store
4105 ,(string-append "PREFIX=" %output)
4106 "GNOME_PREFIX=$(PREFIX)")
4107 #:parallel-build? #f ;race conditions
4108 #:tests? #f ;no tests
4109 #:phases (modify-phases %standard-phases
4110 (delete 'configure) ;no configure phase
4111 (add-before 'install 'gzip-no-name
4112 (lambda* _
4113 (substitute* "Makefile"
4114 ;; tuxpaint-config compresses its own documentation;
4115 ;; make sure it uses flags for reproducibility.
4116 (("gzip") "gzip --no-name"))))
4117 (add-before 'install 'make-install-dirs
4118 (lambda* (#:key outputs #:allow-other-keys)
4119 (let ((out (assoc-ref outputs "out")))
4120 (mkdir-p (string-append out "/bin"))
4121 #t))))))
4122 (home-page (package-home-page tuxpaint))
4123 (synopsis "Configure Tux Paint")
4124 (description
4125 "Tux Paint Config is a graphical configuration editor for Tux Paint.")
4126 (license license:gpl2))) ;no "or later" present
4127
4128 (define-public supertux
4129 (package
4130 (name "supertux")
4131 (version "0.6.1.1")
4132 (source (origin
4133 (method url-fetch)
4134 (uri (string-append "https://github.com/SuperTux/supertux/"
4135 "releases/download/v" version "/SuperTux-v"
4136 version "-Source.tar.gz"))
4137 (file-name (string-append name "-" version ".tar.gz"))
4138 (sha256
4139 (base32
4140 "0n36qxwjlkdlksximz4s729az6pry2sdjavwgm7m65vfgdiz139f"))
4141 (patches
4142 (search-patches "supertux-unbundle-squirrel.patch"))))
4143 (arguments
4144 '(#:tests? #f
4145 #:configure-flags '("-DINSTALL_SUBDIR_BIN=bin"
4146 "-DUSE_SYSTEM_PHYSFS=ON")
4147 #:phases
4148 (modify-phases %standard-phases
4149 (add-after 'unpack 'patch-squirrel-path
4150 (lambda* (#:key inputs #:allow-other-keys)
4151 (let ((squirrel (assoc-ref inputs "squirrel")))
4152 (substitute* "CMakeLists.txt"
4153 (("set\\(SQUIRREL_PREFIX.*")
4154 (string-append "set(SQUIRREL_PREFIX " squirrel ")"))
4155 (("add_dependencies\\(supertux2_lib squirrel\\)") "")
4156 (("\\$\\{SQUIRREL_PREFIX\\}/include")
4157 (string-append "${SQUIRREL_PREFIX}/include/squirrel"))))
4158 #t)))))
4159 (build-system cmake-build-system)
4160 (inputs `(("sdl2" ,sdl2)
4161 ("sdl2-image" ,sdl2-image)
4162 ("sdl2-mixer" ,sdl2-mixer)
4163 ("openal" ,openal)
4164 ("mesa" ,mesa)
4165 ("glew" ,glew)
4166 ("libvorbis" ,libvorbis)
4167 ("libogg" ,libogg)
4168 ("physfs" ,physfs)
4169 ("curl" ,curl)
4170 ("boost" ,boost)
4171 ("freetype" ,freetype)
4172 ("squirrel" ,squirrel)))
4173 (native-inputs
4174 `(("pkg-config" ,pkg-config)))
4175 (synopsis "2D platformer game")
4176 (description "SuperTux is a classic 2D jump'n run sidescroller game in
4177 a style similar to the original Super Mario games.")
4178 (home-page "https://supertux.org/")
4179 (license license:gpl3+)))
4180
4181 (define-public tintin++
4182 (package
4183 (name "tintin++")
4184 (version "2.02.02")
4185 (source
4186 (origin
4187 (method url-fetch)
4188 (uri (string-append "mirror://sourceforge/tintin/TinTin++ Source Code/"
4189 (string-drop-right version 1)
4190 "/tintin-" version ".tar.gz"))
4191 (sha256
4192 (base32 "11ylbp8ip7dwmh4gzb53z147pcfxkl3lwhyy8ngyn2zc634vdn65"))))
4193 (inputs
4194 `(("gnutls" ,gnutls)
4195 ("pcre" ,pcre)
4196 ("readline" ,readline)
4197 ("zlib" ,zlib)))
4198 (arguments
4199 '(#:tests? #f ; no test suite
4200 #:phases
4201 (modify-phases %standard-phases
4202 ;; The source is in tt/src.
4203 (add-before 'configure 'chdir
4204 (lambda _
4205 (chdir "src")
4206 #t)))))
4207 (build-system gnu-build-system)
4208 (home-page "https://tintin.mudhalla.net/")
4209 (synopsis "MUD client")
4210 (description
4211 "TinTin++ is a MUD client which supports MCCP (Mud Client Compression
4212 Protocol), MMCP (Mud Master Chat Protocol), xterm 256 colors, most TELNET
4213 options used by MUDs, as well as those required to login via telnet on
4214 Linux / Mac OS X servers, and an auto mapper with a VT100 map display.")
4215 (license license:gpl3+)))
4216
4217 (define-public laby
4218 (package
4219 (name "laby")
4220 (version "0.6.4")
4221 (source
4222 (origin (method git-fetch)
4223 (uri (git-reference
4224 (url "https://github.com/sgimenez/laby.git")
4225 (commit (string-append name "-" version))))
4226 (file-name (git-file-name name version))
4227 (sha256
4228 (base32
4229 "12fq9hhrxpzgfinmj9ra9ckss9yficwdlrmgjvvsq7agvh3sgyl1"))
4230 (patches (search-patches "laby-make-install.patch"))))
4231 (build-system gnu-build-system)
4232 (inputs
4233 `(("lablgtk" ,lablgtk)
4234 ("ocaml" ,ocaml)
4235 ("ocaml-findlib" ,ocaml-findlib)
4236 ("ocamlbuild" ,ocamlbuild)))
4237 (arguments
4238 '(#:phases
4239 (modify-phases %standard-phases
4240 (delete 'configure)
4241 (add-before 'build 'allow-unsafe-strings
4242 ;; Fix a build failure with ocaml >=4.06.0.
4243 ;; See <https://github.com/sgimenez/laby/issues/53>.
4244 (lambda _
4245 (setenv "OCAMLPARAM" "safe-string=0,_")
4246 #t))
4247 (add-before 'build 'set-library-path
4248 (lambda* (#:key inputs #:allow-other-keys)
4249 (let ((lablgtk (assoc-ref inputs "lablgtk")))
4250 (setenv "LD_LIBRARY_PATH"
4251 (string-append lablgtk "/lib/ocaml/stublibs"))))))
4252 #:tests? #f ; no 'check' target
4253 #:make-flags
4254 (list (string-append "PREFIX=" (assoc-ref %outputs "out")) "all")))
4255 (home-page "https://sgimenez.github.io/laby/")
4256 (synopsis "Programming game")
4257 (description "Learn programming, playing with ants and spider webs ;-)
4258 Your robot ant can be programmed in many languages: OCaml, Python, C, C++,
4259 Java, Ruby, Lua, JavaScript, Pascal, Perl, Scheme, Vala, Prolog. Experienced
4260 programmers may also add their own favorite language.")
4261 (license license:gpl3+)))
4262
4263 (define-public bambam
4264 (package
4265 (name "bambam")
4266 (version "1.0.0")
4267 (source
4268 (origin
4269 (method git-fetch)
4270 (uri (git-reference
4271 (url "https://github.com/porridge/bambam")
4272 (commit (string-append "v" version))))
4273 (file-name (git-file-name name version))
4274 (sha256
4275 (base32 "18cwd1wpyyx8y61cags9bkdhx9x858xicc4y1c9c2s0xjmgzhl3i"))))
4276 (build-system python-build-system)
4277 (arguments
4278 `(#:tests? #f ; no tests
4279 #:phases
4280 (modify-phases %standard-phases
4281 (delete 'build) ; nothing to build
4282 (replace 'install
4283 (lambda* (#:key outputs #:allow-other-keys)
4284 (let* ((out (assoc-ref outputs "out"))
4285 (bin (string-append out "/bin"))
4286 (share (string-append out "/share")))
4287 (mkdir-p bin)
4288 (copy-file "bambam.py" (string-append bin "/bambam"))
4289 (install-file "bambam.6" (string-append share "/man/man6"))
4290 (copy-recursively "data" (string-append share "/bambam/data")))
4291 #t)))))
4292 (inputs
4293 `(("python-pygame" ,python-pygame)))
4294 (home-page "https://github.com/porridge/bambam")
4295 (synopsis "Keyboard mashing and doodling game for babies")
4296 (description "Bambam is a simple baby keyboard (and gamepad) masher
4297 application that locks the keyboard and mouse and instead displays bright
4298 colors, pictures, and sounds.")
4299 (license license:gpl3+)))
4300
4301 (define-public mrrescue
4302 (package
4303 (name "mrrescue")
4304 (version "1.02e")
4305 (source (origin
4306 (method url-fetch)
4307 (uri (string-append
4308 "https://github.com/SimonLarsen/mrrescue/releases/"
4309 "download/" version "/mrrescue" version ".love"))
4310 (file-name (string-append name "-" version ".love"))
4311 (sha256
4312 (base32
4313 "0jwzbwkgp1l5ia6c7s760gmdirbsncp6nfqp7vqdqsfb63la9gl2"))))
4314 (build-system trivial-build-system)
4315 (arguments
4316 `(#:modules ((guix build utils))
4317 #:builder
4318 (begin
4319 (use-modules (guix build utils))
4320 (let* ((out (assoc-ref %outputs "out"))
4321 (script (string-append out "/bin/" ,name))
4322 (data (string-append out "/share/" ,name))
4323 (source (assoc-ref %build-inputs "source"))
4324 (unzip (string-append (assoc-ref %build-inputs "unzip")
4325 "/bin/unzip"))
4326 (patch (string-append (assoc-ref %build-inputs "patch")
4327 "/bin/patch"))
4328 (bash (string-append (assoc-ref %build-inputs "bash")
4329 "/bin/bash"))
4330 (love (string-append (assoc-ref %build-inputs "love")
4331 "/bin/love")))
4332
4333 (mkdir-p (dirname script))
4334 (with-output-to-file script
4335 (lambda ()
4336 (format #t "#!~a~%" bash)
4337 (format #t "exec -a ~a \"~a\" \"~a\"~%" ,name love data)))
4338 (chmod script #o755)
4339
4340 ;; The better way to package this game would be to install *only* the
4341 ;; script above, pointing to the unextracted .love file in the store.
4342 ;; However, mrrescue 1.02e needs to be patched to work with Love 11.
4343 ;; Instead of extracting the .love file, patching it, and re-zipping
4344 ;; it to the store, simply point the script to the extracted patched
4345 ;; data directory directly.
4346 (mkdir-p data)
4347 (with-directory-excursion data
4348 (invoke unzip source)
4349 (invoke patch "-p1" "-i"
4350 (assoc-ref %build-inputs "love-11.patch")))
4351 #t))))
4352 (native-inputs
4353 `(("unzip" ,unzip)
4354 ("patch" ,patch)
4355 ("love-11.patch" ,(search-patch "mrrescue-support-love-11.patch"))))
4356 (inputs
4357 `(("bash" ,bash)
4358 ("love" ,love)))
4359 (home-page "https://tangramgames.dk/games/mrrescue")
4360 (synopsis "Arcade-style fire fighting game")
4361 (description
4362 "Mr. Rescue is an arcade styled 2d action game centered around evacuating
4363 civilians from burning buildings. The game features fast-paced fire
4364 extinguishing action, intense boss battles, a catchy soundtrack, and lots of
4365 throwing people around in pseudo-randomly generated buildings.")
4366 (license (list license:zlib ; for source code
4367 license:cc-by-sa3.0)))) ; for graphics and music assets
4368
4369 (define-public hyperrogue
4370 (package
4371 (name "hyperrogue")
4372 (version "11.3a")
4373 ;; When updating this package, be sure to update the "hyperrogue-data"
4374 ;; origin in native-inputs.
4375 (source (origin
4376 (method url-fetch)
4377 (uri (string-append
4378 "https://www.roguetemple.com/z/hyper/hyperrogue"
4379 (string-join (string-split version #\.) "")
4380 "-src.tgz"))
4381 (sha256
4382 (base32
4383 "1yxabbswq02fc5frigvs43f83m5vlxybc7n5mynkwzj2c70lfp2k"))))
4384 (build-system gnu-build-system)
4385 (arguments
4386 `(#:tests? #f ; no check target
4387 #:make-flags '("HYPERROGUE_USE_GLEW=1"
4388 "HYPERROGUE_USE_PNG=1")
4389 #:phases
4390 (modify-phases %standard-phases
4391 (add-after 'set-paths 'set-sdl-paths
4392 (lambda* (#:key inputs #:allow-other-keys)
4393 (setenv "CPATH"
4394 (string-append (getenv "CPATH") ":"
4395 (assoc-ref inputs "sdl-union")
4396 "/include/SDL"))))
4397 (replace 'configure
4398 (lambda* (#:key inputs outputs #:allow-other-keys)
4399 (let* ((out (assoc-ref outputs "out"))
4400 (share-dir (string-append out "/share/hyperrogue"))
4401 (dejavu-dir (string-append
4402 (assoc-ref inputs "font-dejavu")
4403 "/share/fonts/truetype"))
4404 (dejavu-font "DejaVuSans-Bold.ttf")
4405 (music-file "hyperrogue-music.txt"))
4406 ;; Fix font and music paths.
4407 (substitute* "basegraph.cpp"
4408 ((dejavu-font)
4409 (string-append dejavu-dir "/" dejavu-font)))
4410 (substitute* music-file
4411 (("\\*/")
4412 (string-append share-dir "/sounds/")))
4413 (substitute* "sound.cpp"
4414 (("musicfile = \"\"")
4415 (string-append "musicfile = \""
4416 share-dir "/" music-file "\"")))
4417 ;; Disable build machine CPU optimizations and warnings treated
4418 ;; as errors.
4419 (substitute* "Makefile"
4420 (("-march=native") "")
4421 (("-Werror") "")))
4422 #t))
4423 (replace 'install
4424 (lambda* (#:key inputs outputs #:allow-other-keys)
4425 (let* ((out (assoc-ref outputs "out"))
4426 (bin (string-append out "/bin"))
4427 (share-dir (string-append out "/share/hyperrogue")))
4428 (mkdir-p bin)
4429 (install-file "hyperrogue" bin)
4430 (install-file "hyperrogue-music.txt" share-dir))
4431 #t))
4432 (add-after 'install 'install-data
4433 (lambda* (#:key inputs outputs #:allow-other-keys)
4434 (let* ((data (assoc-ref inputs "hyperrogue-data"))
4435 (out (assoc-ref outputs "out"))
4436 (sounds (string-append out "/share/hyperrogue/sounds"))
4437 (unzip (string-append (assoc-ref inputs "unzip") "/bin/unzip")))
4438 ;; Extract media license information into sounds directory.
4439 (invoke unzip "-j" data
4440 (string-append
4441 "hyperrogue"
4442 (string-join (string-split ,version #\.) "")
4443 "/sounds/credits.txt") "-d" sounds)
4444 ;; Extract sounds and music into sounds directory.
4445 (invoke "unzip" "-j" data
4446 (string-append
4447 "hyperrogue"
4448 (string-join (string-split ,version #\.) "")
4449 "/*.ogg") "-d" sounds)))))))
4450 (native-inputs
4451 `(("hyperrogue-data"
4452 ,(origin
4453 (method url-fetch)
4454 (uri
4455 (string-append
4456 "https://www.roguetemple.com/z/hyper/hyperrogue"
4457 (string-join (string-split version #\.) "")
4458 "-win.zip"))
4459 (sha256
4460 (base32
4461 "11yhbia45f1w9z0j67h9nynwjqmvakr9l6rnrmdrdkzin6lvzzj4"))))
4462 ("unzip" ,unzip)))
4463 (inputs
4464 `(("font-dejavu" ,font-dejavu)
4465 ("glew" ,glew)
4466 ("libpng" ,libpng)
4467 ("sdl-union" ,(sdl-union (list sdl
4468 sdl-gfx
4469 sdl-mixer
4470 sdl-ttf)))))
4471 (home-page "https://www.roguetemple.com/z/hyper/")
4472 (synopsis "Non-euclidean graphical rogue-like game")
4473 (description
4474 "HyperRogue is a game in which the player collects treasures and fights
4475 monsters -- rogue-like but for the fact that it is played on the hyperbolic
4476 plane and not in euclidean space.
4477
4478 In HyperRogue, the player can move through different parts of the world, which
4479 are home to particular creatures and may be subject to their own rules of
4480 \"physics\".
4481
4482 While the game can use ASCII characters to display the the classical rogue
4483 symbols, it still needs graphics to render the non-euclidean world.")
4484 (license (list license:bsd-3 ; glew.c, mtrand.*
4485 license:cc-by-sa3.0 ; music
4486 license:cc-by-sa4.0 ; sounds
4487 license:cc0
4488 license:public-domain ; direntx.*, some sounds
4489 license:zlib ; savepng.*
4490 license:gpl2+)))) ; remaining files
4491
4492 (define-public kobodeluxe
4493 (package
4494 (name "kobodeluxe")
4495 (version "0.5.1")
4496 (source (origin
4497 (method url-fetch)
4498 (uri (string-append "http://olofson.net/kobodl/download/KoboDeluxe-"
4499 version ".tar.bz2"))
4500 (sha256
4501 (base32
4502 "0b2wvdpnmaibsy419c16dfwj5kvd3pccby2aaqvm964x74592yqg"))
4503 (patches (search-patches
4504 "kobodeluxe-const-charp-conversion.patch"
4505 "kobodeluxe-enemies-pipe-decl.patch"
4506 "kobodeluxe-graphics-window-signed-char.patch"
4507 "kobodeluxe-manpage-minus-not-hyphen.patch"
4508 "kobodeluxe-midicon-segmentation-fault.patch"
4509 "kobodeluxe-paths.patch"))))
4510 (build-system gnu-build-system)
4511 (arguments
4512 '(#:configure-flags
4513 (list (string-append "CPPFLAGS=-I"
4514 (assoc-ref %build-inputs "sdl-union")
4515 "/include/SDL"))))
4516 (inputs
4517 `(("glu" ,glu)
4518 ("sdl-union" ,(sdl-union (list sdl sdl-image)))))
4519 (synopsis "Shooter with space station destruction")
4520 (description
4521 "Kobo Deluxe is an enhanced version of Akira Higuchi's XKobo graphical game
4522 for Un*x systems with X11.")
4523 (home-page "http://olofson.net/kobodl/")
4524 (license license:gpl2+)))
4525
4526 (define-public freeciv
4527 (package
4528 (name "freeciv")
4529 (version "2.6.2")
4530 (source
4531 (origin
4532 (method url-fetch)
4533 (uri (list (string-append
4534 "http://files.freeciv.org/stable/freeciv-"
4535 version ".tar.bz2")
4536 (string-append
4537 "mirror://sourceforge/freeciv/Freeciv%20"
4538 (version-major+minor version) "/" version
4539 "/freeciv-" version ".tar.bz2")))
4540 (sha256
4541 (base32 "13vc2xg1cf19rhbnr7k38b56b2hdapqymq5vma1l69kn7hyyz0b1"))))
4542 (build-system gnu-build-system)
4543 (inputs
4544 `(("curl" ,curl)
4545 ("cyrus-sasl" ,cyrus-sasl)
4546 ("gtk+" ,gtk+)
4547 ("sdl-mixer" ,sdl-mixer)
4548 ("zlib" ,zlib)))
4549 (native-inputs
4550 `(("pkg-config" ,pkg-config)))
4551 (home-page "http://www.freeciv.org/")
4552 (synopsis "Turn-based empire building strategy game")
4553 (description "Freeciv is a turn-based empire building strategy game
4554 inspired by the history of human civilization. The game commences in
4555 prehistory and your mission is to lead your tribe from the Stone Age
4556 into the Space Age.")
4557 (license license:gpl2+)))
4558
4559 (define-public no-more-secrets
4560 (package
4561 (name "no-more-secrets")
4562 (version "0.3.3")
4563 (source
4564 (origin
4565 (method git-fetch)
4566 (uri (git-reference
4567 (url "https://github.com/bartobri/no-more-secrets.git")
4568 (commit (string-append "v" version))))
4569 (file-name (git-file-name name version))
4570 (sha256
4571 (base32 "1zfv4qabikf8w9winsr4brxrdvs3f0d7xvydksyx8bydadsm2v2h"))))
4572 (build-system gnu-build-system)
4573 (arguments
4574 `(#:tests? #f
4575 #:make-flags (list "CC=gcc" "all-ncurses"
4576 (string-append "prefix="
4577 (assoc-ref %outputs "out")))
4578 #:phases
4579 (modify-phases %standard-phases
4580 (delete 'configure))))
4581 (inputs
4582 `(("ncurses" ,ncurses)))
4583 (home-page "https://github.com/bartobri/no-more-secrets")
4584 (synopsis "Recreation of data decryption effect in \"Sneakers\"")
4585 (description
4586 "@code{No More Secrets} provides a command line tool called \"nms\"
4587 that recreates the famous data decryption effect seen on screen in the 1992
4588 movie \"Sneakers\".
4589
4590 This command works on piped data. Pipe any ASCII or UTF-8 text to nms, and
4591 it will apply the hollywood effect, initially showing encrypted data, then
4592 starting a decryption sequence to reveal the original plaintext characters.")
4593 (license license:expat)))
4594
4595 (define-public megaglest-data
4596 (package
4597 (name "megaglest-data")
4598 (version "3.13.0")
4599 (source
4600 (origin
4601 (method url-fetch)
4602 (uri (string-append
4603 "https://github.com/MegaGlest/megaglest-data"
4604 "/releases/download/" version "/megaglest-data-"
4605 version ".tar.xz"))
4606 (sha256
4607 (base32
4608 "0ipgza33z89fw3si32iafm981f3fvm0zldvbxj29whghd2k3rpj3"))))
4609 (build-system cmake-build-system)
4610 (arguments
4611 `(#:tests? #f))
4612 (home-page "https://megaglest.org/")
4613 (synopsis "Data files for MegaGlest")
4614 (description "This package contains the data files required for MegaGlest.")
4615 (license license:cc-by-sa3.0)))
4616
4617 (define-public megaglest
4618 (package
4619 (name "megaglest")
4620 (version "3.13.0")
4621 (source
4622 (origin
4623 (method url-fetch)
4624 (uri (string-append
4625 "https://github.com/MegaGlest/megaglest-source"
4626 "/releases/download/" version "/megaglest-source-"
4627 version ".tar.xz"))
4628 (sha256
4629 (base32
4630 "1ffck3ii1wp5k3nn5p0ga06jgp7pzk4zw0xln3xim2w7qrxzdzh9"))))
4631 (build-system cmake-build-system)
4632 (inputs
4633 `(("curl" ,curl)
4634 ("fontconfig" ,fontconfig)
4635 ("ftgl" ,ftgl)
4636 ("glew" ,glew)
4637 ("libjpeg-turbo" ,libjpeg-turbo)
4638 ("megaglest-data" ,megaglest-data)
4639 ("mesa" ,mesa)
4640 ("miniupnpc" ,miniupnpc)
4641 ("openal" ,openal)
4642 ("libircclient" ,libircclient)
4643 ("libpng" ,libpng)
4644 ("libvorbis" ,libvorbis)
4645 ("lua" ,lua)
4646 ("sdl2" ,sdl2)
4647 ("wxwidgets" ,wxwidgets)))
4648 (native-inputs
4649 `(("cppunit" ,cppunit)
4650 ("pkg-config" ,pkg-config)))
4651 (arguments
4652 `(#:configure-flags
4653 (list (string-append "-DCUSTOM_DATA_INSTALL_PATH="
4654 (assoc-ref %build-inputs "megaglest-data")
4655 "/share/megaglest")
4656 "-DBUILD_MEGAGLEST_TESTS=ON")
4657 #:phases
4658 (modify-phases %standard-phases
4659 (add-after 'unpack 'fix-ini-search-path
4660 (lambda* (#:key outputs #:allow-other-keys)
4661 (substitute* "source/glest_game/global/config.cpp"
4662 (("/usr/share/megaglest/")
4663 (string-append (assoc-ref outputs "out")
4664 "/share/megaglest/"))))))
4665 #:test-target "megaglest_tests"))
4666 (home-page "https://megaglest.org/")
4667 (synopsis "3D real-time strategy (RTS) game")
4668 (description "MegaGlest is a cross-platform 3D real-time strategy (RTS)
4669 game, where you control the armies of one of seven different factions: Tech,
4670 Magic, Egypt, Indians, Norsemen, Persian or Romans.")
4671 (license license:gpl2+)))
4672
4673 (define-public freegish
4674 (let ((commit "8795cd7adc95957883f2d3465eb9036a774667a7")
4675 (revision "1"))
4676 (package
4677 (name "freegish")
4678 (version (string-append "0-" revision "." (string-take commit 9)))
4679 (source (origin
4680 (method git-fetch)
4681 (uri (git-reference
4682 (url "https://github.com/freegish/freegish.git")
4683 (commit commit)))
4684 (file-name (git-file-name name version))
4685 (sha256
4686 (base32
4687 "1p1zf5qqagmcpi1db2bs02cnalpy3qiymp6yzan7k1bhmv859gsx"))
4688 (modules '((guix build utils)))
4689 ;; The audio files in the "music" directory are licensed under
4690 ;; CC-BY-NC, so we delete them.
4691 (snippet
4692 '(begin
4693 (delete-file-recursively "music")
4694 #t))))
4695 (build-system cmake-build-system)
4696 (arguments
4697 `(#:tests? #f ; no tests included
4698 #:configure-flags
4699 (list "-DCMAKE_INSTALL_FHS=ON")
4700 #:phases
4701 (modify-phases %standard-phases
4702 (add-after 'unpack 'set-DATAPATH
4703 (lambda* (#:key outputs #:allow-other-keys)
4704 (substitute* "CMakeLists.txt"
4705 (("^option\\(INSTALL_FHS" line)
4706 (string-append "add_definitions(-DDATAPATH=\""
4707 (assoc-ref outputs "out") "/share/freegish\")\n"
4708 line)))
4709 #t)))))
4710 (inputs
4711 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))
4712 ("openal" ,openal)
4713 ("libvorbis" ,libvorbis)
4714 ("libogg" ,libogg)
4715 ("mesa" ,mesa)
4716 ("libpng" ,libpng)
4717 ("zlib" ,zlib)))
4718 (home-page "https://github.com/freegish/freegish")
4719 (synopsis "Side-scrolling physics platformer with a ball of tar")
4720 (description "In FreeGish you control Gish, a ball of tar who lives
4721 happily with his girlfriend Brea, until one day a mysterious dark creature
4722 emerges from a sewer hole and pulls her below ground.")
4723 ;; The textures are available under the Expat license. All other assets
4724 ;; (including levels) are covered under CC-BY-SA or public domain. The
4725 ;; source code is under GPLv2+.
4726 (license (list license:gpl2+
4727 license:expat
4728 license:public-domain
4729 license:cc-by-sa3.0)))))
4730
4731 (define-public cdogs-sdl
4732 (package
4733 (name "cdogs-sdl")
4734 (version "0.6.9")
4735 (source (origin
4736 (method git-fetch)
4737 (uri (git-reference
4738 (url "https://github.com/cxong/cdogs-sdl.git")
4739 (commit version)))
4740 (file-name (git-file-name name version))
4741 (sha256
4742 (base32
4743 "13gyv2hzk43za1n3lsjnd5v64xlzfzq7n10scd1rcbsnk1n007zr"))))
4744 (build-system cmake-build-system)
4745 (arguments
4746 `(#:configure-flags
4747 (list (string-append "-DCDOGS_DATA_DIR="
4748 (assoc-ref %outputs "out")
4749 "/share/cdogs-sdl/"))))
4750 (inputs
4751 `(("mesa" ,mesa)
4752 ("sdl2" ,sdl2)
4753 ("sdl2-image" ,sdl2-image)
4754 ("sdl2-mixer" ,sdl2-mixer)))
4755 (home-page "https://cxong.github.io/cdogs-sdl/")
4756 (synopsis "Classic overhead run-and-gun game")
4757 (description "C-Dogs SDL is a classic overhead run-and-gun game,
4758 supporting up to 4 players in co-op and deathmatch modes. Customize your
4759 player, choose from many weapons, and blast, slide and slash your way through
4760 over 100 user-created campaigns.")
4761 ;; GPLv2+ for code (includes files under BSD-2 and BSD-3),
4762 ;; CC0/CC-BY/CC-BY-SA for assets.
4763 (license (list license:gpl2+
4764 license:bsd-2
4765 license:bsd-3
4766 license:cc0
4767 license:cc-by3.0
4768 license:cc-by-sa3.0))))
4769
4770 (define-public kiki
4771 (package
4772 (name "kiki")
4773 (version "1.0.2")
4774 (source (origin
4775 (method url-fetch)
4776 (uri (string-append "mirror://sourceforge/kiki/kiki-src/"
4777 version "/kiki-" version "-src.tgz"))
4778 (sha256
4779 (base32
4780 "0ihjdsxbn8z3cz0gpcprafiipcqaiskgdnh1rhmw4qff8dszalbn"))
4781 (modules '((guix build utils)))
4782 (snippet
4783 '(begin
4784 (for-each delete-file (find-files "." "\\.dll$"))
4785 #t))
4786 (patches
4787 (search-patches "kiki-level-selection-crash.patch"
4788 "kiki-makefile.patch"
4789 "kiki-missing-includes.patch"
4790 "kiki-portability-64bit.patch"))))
4791 (build-system gnu-build-system)
4792 (arguments
4793 `(#:tests? #f ; there are no tests
4794 #:make-flags '("CXX=g++")
4795 #:phases
4796 (modify-phases %standard-phases
4797 (replace 'configure
4798 (lambda* (#:key inputs outputs #:allow-other-keys)
4799 (setenv "CPLUS_INCLUDE_PATH"
4800 (string-append (assoc-ref inputs "sdl-union")
4801 "/include/SDL:"
4802 (assoc-ref inputs "python")
4803 "/include/python2.7"))
4804 (substitute* "src/main/main.cpp"
4805 (("#include <SDL.h>" line)
4806 (string-append line "
4807 #define K_INCLUDE_GLUT
4808 #include \"KIncludeTools.h\""))
4809 (("// initialize SDL" line)
4810 (string-append "glutInit(&argc,argv);\n" line)))
4811 (substitute* "src/main/KikiController.cpp"
4812 (("getenv\\(\"KIKI_HOME\"\\)")
4813 (string-append "\"" (assoc-ref outputs "out") "/share/kiki/\"")))
4814 (substitute* "linux/Makefile"
4815 (("CXXOPTS =" line)
4816 (string-append line " -fpermissive"))
4817 (("PYTHON_VERSION=.*") "PYTHON_VERSION=2.7")
4818 (("PYTHONHOME =.*")
4819 (string-append "PYTHONHOME = "
4820 (assoc-ref inputs "python")
4821 "/lib/python2.7/"))
4822 (("\\$\\(GLLIBS\\)" line)
4823 (string-append line " -lm -lpython2.7")))
4824 (substitute* "src/main/KikiPythonWidget.h"
4825 (("#define __KikiPythonWidget" line)
4826 (string-append line "\n#include \"KikiPython.h\"")))
4827 #t))
4828 (add-before 'build 'build-kodilib
4829 (lambda* (#:key make-flags #:allow-other-keys)
4830 (with-directory-excursion "kodilib/linux"
4831 (apply invoke "make" make-flags))))
4832 (add-after 'build-kodilib 'chdir
4833 (lambda _ (chdir "linux") #t))
4834 (replace 'install
4835 (lambda* (#:key outputs #:allow-other-keys)
4836 (let* ((out (assoc-ref outputs "out"))
4837 (bin (string-append out "/bin"))
4838 (share (string-append out "/share/kiki")))
4839 (mkdir-p bin)
4840 (mkdir-p share)
4841 (install-file "kiki" bin)
4842 (copy-recursively "../py" (string-append share "/py"))
4843 (copy-recursively "../sound" (string-append share "/sound"))
4844 #t))))))
4845 (inputs
4846 `(("glu" ,glu)
4847 ;; Kiki builds fine with freeglut 3.0.0 but segfaults on start.
4848 ("freeglut" ,freeglut-2.8)
4849 ("sdl-union" ,(sdl-union (list sdl
4850 sdl-mixer
4851 sdl-image)))
4852 ("python" ,python-2)))
4853 (native-inputs
4854 `(("swig" ,swig)))
4855 (home-page "http://kiki.sourceforge.net/")
4856 (synopsis "3D puzzle game")
4857 (description "Kiki the nano bot is a 3D puzzle game. It is basically a
4858 mixture of the games Sokoban and Kula-World. Your task is to help Kiki, a
4859 small robot living in the nano world, repair its maker.")
4860 ;; See <http://metadata.ftp-master.debian.org/changelogs/main/k/
4861 ;; kiki-the-nano-bot/kiki-the-nano-bot_1.0.2+dfsg1-4_copyright>
4862 ;; for a statement from the author.
4863 (license license:public-domain)))
4864
4865 (define-public teeworlds
4866 (package
4867 (name "teeworlds")
4868 (version "0.7.5")
4869 (source (origin
4870 (method git-fetch)
4871 (uri (git-reference
4872 (url "https://github.com/teeworlds/teeworlds.git")
4873 (commit version)))
4874 (file-name (git-file-name name version))
4875 (sha256
4876 (base32
4877 "169dl83q08zl4h813az8hjs4rs3dms9yjn6bnsld4fjcj0imvvc6"))
4878 (modules '((guix build utils)
4879 (ice-9 ftw)
4880 (ice-9 regex)
4881 (srfi srfi-1)
4882 (srfi srfi-26)))
4883 (snippet ; remove bundled libraries except md5
4884 '(let ((base-dir "src/engine/external/"))
4885 (for-each (compose (cut delete-file-recursively <>)
4886 (cut string-append base-dir <>))
4887 (remove (cut string-match "(^.)|(^md5$)" <>)
4888 (scandir base-dir)))
4889 #t))))
4890 (build-system gnu-build-system)
4891 (arguments
4892 `(#:tests? #f ; no tests included
4893 #:modules ((guix build gnu-build-system)
4894 (guix build utils)
4895 (srfi srfi-26))
4896 #:phases
4897 (modify-phases %standard-phases
4898 (replace 'configure
4899 (lambda* (#:key outputs #:allow-other-keys)
4900 ;; Embed path to assets.
4901 (substitute* "src/engine/shared/storage.cpp"
4902 (("#define DATA_DIR.*")
4903 (string-append "#define DATA_DIR \""
4904 (assoc-ref outputs "out")
4905 "/share/teeworlds/data"
4906 "\"")))
4907
4908 ;; Bam expects all files to have a recent time stamp.
4909 (for-each (cut utime <> 1 1)
4910 (find-files "."))
4911
4912 ;; Do not use bundled libraries.
4913 (substitute* "bam.lua"
4914 (("local json = Compile.+$")
4915 "local json = nil
4916 settings.link.libs:Add(\"jsonparser\")")
4917 (("local png = Compile.+$")
4918 "local png = nil
4919 settings.link.libs:Add(\"pnglite\")")
4920 (("local wavpack = Compile.+$")
4921 "local wavpack = nil
4922 settings.link.libs:Add(\"wavpack\")")
4923 (("if config\\.zlib\\.value == 1")
4924 "if config.zlib.value"))
4925 (substitute* "src/engine/client/graphics_threaded.cpp"
4926 (("engine/external/pnglite/pnglite\\.h")
4927 "pnglite.h"))
4928 (substitute* "src/engine/client/sound.cpp"
4929 (("engine/external/wavpack/wavpack\\.h")
4930 "wavpack/wavpack.h"))
4931 #t))
4932 (replace 'build
4933 (lambda _
4934 (invoke "bam" "-a" "-v" "conf=release")))
4935 (replace 'install
4936 (lambda* (#:key outputs #:allow-other-keys)
4937 (let* ((arch ,(system->linux-architecture
4938 (or (%current-target-system)
4939 (%current-system))))
4940 (build (string-append "build/" (if (string=? arch "i386")
4941 "x86" arch)
4942 "/release/"))
4943 (data-built (string-append build "data/"))
4944 (out (assoc-ref outputs "out"))
4945 (bin (string-append out "/bin/"))
4946 (data (string-append out "/share/teeworlds/data/")))
4947 (for-each (cut install-file <> bin)
4948 (map (cut string-append build <>)
4949 '("teeworlds" "teeworlds_srv")))
4950 (copy-recursively data-built data)
4951 #t))))))
4952 (inputs
4953 `(("freetype" ,freetype)
4954 ("glu" ,glu)
4955 ("json-parser" ,json-parser)
4956 ("mesa" ,mesa)
4957 ("pnglite" ,pnglite)
4958 ("sdl2" ,sdl2)
4959 ("sdl2-image" ,sdl2-image)
4960 ("sdl2-mixer" ,sdl2-mixer)
4961 ("wavpack" ,wavpack)
4962 ("zlib" ,zlib)))
4963 (native-inputs
4964 `(("bam" ,bam)
4965 ("python" ,python-wrapper)
4966 ("pkg-config" ,pkg-config)))
4967 (home-page "https://www.teeworlds.com")
4968 (synopsis "2D retro multiplayer shooter game")
4969 (description "Teeworlds is an online multiplayer game. Battle with up to
4970 16 players in a variety of game modes, including Team Deathmatch and Capture
4971 The Flag. You can even design your own maps!")
4972 (license license:bsd-3)))
4973
4974 (define-public enigma
4975 (package
4976 (name "enigma")
4977 (version "1.21")
4978 (source (origin
4979 (method url-fetch)
4980 (uri (string-append "mirror://sourceforge/enigma-game/"
4981 "Release%20" version "/enigma-"
4982 version ".tar.gz"))
4983 (sha256
4984 (base32
4985 "00ffh9pypj1948pg3q9sjp1nmiabh52p5c8wpg9n1dcfgl3cywnq"))))
4986 (build-system gnu-build-system)
4987 (arguments
4988 `(#:configure-flags
4989 (list "--with-system-enet")
4990 #:phases
4991 (modify-phases %standard-phases
4992 (add-after 'unpack 'find-sdl
4993 (lambda _
4994 (substitute* "configure"
4995 (("SDL_ttf.h") "SDL/SDL_ttf.h"))
4996 (substitute* '("tools/ttf2bmf.cc"
4997 "lib-src/enigma-core/ecl_font.cc"
4998 "lib-src/enigma-core/ecl_video.cc"
4999 "lib-src/enigma-core/ecl_buffer.hh"
5000 "src/SoundEngine.cc"
5001 "src/SoundEngine.hh"
5002 "src/MusicManager.cc"
5003 "src/MusicManager.hh"
5004 "src/d_models.cc"
5005 "src/main.cc"
5006 "src/network.cc")
5007 (("#include \"SDL_(image|ttf|mixer|types|syswm|mutex).h\"" line header)
5008 (string-append "#include \"SDL/SDL_" header ".h\"")))
5009 (substitute* "src/main.cc"
5010 (("#include <SDL_(image|ttf|mixer).h>" line header)
5011 (string-append "#include \"SDL/SDL_" header ".h\"")))
5012 #t)))))
5013 (inputs
5014 `(("xerces-c" ,xerces-c)
5015 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
5016 ("curl" ,curl)
5017 ("enet" ,enet)))
5018 (native-inputs
5019 `(("pkg-config" ,pkg-config)
5020 ("imagemagick" ,imagemagick)))
5021 (home-page "https://www.nongnu.org/enigma")
5022 (synopsis "Puzzle game with a dexterity component")
5023 (description "Enigma is a puzzle game with 550 unique levels. The object
5024 of the game is to find and uncover pairs of identically colored ‘Oxyd’ stones.
5025 Simple? Yes. Easy? Certainly not! Hidden traps, vast mazes, laser beams,
5026 and most of all, countless hairy puzzles usually block your direct way to the
5027 Oxyd stones. Enigma’s game objects (and there are hundreds of them, lest you
5028 get bored) interact in many unexpected ways, and since many of them follow the
5029 laws of physics (Enigma’s special laws of physics, that is), controlling them
5030 with the mouse isn’t always trivial.")
5031 (license license:gpl2+)))
5032
5033 (define-public chroma
5034 (package
5035 (name "chroma")
5036 (version "1.17")
5037 (source (origin
5038 (method url-fetch)
5039 (uri (string-append "http://level7.org.uk/chroma/download/chroma-"
5040 version ".tar.bz2"))
5041 (sha256
5042 (base32
5043 "047sf00x71xbmi8bqrhfbmr9bk89l2gbykkqsfpw4wz6yfjscs6y"))))
5044 (build-system gnu-build-system)
5045 (arguments
5046 `(#:tests? #f)) ; no tests included
5047 (inputs
5048 `(("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
5049 ("freetype" ,freetype)
5050 ("ncurses" ,ncurses)
5051 ("fontconfig" ,fontconfig)
5052 ("libxft" ,libxft)))
5053 (native-inputs
5054 `(("pkg-config" ,pkg-config)))
5055 (home-page "http://level7.org.uk/chroma/")
5056 (synopsis "Abstract puzzle game")
5057 (description "Chroma is an abstract puzzle game. A variety of colourful
5058 shapes are arranged in a series of increasingly complex patterns, forming
5059 fiendish traps that must be disarmed and mysterious puzzles that must be
5060 manipulated in order to give up their subtle secrets. Initially so
5061 straightforward that anyone can pick it up and begin to play, yet gradually
5062 becoming difficult enough to tax even the brightest of minds.")
5063 (license license:gpl2+)))
5064
5065 (define-public fillets-ng
5066 (package
5067 (name "fillets-ng")
5068 (version "1.0.1")
5069 (source (origin
5070 (method url-fetch)
5071 (uri (string-append "mirror://sourceforge/fillets/"
5072 "Fish%20Fillets%20-%20Next%20Generation/"
5073 version "/fillets-ng-" version ".tar.gz"))
5074 (sha256
5075 (base32
5076 "1nljp75aqqb35qq3x7abhs2kp69vjcj0h1vxcpdyn2yn2nalv6ij"))))
5077 (build-system gnu-build-system)
5078 (arguments
5079 `(#:configure-flags
5080 (list (string-append "--with-lua="
5081 (assoc-ref %build-inputs "lua")))
5082 #:make-flags
5083 (list (string-append "CFLAGS=-I"
5084 (assoc-ref %build-inputs "sdl-union")
5085 "/include/SDL")
5086 (string-append "CXXFLAGS=-I"
5087 (assoc-ref %build-inputs "sdl-union")
5088 "/include/SDL"))
5089 #:phases
5090 (modify-phases %standard-phases
5091 ;; Lua 5.1 does not provide it.
5092 (add-after 'unpack 'do-not-link-with-lualib
5093 (lambda _
5094 (substitute* "configure"
5095 (("-llualib") ""))
5096 #t))
5097 (add-after 'install 'install-data
5098 (lambda* (#:key inputs outputs #:allow-other-keys)
5099 (let ((data (string-append (assoc-ref outputs "out")
5100 "/share/games/fillets-ng")))
5101 (mkdir-p data)
5102 (invoke "tar" "-xvf"
5103 (assoc-ref inputs "fillets-ng-data")
5104 "--strip-components=1"
5105 "-C" data)))))))
5106 (inputs
5107 `(("sdl-union" ,(sdl-union (list sdl
5108 sdl-mixer
5109 sdl-image
5110 sdl-ttf)))
5111 ("fribidi" ,fribidi)
5112 ("libx11" ,libx11)
5113 ("lua" ,lua-5.1)))
5114 (native-inputs
5115 `(("pkg-config" ,pkg-config)
5116 ("fillets-ng-data"
5117 ,(origin
5118 (method url-fetch)
5119 (uri (string-append "mirror://sourceforge/fillets/"
5120 "Fish%20Fillets%20-%20Next%20Generation/"
5121 version "/fillets-ng-data-" version ".tar.gz"))
5122 (sha256
5123 (base32
5124 "169p0yqh2gxvhdilvjc2ld8aap7lv2nhkhkg4i1hlmgc6pxpkjgh"))))))
5125 (home-page "http://fillets.sourceforge.net/")
5126 (synopsis "Puzzle game")
5127 (description "Fish Fillets NG is strictly a puzzle game. The goal in
5128 every of the seventy levels is always the same: find a safe way out. The fish
5129 utter witty remarks about their surroundings, the various inhabitants of their
5130 underwater realm quarrel among themselves or comment on the efforts of your
5131 fish. The whole game is accompanied by quiet, comforting music.")
5132 (license license:gpl2+)))
5133
5134 (define-public crawl
5135 (package
5136 (name "crawl")
5137 (version "0.24.0")
5138 (source
5139 (origin
5140 (method url-fetch)
5141 (uri (list
5142 ;; Older releases get moved into a versioned directory
5143 (string-append "http://crawl.develz.org/release/"
5144 (version-major+minor version) "/stone_soup-"
5145 version "-nodeps.tar.xz")
5146 ;; Only the latest release is in this directory
5147 (string-append "http://crawl.develz.org/release/stone_soup-"
5148 version "-nodeps.tar.xz")))
5149 (sha256
5150 (base32 "0kdq6s12myxfdg75ma9x3ys2nd0xwb3xm2ynlmhg4628va0pnixr"))
5151 (patches (search-patches "crawl-upgrade-saves.patch"))))
5152 (build-system gnu-build-system)
5153 (inputs
5154 `(("lua51" ,lua-5.1)
5155 ("ncurses" ,ncurses)
5156 ("sqlite" ,sqlite)
5157 ("zlib" ,zlib)))
5158 (native-inputs
5159 `(("bison" ,bison)
5160 ("flex" ,flex)
5161 ("perl" ,perl)
5162 ("python" ,python-wrapper)
5163 ("python-pyyaml" ,python-pyyaml)
5164 ("pkg-config" ,pkg-config)))
5165 (arguments
5166 `(#:make-flags
5167 (let* ((sqlite (assoc-ref %build-inputs "sqlite"))
5168 (out (assoc-ref %outputs "out")))
5169 (list (string-append "SQLITE_INCLUDE_DIR=" sqlite "/include")
5170 (string-append "prefix=" out)
5171 "SAVEDIR=~/.crawl"
5172 ;; Don't compile with SSE on systems which don't have it.
5173 ,@(match (%current-system)
5174 ((or "i686-linux" "x86_64-linux")
5175 '())
5176 (_ '("NOSSE=TRUE")))
5177 ;; don't build any bundled dependencies
5178 "BUILD_LUA="
5179 "BUILD_SQLITE="
5180 "BUILD_ZLIB="
5181 "-Csource"))
5182 #:phases
5183 (modify-phases %standard-phases
5184 (add-after 'unpack 'find-SDL-image
5185 (lambda _
5186 (substitute* "source/windowmanager-sdl.cc"
5187 (("SDL_image.h") "SDL2/SDL_image.h"))
5188 #t))
5189 (delete 'configure)
5190 (replace 'check
5191 (lambda* (#:key inputs outputs make-flags #:allow-other-keys)
5192 (setenv "HOME" (getcwd))
5193 ;; Fake a terminal for the test cases.
5194 (setenv "TERM" "xterm-256color")
5195 ;; Run the tests that don't require a debug build.
5196 (apply invoke "make" "nondebugtest"
5197 (format #f "-j~d" (parallel-job-count))
5198 ;; Force command line build for test cases.
5199 (append make-flags '("GAME=crawl" "TILES="))))))))
5200 (synopsis "Roguelike dungeon crawler game")
5201 (description "Dungeon Crawl Stone Soup (also known as \"Crawl\" or DCSS
5202 for short) is a roguelike adventure through dungeons filled with dangerous
5203 monsters in a quest to find the mystifyingly fabulous Orb of Zot.")
5204 (home-page "https://crawl.develz.org")
5205 (license (list license:gpl2+
5206 license:bsd-2
5207 license:bsd-3
5208 license:cc0
5209 license:expat
5210 license:zlib
5211 license:asl2.0))))
5212
5213 ;; The linter here claims that patch file names should start with the package
5214 ;; name. But, in this case, the patches are inherited from crawl with the
5215 ;; "crawl-" prefix instead of "crawl-tiles-".
5216 (define-public crawl-tiles
5217 (package
5218 (inherit crawl)
5219 (name "crawl-tiles")
5220 (arguments
5221 (substitute-keyword-arguments
5222 (package-arguments crawl)
5223 ((#:make-flags flags)
5224 `(let ((dejavu (assoc-ref %build-inputs "font-dejavu")))
5225 (cons*
5226 (string-append "PROPORTIONAL_FONT=" dejavu
5227 "/share/fonts/truetype/DejaVuSans.ttf")
5228 (string-append "MONOSPACED_FONT=" dejavu
5229 "/share/fonts/truetype/DejaVuSansMono.ttf")
5230 "TILES=y"
5231 ;; Rename the executable to allow parallel installation with crawl.
5232 "GAME=crawl-tiles"
5233 ,flags)))))
5234 (inputs
5235 `(,@(package-inputs crawl)
5236 ("font-dejavu" ,font-dejavu)
5237 ("freetype6" ,freetype)
5238 ("glu" ,glu)
5239 ("libpng" ,libpng)
5240 ("sdl2" ,sdl2)
5241 ("sdl2-image" ,sdl2-image)
5242 ("sdl2-mixer" ,sdl2-mixer)))
5243 (native-inputs
5244 `(,@(package-native-inputs crawl)
5245 ("pngcrush" ,pngcrush)
5246 ("which" ,which)))
5247 (synopsis "Graphical roguelike dungeon crawler game")))
5248
5249 (define-public lugaru
5250 (package
5251 (name "lugaru")
5252 (version "1.2")
5253 (source (origin
5254 (method url-fetch)
5255 (uri (string-append "https://bitbucket.org/osslugaru/lugaru/downloads/"
5256 "lugaru-" version ".tar.xz"))
5257 (sha256
5258 (base32
5259 "15zgcshy22q51rm72zi6y9z7qlgnz5iw3gczjdlir4bqmxy4gspk"))))
5260 (build-system cmake-build-system)
5261 (arguments
5262 `(#:configure-flags
5263 (list "-DSYSTEM_INSTALL=ON")
5264 ;; no test target
5265 #:tests? #f))
5266 (native-inputs
5267 `(("pkg-config" ,pkg-config)))
5268 (inputs
5269 `(("sdl2" ,sdl2)
5270 ("glu" ,glu)
5271 ("libjpeg" ,libjpeg-turbo)
5272 ("libpng" ,libpng)
5273 ("openal" ,openal)
5274 ("vorbis" ,libvorbis)
5275 ("zlib" ,zlib)))
5276 (home-page "https://osslugaru.gitlab.io")
5277 (synopsis "Cross-platform third-person action game")
5278 (description "Lugaru is a third-person action game. The main character,
5279 Turner, is an anthropomorphic rebel bunny rabbit with impressive combat skills.
5280 In his quest to find those responsible for slaughtering his village, he uncovers
5281 a far-reaching conspiracy involving the corrupt leaders of the rabbit republic
5282 and the starving wolves from a nearby den. Turner takes it upon himself to
5283 fight against their plot and save his fellow rabbits from slavery.")
5284 (license (list license:gpl2+ ; code
5285 ;; assets:
5286 license:cc-by-sa3.0
5287 license:cc-by-sa4.0))))
5288
5289 (define-public 0ad-data
5290 (package
5291 (name "0ad-data")
5292 (version "0.0.23b-alpha")
5293 (source
5294 (origin
5295 (method url-fetch)
5296 (uri (string-append "https://releases.wildfiregames.com/0ad-"
5297 version "-unix-data.tar.xz"))
5298 (file-name (string-append name "-" version ".tar.xz"))
5299 (sha256
5300 (base32
5301 "04x7729hk6zw1xj3n4s4lvaviijsnbjf5rhzvjxlr5fygvg4l6z1"))
5302 (modules '((guix build utils)))
5303 (snippet
5304 #~(begin
5305 (for-each (lambda (name)
5306 (let* ((dir (string-append "binaries/data/mods/" name))
5307 (file (string-append dir "/" name ".zip"))
5308 (unzip #$(file-append unzip "/bin/unzip")))
5309 (invoke unzip "-d" dir file)
5310 (delete-file file)))
5311 '("mod" "public"))
5312 #t))))
5313 (build-system trivial-build-system)
5314 (native-inputs `(("tar" ,tar)
5315 ("xz" ,xz)))
5316 (arguments
5317 `(#:modules ((guix build utils))
5318 #:builder
5319 (begin
5320 (use-modules (guix build utils))
5321 (let ((out (assoc-ref %outputs "out"))
5322 (source (assoc-ref %build-inputs "source"))
5323 (tar (string-append (assoc-ref %build-inputs "tar") "/bin/tar"))
5324 (xz-path (string-append (assoc-ref %build-inputs "xz") "/bin")))
5325 (setenv "PATH" xz-path)
5326 (mkdir out)
5327 (invoke tar "xvf" source "-C" out "--strip=3")))))
5328 (synopsis "Data files for 0ad")
5329 (description "0ad-data provides the data files required by the game 0ad.")
5330 (home-page "https://play0ad.com")
5331 (license (list (license:fsdg-compatible
5332 "http://tavmjong.free.fr/FONTS/ArevCopyright.txt"
5333 "Similar to the license of the Bitstream Vera fonts.")
5334 (license:fsdg-compatible
5335 "https://www.gnome.org/fonts/#Final_Bitstream_Vera_Fonts")
5336 license:cc-by-sa3.0
5337 license:expat
5338 license:gfl1.0
5339 license:gpl2+
5340 license:gpl3+))))
5341
5342 (define-public 0ad
5343 (package
5344 (name "0ad")
5345 (version "0.0.23b-alpha")
5346 (source
5347 (origin
5348 (method url-fetch)
5349 (uri (string-append "https://releases.wildfiregames.com/0ad-"
5350 version "-unix-build.tar.xz"))
5351 (file-name (string-append name "-" version ".tar.xz"))
5352 (sha256
5353 (base32
5354 "0draa53xg69i5qhqym85658m45xhwkbiimaldj4sr3703rjgggq1"))))
5355 ;; A snippet here would cause a build failure because of timestamps
5356 ;; reset. See https://bugs.gnu.org/26734.
5357 (inputs
5358 `(("0ad-data" ,0ad-data)
5359 ("curl" ,curl)
5360 ("enet" ,enet)
5361 ("gloox" ,gloox)
5362 ("icu4c" ,icu4c)
5363 ("libpng" ,libpng)
5364 ("libsodium" ,libsodium)
5365 ("libvorbis" ,libvorbis)
5366 ("libxcursor" ,libxcursor)
5367 ("libxml2" ,libxml2)
5368 ("miniupnpc" ,miniupnpc)
5369 ("mozjs-38" ,mozjs-38)
5370 ("openal" ,openal)
5371 ("sdl2" ,sdl2)
5372 ("wxwidgets" ,wxwidgets)
5373 ("zlib" ,zlib)))
5374 (native-inputs
5375 `(("boost" ,boost)
5376 ("cmake" ,cmake-minimal)
5377 ("mesa" ,mesa)
5378 ("pkg-config" ,pkg-config)
5379 ("python-2" ,python-2)))
5380 (build-system gnu-build-system)
5381 (arguments
5382 `(#:make-flags '("config=release" "verbose=1" "-C" "build/workspaces/gcc")
5383 #:phases
5384 (modify-phases %standard-phases
5385 (add-after 'unpack 'delete-bundles
5386 (lambda _
5387 (delete-file-recursively "libraries/source/spidermonkey")
5388 #t))
5389 (add-after 'unpack 'fix-x11-includes
5390 (lambda _
5391 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5392 (("<Xlib.h>") "<X11/Xlib.h>"))
5393 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5394 (("<Xatom.h>") "<X11/Xatom.h>"))
5395 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5396 (("<Xcursor/Xcursor.h>") "<X11/Xcursor/Xcursor.h>"))
5397 #t))
5398 (replace 'configure
5399 (lambda* (#:key inputs outputs #:allow-other-keys)
5400 (let* ((jobs (number->string (parallel-job-count)))
5401 (out (assoc-ref outputs "out"))
5402 (lib (string-append out "/lib"))
5403 (data (string-append out "/share/0ad")))
5404 (setenv "JOBS" (string-append "-j" jobs))
5405 (setenv "CC" "gcc")
5406 (with-directory-excursion "build/workspaces"
5407 (invoke "./update-workspaces.sh"
5408 (string-append "--libdir=" lib)
5409 (string-append "--datadir=" data)
5410 ;; TODO: "--with-system-nvtt"
5411 "--with-system-mozjs38")))))
5412 (delete 'check)
5413 (replace 'install
5414 (lambda* (#:key inputs outputs #:allow-other-keys)
5415 (chdir "binaries")
5416 (let* ((out (assoc-ref outputs "out"))
5417 (bin (string-append out "/bin"))
5418 (lib (string-append out "/lib"))
5419 (data (string-append out "/share/0ad"))
5420 (applications (string-append out "/share/applications"))
5421 (pixmaps (string-append out "/share/pixmaps"))
5422 (0ad-data (assoc-ref inputs "0ad-data")))
5423 ;; data
5424 (copy-recursively "data" data)
5425 (for-each (lambda (file)
5426 (symlink (string-append 0ad-data "/" file)
5427 (string-append data "/" file)))
5428 '("config" "mods/mod" "mods/public" "tools"))
5429 ;; libraries
5430 (for-each (lambda (file)
5431 (install-file file lib))
5432 (find-files "system" "\\.so$"))
5433 ;; binaries
5434 (install-file "system/pyrogenesis" bin)
5435 (with-directory-excursion bin
5436 (symlink "pyrogenesis" "0ad"))
5437 ;; resources
5438 (with-directory-excursion "../build/resources"
5439 (install-file "0ad.desktop" applications)
5440 (install-file "0ad.png" pixmaps))
5441 #t)))
5442 (add-after 'install 'check
5443 (lambda _
5444 (with-directory-excursion "system"
5445 (invoke "./test")))))))
5446 (home-page "https://play0ad.com")
5447 (synopsis "3D real-time strategy game of ancient warfare")
5448 (description "0 A.D. is a real-time strategy (RTS) game of ancient
5449 warfare. It's a historically-based war/economy game that allows players to
5450 relive or rewrite the history of twelve ancient civilizations, each depicted
5451 at their peak of economic growth and military prowess.
5452
5453 0ad needs a window manager that supports 'Extended Window Manager Hints'.")
5454 (license (list license:bsd-2
5455 license:bsd-3
5456 license:expat
5457 license:gpl2+
5458 license:ibmpl1.0
5459 license:isc
5460 license:lgpl2.1
5461 license:lgpl3
5462 license:mpl2.0
5463 license:zlib))))
5464
5465 ;; There have been no official releases.
5466 (define-public open-adventure
5467 (let* ((commit "d43854f0f6bb8e9eea7fbce80348150e7e7fc34d")
5468 (revision "2"))
5469 (package
5470 (name "open-adventure")
5471 (version (string-append "2.5-" revision "." (string-take commit 7)))
5472 (source (origin
5473 (method git-fetch)
5474 (uri (git-reference
5475 (url "https://gitlab.com/esr/open-adventure")
5476 (commit commit)))
5477 (file-name (string-append name "-" version "-checkout"))
5478 (sha256
5479 (base32
5480 "08bwrvf4axb1rsfd6ia1fddsky9pc1p350vjskhaakg2czc6dsk0"))))
5481 (build-system gnu-build-system)
5482 (arguments
5483 `(#:make-flags (list "CC=gcc")
5484 #:parallel-build? #f ; not supported
5485 #:phases
5486 (modify-phases %standard-phases
5487 (replace 'configure
5488 (lambda* (#:key inputs outputs #:allow-other-keys)
5489 ;; Linenoise is meant to be included, so we have to
5490 ;; copy it into the working directory.
5491 (let* ((linenoise (assoc-ref inputs "linenoise"))
5492 (noisepath (string-append linenoise "/include/linenoise"))
5493 (out (assoc-ref outputs "out")))
5494 (copy-recursively noisepath "linenoise"))
5495 #t))
5496 (add-before 'build 'use-echo
5497 (lambda _
5498 (substitute* "tests/Makefile"
5499 (("/bin/echo") (which "echo")))
5500 #t))
5501 (add-after 'build 'build-manpage
5502 (lambda _
5503 ;; This target is missing a dependency
5504 (substitute* "Makefile"
5505 ((".adoc.6:" line)
5506 (string-append line " advent.adoc")))
5507 (invoke "make" ".adoc.6")))
5508 ;; There is no install target
5509 (replace 'install
5510 (lambda* (#:key outputs #:allow-other-keys)
5511 (let* ((out (assoc-ref outputs "out"))
5512 (bin (string-append out "/bin"))
5513 (man (string-append out "/share/man/man6")))
5514 (install-file "advent" bin)
5515 (install-file "advent.6" man))
5516 #t)))))
5517 (native-inputs
5518 `(("asciidoc" ,asciidoc)
5519 ("linenoise" ,linenoise)
5520 ("python" ,python)
5521 ("python-pyyaml" ,python-pyyaml)))
5522 (home-page "https://gitlab.com/esr/open-adventure")
5523 (synopsis "Colossal Cave Adventure")
5524 (description "The original Colossal Cave Adventure from 1976 was the
5525 origin of all text adventures, dungeon-crawl (computer) games, and
5526 computer-hosted roleplaying games. This is the last version released by
5527 Crowther & Woods, its original authors, in 1995. It has been known as
5528 \"adventure 2.5\" and \"430-point adventure\".")
5529 (license license:bsd-2))))
5530
5531 (define-public tome4
5532 (package
5533 (name "tome4")
5534 (version "1.6.7")
5535 (synopsis "Single-player, RPG roguelike game set in the world of Eyal")
5536 (source
5537 (origin
5538 (method url-fetch)
5539 (uri (string-append "https://te4.org/dl/t-engine/t-engine4-src-"
5540 version ".tar.bz2"))
5541 (sha256
5542 (base32 "0283hvms5hr29zr0grd6gq059k0hg8hcz3fsmwjmysiih8790i68"))
5543 (modules '((guix build utils)))
5544 (snippet
5545 '(begin
5546 (substitute* '("src/music.h" "src/tSDL.h")
5547 (("#elif defined(__FreeBSD__)" line)
5548 (string-append
5549 line " || defined(__GNUC__)")))
5550 (substitute* '("src/tgl.h")
5551 (("#include <GL/glext.h>") ""))
5552 #t))))
5553 (build-system gnu-build-system)
5554 (native-inputs
5555 `(("unzip" ,unzip)))
5556 (inputs
5557 `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
5558 ("glu" ,glu)
5559 ("premake4" ,premake4)
5560 ("openal" ,openal)
5561 ("vorbis" ,libvorbis)
5562 ("luajit" ,luajit)))
5563 (arguments
5564 `(#:make-flags '("CC=gcc" "config=release")
5565 ;; XXX: Building in parallel occasionally causes this build failure:
5566 ;; ../src/luajit2/src/host/buildvm.c:73:10: fatal error: buildvm_arch.h:
5567 ;; No such file or directory
5568 #:parallel-build? #f
5569 #:phases (modify-phases %standard-phases
5570 (delete 'bootstrap)
5571 (replace 'configure
5572 (lambda _
5573 (invoke "premake4" "gmake")
5574 #t))
5575 (add-after 'set-paths 'set-sdl-paths
5576 (lambda* (#:key inputs #:allow-other-keys)
5577 (setenv "CPATH"
5578 (string-append (assoc-ref inputs "sdl-union")
5579 "/include/SDL2:"
5580 (getenv "CPATH")))
5581 #t))
5582 (delete 'check)
5583 ;; premake doesn't provide install target
5584 (replace 'install
5585 (lambda* (#:key inputs outputs #:allow-other-keys)
5586 (let* ((out (assoc-ref outputs "out"))
5587 (usr (string-append out "/usr"))
5588 (bin (string-append out "/bin"))
5589 (licenses (string-append out "/share/licenses"))
5590 (documents (string-append out "/share/doc"))
5591 (pixmaps (string-append out "/share/pixmaps"))
5592 (icon "te4-icon.png")
5593 (data (string-append out "/share/" ,name))
5594 (applications (string-append
5595 out "/share/applications"))
5596 (unzip (string-append
5597 (assoc-ref inputs "unzip") "/bin/unzip"))
5598 (wrapper (string-append bin "/" ,name)))
5599 ;; icon
5600 (mkdir-p pixmaps)
5601 (invoke unzip "-j"
5602 (string-append
5603 "game/engines/te4-" ,version ".teae")
5604 (string-append
5605 "data/gfx/" icon) "-d" pixmaps)
5606 ;; game executable
5607 (install-file "t-engine" data)
5608 (mkdir-p bin)
5609 (with-output-to-file wrapper
5610 (lambda ()
5611 (display
5612 (string-append
5613 "#!/bin/sh\n"
5614 ;; No bootstrap code found,
5615 ;; defaulting to working directory
5616 ;; for engine code!
5617 "cd " data "\n"
5618 "exec -a tome4 ./t-engine \"$@\"\n"))))
5619 (chmod wrapper #o555)
5620 ;; licenses
5621 (for-each (lambda (file)
5622 (install-file file licenses))
5623 '("COPYING" "COPYING-MEDIA"))
5624 ;; documents
5625 (for-each (lambda (file)
5626 (install-file file documents))
5627 '("CONTRIBUTING" "CREDITS"))
5628 ;; data
5629 (copy-recursively "bootstrap" (string-append
5630 data "/bootstrap"))
5631 (copy-recursively "game" (string-append data "/game"))
5632 ;; launcher
5633 (mkdir-p applications)
5634 (with-output-to-file (string-append applications "/"
5635 ,name ".desktop")
5636 (lambda ()
5637 (display
5638 (string-append
5639 "[Desktop Entry]
5640 Name=ToME4
5641 Comment=" ,synopsis "\n"
5642 "Exec=" ,name "\n"
5643 "Icon=" icon "\n"
5644 "Terminal=false
5645 Type=Application
5646 Categories=Game;RolePlaying;\n")))))
5647 #t)))))
5648 (home-page "https://te4.org")
5649 (description "Tales of Maj’Eyal (ToME) RPG, featuring tactical turn-based
5650 combat and advanced character building. Play as one of many unique races and
5651 classes in the lore-filled world of Eyal, exploring random dungeons, facing
5652 challenging battles, and developing characters with your own tailored mix of
5653 abilities and powers. With a modern graphical and customisable interface,
5654 intuitive mouse control, streamlined mechanics and deep, challenging combat,
5655 Tales of Maj’Eyal offers engaging roguelike gameplay for the 21st century.")
5656 (license license:gpl3+)))
5657
5658 (define-public quakespasm
5659 (package
5660 (name "quakespasm")
5661 (version "0.93.2")
5662 (source
5663 (origin
5664 (method url-fetch)
5665 (uri (string-append "mirror://sourceforge/quakespasm/Source/quakespasm-"
5666 version ".tgz"))
5667 (sha256
5668 (base32 "0qm0j5drybvvq8xadfyppkpk3rxqsxbywzm6iwsjwdf0iia3gss5"))))
5669 (arguments
5670 `(#:tests? #f
5671 #:make-flags '("CC=gcc"
5672 "MP3LIB=mpg123"
5673 "USE_CODEC_FLAC=1"
5674 "USE_CODEC_MIKMOD=1"
5675 "USE_SDL2=1"
5676 "-CQuake")
5677 #:phases (modify-phases %standard-phases
5678 (delete 'configure)
5679 (add-after 'unpack 'fix-makefile-paths
5680 (lambda* (#:key outputs #:allow-other-keys)
5681 (let ((out (assoc-ref outputs "out")))
5682 (mkdir-p (string-append out "/bin"))
5683 (substitute* "Quake/Makefile"
5684 (("/usr/local/games")
5685 (string-append out "/bin")))
5686 #t))))))
5687 (build-system gnu-build-system)
5688 (inputs `(("libmikmod" ,libmikmod)
5689 ("libvorbis" ,libvorbis)
5690 ("flac" ,flac)
5691 ("mesa" ,mesa)
5692 ("mpg123" ,mpg123)
5693 ("sdl2" ,sdl2)))
5694 (synopsis "First person shooter engine for Quake 1")
5695 (description "Quakespasm is a modern engine for id software's Quake 1.
5696 It includes support for 64 bit CPUs, custom music playback, a new sound driver,
5697 some graphical niceities, and numerous bug-fixes and other improvements.")
5698 (home-page "http://quakespasm.sourceforge.net/")
5699 (license license:gpl2+)))
5700
5701 (define-public vkquake
5702 (package
5703 (inherit quakespasm)
5704 (name "vkquake")
5705 (version "1.01.0")
5706 (source
5707 (origin
5708 (method git-fetch)
5709 (uri (git-reference
5710 (url "https://github.com/Novum/vkQuake.git")
5711 (commit version)))
5712 (file-name (git-file-name name version))
5713 (sha256
5714 (base32 "1iwin8j5kbyrknbkhjgpy8nmm7pxqzr0daa9gn7p38qhg2mh0a39"))))
5715 (arguments
5716 `(#:make-flags
5717 (let ((vulkanlib (string-append (assoc-ref %build-inputs
5718 "vulkan-loader") "/lib")))
5719 (list "CC=gcc"
5720 "MP3LIB=mpg123"
5721 "USE_CODEC_FLAC=1"
5722 "USE_CODEC_MIKMOD=1"
5723 "USE_SDL2=1"
5724 (string-append "LDFLAGS=-Wl,-rpath=" vulkanlib)
5725 "-CQuake"))
5726 #:phases (modify-phases %standard-phases
5727 (delete 'configure)
5728 (add-after 'unpack 'fix-makefile-paths
5729 (lambda* (#:key outputs #:allow-other-keys)
5730 (let ((vulkan (assoc-ref %build-inputs
5731 "vulkan-loader"))
5732 (out (assoc-ref outputs "out")))
5733 (mkdir-p (string-append out "/bin"))
5734 (substitute* "Quake/Makefile" ((" /usr")
5735 (string-append " " out)))
5736 (substitute* "Quake/Makefile" (("/games")
5737 (string-append "/bin")))
5738 (substitute* "Quake/Makefile" (("..VULKAN_SDK.") vulkan))
5739 #t))))
5740 ,@(strip-keyword-arguments '(#:make-flags #:phases)
5741 (package-arguments quakespasm))))
5742 (inputs `(("vulkan-headers" ,vulkan-headers)
5743 ("vulkan-loader" ,vulkan-loader)
5744 ,@(package-inputs quakespasm)))
5745 (description "vkquake is a modern engine for id software's Quake 1.
5746 It includes support for 64 bit CPUs, custom music playback, a new sound driver,
5747 some graphical niceities, and numerous bug-fixes and other improvements.")
5748 (home-page "https://github.com/Novum/vkQuake")))
5749
5750 (define-public yamagi-quake2
5751 (package
5752 (name "yamagi-quake2")
5753 (version "7.10")
5754 (source
5755 (origin
5756 (method url-fetch)
5757 (uri (string-append "https://deponie.yamagi.org/quake2/quake2-"
5758 version ".tar.xz"))
5759 (sha256
5760 (base32
5761 "0psinbg25mysd58k99s1n34w31w5hj1vppb39gdjb0zqi6sl6cps"))))
5762 (build-system gnu-build-system)
5763 (arguments
5764 `(#:tests? #f
5765 #:make-flags
5766 (list "CC=gcc"
5767 ;; link openAL instead of using dlopen at runtime
5768 "DLOPEN_OPENAL=\"no\""
5769 ;; an optional directory where it will look for quake2 data files
5770 ;; in addition to the current working directory
5771 "WITH_SYSTEMWIDE=yes"
5772 "WITH_SYSTEMDIR=\"/opt/quake2\"")
5773 #:phases
5774 (modify-phases %standard-phases
5775 (delete 'configure)
5776 (replace 'install
5777 (lambda* (#:key outputs #:allow-other-keys)
5778 (let ((out (assoc-ref outputs "out")))
5779 (mkdir-p (string-append out "/lib"))
5780 (mkdir-p (string-append out "/bin"))
5781 ;; The yamagi-quake2 binary must be in the same directory
5782 ;; as it's engine libraries, but symlinking it to /bin is okay
5783 ;; https://github.com/yquake2/yquake2/blob/master/stuff/packaging.md
5784 (copy-recursively "release"
5785 (string-append out "/lib/yamagi-quake2"))
5786 (symlink (string-append out "/lib/yamagi-quake2/quake2")
5787 (string-append out "/bin/yamagi-quake2"))
5788 (symlink (string-append out "/lib/yamagi-quake2/q2ded")
5789 (string-append out "/bin/yamagi-q2ded"))))))))
5790 (inputs `(("sdl2" ,sdl2)
5791 ("mesa" ,mesa)
5792 ("libvorbis" ,libvorbis)
5793 ("zlib" ,zlib)
5794 ("openal" ,openal)))
5795 (native-inputs `(("pkg-config" ,pkg-config)))
5796 (synopsis "First person shooter engine based on quake2")
5797 (description "Yamagi Quake II is an enhanced client for id Software's Quake II.
5798 The main focus is an unchanged single player experience like back in 1997,
5799 thus the gameplay and the graphics are unaltered. However the user may use one
5800 of the unofficial retexturing packs. In comparison with the official client,
5801 over 1000 bugs were fixed and an extensive code audit done,
5802 making Yamagi Quake II one of the most solid Quake II implementations available.")
5803 (home-page "https://www.yamagi.org/quake2/")
5804 (license (list license:gpl2+ ; game and server
5805 (license:non-copyleft ; info-zip
5806 "file://LICENSE"
5807 "See Info-Zip section.")
5808 license:public-domain)))) ; stb
5809
5810 (define-public nudoku
5811 (package
5812 (name "nudoku")
5813 (version "1.0.0")
5814 (source (origin
5815 (method url-fetch)
5816 (uri (string-append "https://github.com/jubalh/nudoku/"
5817 "releases/download/" version
5818 "/nudoku-" version ".tar.xz"))
5819 (sha256
5820 (base32
5821 "0nr2j2z07nxk70s8xnmmpzccxicf7kn5mbwby2kg6aq8paarjm8k"))))
5822 (build-system gnu-build-system)
5823 (inputs `(("ncurses" ,ncurses)))
5824 (home-page "https://jubalh.github.io/nudoku/")
5825 (synopsis "Sudoku for your terminal")
5826 (description "Nudoku is a ncurses-based Sudoku game for your terminal.")
5827 (license license:gpl3+)))
5828
5829 (define-public the-butterfly-effect
5830 (package
5831 (name "the-butterfly-effect")
5832 (version "0.9.3.1")
5833 (source
5834 (origin
5835 (method git-fetch)
5836 (uri (git-reference
5837 (url "https://github.com/the-butterfly-effect/tbe.git")
5838 (commit (string-append "v" version))))
5839 (file-name (git-file-name name version))
5840 (sha256
5841 (base32
5842 "1ag2cp346f9bz9qy6za6q54id44d2ypvkyhvnjha14qzzapwaysj"))))
5843 (build-system gnu-build-system)
5844 (arguments
5845 `(#:phases
5846 (modify-phases %standard-phases
5847 (delete 'configure)
5848 ;; There is no "install" phase. By default, tbe is installed
5849 ;; in the build directory. Provide our own installation.
5850 (replace 'install
5851 (lambda* (#:key outputs #:allow-other-keys)
5852 (let* ((out (assoc-ref outputs "out"))
5853 (bin (string-append out "/bin"))
5854 (share (string-append out "/share")))
5855 (install-file "usr/games/tbe" bin)
5856 (mkdir-p share)
5857 (copy-recursively "usr/share" share)
5858 #t))))
5859 ;; Test suite requires a running Xorg server. Even when
5860 ;; provided, it fails with "D-Bus library appears to be
5861 ;; incorrectly set up; failed to read machine uuid: Failed to
5862 ;; open "/etc/machine-id": No such file or directory" along
5863 ;; with multiple "QPainter:: ... Painter not active" warnings.
5864 #:tests? #f))
5865 (inputs
5866 `(("qtbase" ,qtbase)
5867 ("qtsvg" ,qtsvg)))
5868 (native-inputs
5869 `(("cmake" ,cmake-minimal)
5870 ("gettext-minimal" ,gettext-minimal)
5871 ("qttools" ,qttools)))
5872 (synopsis "Realistic physics puzzle game")
5873 (description "The Butterfly Effect (tbe) is a game that uses
5874 realistic physics simulations to combine lots of simple mechanical
5875 elements to achieve a simple goal in the most complex way possible.")
5876 (home-page "http://the-butterfly-effect.org/")
5877 ;; Main license is GPL2-only. However, artwork is distributed
5878 ;; under various licenses, listed here.
5879 (license (list license:gpl2 license:public-domain license:expat
5880 license:cc-by-sa3.0 license:gpl3+ license:wtfpl2))))
5881
5882 (define-public pioneer
5883 (package
5884 (name "pioneer")
5885 (version "20200203")
5886 (source (origin
5887 (method git-fetch)
5888 (uri (git-reference
5889 (url "https://github.com/pioneerspacesim/pioneer.git")
5890 (commit version)))
5891 (file-name (git-file-name name version))
5892 (sha256
5893 (base32
5894 "1011xsi94jhw98mhm8kryq8ajig0qfbrdx5xdasi92bd4nk7lcp8"))))
5895 (build-system cmake-build-system)
5896 (native-inputs
5897 `(("pkg-config" ,pkg-config)))
5898 (inputs
5899 `(("assimp" ,assimp)
5900 ("curl" ,curl)
5901 ("freetype" ,freetype)
5902 ("glew" ,glew)
5903 ("glu" ,glu)
5904 ("libpng" ,libpng)
5905 ("libsigc++" ,libsigc++)
5906 ("libvorbis" ,libvorbis)
5907 ("lua" ,lua-5.2) ;not compatible with 5.3
5908 ("mesa" ,mesa)
5909 ("sdl" ,(sdl-union (list sdl2 sdl2-image)))))
5910 (arguments
5911 `(#:tests? #f ;tests are broken
5912 #:configure-flags (list "-DUSE_SYSTEM_LIBLUA:BOOL=YES"
5913 (string-append "-DPIONEER_DATA_DIR="
5914 %output "/share/games/pioneer"))))
5915 (home-page "https://pioneerspacesim.net")
5916 (synopsis "Game of lonely space adventure")
5917 (description
5918 "Pioneer is a space adventure game set in our galaxy at the turn of the
5919 31st century. The game is open-ended, and you are free to eke out whatever
5920 kind of space-faring existence you can think of. Look for fame or fortune by
5921 exploring the millions of star systems. Turn to a life of crime as a pirate,
5922 smuggler or bounty hunter. Forge and break alliances with the various
5923 factions fighting for power, freedom or self-determination. The universe is
5924 whatever you make of it.")
5925 (license license:gpl3)))
5926
5927 (define-public badass
5928 (let ((commit "3c3cd669b4fc8f73a102e3702788f7b28dc47dbb")
5929 (revision "0"))
5930 (package
5931 (name "badass")
5932 (version (git-version "0.0" revision commit))
5933 (source (origin
5934 (method git-fetch)
5935 (uri (git-reference
5936 (url "https://github.com/umayr/badass.git")
5937 (commit commit)))
5938 (file-name (git-file-name name version))
5939 (sha256
5940 (base32
5941 "05c9vdcb5ym3z0n5ll3v39mw4yl9jcjnlydmn0yl89ai9pv71zb6"))))
5942 (build-system go-build-system)
5943 (arguments
5944 '(#:import-path "github.com/umayr/badass"))
5945 (synopsis "Hacking contribution graphs in git")
5946 (description
5947 "Badass generates false commits for a range of dates, essentially
5948 hacking the gamification of contribution graphs on platforms such as
5949 Github or Gitlab.")
5950 (home-page "https://github.com/umayr/badass")
5951 (license license:expat))))
5952
5953 (define-public colobot
5954 (package
5955 (name "colobot")
5956 (version "0.1.12-alpha")
5957 (source
5958 (origin
5959 (method git-fetch)
5960 (uri (git-reference
5961 (url "https://github.com/colobot/colobot.git")
5962 (commit (string-append "colobot-gold-" version))
5963 (recursive? #t))) ;for "data/" subdir
5964 (file-name (git-file-name name version))
5965 (sha256
5966 (base32
5967 "1c181cclkrnspgs07lvndg2c81cjq3smkv7qim8c470cj88rcrp2"))))
5968 (build-system cmake-build-system)
5969 (arguments
5970 `(#:tests? #f ;no test
5971 #:phases
5972 (modify-phases %standard-phases
5973 (add-after 'unpack 'make-git-checkout-writable
5974 (lambda _
5975 (for-each make-file-writable (find-files "."))
5976 #t))
5977 (add-after 'unpack 'fix-directories
5978 (lambda _
5979 (substitute* "CMakeLists.txt"
5980 (("(\\$\\{CMAKE_INSTALL_PREFIX\\})/games" _ prefix)
5981 (string-append prefix "/bin"))
5982 (("(\\$\\{CMAKE_INSTALL_PREFIX\\}/share)/games/colobot" _ prefix)
5983 (string-append prefix "/colobot")))
5984 #t))
5985 (add-after 'fix-directories 'install-music
5986 ;; Retrieve and install music files.
5987 (lambda* (#:key inputs #:allow-other-keys)
5988 ;; Installation process tries to download music files using
5989 ;; "wget" if not already present. Since we are going another
5990 ;; route, skip "wget" command check.
5991 (substitute* "data/music/CMakeLists.txt"
5992 (("find_program\\(WGET wget\\)") ""))
5993 ;; Populate "music/" directory.
5994 (let ((data (assoc-ref inputs "colobot-music")))
5995 (invoke "tar" "-xvf" data "-Cdata/music"))
5996 #t)))))
5997 (native-inputs
5998 `(("colobot-music"
5999 ,(origin
6000 (method url-fetch)
6001 (uri (string-append "https://colobot.info/files/music/"
6002 "colobot-music_ogg_" version ".tar.gz"))
6003 (sha256
6004 (base32
6005 "1s86cd36rwkff329mb1ay1wi5qqyi35564ppgr3f4qqz9wj9vs2m"))))
6006 ("gettext" ,gettext-minimal)
6007 ("librsvg" ,librsvg)
6008 ("po4a" ,po4a)
6009 ("python" ,python-wrapper)))
6010 (inputs
6011 `(("boost" ,boost)
6012 ("glew" ,glew)
6013 ("libogg" ,libogg)
6014 ("libpng" ,libpng)
6015 ("libsndfile" ,libsndfile)
6016 ("libvorbis" ,libvorbis)
6017 ("openal" ,openal)
6018 ("physfs" ,physfs)
6019 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-ttf)))))
6020 (synopsis "Educational programming strategy game")
6021 (description "Colobot: Gold Edition is a real-time strategy game, where
6022 you can program your units (bots) in a language called CBOT, which is similar
6023 to C++ and Java. Your mission is to find a new planet to live and survive.
6024 You can save humanity and get programming skills!")
6025 (home-page "https://colobot.info")
6026 (license license:gpl3+)))
6027
6028 (define-public gzdoom
6029 (package
6030 (name "gzdoom")
6031 (version "4.3.2")
6032 (source
6033 (origin
6034 (method git-fetch)
6035 (uri (git-reference
6036 (url "https://github.com/coelckers/gzdoom.git")
6037 (commit (string-append "g" version))))
6038 (file-name (git-file-name name version))
6039 (sha256
6040 (base32 "0i4hyg72z84fc6ca2ic9q82q5cbgrbd7bynl3kpkypxvyasq08wz"))
6041 (patches (search-patches "gzdoom-search-in-installed-share.patch"
6042 "gzdoom-find-system-libgme.patch"))
6043 (modules '((guix build utils)))
6044 (snippet
6045 '(begin
6046 ;; Remove some bundled libraries. XXX There are more, but removing
6047 ;; them would require, at least, patching the build system.
6048 (with-directory-excursion "libraries"
6049 (delete-file-recursively "bzip2")
6050 (delete-file-recursively "game-music-emu")
6051 (delete-file-recursively "jpeg")
6052 (delete-file-recursively "zlib"))
6053 #t))))
6054 (arguments
6055 '(#:tests? #f
6056 #:configure-flags
6057 (let ((out (assoc-ref %outputs "out")))
6058 (list
6059 (string-append
6060 "-DCMAKE_CXX_FLAGS:="
6061 "-DSHARE_DIR=\\\"" out "/share/\\\" "
6062 "-DGUIX_OUT_PK3=\\\"" out "/share/games/doom\\\"")
6063
6064 ;; The build requires some extra convincing not to use the bundled
6065 ;; libgme previously deleted in the soure snippet.
6066 "-DFORCE_INTERNAL_GME=OFF"
6067
6068 ;; Link libraries at build time instead of loading them at run time.
6069 "-DDYN_OPENAL=OFF"
6070 "-DDYN_FLUIDSYNTH=OFF"
6071 "-DDYN_GTK=OFF"
6072 "-DDYN_MPG123=OFF"
6073 "-DDYN_SNDFILE=OFF"))
6074 #:phases
6075 (modify-phases %standard-phases
6076 (add-before 'configure 'fix-referenced-paths
6077 (lambda* (#:key inputs outputs #:allow-other-keys)
6078 (let ((fluid-3 (assoc-ref inputs "fluid-3"))
6079 (timidity++ (assoc-ref inputs "timidity++"))
6080 (out (assoc-ref outputs "out")))
6081
6082 (substitute*
6083 "src/CMakeLists.txt"
6084 (("COMMAND /bin/sh")
6085 (string-append "COMMAND " (which "sh"))))
6086
6087 (substitute*
6088 "libraries/zmusic/mididevices/music_fluidsynth_mididevice.cpp"
6089 (("/usr/share/sounds/sf2/FluidR3_GM.sf2")
6090 (string-append fluid-3 "/share/soundfonts/FluidR3Mono_GM.sf3")))
6091
6092 (substitute*
6093 "libraries/zmusic/mididevices/music_timiditypp_mididevice.cpp"
6094 (("exename = \"timidity\"")
6095 (string-append "exename = \"" timidity++ "/bin/timidity\"")))
6096 #t))))))
6097 (build-system cmake-build-system)
6098 (inputs `(("bzip2" ,bzip2)
6099 ("fluid-3" ,fluid-3)
6100 ("fluidsynth" ,fluidsynth)
6101 ("gtk+3" ,gtk+)
6102 ("libgme" ,libgme)
6103 ("libjpeg" ,libjpeg)
6104 ("libsndfile" ,libsndfile)
6105 ("mesa" ,mesa)
6106 ("mpg123" ,mpg123)
6107 ("openal" ,openal)
6108 ("sdl2" ,sdl2)
6109 ("timidity++" ,timidity++)
6110 ("zlib" ,zlib)))
6111 (native-inputs `(("pkg-config" ,pkg-config)
6112 ("unzip" ,unzip)))
6113 (synopsis "Modern Doom 2 source port")
6114 (description "GZdoom is a port of the Doom 2 game engine, with a modern
6115 renderer. It improves modding support with ZDoom's advanced mapping features
6116 and the new ZScript language. In addition to Doom, it supports Heretic, Hexen,
6117 Strife, Chex Quest, and fan-created games like Harmony, Hacx and Freedoom.")
6118 (home-page "https://zdoom.org/index")
6119 ;; The source uses x86 assembly
6120 (supported-systems '("x86_64-linux" "i686-linux"))
6121 (license (list license:gpl3+ ; gzdoom game
6122 license:lgpl3+ ; gzdoom renderer
6123 license:expat ; gdtoa
6124 (license:non-copyleft ; modified dumb
6125 "file://dumb/licence.txt"
6126 "Dumb license, explicitly GPL compatible.")))))
6127
6128 (define-public odamex
6129 (package
6130 (name "odamex")
6131 (version "0.8.1")
6132 (source
6133 (origin
6134 (method url-fetch)
6135 (uri (string-append
6136 "mirror://sourceforge/odamex/Odamex/" version "/"
6137 "odamex-src-" version ".tar.gz"))
6138 (sha256
6139 (base32 "1ywbqkfacc9fc5di3dn95y5ah2ys9i241j64q3f37a73x92llw1i"))))
6140 (build-system cmake-build-system)
6141 (arguments `(#:tests? #f)) ; no tests
6142 (inputs
6143 `(("sdl" ,sdl)
6144 ("sdl-mixer" ,sdl-mixer)
6145 ("zlib" ,zlib)
6146 ("libpng" ,libpng)
6147 ("alsa-lib" ,alsa-lib)))
6148 (home-page "https://odamex.net/")
6149 (synopsis "Multiplayer Doom port")
6150 (description "Odamex is a modification of the Doom engine that
6151 allows players to easily join servers dedicated to playing Doom
6152 online.")
6153 (license license:gpl2+)))
6154
6155 (define-public chocolate-doom
6156 (package
6157 (name "chocolate-doom")
6158 (version "3.0.0")
6159 (source (origin
6160 (method url-fetch)
6161 (uri (string-append "https://www.chocolate-doom.org/downloads/"
6162 version
6163 "/chocolate-doom-"
6164 version
6165 ".tar.gz"))
6166 (sha256
6167 (base32
6168 "1f6sw6qa9z0a70dsjh5cs45fkyyxw68s7vkqlykihz8cjcisdbkk"))))
6169 (build-system gnu-build-system)
6170 (inputs `(("sdl2-net" ,sdl2-net)
6171 ("sdl2-mixer" , sdl2-mixer)
6172 ("sdl2" ,sdl2)))
6173 (native-inputs
6174 `(("pkg-config" ,pkg-config)))
6175 (synopsis "Doom source port preserving the look, feel, and bugs of vanilla
6176 Doom")
6177 (description
6178 "Chocolate Doom takes a different approach to other source ports. Its
6179 aim is to accurately reproduce the experience of playing Vanilla Doom. It is
6180 a conservative, historically accurate Doom source port, which is compatible
6181 with the thousands of mods and levels that were made before the Doom source
6182 code was released. Rather than flashy new graphics, Chocolate Doom's main
6183 features are its accurate reproduction of the game as it was played in the
6184 1990s. The project is developed around a carefully-considered philosophy that
6185 intentionally restricts which features may be added (and rejects any that
6186 affect gameplay).")
6187 (home-page "https://www.chocolate-doom.org/wiki/index.php/Chocolate_Doom")
6188 (license license:gpl2)))
6189
6190 (define-public crispy-doom
6191 (package
6192 (inherit chocolate-doom)
6193 (name "crispy-doom")
6194 (version "5.8.0")
6195 (source (origin
6196 (method git-fetch)
6197 (uri (git-reference
6198 (url "https://github.com/fabiangreffrath/crispy-doom.git")
6199 (commit (string-append "crispy-doom-" version))))
6200 (file-name (git-file-name name version))
6201 (sha256
6202 (base32 "1b6gn0dysv631jynh769whww9xcss1gms78sz3nrn855q1dsvcb4"))))
6203 (native-inputs
6204 (append
6205 (package-native-inputs chocolate-doom)
6206 `(("automake" ,automake)
6207 ("autoreconf" ,autoconf))))
6208 (arguments
6209 `(#:phases
6210 (modify-phases %standard-phases
6211 (replace 'bootstrap
6212 ;; The bundled autogen.sh script unconditionally runs ./configure.
6213 (lambda _ (invoke "autoreconf" "-vif"))))))
6214 (synopsis "Limit-removing enhanced-resolution Doom source port based on
6215 Chocolate Doom")
6216 (description
6217 "Crispy Doom is a friendly fork of Chocolate Doom that provides a higher
6218 display resolution, removes the static limits of the Doom engine and offers
6219 further optional visual, tactical and physical enhancements while remaining
6220 entirely config file, savegame, netplay and demo compatible with the
6221 original.")
6222 (home-page "https://www.chocolate-doom.org/wiki/index.php/Crispy_Doom")))
6223
6224 (define shlomif-cmake-modules
6225 (origin
6226 (method url-fetch)
6227 (uri (string-append "https://bitbucket.org/shlomif/shlomif-cmake-modules/"
6228 "raw/c505713d7a7cda608f97f01577e5868a711b883e/"
6229 "shlomif-cmake-modules/Shlomif_Common.cmake"))
6230 (sha256
6231 (base32 "0kx9s1qqhhzprp1w3b67xmsns0n0v506bg5hgrshxaxpy6lqiwb2"))))
6232
6233 (define-public rinutils
6234 (package
6235 (name "rinutils")
6236 (version "0.2.0")
6237 (source (origin
6238 (method git-fetch)
6239 (uri (git-reference
6240 (url "https://github.com/shlomif/rinutils.git")
6241 (commit version)))
6242 (file-name (git-file-name name version))
6243 (sha256
6244 (base32
6245 "1fpxyg86ggv0h7j8aarjjxrvwlj7jycd3bw066c0dwkq2fszxsf2"))))
6246 (native-inputs
6247 `(("perl" ,perl)
6248 ;; The following is only needed for tests.
6249 ("perl-file-find-object" ,perl-file-find-object)
6250 ("perl-test-differences" ,perl-test-differences)
6251 ("perl-class-xsaccessor" ,perl-class-xsaccessor)
6252 ("perl-io-all" ,perl-io-all)
6253 ("perl-test-runvalgrind" ,perl-test-runvalgrind)
6254 ("cmake-rules" ,shlomif-cmake-modules)
6255 ("pkg-config" ,pkg-config)))
6256 (inputs
6257 `(("cmocka" ,cmocka)
6258 ("perl-env-path", perl-env-path)
6259 ("perl-inline" ,perl-inline)
6260 ("perl-inline-c" ,perl-inline-c)
6261 ("perl-string-shellquote" ,perl-string-shellquote)
6262 ("perl-test-trailingspace" ,perl-test-trailingspace)
6263 ("perl-file-find-object-rule" ,perl-file-find-object-rule)
6264 ("perl-text-glob" ,perl-text-glob)
6265 ("perl-number-compare" ,perl-number-compare)
6266 ("perl-moo" ,perl-moo)))
6267 (arguments
6268 `(#:phases
6269 (modify-phases %standard-phases
6270 (add-after 'unpack 'fix-build-env
6271 (lambda* (#:key inputs #:allow-other-keys)
6272 (use-modules (guix build utils))
6273 (let* ((cmake-rules (assoc-ref inputs "cmake-rules")))
6274 (copy-file cmake-rules
6275 (string-append "cmake/"
6276 (strip-store-file-name cmake-rules)))
6277 #t)))
6278 (replace 'check
6279 (lambda _
6280 (with-directory-excursion "../source"
6281 (setenv "FCS_TEST_BUILD" "1")
6282 (setenv "RINUTILS_TEST_BUILD" "1")
6283 ;; TODO: Run tests after setting RINUTILS_TEST_TIDY to `1',
6284 ;; which requires tidy-all.
6285 ;; (setenv "RINUTILS_TEST_TIDY" "1")
6286 (invoke "perl" "CI-testing/continuous-integration-testing.pl")))))))
6287 (build-system cmake-build-system)
6288 (home-page "https://www.shlomifish.org/open-source/projects/")
6289 (synopsis "C11 / gnu11 utilities C library")
6290 (description "This package provides C11 / gnu11 utilities C library")
6291 (license license:expat)))
6292
6293 (define-public fortune-mod
6294 (package
6295 (name "fortune-mod")
6296 (version "2.12.0")
6297 (source
6298 (origin
6299 (method git-fetch)
6300 (uri (git-reference
6301 (url "https://github.com/shlomif/fortune-mod")
6302 (commit (string-append "fortune-mod-" version))))
6303 (file-name (git-file-name name version))
6304 (sha256
6305 (base32
6306 "0laxgqsdg7kvpvvm1f54b94ga9r0cr9g3ffii8avg8fy65x6pzc9"))))
6307 (build-system cmake-build-system)
6308 (arguments
6309 `(#:test-target "check"
6310 #:phases
6311 (modify-phases %standard-phases
6312 (add-after 'unpack 'fix-build-env
6313 (lambda* (#:key inputs #:allow-other-keys)
6314 (use-modules (guix build utils))
6315 (let* ((cmake-rules (assoc-ref inputs "cmake-rules")))
6316 (copy-file cmake-rules
6317 (string-append "fortune-mod/cmake/"
6318 (strip-store-file-name cmake-rules)))
6319 (chdir "fortune-mod")
6320 ;; TODO: Valgrind tests fail for some reason.
6321 ;; Similar issue: https://github.com/shlomif/fortune-mod/issues/21 (?)
6322 (delete-file "tests/t/valgrind.t")
6323 #t)))
6324 (add-after 'install 'fix-install-directory
6325 (lambda* (#:key outputs #:allow-other-keys)
6326 ;; Move binary from "games/" to "bin/" and remove the latter. This
6327 ;; is easier than patching CMakeLists.txt since the tests hard-code
6328 ;; the location as well.
6329 (let* ((out (assoc-ref outputs "out"))
6330 (bin (string-append out "/bin"))
6331 (games (string-append out "/games")))
6332 (rename-file (string-append games "/fortune")
6333 (string-append bin "/fortune"))
6334 (rmdir games)
6335 #t))))))
6336 (inputs `(("recode" ,recode)))
6337 (native-inputs
6338 `(("perl" ,perl)
6339 ;; The following is only needed for tests.
6340 ("perl-file-find-object" ,perl-file-find-object)
6341 ("perl-test-differences" ,perl-test-differences)
6342 ("perl-class-xsaccessor" ,perl-class-xsaccessor)
6343 ("perl-io-all" ,perl-io-all)
6344 ("perl-test-runvalgrind" ,perl-test-runvalgrind)
6345 ("cmake-rules" ,shlomif-cmake-modules)
6346 ("rinutils" ,rinutils)))
6347 (home-page "https://www.shlomifish.org/open-source/projects/fortune-mod/")
6348 (synopsis "The Fortune Cookie program from BSD games")
6349 (description "Fortune is a command-line utility which displays a random
6350 quotation from a collection of quotes.")
6351 (license license:bsd-4)))
6352
6353 (define xonotic-data
6354 (package
6355 (name "xonotic-data")
6356 (version "0.8.2")
6357 (source
6358 (origin
6359 (method url-fetch)
6360 (uri (string-append "http://dl.xonotic.org/xonotic-"
6361 version ".zip"))
6362 (file-name (string-append name "-" version ".zip"))
6363 (sha256
6364 (base32
6365 "1mcs6l4clvn7ibfq3q69k2p0z6ww75rxvnngamdq5ic6yhq74bx2"))))
6366 (build-system trivial-build-system)
6367 (native-inputs
6368 `(("unzip" ,unzip)))
6369 (arguments
6370 `(#:modules ((guix build utils))
6371 #:builder
6372 (begin
6373 (use-modules (guix build utils))
6374 (let* ((out (assoc-ref %outputs "out"))
6375 (xonotic (string-append out "/share/xonotic"))
6376 (source (assoc-ref %build-inputs "source"))
6377 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
6378 (copy-file source (string-append ,name "-" ,version ".zip"))
6379 (invoke unzip (string-append ,name "-" ,version ".zip"))
6380 (mkdir-p out)
6381 (mkdir-p xonotic)
6382 (chdir "Xonotic")
6383 (copy-recursively "data"
6384 (string-append xonotic "/data"))
6385 (copy-recursively "server"
6386 (string-append xonotic "/server"))
6387 (install-file "key_0.d0pk" xonotic)))))
6388 (home-page "http://xonotic.org")
6389 (synopsis "Data files for Xonotic")
6390 (description
6391 "Xonotic-data provides the data files required by the game Xonotic.")
6392 (license (list license:gpl2+
6393 (license:x11-style "file://server/rcon.pl")))))
6394
6395 (define-public xonotic
6396 (package
6397 (name "xonotic")
6398 (version "0.8.2")
6399 (source
6400 (origin
6401 (method url-fetch)
6402 (uri (string-append "http://dl.xonotic.org/xonotic-"
6403 version "-source.zip"))
6404 (file-name (string-append name "-" version ".zip"))
6405 (sha256
6406 (base32
6407 "0axxw04fyz6jlfqd0kp7hdrqa0li31sx1pbipf2j5qp9wvqicsay"))))
6408 (build-system gnu-build-system)
6409 (arguments
6410 `(#:configure-flags (list (string-append "--prefix="
6411 (assoc-ref %outputs "out"))
6412 "--disable-rijndael")
6413 #:phases
6414 (modify-phases %standard-phases
6415 (add-before 'configure 'make-darkplaces
6416 (lambda* (#:key outputs #:allow-other-keys)
6417 (let* ((out (assoc-ref outputs "out"))
6418 (sharedir (string-append out "/share/xonotic/")))
6419 (invoke "make" "-C" "source/darkplaces"
6420 (string-append "DP_FS_BASEDIR="
6421 sharedir)
6422 "DP_LINK_TO_LIBJPEG=1"
6423 "DP_SOUND_API=ALSA"
6424 "CC=gcc"
6425 "-f" "makefile"
6426 "cl-release")
6427 (invoke "make" "-C" "source/darkplaces"
6428 (string-append "DP_FS_BASEDIR="
6429 sharedir)
6430 "DP_LINK_TO_LIBJPEG=1"
6431 "DP_SOUND_API=ALSA"
6432 "CC=gcc"
6433 "-f" "makefile"
6434 "sdl-release")
6435 (invoke "make" "-C" "source/darkplaces"
6436 (string-append "DP_FS_BASEDIR="
6437 sharedir)
6438 "DP_LINK_TO_LIBJPEG=1"
6439 "DP_SOUND_API=ALSA"
6440 "CC=gcc"
6441 "-f" "makefile"
6442 "sv-release"))))
6443 (add-before 'configure 'bootstrap
6444 (lambda _
6445 (chdir "source/d0_blind_id")
6446 (invoke "sh" "autogen.sh")))
6447 (add-after 'build 'install-desktop-entry
6448 (lambda* (#:key outputs #:allow-other-keys)
6449 ;; Add .desktop files for the 2 variants and the symlink
6450 (let* ((output (assoc-ref outputs "out"))
6451 (apps (string-append output "/share/applications")))
6452 (mkdir-p apps)
6453 (with-output-to-file
6454 (string-append apps "/xonotic-glx.desktop")
6455 (lambda _
6456 (format #t
6457 "[Desktop Entry]~@
6458 Name=xonotic-glx~@
6459 Comment=Xonotic glx~@
6460 Exec=~a/bin/xonotic-glx~@
6461 TryExec=~@*~a/bin/xonotic-glx~@
6462 Icon=xonotic~@
6463 Categories=Game~@
6464 Type=Application~%"
6465 output)))
6466 (with-output-to-file
6467 (string-append apps "/xonotic-sdl.desktop")
6468 (lambda _
6469 (format #t
6470 "[Desktop Entry]~@
6471 Name=xonotic-sdl~@
6472 Comment=Xonotic sdl~@
6473 Exec=~a/bin/xonotic-sdl~@
6474 TryExec=~@*~a/bin/xonotic-sdl~@
6475 Icon=xonotic~@
6476 Categories=Game~@
6477 Type=Application~%"
6478 output)))
6479 (with-output-to-file
6480 (string-append apps "/xonotic.desktop")
6481 (lambda _
6482 (format #t
6483 "[Desktop Entry]~@
6484 Name=xonotic~@
6485 Comment=Xonotic~@
6486 Exec=~a/bin/xonotic-glx~@
6487 TryExec=~@*~a/bin/xonotic~@
6488 Icon=xonotic~@
6489 Categories=Game~@
6490 Type=Application~%"
6491 output)))
6492 #t)))
6493 (add-after 'install-desktop-entry 'install-icons
6494 (lambda* (#:key outputs #:allow-other-keys)
6495 (let ((out (assoc-ref outputs "out")))
6496 (with-directory-excursion "../../misc/logos/icons_png/"
6497 (for-each
6498 (lambda (file)
6499 (let* ((size (string-filter char-numeric? file))
6500 (icons (string-append out "/share/icons/hicolor/"
6501 size "x" size "/apps")))
6502 (mkdir-p icons)
6503 (copy-file file (string-append icons "/xonotic.png"))))
6504 '("xonotic_16.png" "xonotic_22.png" "xonotic_24.png"
6505 "xonotic_32.png" "xonotic_48.png" "xonotic_64.png"
6506 "xonotic_128.png" "xonotic_256.png" "xonotic_512.png"))))))
6507 (add-after 'install-icons 'install-binaries
6508 (lambda* (#:key outputs #:allow-other-keys)
6509 (let ((out (assoc-ref outputs "out")))
6510 (define (install src dst)
6511 (let ((dst (string-append out dst)))
6512 (mkdir-p (dirname dst))
6513 (copy-file src dst)))
6514 (mkdir-p (string-append out "/bin"))
6515 (install "../darkplaces/darkplaces-dedicated"
6516 "/bin/xonotic-dedicated")
6517 (install "../darkplaces/darkplaces-glx"
6518 "/bin/xonotic-glx")
6519 (install "../darkplaces/darkplaces-sdl"
6520 "/bin/xonotic-sdl")
6521 ;; Provide a default xonotic executable, defaulting to SDL.
6522 (symlink (string-append out "/bin/xonotic-sdl")
6523 (string-append out "/bin/xonotic"))
6524 #t)))
6525 (add-after 'install-binaries 'install-data
6526 (lambda* (#:key outputs inputs #:allow-other-keys)
6527 (let* ((out (assoc-ref outputs "out"))
6528 (data (assoc-ref inputs "xonotic-data")))
6529 (symlink (string-append data "/share/xonotic")
6530 (string-append out "/share/xonotic"))
6531 #t)))
6532 (add-after 'install-binaries 'wrap-binaries
6533 (lambda* (#:key outputs inputs #:allow-other-keys)
6534 ;; Curl and libvorbis need to be wrapped so that we get
6535 ;; sound and networking.
6536 (let* ((out (assoc-ref outputs "out"))
6537 (bin (string-append out "/bin/xonotic"))
6538 (bin-sdl (string-append out "/bin/xonotic-sdl"))
6539 (bin-glx (string-append out "/bin/xonotic-glx"))
6540 (bin-dedicated (string-append out "/bin/xonotic-dedicated"))
6541 (curl (assoc-ref inputs "curl"))
6542 (vorbis (assoc-ref inputs "libvorbis")))
6543 (wrap-program bin
6544 `("LD_LIBRARY_PATH" ":" prefix
6545 (,(string-append curl "/lib:" vorbis "/lib"))))
6546 (wrap-program bin-sdl
6547 `("LD_LIBRARY_PATH" ":" prefix
6548 (,(string-append curl "/lib:" vorbis "/lib"))))
6549 (wrap-program bin-glx
6550 `("LD_LIBRARY_PATH" ":" prefix
6551 (,(string-append curl "/lib:" vorbis "/lib"))))
6552 (wrap-program bin-dedicated
6553 `("LD_LIBRARY_PATH" ":" prefix
6554 (,(string-append curl "/lib:" vorbis "/lib"))))
6555 #t))))))
6556 (inputs
6557 `(("xonotic-data" ,xonotic-data)
6558 ("alsa-lib" ,alsa-lib)
6559 ("curl" ,curl)
6560 ("libjpeg" ,libjpeg)
6561 ("libmodplug" ,libmodplug)
6562 ("libvorbis" ,libvorbis)
6563 ("libogg" ,libogg)
6564 ("libxpm" ,libxpm)
6565 ("libxxf86dga" ,libxxf86dga)
6566 ("libxxf86vm" ,libxxf86vm)
6567 ("libx11" ,libx11)
6568 ("libxext" ,libxext)
6569 ("libxau" ,libxau)
6570 ("libxdmcp" ,libxdmcp)
6571 ("mesa" ,mesa)
6572 ("glu" ,glu)
6573 ("freetype" ,freetype)
6574 ("sdl2" ,sdl2)
6575 ("libpng" ,libpng)
6576 ("hicolor-icon-theme" ,hicolor-icon-theme)))
6577 (native-inputs
6578 `(("unzip" ,unzip)
6579 ("autoconf" ,autoconf)
6580 ("automake" ,automake)
6581 ("pkg-config" ,pkg-config)
6582 ("libtool" ,libtool)
6583 ("gmp" ,gmp)))
6584 (home-page "http://xonotic.org")
6585 (synopsis "Fast-paced first-person shooter game")
6586 (description
6587 "Xonotic is a free, fast-paced first-person shooter.
6588 The project is geared towards providing addictive arena shooter
6589 gameplay which is all spawned and driven by the community itself.
6590 Xonotic is a direct successor of the Nexuiz project with years of
6591 development between them, and it aims to become the best possible
6592 open-source FPS of its kind.")
6593 (license (list license:gpl2+
6594 license:bsd-3 ; /source/d0_blind_id folder and others
6595 (license:x11-style "" "See file rcon.pl.")))))
6596
6597 (define-public frotz
6598 (package
6599 (name "frotz")
6600 (version "2.44")
6601 (source (origin
6602 (method url-fetch)
6603 (uri (list (string-append
6604 "http://www.ifarchive.org/if-archive/infocom/interpreters/"
6605 "frotz/frotz-" version ".tar.gz")
6606 (string-append
6607 "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
6608 "frotz/frotz-" version ".tar.gz")))
6609 (sha256
6610 (base32
6611 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
6612 (build-system gnu-build-system)
6613 (arguments
6614 `(#:tests? #f ; there are no tests
6615 #:phases
6616 (modify-phases %standard-phases
6617 (delete 'configure)
6618 (add-before 'build 'curses
6619 (lambda _
6620 (substitute* "Makefile"
6621 (("lcurses") "lncurses"))
6622 #t))
6623 (replace 'install
6624 (lambda* (#:key outputs #:allow-other-keys)
6625 (let* ((out (assoc-ref outputs "out"))
6626 (bin (string-append out "/bin"))
6627 (man (string-append out "/share/man/man6")))
6628 (install-file "frotz" bin)
6629 (mkdir-p man)
6630 (install-file "doc/frotz.6" man)
6631 #t))))))
6632 (inputs `(("libmodplug" ,libmodplug)
6633 ("libsamplerate" ,libsamplerate)
6634 ("libsndfile" ,libsndfile)
6635 ("libvorbis" ,libvorbis)
6636 ("ncurses" ,ncurses)))
6637 (synopsis "Portable Z-machine interpreter (ncurses version) for text adventure games")
6638 (description "Frotz is an interpreter for Infocom games and other Z-machine
6639 games in the text adventure/interactive fiction genre. This version of Frotz
6640 complies with standard 1.0 of Graham Nelson's specification. It plays all
6641 Z-code games V1-V8, including V6, with sound support through libao, and uses
6642 ncurses for text display.")
6643 (home-page "http://frotz.sourceforge.net")
6644 (license license:gpl2+)))
6645
6646 (define-public frotz-dumb-terminal
6647 (package
6648 (name "frotz-dumb-terminal")
6649 (version "2.44")
6650 (source (origin
6651 (method url-fetch)
6652 (uri (list (string-append
6653 "http://www.ifarchive.org/if-archive/infocom/interpreters/"
6654 "frotz/frotz-" version ".tar.gz")
6655 (string-append
6656 "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
6657 "frotz/frotz-" version ".tar.gz")))
6658 (sha256
6659 (base32
6660 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
6661 (build-system gnu-build-system)
6662 (arguments
6663 `(#:tests? #f ; there are no tests
6664 #:phases
6665 (modify-phases %standard-phases
6666 (delete 'configure)
6667 (replace 'build
6668 (lambda _
6669 (invoke "make" "dumb")))
6670 (replace 'install
6671 (lambda* (#:key outputs #:allow-other-keys)
6672 (let* ((out (assoc-ref outputs "out"))
6673 (bin (string-append out "/bin"))
6674 (man (string-append out "/share/man/man6")))
6675 (install-file "dfrotz" bin)
6676 (mkdir-p man)
6677 (install-file "doc/dfrotz.6" man)
6678 #t))))))
6679 (synopsis "Portable Z-machine dumb interpreter for text adventure games")
6680 (description "Frotz is an interpreter for Infocom games and
6681 other Z-machine games in the text adventure/interactive fiction genre.
6682 dfrotz is the dumb interface version. You get no screen control; everything
6683 is just printed to the terminal line by line. The terminal handles all the
6684 scrolling. Maybe you'd like to experience what it's like to play Adventure on
6685 a teletype. A much cooler use for compiling Frotz with the dumb interface is
6686 that it can be wrapped in CGI scripting, PHP, and the like to allow people
6687 to play games on webpages. It can also be made into a chat bot.")
6688 (home-page "http://frotz.sourceforge.net")
6689 (license license:gpl2+)))
6690
6691 (define-public frotz-sdl
6692 (let* ((commit "4de8c34f2116fff554af6216c30ec9d41bf50b24"))
6693 (package
6694 (name "frotz-sdl")
6695 (version "2.45pre")
6696 (source (origin
6697 (method git-fetch)
6698 (uri (git-reference
6699 (url "https://gitlab.com/DavidGriffith/frotz")
6700 (commit commit)))
6701 (sha256
6702 (base32
6703 "18ms21pcrl7ipcnyqnf8janamkryzx78frsgd9kfk67jvbj0z2k8"))
6704 (file-name (git-file-name name version))))
6705 (build-system gnu-build-system)
6706 (arguments
6707 `(#:tests? #f ; there are no tests
6708 #:phases
6709 (modify-phases %standard-phases
6710 (delete 'configure)
6711 (add-before 'build 'patch-makefile
6712 (lambda _
6713 (substitute* "Makefile"
6714 (("lcurses") "lncurses")
6715 (("^BUILD_DATE_TIME =.*$")
6716 "BUILD_DATE_TIME = \"2.45pre-20180907.00000\"\n"))
6717 #t))
6718 (replace 'build
6719 (lambda _
6720 (invoke "make" "sdl")))
6721 (replace 'install
6722 (lambda* (#:key outputs #:allow-other-keys)
6723 (let* ((out (assoc-ref outputs "out"))
6724 (bin (string-append out "/bin"))
6725 (man (string-append out "/share/man/man6")))
6726 (install-file "sfrotz" bin)
6727 (mkdir-p man)
6728 (install-file "doc/sfrotz.6" man)
6729 #t))))))
6730 (native-inputs
6731 `(("pkg-config" ,pkg-config)
6732 ("which" ,which)
6733 ("perl" ,perl)))
6734 (inputs `(("sdl2" ,sdl2)
6735 ("sdl2-mixer" ,sdl2-mixer)
6736 ("libmodplug" ,libmodplug)
6737 ("libsamplerate" ,libsamplerate)
6738 ("libsndfile" ,libsndfile)
6739 ("libvorbis" ,libvorbis)
6740 ("ncurses" ,ncurses)
6741 ("freetype" ,freetype)
6742 ("libjpeg-turbo" ,libjpeg-turbo)))
6743 (synopsis "Portable Z-machine interpreter (SDL port) for text adventure games")
6744 (description "Frotz is an interpreter for Infocom games and other Z-machine
6745 games in the text adventure/interactive fiction genre. This version of Frotz
6746 using SDL fully supports all these versions of the Z-Machine including the
6747 graphical version 6. Graphics and sound are created through the use of the SDL
6748 libraries. AIFF sound effects and music in MOD and OGG formats are supported
6749 when packaged in Blorb container files or optionally from individual files.")
6750 (home-page "http://frotz.sourceforge.net")
6751 (license license:gpl2+))))
6752
6753 (define-public libmanette
6754 (package
6755 (name "libmanette")
6756 (version "0.2.3")
6757 (source (origin
6758 (method url-fetch)
6759 (uri (string-append "mirror://gnome/sources/libmanette/"
6760 (version-major+minor version) "/"
6761 "libmanette-" version ".tar.xz"))
6762 (sha256
6763 (base32
6764 "1zxh7jn2zg7hivmal5zxam6fxvjsd1w6hlw0m2kysk76b8anbw60"))))
6765 (build-system meson-build-system)
6766 (native-inputs
6767 `(("glib" ,glib "bin") ; for glib-compile-resources
6768 ("gobject-introspection" ,gobject-introspection)
6769 ("pkg-config" ,pkg-config)
6770 ("vala" ,vala)))
6771 (inputs
6772 `(("libevdev" ,libevdev)
6773 ("libgudev" ,libgudev)))
6774 (home-page "https://wiki.gnome.org/Apps/Games")
6775 (synopsis "Game controller library")
6776 (description "Libmanette is a small GObject library giving you simple
6777 access to game controllers. It supports the de-facto standard gamepads as
6778 defined by the W3C standard Gamepad specification or as implemented by the SDL
6779 GameController.")
6780 (license license:lgpl2.1+)))
6781
6782 (define-public quadrapassel
6783 (package
6784 (name "quadrapassel")
6785 (version "3.32.0")
6786 (source (origin
6787 (method url-fetch)
6788 (uri (string-append "mirror://gnome/sources/quadrapassel/"
6789 (version-major+minor version) "/"
6790 "quadrapassel-" version ".tar.xz"))
6791 (sha256
6792 (base32
6793 "1zhi1957knz9dm98drn2dh95mr33sdch590yddh1f8r6bzsfjvpy"))))
6794 (build-system meson-build-system)
6795 (arguments
6796 '(#:glib-or-gtk? #t
6797 #:phases
6798 (modify-phases %standard-phases
6799 (add-after 'unpack 'skip-gtk-update-icon-cache
6800 ;; Don't create 'icon-theme.cache'.
6801 (lambda _
6802 (substitute* "build-aux/meson_post_install.py"
6803 (("gtk-update-icon-cache") (which "true")))
6804 #t)))))
6805 (native-inputs
6806 `(("desktop-file-utils" ,desktop-file-utils) ;for desktop-file-validate
6807 ("gettext" ,gettext-minimal)
6808 ("glib" ,glib "bin") ;for glib-compile-resources
6809 ("itstool" ,itstool)
6810 ("libxml2" ,libxml2) ;for xmllint
6811 ("pkg-config" ,pkg-config)
6812 ("vala" ,vala)))
6813 (inputs
6814 `(("clutter" ,clutter)
6815 ("clutter-gtk" ,clutter-gtk)
6816 ("gtk+" ,gtk+)
6817 ("libcanberra" ,libcanberra)
6818 ("libmanette" ,libmanette)
6819 ("librsvg" ,librsvg)))
6820 (home-page "https://wiki.gnome.org/Apps/Quadrapassel")
6821 (synopsis "GNOME version of Tetris")
6822 (description "Quadrapassel comes from the classic falling-block game,
6823 Tetris. The goal of the game is to create complete horizontal lines of
6824 blocks, which will disappear. The blocks come in seven different shapes made
6825 from four blocks each: one straight, two L-shaped, one square, and two
6826 S-shaped. The blocks fall from the top center of the screen in a random
6827 order. You rotate the blocks and move them across the screen to drop them in
6828 complete lines. You score by dropping blocks fast and completing lines. As
6829 your score gets higher, you level up and the blocks fall faster.")
6830 (license license:gpl2+)))
6831
6832 (define-public endless-sky
6833 (package
6834 (name "endless-sky")
6835 (version "0.9.10")
6836 (source
6837 (origin
6838 (method git-fetch)
6839 (uri (git-reference
6840 (url "https://github.com/endless-sky/endless-sky")
6841 (commit (string-append "v" version))))
6842 (file-name (git-file-name name version))
6843 (sha256
6844 (base32
6845 "1wax9qhxakydg6bs92d1jy2fki1n9r0wkps1np02y0pvm1fl189i"))))
6846 (build-system scons-build-system)
6847 (arguments
6848 `(#:scons ,scons-python2
6849 #:scons-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
6850 #:tests? #f ; no tests
6851 #:phases
6852 (modify-phases %standard-phases
6853 (add-after 'unpack 'patch-resource-locations
6854 (lambda* (#:key outputs #:allow-other-keys)
6855 (substitute* "source/Files.cpp"
6856 (("/usr/local/")
6857 (string-append (assoc-ref outputs "out") "/")))
6858 #t))
6859 (add-after 'unpack 'patch-scons
6860 (lambda _
6861 (substitute* "SConstruct"
6862 ;; Keep environmental variables
6863 (("Environment\\(\\)")
6864 "Environment(ENV = os.environ)")
6865 ;; Install into %out/bin
6866 (("games\"") "bin\""))
6867 #t)))))
6868 (inputs
6869 `(("glew" ,glew)
6870 ("libjpeg" ,libjpeg-turbo)
6871 ("libmad" ,libmad)
6872 ("libpng" ,libpng)
6873 ("openal" ,openal)
6874 ("sdl2" ,sdl2)))
6875 (home-page "https://endless-sky.github.io/")
6876 (synopsis "2D space trading and combat game")
6877 (description "Endless Sky is a 2D space trading and combat game. Explore
6878 other star systems. Earn money by trading, carrying passengers, or completing
6879 missions. Use your earnings to buy a better ship or to upgrade the weapons and
6880 engines on your current one. Blow up pirates. Take sides in a civil war. Or
6881 leave human space behind and hope to find friendly aliens whose culture is more
6882 civilized than your own.")
6883 (license (list license:gpl3+
6884 license:cc-by-sa3.0
6885 license:cc-by-sa4.0
6886 license:public-domain))))
6887
6888 (define-public stepmania
6889 (package
6890 (name "stepmania")
6891 (version "5.1.0-b2")
6892 (source
6893 (origin
6894 (method git-fetch)
6895 (uri (git-reference
6896 (url "https://github.com/stepmania/stepmania.git")
6897 (commit (string-append "v" version))))
6898 (file-name (git-file-name name version))
6899 (sha256
6900 (base32
6901 "0a7y9l7xm510vgnpmj1is7p9m6d6yd0fcaxrjcickz295k5w3rdn"))
6902 (modules '((guix build utils)))
6903 (snippet
6904 '(begin
6905 ;; Remove song files, which are licensed under a non-commercial
6906 ;; clause, and a course pointing to them.
6907 (for-each delete-file-recursively
6908 '("Songs/StepMania 5/Goin' Under"
6909 "Songs/StepMania 5/MechaTribe Assault"
6910 "Songs/StepMania 5/Springtime"))
6911 (for-each delete-file '("Courses/Default/Jupiter.crs"
6912 "Courses/Default/Jupiter.png"))
6913 ;; Unbundle libpng.
6914 (substitute* "extern/CMakeLists.txt"
6915 (("include\\(CMakeProject-png.cmake\\)") ""))
6916 (delete-file-recursively "extern/libpng")
6917 #t))))
6918 (build-system cmake-build-system)
6919 (arguments
6920 `(#:tests? #f ;FIXME: couldn't find how to run tests
6921 #:build-type "Release"
6922 #:out-of-source? #f ;for the 'install-desktop' phase
6923 #:configure-flags
6924 (list "-DWITH_SYSTEM_FFMPEG=1"
6925 ;; SSE instructions are available on Intel systems only.
6926 ,@(if (any (cute string-prefix? <> (or (%current-target-system)
6927 (%current-system)))
6928 '("x64_64" "i686"))
6929 '()
6930 '("-DWITH_SSE2=NO"))
6931 ;; Configuration cannot find GTK2 without the two following
6932 ;; flags.
6933 (string-append "-DGTK2_GDKCONFIG_INCLUDE_DIR="
6934 (assoc-ref %build-inputs "gtk+")
6935 "/lib/gtk-2.0/include")
6936 (string-append "-DGTK2_GLIBCONFIG_INCLUDE_DIR="
6937 (assoc-ref %build-inputs "glib")
6938 "/lib/glib-2.0/include"))
6939 #:phases
6940 (modify-phases %standard-phases
6941 (add-after 'unpack 'ensure-application-files-can-be-found
6942 (lambda* (#:key outputs #:allow-other-keys)
6943 (let ((out (assoc-ref outputs "out")))
6944 (substitute* "src/arch/LoadingWindow/LoadingWindow_Gtk.cpp"
6945 (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\" \\+ \"GtkModule.so\"")
6946 (string-append "\"" out
6947 "/share/stepmania/GtkModule.so\"")))
6948 (substitute* "src/arch/ArchHooks/ArchHooks_Unix.cpp"
6949 (("Root = sDirOfExecutable")
6950 (string-append "Root = \"" out "/share/stepmania/\""))
6951 (("sDirOfExecutable \\+ \"/(Packages|Songs)\"" _ dir)
6952 (string-append "\"" out "/share/stepmania/" dir "\"")))
6953 (substitute* "src/RageFileManager.cpp"
6954 (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\"")
6955 (string-append "\"" out "/share/stepmania/\""))))
6956 #t))
6957 (add-after 'unpack 'fix-install-subdir
6958 ;; Installation would be done in "%out/stepmania-X.Y", but we
6959 ;; prefer the more common layout "%out/share/stepmania".
6960 (lambda _
6961 (substitute* "src/CMakeLists.txt"
6962 (("\"stepmania-.*?\"") "\"share/stepmania\""))
6963 #t))
6964 (add-after 'unpack 'unbundle-libpng
6965 (lambda* (#:key inputs #:allow-other-keys)
6966 (substitute* "src/CMakeLists.txt"
6967 (("\\$\\{SM_EXTERN_DIR\\}/libpng/include")
6968 (string-append (assoc-ref inputs "libpng") "/include")))
6969 #t))
6970 (add-after 'install 'install-executable
6971 (lambda* (#:key outputs #:allow-other-keys)
6972 (let* ((out (assoc-ref outputs "out"))
6973 (bin (string-append out "/bin"))
6974 (exe (string-append out "/share/stepmania/stepmania")))
6975 (mkdir-p bin)
6976 (symlink exe (string-append bin "/stepmania"))
6977 #t)))
6978 (add-after 'install-executable 'install-desktop
6979 (lambda* (#:key outputs #:allow-other-keys)
6980 (let* ((out (assoc-ref outputs "out"))
6981 (share (string-append out "/share"))
6982 (applications (string-append share "/applications"))
6983 (icons (string-append share "/icons")))
6984 (install-file "stepmania.desktop" applications)
6985 (mkdir-p icons)
6986 (copy-recursively "icons" icons)
6987 #t)))
6988 ;; Move documentation in a more usual place, i.e.,
6989 ;; "%out/share/doc/stepmania/".
6990 (add-after 'install-desktop 'install-doc
6991 (lambda* (#:key outputs #:allow-other-keys)
6992 (let* ((out (assoc-ref outputs "out"))
6993 (share (string-append out "/share")))
6994 (with-directory-excursion share
6995 (mkdir-p "doc")
6996 (symlink "../stepmania/Docs" "doc/stepmania"))
6997 #t))))))
6998 (native-inputs
6999 `(("pkg-config" ,pkg-config)
7000 ("yasm" ,yasm)))
7001 (inputs
7002 `(("alsa-lib" ,alsa-lib)
7003 ;; Per upstream, StepMania is only guaranteed to work with a very
7004 ;; specific FFmpeg version, which is included in the repository as
7005 ;; a Git submodule. This particular version requirement usually
7006 ;; changes every few years.
7007 ("ffmpeg" ,ffmpeg-for-stepmania)
7008 ("glib" ,glib)
7009 ("glew" ,glew)
7010 ("gtk+" ,gtk+-2)
7011 ("jsoncpp" ,jsoncpp)
7012 ("libpng" ,libpng)
7013 ("libjpeg" ,libjpeg-turbo)
7014 ("libmad" ,libmad)
7015 ("libogg" ,libogg)
7016 ("libva" ,libva)
7017 ("libvorbis" ,libvorbis)
7018 ("libxinerama" ,libxinerama)
7019 ("libxrandr" ,libxrandr)
7020 ("mesa" ,mesa)
7021 ("pcre" ,pcre)
7022 ("pulseaudio" ,pulseaudio)
7023 ("sdl" ,sdl2)
7024 ("udev" ,eudev)
7025 ("zlib" ,zlib)))
7026 (synopsis "Advanced rhythm game designed for both home and arcade use")
7027 (description "StepMania is a dance and rhythm game. It features 3D
7028 graphics, keyboard and dance pad support, and an editor for creating your own
7029 steps.
7030
7031 This package provides the core application, but no song is shipped. You need
7032 to download and install them in @file{$HOME/.stepmania-X.Y/Songs} directory.")
7033 (home-page "https://www.stepmania.com")
7034 (license license:expat)))
7035
7036 (define-public btanks
7037 (package
7038 (name "btanks")
7039 (version "0.9.8083")
7040 (source
7041 (origin
7042 (method url-fetch)
7043 (uri (string-append "mirror://sourceforge/btanks/btanks-source/"
7044 "btanks-" version ".tar.bz2"))
7045 (sha256
7046 (base32
7047 "0ha35kxc8xlbg74wsrbapfgxvcrwy6psjkqi7c6adxs55dmcxliz"))))
7048 (build-system scons-build-system)
7049 (arguments
7050 `(#:tests? #f ; there are none
7051 #:scons ,scons-python2
7052 #:scons-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
7053 #:phases
7054 (modify-phases %standard-phases
7055 (add-after 'unpack 'replace-removed-scons-syntax
7056 (lambda _
7057 (substitute* "SConstruct"
7058 (("Options") "Variables")
7059 (("opts.Add\\(BoolOption.*") "opts.Add('gcc_visibility', 'gcc visibility', 'true')")
7060 (("opts.Add\\(EnumOption.*") "opts.Add('mode', 'build mode', 'release')"))
7061 #t))
7062 (add-after 'set-paths 'set-sdl-paths
7063 (lambda* (#:key inputs #:allow-other-keys)
7064 (setenv "CPATH"
7065 (string-append (assoc-ref inputs "sdl")
7066 "/include/SDL:"
7067 (or (getenv "CPATH") "")))
7068 #t))
7069 (add-after 'unpack 'fix-compilation-errors
7070 (lambda _
7071 (substitute* "mrt/base_file.h"
7072 (("#include <string>" m)
7073 (string-append m "\n#include <sys/types.h>")))
7074 (substitute* '("engine/sl08/sl08.h"
7075 "engine/sl08/sl08.py")
7076 (("signal = NULL") "signal = 0")
7077 (("object\\(NULL\\)") "object(0)")
7078 (("func\\(NULL\\)") "func(0)")
7079 ((" connect\\(signal_ref\\)")
7080 " this->connect(signal_ref)"))
7081 (substitute* "math/range_list.h"
7082 ((" lower_bound\\(value\\)")
7083 " this->lower_bound(value)")
7084 ((" erase\\(i\\)")
7085 " this->erase(i)"))
7086 (substitute* "clunk/source.cpp"
7087 (("using namespace clunk" m)
7088 (string-append "# define pow10f(x) exp10f(x)\n" m)))
7089 #t))
7090 (add-after 'unpack 'find-lua
7091 (lambda _
7092 (substitute* "engine/SConscript"
7093 (("lua5.1") "lua-5.1")
7094 (("bt_libs.append\\(lua\\)")
7095 "bt_libs.append(\"lua\")"))
7096 #t)))))
7097 (inputs
7098 `(("expat" ,expat)
7099 ("glu" ,glu)
7100 ("libsmpeg" ,libsmpeg-with-sdl1)
7101 ("libvorbis" ,libvorbis)
7102 ("lua51" ,lua-5.1)
7103 ("sdl" ,(sdl-union (list sdl
7104 sdl-mixer
7105 sdl-image
7106 sdl-ttf)))
7107 ("zlib" ,zlib)))
7108 (native-inputs
7109 `(("pkg-config" ,pkg-config)
7110 ("zip" ,zip)))
7111 (home-page "http://btanks.sourceforge.net")
7112 (synopsis "Multiplayer tank battle game")
7113 (description "Battle Tanks (also known as \"btanks\") is a funny battle
7114 game, where you can choose one of three vehicles and eliminate your enemy
7115 using the whole arsenal of weapons. It has original cartoon-like graphics and
7116 cool music, it’s fun and dynamic, it has several network modes for deathmatch
7117 and cooperative.")
7118 ;; Some parts (e.g. mrt/b64.cpp) are LGPLv2.1+, but the whole package is
7119 ;; released under GPLv2 or later. It comes with extra exceptions for the
7120 ;; developers.
7121 (license (list license:gpl2+ license:lgpl2.1+))))
7122
7123 (define-public slingshot
7124 (package
7125 (name "slingshot")
7126 (version "0.9")
7127 (source
7128 (origin
7129 (method git-fetch)
7130 (uri (git-reference
7131 (url "https://github.com/ryanakca/slingshot.git")
7132 (commit version)))
7133 (file-name (git-file-name name version))
7134 (sha256
7135 (base32
7136 "19m8b6nsi786bc6gmkp185mwri3r5y249gjmqd5qsc23nnfhgrs1"))))
7137 (build-system python-build-system)
7138 (arguments
7139 `(#:python ,python-2))
7140 (inputs
7141 `(("python-pygame" ,python2-pygame)))
7142 (home-page "https://github.com/ryanakca/slingshot")
7143 (synopsis "Simple 2D shooting strategy game set in space")
7144 (description "Slingshot is a two-dimensional strategy game where two
7145 players attempt to shoot one another through a section of space populated by
7146 planets. The main feature of the game is that the shots, once fired, are
7147 affected by the gravity of the planets.")
7148 (license license:gpl2+)))
7149
7150 (define-public 4dtris
7151 (package
7152 (name "4dtris")
7153 (version "0.4.3")
7154 (source
7155 (origin
7156 (method url-fetch)
7157 (uri (string-append "https://launchpad.net/4dtris/"
7158 (version-major+minor version)
7159 "/" version "/+download/4dtris_"
7160 version ".orig.tar.gz"))
7161 (sha256
7162 (base32
7163 "1nfkhcm0l89jyw8yr65na97g4l385zhjf7whkyg47c3v5sdqq2g7"))))
7164 (build-system gnu-build-system)
7165 (arguments
7166 `(#:phases
7167 (modify-phases %standard-phases
7168 (add-after 'unpack 'fix-install-directories
7169 (lambda* (#:key outputs #:allow-other-keys)
7170 (let ((out (assoc-ref outputs "out")))
7171 (substitute* "Makefile.in"
7172 (("bindir = /usr/games")
7173 (string-append "bindir = " out "/bin"))
7174 (("/usr/share/applications")
7175 (string-append out "/share/applications"))
7176 (("/usr/share/games/4dtris")
7177 (string-append out "/share/4dtris"))))
7178 #t))
7179 (add-after 'set-paths 'set-sdl-paths
7180 (lambda* (#:key inputs #:allow-other-keys)
7181 (setenv "CPATH"
7182 (string-append (assoc-ref inputs "sdl")
7183 "/include/SDL:"
7184 (or (getenv "CPATH") "")))
7185 #t)))))
7186 (inputs
7187 `(("fontconfig" ,fontconfig)
7188 ("freeglut" ,freeglut)
7189 ("sdl" ,(sdl-union (list sdl sdl-ttf)))))
7190 (home-page "https://launchpad.net/4dtris/")
7191 (synopsis "4D Tetris")
7192 (description "4D-TRIS is an alteration of the well-known Tetris game. The
7193 game field is extended to 4D space, which has to filled up by the gamer with
7194 4D hyper cubes.")
7195 (license license:gpl3)))
7196
7197 (define-public arx-libertatis
7198 (package
7199 (name "arx-libertatis")
7200 (version "1.1.2")
7201 (source
7202 (origin
7203 (method url-fetch)
7204 (uri (string-append "http://arx-libertatis.org/files/arx-libertatis-"
7205 version ".tar.xz"))
7206 (sha256
7207 (base32
7208 "0hjfxlsmp8wwqr06snv2dlly2s79ra0d9aw49gkp6rn8m50b9bc2"))))
7209 (build-system cmake-build-system)
7210 (outputs '("out" "installer"))
7211 (arguments
7212 '(#:tests? #f ; No tests.
7213 #:phases
7214 (modify-phases %standard-phases
7215 (add-after 'unpack 'fix-install-helper-paths
7216 (lambda* (#:key inputs #:allow-other-keys)
7217 (let ((p7zip (assoc-ref inputs "p7zip"))
7218 (innoextract (assoc-ref inputs "innoextract"))
7219 (wget (assoc-ref inputs "wget"))
7220 (zenity (assoc-ref inputs "zenity")))
7221 (substitute* "scripts/arx-install-data"
7222 (("have innoextract")
7223 (string-append "have " innoextract "/bin/innoextract"))
7224 (("then innoextract")
7225 (string-append "then " innoextract "/bin/innoextract"))
7226 (("else innoextract")
7227 (string-append "else " innoextract "/bin/innoextract"))
7228 (("for _extract_zip_sz in 7za 7z")
7229 (string-append "for _extract_zip_sz in " p7zip "/bin/7za"))
7230 (("else if have 7z")
7231 (string-append "else if have " p7zip "/bin/7za"))
7232 (("7z x -tiso")
7233 (string-append p7zip "/bin/7z x -tiso"))
7234 (("if have wget")
7235 (string-append "if have " wget "/bin/wget"))
7236 (("wget -O")
7237 (string-append wget "/bin/wget -O"))
7238 (("for backend in \\$preferred zenity")
7239 (string-append "for backend in $preferred " zenity "/bin/zenity"))
7240 (("zenity +--title")
7241 (string-append zenity "/bin/zenity --title"))
7242 (("^zenity\\)")
7243 (string-append zenity "/bin/zenity)"))))
7244 #t))
7245 (add-after 'install 'move-installer
7246 (lambda* (#:key outputs #:allow-other-keys)
7247 (let ((out (assoc-ref outputs "out"))
7248 (installer (assoc-ref outputs "installer")))
7249 (mkdir-p (string-append installer "/bin"))
7250 (rename-file (string-append out "/bin/arx-install-data")
7251 (string-append installer "/bin/arx-install-data"))))))))
7252 (inputs
7253 `(("sdl" ,sdl) ; Switch to sdl2 in >1.1.2.
7254 ("mesa" ,mesa) ; Switch to libepoxy in >1.1.2.
7255 ("glew" ,glew)
7256 ("openal" ,openal)
7257 ("zlib" ,zlib)
7258 ("boost" ,boost)
7259 ("glm" ,glm)
7260 ("freetype" ,freetype)
7261 ;; The following are only needed by the arx-install-data script.
7262 ("p7zip" ,p7zip) ; Install-helper uses it to extract ISO and .cab archives.
7263 ("zenity" ,zenity) ; GUI for install-helper.
7264 ("wget" ,wget) ; Used by the install-helper to download the patch.
7265 ;; The install-helper needs it to extract the patch.
7266 ("innoextract" ,innoextract)))
7267 (home-page "https://arx-libertatis.org/")
7268 (synopsis "Port of Arx Fatalis, a first-person role-playing game")
7269 (description "Arx Libertatis is a cross-platform port of Arx Fatalis, a 2002
7270 first-person role-playing game / dungeon crawler developed by Arkane Studios.
7271 This port however does not include the game data, so you need to obtain a copy
7272 of the original Arx Fatalis or its demo to play Arx Libertatis. Arx Fatalis
7273 features crafting, melee and ranged combat, as well as a unique casting system
7274 where the player draws runes in real time to effect the desired spell.")
7275 (license license:gpl3+)))
7276
7277 (define-public edgar
7278 (package
7279 (name "edgar")
7280 (version "1.32")
7281 (source
7282 (origin
7283 (method url-fetch)
7284 (uri
7285 (string-append "https://github.com/riksweeney/edgar/releases/download/"
7286 version "/edgar-" version "-1.tar.gz"))
7287 (sha256
7288 (base32 "12lam6qcscc5ima1w2ksd1cvsvxbd17h6mqkgsqpzx8ap43p2r5p"))))
7289 (build-system gnu-build-system)
7290 (arguments '(#:tests? #f ; there are no tests
7291 #:make-flags
7292 (list "CC=gcc"
7293 (string-append "PREFIX=" (assoc-ref %outputs "out"))
7294 (string-append "BIN_DIR=" (assoc-ref %outputs "out") "/bin/"))
7295 #:phases
7296 (modify-phases %standard-phases
7297 (delete 'configure)
7298 (add-before 'build 'fix-env
7299 (lambda* (#:key inputs #:allow-other-keys)
7300 (setenv "CPATH"
7301 (string-append (assoc-ref inputs "sdl2-union")
7302 "/include/SDL2:"
7303 (or (getenv "CPATH") "")))
7304 #t)))))
7305 (inputs
7306 `(("sdl2-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
7307 ("zlib" ,zlib)))
7308 (native-inputs
7309 `(("pkg-config" ,pkg-config)
7310 ("autoconf" ,autoconf)
7311 ("automake" ,automake)
7312 ("gnu-gettext" ,gettext-minimal)
7313 ("libtool" ,libtool)
7314 ("which" ,which)))
7315 (synopsis "2d action platformer game")
7316 (description "The Legend of Edgar is a 2D platform game with a persistent world.
7317 When Edgar's father fails to return home after venturing out one dark and stormy night,
7318 Edgar fears the worst: he has been captured by the evil sorcerer who lives in
7319 a fortress beyond the forbidden swamp.")
7320 (home-page "https://www.parallelrealities.co.uk/games/edgar/")
7321 (license license:gpl2+)))
7322
7323 (define-public openclonk
7324 (package
7325 (name "openclonk")
7326 (version "8.1")
7327 (source (origin
7328 (method url-fetch)
7329 (uri (string-append
7330 "https://www.openclonk.org/builds/release/" version "/"
7331 "openclonk-" version "-src.tar.bz2"))
7332 (sha256
7333 (base32
7334 "0imkqjp8lww5p0cnqf4k4mb2v682mnsas63qmiz17rspakr7fxik"))))
7335 (build-system cmake-build-system)
7336 (arguments
7337 `(#:configure-flags '("-DAudio_TK=OpenAL")
7338 #:test-target "tests"
7339 #:phases
7340 (modify-phases %standard-phases
7341 (add-after 'unpack 'prepare-gmock
7342 (lambda* (#:key inputs #:allow-other-keys)
7343 (mkdir "gmock")
7344 (copy-recursively (assoc-ref inputs "googlemock") "gmock")
7345 (substitute* "tests/CMakeLists.txt"
7346 (("/usr/src/gmock")
7347 (string-append (getcwd) "/gmock/googlemock"))
7348 (("/usr/src/gtest")
7349 (string-append (getcwd) "/gmock/googletest"))
7350 (("PATH_SUFFIXES \"src\" \"gtest\"")
7351 "PATH_SUFFIXES \"src\""))
7352 #t))
7353 (add-after 'unpack 'adjust-backward-cpp-includes
7354 (lambda _
7355 ;; XXX: The bundled backward-cpp exports a CMake "interface"
7356 ;; that includes external libraries such as libdl from glibc.
7357 ;; By default, CMake interface includes are treated as "system
7358 ;; headers", and GCC behaves poorly when glibc is passed as a
7359 ;; system header (causing #include_next failures).
7360
7361 ;; Here we prevent targets that consume the Backward::Backward
7362 ;; interface from treating it as "system includes".
7363 (substitute* "CMakeLists.txt"
7364 (("target_link_libraries\\((.+) Backward::Backward\\)" all target)
7365 (string-append "set_property(TARGET " target " PROPERTY "
7366 "NO_SYSTEM_FROM_IMPORTED true)\n"
7367 all)))
7368 #t))
7369 (add-after 'unpack 'add-libiberty
7370 ;; Build fails upon linking executables without this.
7371 (lambda _
7372 (substitute* "thirdparty/backward-cpp/BackwardConfig.cmake"
7373 (("set\\(LIBBFD_LIBRARIES (.*?)\\)" _ libraries)
7374 (string-append "set(LIBBFD_LIBRARIES " libraries " iberty)")))
7375 #t))
7376 (add-after 'add-libiberty 'lax-freealut-requirement
7377 ;; TODO: We provide freealut 1.1.0, but pkg-config somehow detects
7378 ;; it as 1.0.1. Force minimal version.
7379 (lambda _
7380 (substitute* "cmake/FindAudio.cmake"
7381 (("freealut>=1.1.0") "freealut>=1.0.1"))
7382 #t))
7383 (add-after 'lax-freealut-requirement 'fix-directories
7384 ;; Prefer "$out/share/openclonk" over
7385 ;; "$out/share/games/openclonk". Also install "openclonk"
7386 ;; binary in "bin/", not "games/".
7387 (lambda _
7388 (substitute* "CMakeLists.txt"
7389 (("share/games/openclonk") "share/openclonk")
7390 (("TARGETS openclonk DESTINATION games")
7391 "TARGETS openclonk DESTINATION bin"))
7392 #t)))))
7393 (native-inputs
7394 `(("googlemock" ,(package-source googletest))
7395 ("googletest" ,googletest)
7396 ("pkg-config" ,pkg-config)))
7397 (inputs
7398 `(("freealut" ,freealut)
7399 ("freetype" ,freetype)
7400 ("glew" ,glew)
7401 ("libiberty" ,libiberty)
7402 ("libjpeg" ,libjpeg-turbo)
7403 ("libogg" ,libogg)
7404 ("libpng" ,libpng)
7405 ("libvorbis" ,libvorbis)
7406 ("libxrandr" ,libxrandr)
7407 ("mesa" ,mesa)
7408 ("miniupnpc" ,miniupnpc)
7409 ("openal" ,openal)
7410 ("qtbase" ,qtbase)
7411 ("readline" ,readline)
7412 ("sdl" ,sdl2)
7413 ("tinyxml" ,tinyxml)
7414 ("zlib" ,zlib)))
7415 (home-page "https://www.openclonk.org/")
7416 (synopsis
7417 "Multiplayer action game where you control small and nimble humanoids")
7418 (description "OpenClonk is a multiplayer action/tactics/skill game. It is
7419 often referred to as a mixture of The Settlers and Worms. In a simple 2D
7420 antfarm-style landscape, the player controls a crew of Clonks, small but
7421 robust humanoid beings. The game encourages free play but the normal goal is
7422 to either exploit valuable resources from the earth by building a mine or
7423 fight each other on an arena-like map.")
7424 ;; Software as a whole is licensed under ISC, artwork under CC-BY.
7425 (license (list license:isc license:cc-by3.0))))
7426
7427 (define-public flare-engine
7428 (package
7429 (name "flare-engine")
7430 (version "1.11")
7431 (source (origin
7432 (method git-fetch)
7433 (uri (git-reference
7434 (url "https://github.com/flareteam/flare-engine.git")
7435 (commit (string-append "v" version))))
7436 (file-name (git-file-name name version))
7437 (sha256
7438 (base32
7439 "1mqr1s72p5bdh4kq2a8hg72dk8lwnddicjnd2cdp1sbfa9lmjym8"))))
7440 (build-system cmake-build-system)
7441 (arguments
7442 `(#:tests? #f ;no test
7443 #:configure-flags '("-DBINDIR=bin" "-DDATADIR=share/flare")))
7444 (inputs
7445 `(("hicolor-icon-theme" ,hicolor-icon-theme)
7446 ("python" ,python-wrapper)
7447 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
7448 (home-page "http://www.flarerpg.org/")
7449 (synopsis "Action Roleplaying Engine")
7450 (description "Flare (Free Libre Action Roleplaying Engine) is a simple
7451 game engine built to handle a very specific kind of game: single-player 2D
7452 action RPGs.")
7453 (license license:gpl3+)))
7454
7455 (define-public flare-game
7456 (package
7457 (name "flare-game")
7458 (version "1.11")
7459 (source (origin
7460 (method git-fetch)
7461 (uri (git-reference
7462 (url "https://github.com/flareteam/flare-game.git")
7463 (commit (string-append "v" version))))
7464 (file-name (git-file-name name version))
7465 (sha256
7466 (base32
7467 "0bd5g7sd89a9176ilr408hdqzdfv4j7wj0idd685c1n6s01c3h6p"))))
7468 (build-system cmake-build-system)
7469 (arguments
7470 `(#:tests? #f ;no test
7471 #:configure-flags '("-DDATADIR=share/flare")
7472 #:phases
7473 (modify-phases %standard-phases
7474 ;; Flare expects the mods to be located in the same folder.
7475 ;; Yet, "default" mod is in the engine, whereas the others
7476 ;; are in the current package. Merge everything here with
7477 ;; a symlink.
7478 (add-after 'install 'add-default-mod
7479 (lambda* (#:key inputs outputs #:allow-other-keys)
7480 (let* ((out (assoc-ref outputs "out"))
7481 (mods (string-append out "/share/flare/mods")))
7482 (with-directory-excursion mods
7483 (symlink (string-append (assoc-ref inputs "flare-engine")
7484 "/share/flare/mods/default")
7485 "default")))
7486 #t))
7487 (add-after 'install 'install-executable
7488 ;; The package only provides assets for the game, the
7489 ;; executable coming from "flare-engine". Since more than
7490 ;; one game may use the engine, we create a new executable,
7491 ;; "flare-game", which launches the engine with appropriate
7492 ;; parameters.
7493 (lambda* (#:key inputs outputs #:allow-other-keys)
7494 (let* ((out (assoc-ref outputs "out"))
7495 (bash (string-append (assoc-ref inputs "bash")
7496 "/bin/bash"))
7497 (flare (string-append (assoc-ref inputs "flare-engine")
7498 "/bin/flare"))
7499 (script (string-append out "/bin/flare-game")))
7500 (mkdir-p (dirname script))
7501 (call-with-output-file script
7502 (lambda (port)
7503 (format port
7504 "#!~a
7505 exec ~a --data-path=~a/share/flare --mods=empyrean_campaign~%"
7506 bash
7507 flare
7508 out)))
7509 (chmod script #o755))
7510 #t)))))
7511 (inputs
7512 `(("flare-engine" ,flare-engine)))
7513 (home-page "http://www.flarerpg.org/")
7514 (synopsis "Fantasy action RPG using the FLARE engine")
7515 (description "Flare is a single-player 2D action RPG with
7516 fast-paced action and a dark fantasy style.")
7517 (license license:cc-by-sa3.0)))
7518
7519 (define-public meritous
7520 (package
7521 (name "meritous")
7522 (version "1.5")
7523 (source (origin
7524 (method git-fetch)
7525 (uri (git-reference
7526 (url "https://gitlab.com/meritous/meritous.git")
7527 (commit (string-append "v" version))))
7528 (file-name (git-file-name name version))
7529 (sha256
7530 (base32
7531 "0n5jm4g0arjllgqmd2crv8h02i6hs3hlh1zyc7ng7yfpg1mbd8p8"))))
7532 (build-system gnu-build-system)
7533 (arguments
7534 `(#:tests? #f ;no test
7535 #:make-flags
7536 (list "CC=gcc"
7537 (string-append "prefix=" (assoc-ref %outputs "out")))
7538 #:phases
7539 (modify-phases %standard-phases
7540 (delete 'configure)
7541 (add-after 'unpack 'fix-sdl-path
7542 ;; XXX: For some reason, `sdl-config' reports stand-alone SDL
7543 ;; directory, not SDL-union provided as an input to the package.
7544 ;; We force the latter with "--prefix=" option.
7545 (lambda* (#:key inputs #:allow-other-keys)
7546 (substitute* "Makefile"
7547 (("sdl-config" command)
7548 (string-append command " --prefix=" (assoc-ref inputs "sdl"))))
7549 #t))
7550 (add-after 'unpack 'fix-crash
7551 ;; XXX: Songs are not present in the repository, due to licensing
7552 ;; issues. Yet, the game tries to load them, and, since it cannot
7553 ;; find them, crashes. Users cannot add them back, the store being
7554 ;; read-only, so we turn off background music altogether.
7555 (lambda _
7556 (substitute* "src/audio.c"
7557 (("PlayBackgroundMusic\\(new_track\\);" all)
7558 (string-append "// " all)))
7559 #t)))))
7560 (native-inputs
7561 `(("intltool" ,intltool)))
7562 (inputs
7563 `(("sdl" ,(sdl-union (list sdl sdl-image sdl-mixer)))
7564 ("zlib" ,zlib)))
7565 (home-page "https://gitlab.com/meritous/meritous")
7566 (synopsis "Action-adventure dungeon crawl game")
7567 (description "Far below the surface of the planet is a place of limitless
7568 power. Those that seek to control such a utopia will soon bring an end to
7569 themselves. Seeking an end to the troubles that plague him, PSI user Merit
7570 journeys into the hallowed Orcus Dome in search of answers.
7571
7572 Meritous is a action-adventure game with simple controls but a challenge to
7573 find a balance of power versus recovery time during real-time battles. Set in
7574 a procedurally generated world, the player can explore thousands of rooms in
7575 search of powerful artifacts, tools to help them, and to eventually free the
7576 Orcus Dome from evil.")
7577 (license license:gpl3+)))
7578
7579 (define-public marble-marcher
7580 (let ((commit "e580460a0c3826f9b28ab404607942a8ecb625d7")
7581 (revision "1"))
7582 (package
7583 (name "marble-marcher")
7584 (version (git-version "0" revision commit))
7585 (source (origin
7586 (method git-fetch)
7587 (uri (git-reference
7588 (url "https://github.com/HackerPoet/MarbleMarcher.git")
7589 (commit commit)))
7590 (file-name (git-file-name name version))
7591 (sha256
7592 (base32
7593 "0jjv832hl1v170n6gryp2sr3lgqndi9ab841qvgqk68bks8701mx"))))
7594 (build-system cmake-build-system)
7595 (arguments
7596 `(#:tests? #f ; there are none
7597 #:phases
7598 (modify-phases %standard-phases
7599 (add-after 'unpack 'embed-asset-directory
7600 (lambda* (#:key outputs #:allow-other-keys)
7601 (let ((assets (string-append (assoc-ref outputs "out")
7602 "/share/marble-marcher/assets/")))
7603 ;; Some of the files we're patching are
7604 ;; ISO-8859-1-encoded, so choose it as the default
7605 ;; encoding so the byte encoding is preserved.
7606 (with-fluids ((%default-port-encoding #f))
7607 (substitute* "src/Resource.rc"
7608 (("../assets/icon.ico")
7609 (string-append assets "icon.ico")))
7610 (substitute* "src/Res.h"
7611 (("assets/") assets))))
7612 #t))
7613 (replace 'install
7614 (lambda* (#:key outputs #:allow-other-keys)
7615 (let* ((out (assoc-ref outputs "out"))
7616 (assets (string-append out "/share/marble-marcher/assets"))
7617 (bin (string-append out "/bin/")))
7618 (mkdir-p bin)
7619 (mkdir-p assets)
7620 (copy-recursively "../source/assets" assets)
7621 (install-file "MarbleMarcher" bin))
7622 #t)))))
7623 (inputs
7624 `(("eigen" ,eigen)
7625 ("mesa" ,mesa)
7626 ("sfml" ,sfml)))
7627 (native-inputs
7628 `(("pkg-config" ,pkg-config)))
7629 (home-page "https://codeparade.itch.io/marblemarcher")
7630 (synopsis "Guide a marble across fractal landscapes")
7631 (description "Marble Marcher is a video game that uses a fractal physics
7632 engine and fully procedural rendering to produce beautiful and unique
7633 gameplay. The game is played on the surface of evolving fractals. The goal
7634 of the game is to get your marble to the flag as quickly as possible. But be
7635 careful not to fall off the level or get crushed by the fractal! There are 24
7636 levels to unlock.")
7637 ;; Code is under GPLv2+, assets are under CC-BY-SA 3.0 and OFL 1.1.
7638 (license (list license:gpl2+
7639 license:silofl1.1
7640 license:cc-by-sa3.0)))))
7641
7642 ;; This must be updated together with flightgear.
7643 (define simgear
7644 (package
7645 (name "simgear")
7646 (version "2018.3.2")
7647 (source (origin
7648 (method url-fetch)
7649 (uri (string-append "mirror://sourceforge/flightgear/release-"
7650 (version-major+minor version) "/"
7651 "simgear-" version ".tar.bz2"))
7652 (sha256
7653 (base32
7654 "1941ay8rngz4vwsx37bbpxr48hpcvcbj3xw1hy264lq4qnl99c68"))))
7655 (build-system cmake-build-system)
7656 (arguments
7657 `(#:phases
7658 (modify-phases %standard-phases
7659 (replace 'check
7660 (lambda _
7661 ;; Skip tests that require internet access.
7662 (invoke "ctest" "-E" "(http|dns)"))))))
7663 (inputs
7664 `(("boost" ,boost-for-mysql) ; fails with 1.69
7665 ("curl" ,curl)
7666 ("expat" ,expat)
7667 ("mesa" ,mesa)
7668 ("openal" ,openal)
7669 ("openscenegraph" ,openscenegraph-3.4)
7670 ("zlib" ,zlib)))
7671 (home-page "https://home.flightgear.org/")
7672 (synopsis "Libraries for 3D simulations and games")
7673 (description "SimGear is a set of libraries designed to be used as
7674 building blocks for quickly assembling 3D simulations, games, and
7675 visualization applications. SimGear is developed by the FlightGear project
7676 and also provides the base for the FlightGear Flight Simulator.")
7677 (license license:lgpl2.0+)))
7678
7679 (define-public flightgear
7680 (package
7681 (name "flightgear")
7682 (version (package-version simgear))
7683 (source (origin
7684 (method url-fetch)
7685 (uri (string-append "mirror://sourceforge/flightgear/release-"
7686 (version-major+minor version) "/"
7687 "flightgear-" version ".tar.bz2"))
7688 (sha256
7689 (base32
7690 "0lzy524cjzs8vldcjcc750bgg5c4mq9fkymxxxzqf68ilc4d1jss"))
7691 (modules '((guix build utils)))
7692 (snippet
7693 '(begin
7694 ;; There are some bundled libraries.
7695 (for-each delete-file-recursively
7696 '("3rdparty/sqlite3/"))
7697 #t))))
7698 (build-system cmake-build-system)
7699 (arguments
7700 `(#:configure-flags
7701 (list "-DSYSTEM_SQLITE=ON"
7702 (string-append "-DFG_DATA_DIR="
7703 (assoc-ref %outputs "out")
7704 "/share/flightgear"))
7705 ;; TODO: test cannot be run because the "run_test_suite" executable
7706 ;; does not seem to be built.
7707 #:tests? #f
7708 #:phases
7709 (modify-phases %standard-phases
7710 (add-after 'install 'wrap-executable
7711 (lambda* (#:key inputs outputs #:allow-other-keys)
7712 (let ((out (assoc-ref outputs "out")))
7713 (wrap-program (string-append out "/bin/fgfs")
7714 `("QT_PLUGIN_PATH" ":" prefix
7715 ,(map (lambda (label)
7716 (string-append (assoc-ref inputs label)
7717 "/lib/qt5/plugins"))
7718 '("qtbase" "qtdeclarative" "qtsvg")))
7719 `("QML2_IMPORT_PATH" ":" prefix
7720 ,(map (lambda (label)
7721 (string-append (assoc-ref inputs label)
7722 "/lib/qt5/qml"))
7723 '("qtdeclarative" "qtsvg"))))
7724 #t)))
7725 (add-after 'install 'install-data
7726 (lambda* (#:key inputs outputs #:allow-other-keys)
7727 (let ((share (string-append (assoc-ref outputs "out") "/share/flightgear")))
7728 (mkdir-p share)
7729 (with-directory-excursion share
7730 (invoke "tar" "xf" (assoc-ref inputs "flightgear-data")
7731 "--strip-components=1")))
7732 #t)))))
7733 (inputs
7734 `(("boost" ,boost-for-mysql) ; same as simgear
7735 ("dbus" ,dbus)
7736 ("eudev" ,eudev)
7737 ("freeglut" ,freeglut)
7738 ("freetype" ,freetype)
7739 ("glew" ,glew)
7740 ("libpng" ,libpng)
7741 ("openal" ,openal)
7742 ("openscenegraph" ,openscenegraph-3.4)
7743 ("plib" ,plib)
7744 ("qtbase" ,qtbase)
7745 ("qtdeclarative" ,qtdeclarative)
7746 ("qtsvg" ,qtsvg)
7747 ("simgear" ,simgear)
7748 ("speexdsp" ,speexdsp)
7749 ("sqlite" ,sqlite)
7750 ("zlib" ,zlib)))
7751 (native-inputs
7752 `(("cppunit" ,cppunit)
7753 ("pkg-config" ,pkg-config)
7754 ("qttools" ,qttools)
7755 ("flightgear-data"
7756 ,(origin
7757 (method url-fetch)
7758 (uri (string-append "mirror://sourceforge/flightgear/release-"
7759 (version-major+minor version) "/"
7760 "FlightGear-" version "-data.tar.bz2"))
7761 (sha256
7762 (base32
7763 "0h4npa7gqpf5fw6pv2bpw0wbwr7fa2vhia21cjbigfgd75x82zi7"))))))
7764 (home-page "https://home.flightgear.org/")
7765 (synopsis "Flight simulator")
7766 (description "The goal of the FlightGear project is to create a
7767 sophisticated flight simulator framework for use in research or academic
7768 environments, pilot training, as an industry engineering tool, for DIY-ers to
7769 pursue their favorite interesting flight simulation idea, and last but
7770 certainly not least as a fun, realistic, and challenging desktop flight
7771 simulator.")
7772 (license license:gpl2+)))
7773
7774 (define-public jumpnbump
7775 (package
7776 (name "jumpnbump")
7777 (version "1.61")
7778 (source (origin
7779 (method git-fetch)
7780 (uri (git-reference
7781 (url "https://gitlab.com/LibreGames/jumpnbump.git")
7782 (commit version)))
7783 (file-name (git-file-name name version))
7784 (sha256
7785 (base32
7786 "12lwl5sl5n009nb83r8l4lakb9286csqdf1ynpmwwydy17giqsdp"))))
7787 (build-system gnu-build-system)
7788 (arguments
7789 `(#:make-flags
7790 (list "CC=gcc"
7791 (string-append "PREFIX=" (assoc-ref %outputs "out")))
7792 #:tests? #f ;no test
7793 #:phases
7794 (modify-phases %standard-phases
7795 (delete 'configure) ;no configure script
7796 (add-after 'unpack 'fix-sdl-path
7797 ;; XXX: For some reason, `sdl2-config' reports stand-alone SDL
7798 ;; directory, not SDL-union provided as an input to the package.
7799 ;; We force the latter with "--prefix=" option.
7800 (lambda* (#:key inputs #:allow-other-keys)
7801 (substitute* "Makefile"
7802 (("sdl2-config" command)
7803 (string-append command " --prefix=" (assoc-ref inputs "sdl"))))
7804 #t)))))
7805 (inputs
7806 `(("bzip2" ,bzip2)
7807 ("sdl" ,(sdl-union (list sdl2 sdl2-mixer sdl2-net)))
7808 ("zlib" ,zlib)))
7809 (native-inputs
7810 `(("gettext" ,gettext-minimal))) ;for msgfmt
7811 (home-page "https://gitlab.com/LibreGames/jumpnbump")
7812 (synopsis "Multiplayer platform game with bunnies")
7813 (description "You, as a bunny, have to jump on your opponents to make them
7814 explode. It is a true multiplayer game; you cannot play this alone. You can
7815 play with up to four players simultaneously. It has network support.")
7816 (license license:gpl2+)))
7817
7818 (define-public hedgewars
7819 (package
7820 (name "hedgewars")
7821 (version "1.0.0")
7822 (source (origin
7823 (method url-fetch)
7824 (uri (string-append "https://www.hedgewars.org/download/releases/"
7825 "hedgewars-src-" version ".tar.bz2"))
7826 (sha256
7827 (base32
7828 "0nqm9w02m0xkndlsj6ys3wr0ik8zc14zgilq7k6fwjrf3zk385i1"))))
7829 (build-system cmake-build-system)
7830 (arguments
7831 ;; XXX: Engine is built as Pascal source code, requiring Free Pascal
7832 ;; Compiler, which we haven't packaged yet. With the flag below, we use
7833 ;; a Pascal to C translator and Clang instead.
7834 `(#:configure-flags (list "-DBUILD_ENGINE_C=ON")
7835 #:phases
7836 (modify-phases %standard-phases
7837 (replace 'check
7838 (lambda _ (invoke "ctest"))))))
7839 (inputs
7840 `(("ffmpeg" ,ffmpeg)
7841 ("freeglut" ,freeglut)
7842 ("ghc-entropy" ,ghc-entropy)
7843 ("ghc-hslogger" ,ghc-hslogger)
7844 ("ghc-network" ,ghc-network)
7845 ("ghc-random" ,ghc-random)
7846 ("ghc-regex-tdfa" ,ghc-regex-tdfa)
7847 ("ghc-sandi" ,ghc-sandi)
7848 ("ghc-sha" ,ghc-sha)
7849 ("ghc-utf8-string" ,ghc-utf8-string)
7850 ("ghc-vector" ,ghc-vector)
7851 ("ghc-zlib" ,ghc-zlib)
7852 ("glew" ,glew)
7853 ("libpng" ,libpng)
7854 ("lua" ,lua-5.1)
7855 ("physfs" ,physfs)
7856 ("qtbase" ,qtbase)
7857 ("sdl" ,(sdl-union
7858 (list sdl2 sdl2-mixer sdl2-net sdl2-ttf sdl2-image)))))
7859 (native-inputs
7860 `(("clang" ,clang)
7861 ("ghc" ,ghc)
7862 ("pkg-config" ,pkg-config)
7863 ("qttools" ,qttools)))
7864 (home-page "https://hedgewars.org/")
7865 (synopsis "Turn-based artillery game featuring fighting hedgehogs")
7866 (description
7867 "Hedgewars is a turn based strategy, artillery, action and comedy game,
7868 featuring the antics of pink hedgehogs with attitude as they battle from the
7869 depths of hell to the depths of space.
7870
7871 As commander, it's your job to assemble your crack team of hedgehog soldiers
7872 and bring the war to your enemy.")
7873 ;; Software as a whole is licensed under GPL-2 terms. Artwork and
7874 ;; scripts are distributed under various terms.
7875 (license (list license:gpl2
7876 license:bsd-2 license:bsd-3 license:cc-by3.0 license:cc0
7877 license:expat license:fdl1.3+ license:public-domain
7878 license:zlib))))
7879
7880 (define-public harmonist
7881 (package
7882 (name "harmonist")
7883 (version "0.3.0")
7884 (source (origin
7885 (method git-fetch)
7886 (uri (git-reference
7887 (url "https://git.tuxfamily.org/harmonist/harmonist.git")
7888 (commit (string-append "v" version))))
7889 (file-name (git-file-name name version))
7890 (sha256
7891 (base32
7892 "146wiyanag0zqj6fhyll2sw6sydnnll8mgxhhqf9sjqsl2rx4s5r"))))
7893 (build-system go-build-system)
7894 (arguments
7895 '(#:import-path "git.tuxfamily.org/harmonist/harmonist"))
7896 (inputs
7897 `(("go-github.com-nsf-termbox-go" ,go-github.com-nsf-termbox-go)))
7898 (home-page "https://harmonist.tuxfamily.org/")
7899 (synopsis "Stealth coffee-break roguelike game")
7900 (description "Harmonist: Dayoriah Clan Infiltration is a stealth
7901 coffee-break roguelike game. The game has a heavy focus on tactical
7902 positioning, light and noise mechanisms, making use of various terrain types
7903 and cones of view for monsters. Aiming for a replayable streamlined experience,
7904 the game avoids complex inventory management and character building, relying
7905 on items and player adaptability for character progression.")
7906 (license license:isc)))
7907
7908 (define-public harmonist-tk
7909 (package
7910 (inherit harmonist)
7911 (name "harmonist-tk")
7912 (arguments
7913 (append
7914 (package-arguments harmonist)
7915 `(#:phases
7916 (modify-phases %standard-phases
7917 (replace 'build
7918 (lambda _
7919 (invoke "go" "install" "-v" "-x" "--tags" "tk"
7920 "git.tuxfamily.org/harmonist/harmonist")))
7921 (replace 'check
7922 (lambda _
7923 (invoke "go" "test" "--tags" "tk"
7924 "git.tuxfamily.org/harmonist/harmonist")))))))
7925 (inputs
7926 `(("go-github.com-nsf-gothic" ,go-github.com-nsf-gothic)))))
7927
7928 (define-public drascula
7929 (package
7930 (name "drascula")
7931 (version "1.0")
7932 (source (origin
7933 (method url-fetch)
7934 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7935 "Drascula_%20The%20Vampire%20Strikes%20Back/"
7936 "drascula-" version ".zip"))
7937 (sha256
7938 (base32
7939 "1pj29rpb754sn6a56f8brfv6f2m1p5qgaqik7d68pfi2bb5zccdp"))))
7940 (build-system trivial-build-system)
7941 (arguments
7942 `(#:modules ((guix build utils))
7943 #:builder
7944 (begin
7945 (use-modules (guix build utils)
7946 (ice-9 match))
7947 (let* ((out (assoc-ref %outputs "out"))
7948 (share (string-append out "/share/drascula"))
7949 (scummvm (assoc-ref %build-inputs "scummvm")))
7950 ;; Install data.
7951 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
7952 "/bin/unzip"))
7953 (doc (string-append out "/share/doc/" ,name "-" ,version)))
7954 (for-each
7955 (lambda (input)
7956 (invoke unzip
7957 "-j"
7958 (assoc-ref %build-inputs input)
7959 "-x" "__MACOSX")
7960 ;; Every input provides "readme.txt", and we want to
7961 ;; preserve them all. Therefore we rename them first.
7962 (match input
7963 ("drascula-int"
7964 (rename-file "readme.txt" "readme-international.txt"))
7965 ("drascula-audio"
7966 (rename-file "readme.txt" "readme-audio.txt"))
7967 (_ #f))
7968 ;; Install documentation.
7969 (for-each (lambda (f) (install-file f doc))
7970 (find-files "." "\\.(txt|doc)$"))
7971 ;; Install data.
7972 (for-each (lambda (f) (install-file f share))
7973 (find-files "." "\\.(ogg|00[0-9])$")))
7974 '("drascula-audio" "drascula-int" "source")))
7975 ;; Create standalone executable.
7976 (let* ((bin (string-append out "/bin"))
7977 (executable (string-append bin "/drascula"))
7978 (bash (string-append (assoc-ref %build-inputs "bash")
7979 "/bin/bash")))
7980 (mkdir-p bin)
7981 (with-output-to-file executable
7982 (lambda ()
7983 (format #t "#!~a~%" bash)
7984 (format #t
7985 "exec ~a/bin/scummvm --path=~a drascula~%"
7986 scummvm share)))
7987 (chmod executable #o755))
7988 ;; Create desktop file. There is no dedicated icon for the
7989 ;; game, so we borrow SCUMMVM's.
7990 (let ((apps (string-append out "/share/applications")))
7991 (mkdir-p apps)
7992 (with-output-to-file (string-append apps "/drascula.desktop")
7993 (lambda _
7994 (format #t
7995 "[Desktop Entry]~@
7996 Name=Drascula: The Vampire Strikes Back~@
7997 GenericName=Drascula~@
7998 Exec=~a/bin/drascula~@
7999 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
8000 Categories=AdventureGame;Game;RolePlaying;~@
8001 Keywords=game;adventure;roleplaying;2D,fantasy;~@
8002 Comment=Classic 2D point and click adventure game~@
8003 Comment[de]=klassisches 2D-Abenteuerspiel in Zeigen-und-Klicken-Manier~@
8004 Comment[fr]=Jeux classique d'aventure pointer-et-cliquer en 2D~@
8005 Comment[it]=Gioco classico di avventura punta e clicca 2D~@
8006 Type=Application~%"
8007 out scummvm))))
8008 #t))))
8009 (native-inputs
8010 `(("bash" ,bash)
8011 ("unzip" ,unzip)))
8012 (inputs
8013 `(("scummvm" ,scummvm)
8014 ("drascula-int"
8015 ,(let ((version "1.1"))
8016 (origin
8017 (method url-fetch)
8018 (uri (string-append "mirror://sourceforge/scummvm/extras/"
8019 "Drascula_%20The%20Vampire%20Strikes%20Back/"
8020 "drascula-int-" version ".zip"))
8021 (sha256
8022 (base32
8023 "12236i7blamal92p1i8dgp3nhp2yicics4whsl63v682bj999n14")))))
8024 ("drascula-audio"
8025 ,(let ((version "2.0"))
8026 (origin
8027 (method url-fetch)
8028 (uri (string-append "mirror://sourceforge/scummvm/extras/"
8029 "Drascula_%20The%20Vampire%20Strikes%20Back/"
8030 "drascula-audio-" version ".zip"))
8031 (sha256
8032 (base32
8033 "00g4izmsqzxb8ry1vhfx6jrygl58lvlij09nw01ds4zddsiznsky")))))))
8034 (home-page "https://www.scummvm.org")
8035 (synopsis "Classic 2D point and click adventure game")
8036 (description "Drascula: The Vampire Strikes Back is a classic humorous 2D
8037 point and click adventure game.
8038
8039 In Drascula you play the role of John Hacker, a British estate agent, that
8040 gets to meet a gorgeous blond girl who is kidnapped by the notorious vampire
8041 Count Drascula and embark on a fun yet dangerous quest to rescue her.
8042 Unfortunately, Hacker is not aware of Drascula's real ambitions: DOMINATING
8043 the World and demonstrating that he is even more evil than his brother Vlad.")
8044 ;; Drascula uses a BSD-like license.
8045 (license (license:non-copyleft "file:///readme.txt"))))
8046
8047 (define (make-lure-package name language hash)
8048 (package
8049 (name name)
8050 (version "1.1")
8051 (source
8052 (origin
8053 (method url-fetch)
8054 (uri (string-append
8055 "mirror://sourceforge/scummvm/extras/"
8056 "Lure%20of%20the%20Temptress/"
8057 name "-" version ".zip"))
8058 (sha256
8059 (base32 hash))))
8060 (build-system trivial-build-system)
8061 (arguments
8062 `(#:modules ((guix build utils))
8063 #:builder
8064 (begin
8065 (use-modules (guix build utils))
8066 (let* ((out (assoc-ref %outputs "out"))
8067 (share (string-append out "/share"))
8068 (data (string-append share "/" ,name "/" ,language))
8069 (apps (string-append share "/applications"))
8070 (bin (string-append out "/bin"))
8071 (executable (string-append bin "/" ,name))
8072 (scummvm (assoc-ref %build-inputs "scummvm")))
8073 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
8074 "/bin/unzip")))
8075 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
8076 (let ((doc (string-append share "/doc/" ,name "-" ,version)))
8077 (for-each (lambda (f) (install-file f doc))
8078 (find-files "." "\\.(txt|PDF|pdf)$")))
8079 (for-each (lambda (f) (install-file f data))
8080 (find-files "." "\\.(vga|VGA)$"))
8081 ;; Build the executable.
8082 (mkdir-p bin)
8083 (let ((bash (assoc-ref %build-inputs "bash")))
8084 (with-output-to-file executable
8085 (lambda ()
8086 (format #t "#!~a/bin/bash~%" bash)
8087 (format #t "exec ~a/bin/scummvm -q ~a -p ~a lure~%"
8088 scummvm ,language data))))
8089 (chmod executable #o755)
8090 ;; Create desktop file. There is no dedicated
8091 ;; icon for the game, so we borrow SCUMMVM's.
8092 (mkdir-p apps)
8093 (with-output-to-file (string-append apps "/" ,name ".desktop")
8094 (lambda _
8095 (format #t
8096 "[Desktop Entry]~@
8097 Name=Lure of the Temptress~@
8098 GenericName=Lure~@
8099 Exec=~a~@
8100 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
8101 Categories=AdventureGame;Game;RolePlaying;~@
8102 Keywords=game;adventure;roleplaying;2D,fantasy;~@
8103 Comment=Classic 2D point and click adventure game~@
8104 Comment[de]=klassisches 2D-Abenteuerspiel in Zeigen-und-Klicken-Manier~@
8105 Comment[fr]=Jeu classique d'aventure pointer-et-cliquer en 2D~@
8106 Comment[it]=Gioco classico di avventura punta e clicca 2D~@
8107 Type=Application~%"
8108 executable scummvm)))
8109 #t))))
8110 (native-inputs
8111 `(("unzip" ,unzip)))
8112 (inputs
8113 `(("bash" ,bash)
8114 ("scummvm" ,scummvm)))
8115 (home-page "https://www.scummvm.org")
8116 (synopsis "2D point and click fantasy adventure game")
8117 (description
8118 "Lure of the Temptress is a classic 2D point and click adventure game.
8119
8120 You are Diermot, an unwilling hero who'd prefer a quiet life, and are, to all
8121 intents and purposes, a good man. After decades of unrest the King has united
8122 the warring factions in his kingdom and all his lands are at peace, except
8123 a remote region around a town called Turnvale. A revolt has recently taken
8124 place in Turnvale, a revolt orchestrated by an apprentice sorceress called
8125 Selena, the titular temptress. The king calls together his finest horsemen
8126 and heads off (with you in tow) to Turnvale just to witness how hellish
8127 mercenary monsters called Skorl are invading the town.
8128
8129 The king's men are defeated, the king is killed and you fall of your horse and
8130 bang your head heavily on the ground. You have been *unconscious for a while
8131 when you realize that you are in a dingy cell guarded by a not so friendly
8132 Skorl. Maybe it would be an idea to try and escape...")
8133 (license (license:non-copyleft "file:///README"))))
8134
8135 (define-public lure
8136 (make-lure-package
8137 "lure" "en" "0201i70qcs1m797kvxjx3ygkhg6kcl5yf49sihba2ga8l52q45zk"))
8138
8139 (define-public lure-de
8140 (make-lure-package
8141 "lure-de" "de" "0sqq7h5llml6rv85x0bfv4bgzwhs4c82p4w4zmfcaab6cjlad0sy"))
8142
8143 (define-public lure-es
8144 (make-lure-package
8145 "lure-es" "es" "1dvv5znvlsakw6w5r16calv9jkgw27aymgybsf4q22lcmpxbj1lk"))
8146
8147 (define-public lure-fr
8148 (make-lure-package
8149 "lure-fr" "fr" "1y51jjb7f8023832g44vd1jsb6ni85586pi2n5hjg9qjk6gi90r9"))
8150
8151 (define-public lure-it
8152 (make-lure-package
8153 "lure-it" "it" "1ks6n39r1cllisrrh6pcr39swsdv7ng3gx5c47vaw71zzfr70hjj"))
8154
8155 (define (make-queen-package name file-prefix release language hash)
8156 (package
8157 (name name)
8158 (version release)
8159 (source
8160 (origin
8161 (method url-fetch)
8162 (uri (string-append "mirror://sourceforge/scummvm/extras/"
8163 "Flight%20of%20the%20Amazon%20Queen/"
8164 file-prefix release ".zip"))
8165 (sha256
8166 (base32 hash))))
8167 (build-system trivial-build-system)
8168 (arguments
8169 `(#:modules ((guix build utils))
8170 #:builder
8171 (begin
8172 (use-modules (guix build utils))
8173 (let* ((out (assoc-ref %outputs "out"))
8174 (share (string-append out "/share"))
8175 (data (string-append share "/" ,name))
8176 (apps (string-append share "/applications"))
8177 (bin (string-append out "/bin"))
8178 (executable (string-append bin "/" ,name))
8179 (scummvm (assoc-ref %build-inputs "scummvm")))
8180 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
8181 "/bin/unzip")))
8182 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
8183 (let ((doc (string-append share "/doc/" ,name "-" ,version)))
8184 (install-file "readme.txt" doc))
8185 (install-file "queen.1c" data)
8186 (mkdir-p bin)
8187 (let ((bash (assoc-ref %build-inputs "bash")))
8188 (with-output-to-file executable
8189 (lambda ()
8190 (format #t "#!~a/bin/bash~%" bash)
8191 (format #t "exec ~a/bin/scummvm -q fr -p ~a queen~%"
8192 scummvm data))))
8193 (chmod executable #o755)
8194 ;; Create desktop file. There is no dedicated
8195 ;; icon for the game, so we borrow SCUMMVM's.
8196 (mkdir-p apps)
8197 (with-output-to-file (string-append apps "/" ,name ".desktop")
8198 (lambda _
8199 (format #t
8200 "[Desktop Entry]~@
8201 Name=Flight of the Amazon Queen~@
8202 GenericName=Queen~@
8203 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~@
8204 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~@
8205 Type=Application~@
8206 Exec=~a~@
8207 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
8208 Categories=AdventureGame;Game;RolePlaying;~@
8209 Keywords=adventure;game;roleplaying;fantasy;~%"
8210 executable scummvm))))
8211 #t)))
8212 (native-inputs
8213 `(("unzip" ,unzip)))
8214 (inputs
8215 `(("bash" ,bash)
8216 ("scummvm" ,scummvm)))
8217 (home-page "https://www.scummvm.org/")
8218 (synopsis "Classic 2D point and click adventure game")
8219 (description "Flight of the Amazon Queen is a 2D point-and-click
8220 adventure game set in the 1940s.
8221
8222 You assume the role of Joe King, a pilot for hire who is given the job
8223 of flying Faye Russell (a famous movie star) into the Amazon jungle
8224 for a photo shoot. Of course, things never go according to plans.
8225 After an unfortunate turn of events they find themselves stranded in
8226 the heart of the Amazon jungle, where Joe will embark on a quest to
8227 rescue a kidnapped princess and in the process, discover the true
8228 sinister intentions of a suspiciously located Lederhosen company. In
8229 a rich 2D environment, Joe will cross paths with a variety of unlikely
8230 jungle inhabitants including, but not limited to, a tribe of Amazon
8231 women and 6-foot-tall pygmies.")
8232 (license (license:non-copyleft "file:///readme.txt"))))
8233
8234 (define-public queen
8235 (make-queen-package
8236 "queen" "FOTAQ_Talkie-" "1.1" "en"
8237 "1a6q71q1dl9vvw2qqsxk5h1sv0gaqy6236zr5905w2is01gdsp52"))
8238
8239 (define-public queen-de
8240 (make-queen-package
8241 "queen-de" "FOTAQ_Ger_talkie-" "1.0" "de"
8242 "13vn43x7214vyprlpqabvv71k890nff3d6fjscflr1ll7acjca3f"))
8243
8244 (define-public queen-fr
8245 (make-queen-package
8246 "queen-fr" "FOTAQ_Fr_Talkie_" "1.0" "fr"
8247 "0hq5g4qrkcwm2kn5i4kv4hijs9hi7bw9xl1vrwd1l69qqn30crwy"))
8248
8249 (define-public queen-it
8250 (make-queen-package
8251 "queen-it" "FOTAQ_It_Talkie_" "1.0" "it"
8252 "1h76y70lrpzfjkm53n4nr364nhyka54vbz9r7sadzyzl7c7ilv4d"))
8253
8254 (define-public sky
8255 (package
8256 (name "sky")
8257 (version "1.2") ;1.3 is floppy version
8258 (source
8259 (origin
8260 (method url-fetch)
8261 (uri (string-append "mirror://sourceforge/scummvm/extras/"
8262 "Beneath%20a%20Steel%20Sky/"
8263 "bass-cd-" version ".zip"))
8264 (sha256
8265 (base32 "14s5jz67kavm8l15gfm5xb7pbpn8azrv460mlxzzvdpa02a9n82k"))))
8266 (build-system trivial-build-system)
8267 (arguments
8268 `(#:modules ((guix build utils))
8269 #:builder
8270 (begin
8271 (use-modules (guix build utils))
8272 (let* ((out (assoc-ref %outputs "out"))
8273 (share (string-append out "/share"))
8274 (data (string-append share "/" ,name))
8275 (apps (string-append share "/applications"))
8276 (bin (string-append out "/bin"))
8277 (executable (string-append bin "/" ,name))
8278 (scummvm (assoc-ref %build-inputs "scummvm")))
8279 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
8280 "/bin/unzip")))
8281 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
8282 (let ((doc (string-append share "/doc/bass-" ,version)))
8283 (install-file "readme.txt" doc))
8284 (for-each (lambda (f) (install-file f data))
8285 (find-files "." "^sky\\."))
8286 ;; Build the executable.
8287 (mkdir-p bin)
8288 (let ((bash (assoc-ref %build-inputs "bash")))
8289 (with-output-to-file executable
8290 (lambda ()
8291 (format #t "#!~a/bin/bash~%" bash)
8292 (format #t "exec ~a/bin/scummvm -p ~a sky~%" scummvm data))))
8293 (chmod executable #o755)
8294 ;; Create desktop file. There is no dedicated
8295 ;; icon for the game, so we borrow SCUMMVM's.
8296 (mkdir-p apps)
8297 (with-output-to-file (string-append apps "/" ,name ".desktop")
8298 (lambda _
8299 (format #t
8300 "[Desktop Entry]~@
8301 Name=Beneath a Steel Sky~@
8302 GenericName=Bass~@
8303 Exec=~a~@
8304 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
8305 Categories=AdventureGame;Game;RolePlaying;~@
8306 Keywords=adventure;game;roleplaying;cyberpunk;~@
8307 Comment=A science-fiction adventure game set in a bleak post-apocalyptic vision of the future~@
8308 Comment[de]=Ein Science-Fiction-Abenteuerspiel \
8309 angesiedelt in einer düsteren, postapokalyptischen Vision der Zukunft~@
8310 Type=Application~%"
8311 executable scummvm)))
8312 #t))))
8313 (native-inputs
8314 `(("unzip" ,unzip)))
8315 (inputs
8316 `(("bash" ,bash)
8317 ("scummvm" ,scummvm)))
8318 (home-page "https://www.scummvm.org/")
8319 (synopsis "Classic 2D point an click science-fiction adventure game")
8320 (description
8321 "Beneath a Steel Sky is a science-fiction thriller set in a bleak
8322 post-apocalyptic vision of the future. It revolves around Union City,
8323 where selfishness, rivalry, and corruption by its citizens seems to be
8324 all too common, those who can afford it live underground, away from
8325 the pollution and social problems which are plaguing the city.
8326
8327 You take on the role of Robert Foster, an outcast of sorts from the
8328 city since a boy who was raised in a remote environment outside of
8329 Union City simply termed ``the gap''. Robert's mother took him away
8330 from Union City as a child on their way to ``Hobart'' but the
8331 helicopter crashed on its way. Unfortunately, Robert's mother died,
8332 but he survived and was left to be raised by a local tribe from the
8333 gap.
8334
8335 Years later, Union City security drops by and abducts Robert, killing
8336 his tribe in the process; upon reaching the city the helicopter taking
8337 him there crashes with him escaping, high upon a tower block in the
8338 middle of the city. He sets out to discover the truth about his past,
8339 and to seek vengeance for the killing of his tribe.")
8340 (license (license:non-copyleft "file:///readme.txt"))))
8341
8342 (define-public gnurobots
8343 (package
8344 (name "gnurobots")
8345 (version "1.2.0")
8346 (source
8347 (origin
8348 (method url-fetch)
8349 (uri (string-append "mirror://gnu/gnurobots/gnurobots-"
8350 version ".tar.gz"))
8351 (sha256
8352 (base32
8353 "07gi3lsmbzzsjambgixj6xy79lh22km84z7bnzgwzxdy806lyvwb"))))
8354 (build-system gnu-build-system)
8355 (inputs
8356 `(("glib" ,glib)
8357 ("gtk+" ,gtk+-2)
8358 ("vte" ,vte/gtk+-2)
8359 ("readline" ,readline)
8360 ("guile" ,guile-1.8)))
8361 (native-inputs
8362 `(("pkg-config" ,pkg-config)))
8363 (arguments
8364 `(#:make-flags
8365 (list
8366 ;; Do not abort build on "deprecated-declarations" warnings.
8367 "CFLAGS=-Wno-error=deprecated-declarations"
8368 ;; Find readline headers in sub-directory.
8369 (string-append "READLINE_CFLAGS=-I"
8370 (assoc-ref %build-inputs "readline")
8371 "/include/readline/"))
8372 #:phases
8373 (modify-phases %standard-phases
8374 (add-after 'install 'install-doc
8375 (lambda* (#:key outputs #:allow-other-keys)
8376 (install-file "doc/Robots-HOWTO"
8377 (string-append (assoc-ref outputs "out")
8378 "/share/doc/gnurobots-"
8379 ,version))
8380 #t)))))
8381 (home-page "https://www.gnu.org/software/gnurobots/")
8382 (synopsis "Program a little robot and watch it explore a world")
8383 (description
8384 "GNU Robots is a game in which you program a robot to explore a world
8385 full of enemies that can hurt it, obstacles and food to be eaten. The goal of
8386 the game is to stay alive and collect prizes. The robot program conveniently
8387 may be written in a plain text file in the Scheme programming language.")
8388 (license license:gpl3+)))
8389
8390 (define-public ri-li
8391 (package
8392 (name "ri-li")
8393 (version "2.0.1")
8394 (source (origin
8395 (method url-fetch)
8396 (uri (string-append "mirror://sourceforge/ri-li/"
8397 "Ri-li%20Linux_Unix/Ri-li%20V" version "/"
8398 "Ri-li-" version ".tar.bz2"))
8399 (sha256
8400 (base32
8401 "1gcdsgnnbbn1mb1hkpwniv3fhkaj1nn8gq33v5c16q3wqchcq77p"))
8402 ;; Taken from
8403 ;; <https://github.com/NixOS/nixpkgs/blob/master/pkgs/games/rili/moderinze_cpp.patch>.
8404 ;; It doesn't build otherwise.
8405 (patches (search-patches "ri-li-modernize_cpp.patch"))))
8406 (build-system gnu-build-system)
8407 (arguments
8408 `(#:phases
8409 (modify-phases %standard-phases
8410 ;; Remove "gentoo" subdirectory from Makefile, as it is
8411 ;; missing a make file and generates a build failure.
8412 (add-after 'configure 'fix-build
8413 (lambda _
8414 (substitute* "Makefile"
8415 ((" gentoo") ""))
8416 #t))
8417 (add-after 'install 'install-desktop-file
8418 (lambda* (#:key outputs #:allow-other-keys)
8419 (let* ((out (assoc-ref outputs "out"))
8420 (apps (string-append out "/share/applications"))
8421 (pixmaps (string-append out "/share/pixmaps")))
8422 (for-each (lambda (f) (install-file f pixmaps))
8423 (find-files "data" "\\.(png|ico)$"))
8424 (mkdir-p apps)
8425 (with-output-to-file (string-append apps "/ri-li.desktop")
8426 (lambda _
8427 (format #t
8428 "[Desktop Entry]~@
8429 Name=Ri-li~@
8430 Exec=~a/bin/Ri_li~@
8431 Icon=~a/Ri-li-icon-32x32.png~@
8432 Categories=Game;ArcadeGame;~@
8433 Keywords=toy;train;wooden;snake-like;engine;~@
8434 Comment=a toy simulator game~@
8435 Comment[de]=Ein Spiel mit einem kleinen Zug~@
8436 Comment[fr]=un jeu de petit train~@
8437 Comment[ro_RO]=un joc cu un tren de jucărie~@
8438 Terminal=false~@
8439 Type=Application~%"
8440 out pixmaps))))
8441 #t))
8442 (add-after 'install-desktop-file 'remove-spurious-files
8443 ;; Delete redundant files already installed somewhere else.
8444 (lambda* (#:key outputs #:allow-other-keys)
8445 (let ((out (assoc-ref outputs "out")))
8446 (for-each delete-file
8447 (find-files (string-append out "/share/Ri-li")
8448 "\\.(png|ico)|COPYING"))
8449 #t))))))
8450 (inputs
8451 `(("sdl" ,(sdl-union (list sdl sdl-mixer)))))
8452 (home-page "http://www.ri-li.org")
8453 (synopsis "Toy train simulation game")
8454 (description "Ri-li is a game in which you drive a wooden toy
8455 steam locomotive across many levels and collect all the coaches to
8456 win.")
8457 ;; The project is dual-licensed GPL2+ and GPL3+.
8458 (license (list license:gpl2+ license:gpl3+))))
8459
8460 (define-public freeorion
8461 (package
8462 (name "freeorion")
8463 (version "0.4.9")
8464 (source
8465 (origin
8466 (method url-fetch)
8467 (uri (string-append "https://github.com/freeorion/freeorion/releases/"
8468 "download/v" version "/FreeOrion_v" version
8469 "_2020-02-02.db53471_Source.tar.gz"))
8470 (sha256
8471 (base32 "1qfnqkysagh8dw26plk229qh17mv4prjxs6qhfyczrmrrakb72an"))
8472 (modules '((guix build utils)))
8473 (snippet
8474 '(begin
8475 ;; There are some bundled fonts.
8476 (for-each delete-file-recursively '("default/data/fonts"))
8477 #t))))
8478 (build-system cmake-build-system)
8479 (arguments
8480 '(#:tests? #f ;no test
8481 #:phases
8482 (modify-phases %standard-phases
8483 (add-after 'unpack 'unbundle-fonts
8484 (lambda* (#:key inputs #:allow-other-keys)
8485 (let ((roboto-dir (string-append (assoc-ref inputs "font-roboto")
8486 "/share/fonts/truetype/")))
8487 (substitute* "UI/ClientUI.cpp"
8488 (("\\(GetRootDataDir.*?Roboto-(Bold|Regular)\\.ttf\"\\)\\.string\\(\\)\\);"
8489 all type)
8490 (string-append "\"" roboto-dir "Roboto-" type ".ttf\");")))
8491 #t))))))
8492 (inputs
8493 `(("boost" ,boost)
8494 ("boost_signals" ,boost-signals2)
8495 ("font-dejavu" ,font-dejavu)
8496 ("font-roboto" ,font-google-roboto)
8497 ("freetype2" ,freetype)
8498 ("glew" ,glew)
8499 ("glu" ,glu)
8500 ("libogg" ,libogg)
8501 ("libpng" ,libpng)
8502 ("libvorbis" ,libvorbis)
8503 ("openal" ,openal)
8504 ("python2" ,python-2.7)
8505 ("sdl2" ,sdl2)
8506 ("zlib" ,zlib)))
8507 (home-page "https://www.freeorion.org/index.php/Main_Page")
8508 (synopsis "Turn-based space empire and galactic conquest computer game")
8509 (description
8510 "FreeOrion is a turn-based space empire and galactic conquest (4X)
8511 computer game being designed and built by the FreeOrion project. Control an
8512 empire with the goal of exploring the galaxy, expanding your territory,
8513 exploiting the resources, and exterminating rival alien empires. FreeOrion is
8514 inspired by the tradition of the Master of Orion games, but is not a clone or
8515 remake of that series or any other game.")
8516 ;; Source code is released under gpl2. Artwork, music and sounds, and
8517 ;; in-game text are released under cc-by-sa3.0. Game content scripts are
8518 ;; released under both gpl2 and cc-by-sa3.0. Bundled Gigi library is
8519 ;; released under lgpl2.1+.
8520 (license (list license:gpl2 license:cc-by-sa3.0 license:lgpl2.1+))))
8521
8522 (define-public leela-zero
8523 (package
8524 (name "leela-zero")
8525 (version "0.17")
8526 (source
8527 (origin
8528 (method git-fetch)
8529 (uri (git-reference
8530 (url "https://github.com/leela-zero/leela-zero.git")
8531 (commit (string-append "v" version))))
8532 (file-name (git-file-name name version))
8533 (sha256
8534 (base32
8535 "17px5iny8mql5c01bymcli7zfssswkzvb2i8gnsmjcck6i2n8srl"))
8536 (patches (search-patches "leela-zero-gtest.patch"))))
8537 (build-system cmake-build-system)
8538 (native-inputs
8539 `(("googletest" ,googletest)))
8540 (inputs
8541 `(("boost" ,boost)
8542 ("ocl-icd" ,ocl-icd)
8543 ("openblas" ,openblas)
8544 ("opencl-headers" ,opencl-headers)
8545 ("qtbase" ,qtbase)
8546 ("zlib" ,zlib)))
8547 (arguments
8548 '(#:configure-flags '("-DUSE_BLAS=YES")
8549 #:phases (modify-phases %standard-phases
8550 (add-before 'configure 'fix-tests
8551 (lambda* (#:key outputs #:allow-other-keys)
8552 (let ((home (getcwd)))
8553 (setenv "HOME" home)
8554 (substitute* "src/tests/gtests.cpp"
8555 (("\\.\\./src/tests/0k\\.txt")
8556 (string-append home "/src/tests/0k.txt"))
8557 (("cfg_gtp_mode = true;")
8558 "cfg_gtp_mode = true; cfg_cpu_only = true;")))
8559 #t))
8560 (replace 'check
8561 (lambda _
8562 (invoke "./tests"))))))
8563 (home-page "https://github.com/leela-zero/leela-zero")
8564 (synopsis "Program playing the game of Go")
8565 (description
8566 "Leela-zero is a Go engine with no human-provided knowledge, modeled after
8567 the AlphaGo Zero paper. The current best network weights file for the engine
8568 can be downloaded from @url{https://zero.sjeng.org/best-network}.")
8569 (license license:gpl3+)))
8570
8571 (define-public q5go
8572 (package
8573 (name "q5go")
8574 (version "1.0")
8575 (source (origin
8576 (method git-fetch)
8577 (uri (git-reference
8578 (url "https://github.com/bernds/q5Go.git")
8579 (commit (string-append "q5go-" version))))
8580 (file-name (git-file-name name version))
8581 (sha256
8582 (base32
8583 "1gdlfqcqkqv7vph3qwq78d0qz6dhmdsranxq9bmixiisbzkqby31"))))
8584 (build-system gnu-build-system)
8585 (native-inputs
8586 `(("pkg-config" ,pkg-config)))
8587 (inputs
8588 `(("qtbase" ,qtbase)
8589 ("qtmultimedia" ,qtmultimedia)
8590 ("qtsvg" ,qtsvg)))
8591 (arguments
8592 '(#:phases
8593 (modify-phases %standard-phases
8594 (add-after 'unpack 'fix-configure-script
8595 (lambda _
8596 ;; Bypass the unavailable qtchooser program.
8597 (substitute* "configure"
8598 (("test -z \"QTCHOOSER\"")
8599 "false")
8600 (("qtchooser -run-tool=(.*) -qt=qt5" _ command)
8601 command))
8602 #t))
8603 (add-after 'unpack 'fix-paths
8604 (lambda _
8605 (substitute* '("src/pics/Makefile.in"
8606 "src/translations/Makefile.in")
8607 (("\\$\\(datadir\\)/qGo/")
8608 "$(datadir)/q5go/"))
8609 #t))
8610 (add-after 'install 'install-desktop-file
8611 (lambda* (#:key outputs #:allow-other-keys)
8612 (let* ((out (assoc-ref outputs "out"))
8613 (apps (string-append out "/share/applications"))
8614 (pics (string-append out "/share/q5go/pics")))
8615 (delete-file-recursively (string-append out "/share/applnk"))
8616 (delete-file-recursively (string-append out "/share/mimelnk"))
8617 (install-file "../source/src/pics/Bowl.ico" pics)
8618 (mkdir-p apps)
8619 (with-output-to-file (string-append apps "/q5go.desktop")
8620 (lambda _
8621 (format #t
8622 "[Desktop Entry]~@
8623 Name=q5go~@
8624 Exec=~a/bin/q5go~@
8625 Icon=~a/Bowl.ico~@
8626 Categories=Game;~@
8627 Comment=Game of Go~@
8628 Comment[de]=Spiel des Go~@
8629 Comment[eo]=Goo~@
8630 Comment[es]=Juego de Go~@
8631 Comment[fr]=Jeu de Go~@
8632 Comment[ja]=囲碁~@
8633 Comment[ko]=바둑~@
8634 Comment[zh]=围棋~@
8635 Terminal=false~@
8636 Type=Application~%"
8637 out pics))))
8638 #t)))))
8639 (synopsis "Qt GUI to play the game of Go")
8640 (description
8641 "This a tool for Go players which performs the following functions:
8642 @itemize
8643 @item SGF editor,
8644 @item Analysis frontend for Leela Zero (or compatible engines),
8645 @item GTP interface (to play against an engine),
8646 @item IGS client (to play on the internet),
8647 @item Export games to a variety of formats.
8648 @end itemize")
8649 (home-page "https://github.com/bernds/q5Go")
8650 (license license:gpl2+)))
8651
8652 (define-public ktuberling
8653 (package
8654 (name "ktuberling")
8655 (version "19.08.3")
8656 (source
8657 (origin
8658 (method url-fetch)
8659 (uri (string-append "mirror://kde/stable/applications/" version
8660 "/src/ktuberling-" version ".tar.xz"))
8661 (sha256
8662 (base32 "1qdf4q6wjh1lnlqw5c8z4rpj9w5vbyjfri1dah6yjm3mwppbc12j"))))
8663 (build-system qt-build-system)
8664 (native-inputs
8665 `(("extra-cmake-modules" ,extra-cmake-modules)
8666 ("perl" ,perl)))
8667 (inputs
8668 `(("kcompletion" ,kcompletion)
8669 ("kconfigwidgets" ,kconfigwidgets)
8670 ("kcoreaddons" ,kcoreaddons)
8671 ("kcrash" ,kcrash)
8672 ("kdbusaddons" ,kdbusaddons)
8673 ("kdelibs4support" ,kdelibs4support)
8674 ("ki18n" ,ki18n)
8675 ("kwidgetsaddons" ,kwidgetsaddons)
8676 ("kxmlgui" ,kxmlgui)
8677 ("libkdegames" ,libkdegames)
8678 ("qtbase" ,qtbase)
8679 ("qtmultimedia" ,qtmultimedia)
8680 ("qtdeclarative" ,qtdeclarative)
8681 ("qtsvg" ,qtsvg)))
8682 (home-page "https://games.kde.org/")
8683 (synopsis "Stamp drawing toy")
8684 (description "KTuberling is a drawing toy intended for small children and
8685 adults who remain young at heart. The game has no winner; the only purpose is
8686 to make the funniest faces you can. Several activites are possible, e.g.:
8687
8688 @itemize
8689 @item Give the potato a funny face, clothes, and other goodies
8690 @item Build a small town, complete with school, zoo, and fire department
8691 @item Create a fantastic moonscape with spaceships and aliens
8692 @item Top a pizza
8693 @end itemize
8694
8695 KTuberling can speak the name of each the object in several languages,
8696 to assist in learning basic vocabulary.
8697
8698 This package is part of the KDE games module.")
8699 (license (list license:gpl2+ license:fdl1.2+))))
8700
8701 (define-public picmi
8702 (package
8703 (name "picmi")
8704 (version "19.08.3")
8705 (source
8706 (origin
8707 (method url-fetch)
8708 (uri (string-append "mirror://kde/stable/applications/" version
8709 "/src/picmi-" version ".tar.xz"))
8710 (sha256
8711 (base32 "0z9mpmv49w914gqdx274brdzl6d1bz9j9nkvbwgmr3iq1ba49m3f"))))
8712 (build-system qt-build-system)
8713 (native-inputs
8714 `(("extra-cmake-modules" ,extra-cmake-modules)
8715 ("kdoctools" ,kdoctools)))
8716 (inputs
8717 `(("kcoreaddons" ,kcoreaddons)
8718 ("kcrash" ,kcrash)
8719 ("kdbusaddons" ,kdbusaddons)
8720 ("kdeclarative" ,kdeclarative)
8721 ("ki18n" ,ki18n)
8722 ("kio" ,kio)
8723 ("knewstuff" ,knewstuff)
8724 ("kxmlgui" ,kxmlgui)
8725 ("libkdegames" ,libkdegames)
8726 ("qtbase" ,qtbase)
8727 ("qtdeclarative" ,qtdeclarative)
8728 ("qtsvg" ,qtsvg)))
8729 (home-page "https://games.kde.org/")
8730 (synopsis "Number logic game")
8731 (description "Picmi is a number logic game in which cells in a grid have
8732 to be colored or left blank according to numbers given at the side of the
8733 grid. The aim is to reveal a hidden picture.
8734
8735 This package is part of the KDE games module.")
8736 (license (list license:gpl2+ license:fdl1.2+))))
8737
8738 (define-public kolf
8739 (package
8740 (name "kolf")
8741 (version "19.08.3")
8742 (source
8743 (origin
8744 (method url-fetch)
8745 (uri (string-append "mirror://kde/stable/applications/" version
8746 "/src/kolf-" version ".tar.xz"))
8747 (sha256
8748 (base32 "06sfd0llr5cc3zf1vrpcxgw9bm009ky7y8822kynic9ipcd4z1hw"))))
8749 (build-system qt-build-system)
8750 (native-inputs
8751 `(("extra-cmake-modules" ,extra-cmake-modules)
8752 ("kdoctools" ,kdoctools)))
8753 (inputs
8754 `(("kcompletion" ,kcompletion)
8755 ("kconfigwidgets" ,kconfigwidgets)
8756 ("kcoreaddons" ,kcoreaddons)
8757 ("kcrash" ,kcrash)
8758 ("kdbusaddons" ,kdbusaddons)
8759 ("ki18n" ,ki18n)
8760 ("kio" ,kio)
8761 ("kwidgetsaddons" ,kwidgetsaddons)
8762 ("kxmlgui" ,kxmlgui)
8763 ("ktextwidgets" ,ktextwidgets)
8764 ("libkdegames" ,libkdegames)
8765 ("qtbase" ,qtbase)
8766 ("qtdeclarative" ,qtdeclarative)))
8767 (home-page "https://games.kde.org/")
8768 (synopsis "Miniature golf game")
8769 (description "Kolf is a miniature golf game for one to ten players. The
8770 game is played from an overhead view, with a short bar representing the golf
8771 club. Kolf features many different types of objects, such as water hazards,
8772 slopes, sand traps, and black holes (warps), among others.
8773
8774 Features are:
8775 @itemize
8776 @item Single and Multi-player (up to ten players) modes
8777 @item High scores table
8778 @item Dynamic courses
8779 @item Third-party courses
8780 @item Course editor
8781 @end itemize
8782
8783 This package is part of the KDE games module.")
8784 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
8785
8786 (define-public libkmahjongg
8787 (package
8788 (name "libkmahjongg")
8789 (version "19.08.3")
8790 (source
8791 (origin
8792 (method url-fetch)
8793 (uri (string-append "mirror://kde/stable/applications/"
8794 version "/src/libkmahjongg-" version ".tar.xz"))
8795 (sha256
8796 (base32 "0rdimk11hrc8qrmiv26z0ddjzi1k6806c0rfskx4cwmildmh6zgx"))))
8797 (build-system qt-build-system)
8798 (native-inputs
8799 `(("extra-cmake-modules" ,extra-cmake-modules)))
8800 (inputs
8801 `(("kauth" ,kauth)
8802 ("kcompletion" ,kcompletion)
8803 ;("kconfig" ,kconfig)
8804 ("kcodecs" ,kcodecs)
8805 ("kconfigwidgets" ,kconfigwidgets)
8806 ("kcoreaddons" ,kcoreaddons)
8807 ("ki18n" ,ki18n)
8808 ("kwidgetsaddons" ,kwidgetsaddons)
8809 ("qtbase" ,qtbase)
8810 ("qtsvg" ,qtsvg)))
8811 (home-page "https://games.kde.org/")
8812 (synopsis "Shared library for kmahjongg and kshisen")
8813 (description "Shared library and common files for kmahjongg, kshisen and
8814 other Mah Jongg like games.")
8815 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
8816
8817 (define-public kmahjongg
8818 (package
8819 (name "kmahjongg")
8820 (version "19.08.3")
8821 (source
8822 (origin
8823 (method url-fetch)
8824 (uri (string-append "mirror://kde/stable/applications/"
8825 version "/src/kmahjongg-" version ".tar.xz"))
8826 (sha256
8827 (base32 "08na845h0nhmfrszdmvfq5y1dy7kgbrlzjp0f5snvbbf7w44ci6p"))))
8828 (build-system qt-build-system)
8829 (native-inputs
8830 `(("extra-cmake-modules" ,extra-cmake-modules)
8831 ("kdoctools" ,kdoctools)))
8832 (inputs
8833 `(("kcompletion" ,kcompletion)
8834 ("kcrash" ,kcrash)
8835 ("kdbusaddons" ,kdbusaddons)
8836 ("kdeclarative" ,kdeclarative)
8837 ("ki18n" ,ki18n)
8838 ("knewstuff" ,knewstuff)
8839 ("kxmlgui" ,kxmlgui)
8840 ("libkdegames" ,libkdegames)
8841 ("libkmahjongg" ,libkmahjongg)
8842 ("qtbase" ,qtbase)
8843 ("qtdeclarative" ,qtdeclarative)
8844 ("qtsvg" ,qtsvg)))
8845 (home-page "https://games.kde.org/")
8846 (synopsis "Tile laying patience")
8847 (description "In KMahjongg the tiles are scrambled and staked on top of
8848 each other to resemble a certain shape. The player is then expected to remove
8849 all the tiles off the game board by locating each tile's matching pair.
8850
8851 A variety of tile layouts are included, as well as an editor to create new
8852 layouts.
8853
8854 This package is part of the KDE games module.")
8855 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
8856
8857 (define-public kshisen
8858 (package
8859 (name "kshisen")
8860 (version "19.08.3")
8861 (source
8862 (origin
8863 (method url-fetch)
8864 (uri (string-append "mirror://kde/stable/applications/"
8865 version "/src/kshisen-" version ".tar.xz"))
8866 (sha256
8867 (base32 "1bq5m48af4h5apfp3bfsp76nlpv6h5sc0gd544zv7cgpfznz1sds"))))
8868 (build-system qt-build-system)
8869 (native-inputs
8870 `(("extra-cmake-modules" ,extra-cmake-modules)
8871 ;("perl" ,perl)
8872 ;("pkg-config" ,pkg-config)
8873 ("kdoctools" ,kdoctools)))
8874 (inputs
8875 `(("kauth" ,kauth)
8876 ("kcompletion" ,kcompletion)
8877 ("kconfigwidgets" ,kconfigwidgets)
8878 ("kcoreaddons" ,kcoreaddons)
8879 ("kcrash" ,kcrash)
8880 ("kdbusaddons" ,kdbusaddons)
8881 ("ki18n" ,ki18n)
8882 ("kxmlgui" ,kxmlgui)
8883 ("libkdegames" ,libkdegames)
8884 ("libkmahjongg" ,libkmahjongg)
8885 ("qtbase" ,qtbase)
8886 ("qtdeclarative" ,qtdeclarative)))
8887 (home-page "https://games.kde.org/")
8888 (synopsis "Shisen-Sho solitaire game")
8889 (description "KShisen is a solitaire-like game played using the standard
8890 set of Mahjong tiles. Unlike Mahjong however, KShisen has only one layer of
8891 scrambled tiles
8892
8893 This package is part of the KDE games module.")
8894 (license license:gpl2+)))
8895
8896 (define-public kajongg
8897 (package
8898 (name "kajongg")
8899 (version "19.08.3")
8900 (source
8901 (origin
8902 (method url-fetch)
8903 (uri (string-append "mirror://kde/stable/applications/"
8904 version "/src/kajongg-" version ".tar.xz"))
8905 (sha256
8906 (base32 "0ql6p5zifdpdf65r7ki9ml123azpwwk9x3x8r9ij6xhjnf7p7x6w"))))
8907 (build-system qt-build-system)
8908 (native-inputs
8909 `(("extra-cmake-modules" ,extra-cmake-modules)
8910 ;("perl" ,perl)
8911 ("kdoctools" ,kdoctools)))
8912 (inputs
8913 `(("kconfig" ,kconfig)
8914 ("kconfigwidgets" ,kconfigwidgets)
8915 ("kcoreaddons" ,kcoreaddons)
8916 ("ki18n" ,ki18n)
8917 ("libkmahjongg" ,libkmahjongg)
8918 ("python" ,python)
8919 ("qtbase" ,qtbase)
8920 ("qtsvg" ,qtsvg)))
8921 (propagated-inputs
8922 `(("python-twisted" ,python-twisted)
8923 ("python-pyqt" ,python-pyqt)))
8924 ;; FIXME: Need to wrap PYTHONPATH
8925 (home-page "https://games.kde.org/")
8926 (synopsis "Classical Mah Jongg game for 4 players")
8927 (description "Kajongg is the ancient Chinese board game for 4 players.
8928
8929 If you are looking for the Mah Jongg solitaire please use the application
8930 kmahjongg.
8931
8932 Kajongg can be used in two different ways: Scoring a manual game where you
8933 play as always and use Kajongg for the computation of scores and for
8934 bookkeeping. Or you can use Kajongg to play against any combination of other
8935 human players or computer players.
8936
8937 This package is part of the KDE games module.")
8938 (license (list license:gpl2+ license:fdl1.2+))))
8939
8940 (define-public kbreakout
8941 (package
8942 (name "kbreakout")
8943 (version "19.08.3")
8944 (source
8945 (origin
8946 (method url-fetch)
8947 (uri (string-append "mirror://kde/stable/applications/" version
8948 "/src/kbreakout-" version ".tar.xz"))
8949 (sha256
8950 (base32 "0gwzx1z9mxrjlcjzglg8cxkyd6900whcar3b5j9laxxarc6xhj8w"))))
8951 (build-system qt-build-system)
8952 (native-inputs
8953 `(("extra-cmake-modules" ,extra-cmake-modules)
8954 ("kdoctools" ,kdoctools)))
8955 (inputs
8956 `(("kcompletion" ,kcompletion)
8957 ("kconfig" ,kconfig)
8958 ("kconfigwidgets" ,kconfigwidgets)
8959 ("kcoreaddons" ,kcoreaddons)
8960 ("kcrash" ,kcrash)
8961 ("kdbusaddons" ,kdbusaddons)
8962 ("ki18n" ,ki18n)
8963 ("kwidgetsaddons" ,kwidgetsaddons)
8964 ("kxmlgui" ,kxmlgui)
8965 ("libkdegames" ,libkdegames)
8966 ("qtbase" ,qtbase)
8967 ("qtdeclarative" ,qtdeclarative)))
8968 (home-page "https://games.kde.org/")
8969 (synopsis "Breakout like game")
8970 (description "KBreakout is similar to the classics breakout and xboing,
8971 featuring a number of added graphical enhancements and effects. You control a
8972 paddle at the bottom of the playing-field, and must destroy bricks at the top
8973 by bouncing balls against them.
8974
8975 This package is part of the KDE games module.")
8976 (license (list license:gpl2+ license:fdl1.2+))))
8977
8978 (define-public kmines
8979 (package
8980 (name "kmines")
8981 (version "19.08.3")
8982 (source
8983 (origin
8984 (method url-fetch)
8985 (uri (string-append "mirror://kde/stable/applications/" version
8986 "/src/kmines-" version ".tar.xz"))
8987 (sha256
8988 (base32 "0ac3za36lh8hpx6mqfic9amwmzhzhzplm9hg3pw12gxl5a9mvfsf"))))
8989 (build-system qt-build-system)
8990 (native-inputs
8991 `(("extra-cmake-modules" ,extra-cmake-modules)
8992 ("kdoctools" ,kdoctools)))
8993 (inputs
8994 `(("kcompletion" ,kcompletion)
8995 ("kconfig" ,kconfig)
8996 ("kconfigwidgets" ,kconfigwidgets)
8997 ("kcoreaddons" ,kcoreaddons)
8998 ("kcrash" ,kcrash)
8999 ("kdbusaddons" ,kdbusaddons)
9000 ("ki18n" ,ki18n)
9001 ("ktextwidgets" ,ktextwidgets)
9002 ("kwidgetsaddons" ,kwidgetsaddons)
9003 ("kxmlgui" ,kxmlgui)
9004 ("libkdegames" ,libkdegames)
9005 ("qtbase" ,qtbase)
9006 ("qtdeclarative" ,qtdeclarative)))
9007 (home-page "https://games.kde.org/")
9008 (synopsis "Classical mine sweeper game")
9009 (description "KMines is a classic Minesweeper game. The idea is to
9010 uncover all the squares without blowing up any mines. When a mine is blown
9011 up, the game is over.
9012
9013 This package is part of the KDE games module.")
9014 (license (list license:gpl2+ license:fdl1.2+))))
9015
9016 (define-public konquest
9017 (package
9018 (name "konquest")
9019 (version "19.08.3")
9020 (source
9021 (origin
9022 (method url-fetch)
9023 (uri (string-append "mirror://kde/stable/applications/"
9024 version "/src/konquest-" version ".tar.xz"))
9025 (sha256
9026 (base32 "02gjxskhi10a1sqh3skcild8zria7wncz1a4sbz7ax1p851q76k1"))))
9027 (build-system qt-build-system)
9028 (native-inputs
9029 `(("extra-cmake-modules" ,extra-cmake-modules)
9030 ("kdoctools" ,kdoctools)))
9031 (inputs
9032 `(("kcompletion" ,kcompletion)
9033 ("kconfig" ,kconfig)
9034 ("kcoreaddons" ,kcoreaddons)
9035 ("kcrash" ,kcrash)
9036 ("kdbusaddons" ,kdbusaddons)
9037 ("kguiaddons" ,kguiaddons)
9038 ("ki18n" ,ki18n)
9039 ("kwidgetsaddons" ,kwidgetsaddons)
9040 ("kxmlgui" ,kxmlgui)
9041 ("libkdegames" ,libkdegames)
9042 ("qtbase" ,qtbase)
9043 ("qtdeclarative" ,qtdeclarative)
9044 ("qtsvg" ,qtsvg)))
9045 (home-page "https://games.kde.org/")
9046 (synopsis "Simple turn-based strategy game")
9047 (description "Konquest is the KDE version of Gnu-Lactic Konquest. Players
9048 conquer other planets by sending ships to them. The goal is to build an
9049 interstellar empire and ultimately conquer all other player's planets. The
9050 game can be played with up to nine empires, commanded either by the computer
9051 or by puny earthlings.
9052
9053 This package is part of the KDE games module.")
9054 (license (list license:gpl2+ license:fdl1.2+))))
9055
9056 (define-public kbounce
9057 (package
9058 (name "kbounce")
9059 (version "19.08.3")
9060 (source
9061 (origin
9062 (method url-fetch)
9063 (uri (string-append "mirror://kde/stable/applications/"
9064 version "/src/kbounce-" version ".tar.xz"))
9065 (sha256
9066 (base32 "02rfv0qzz5cmyfx8f56a45hbm9gsp6m3dcy8ajwx88rw5wpbrr11"))))
9067 (build-system qt-build-system)
9068 (native-inputs
9069 `(("extra-cmake-modules" ,extra-cmake-modules)
9070 ("kdoctools" ,kdoctools)))
9071 (inputs
9072 `(("kcompletion" ,kcompletion)
9073 ("kconfigwidgets" ,kconfigwidgets)
9074 ("kcoreaddons" ,kcoreaddons)
9075 ("kcrash" ,kcrash)
9076 ("kdbusaddons" ,kdbusaddons)
9077 ("ki18n" ,ki18n)
9078 ("kio" ,kio)
9079 ("kwidgetsaddons" ,kwidgetsaddons)
9080 ("kxmlgui" ,kxmlgui)
9081 ("libkdegames" ,libkdegames)
9082 ("qtbase" ,qtbase)
9083 ("qtdeclarative" ,qtdeclarative)
9084 ("qtsvg" ,qtsvg)))
9085 (home-page "https://games.kde.org/")
9086 (synopsis "Jezzball arcade game")
9087 (description "KBounce is a single player arcade game with the elements of
9088 puzzle. It is played on a field, surrounded by wall, with two or more balls
9089 bouncing around within the walls. The object of the game is to build new
9090 walls to decrease the size of the active field.
9091
9092 This package is part of the KDE games module.")
9093 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
9094
9095 (define-public kblocks
9096 (package
9097 (name "kblocks")
9098 (version "19.08.3")
9099 (source
9100 (origin
9101 (method url-fetch)
9102 (uri (string-append "mirror://kde/stable/applications/"
9103 version "/src/kblocks-" version ".tar.xz"))
9104 (sha256
9105 (base32 "0qrm0dihzhkxsq9l49ndzms802x6jn92vvabb2zf2q9z593m69cx"))))
9106 (build-system qt-build-system)
9107 (native-inputs
9108 `(("extra-cmake-modules" ,extra-cmake-modules)
9109 ("kdoctools" ,kdoctools)))
9110 (inputs
9111 `(("kcompletion" ,kcompletion)
9112 ("kconfig" ,kconfig)
9113 ("kconfigwidgets" ,kconfigwidgets)
9114 ("kcoreaddons" ,kcoreaddons)
9115 ("kcrash" ,kcrash)
9116 ("kdbusaddons" ,kdbusaddons)
9117 ("ki18n" ,ki18n)
9118 ("kwidgetsaddons" ,kwidgetsaddons)
9119 ("kxmlgui" ,kxmlgui)
9120 ("libkdegames" ,libkdegames)
9121 ("qtbase" ,qtbase)
9122 ("qtdeclarative" ,qtdeclarative)
9123 ("qtsvg" ,qtsvg)))
9124 (home-page "https://games.kde.org/")
9125 (synopsis "Single player falling blocks puzzle game")
9126 (description "KBlocks is the classic Tetris-like falling blocks game.
9127
9128 The idea is to stack the falling blocks to create horizontal lines without any
9129 gaps. When a line is completed it is removed, and more space is available in
9130 the play area. When there is not enough space for blocks to fall, the game is
9131 over.
9132
9133 This package is part of the KDE games module.")
9134 (license (list license:gpl2+ license:fdl1.2+))))
9135
9136 (define-public ksudoku
9137 (package
9138 (name "ksudoku")
9139 (version "19.08.3")
9140 (source
9141 (origin
9142 (method url-fetch)
9143 (uri (string-append "mirror://kde/stable/applications/"
9144 version "/src/ksudoku-" version ".tar.xz"))
9145 (sha256
9146 (base32 "0rcscz91hilm7l3am5w02n0n8l7xhi4l0n4sskznh68kblw0ggw2"))))
9147 (build-system qt-build-system)
9148 (native-inputs
9149 `(("extra-cmake-modules" ,extra-cmake-modules)
9150 ("kdoctools" ,kdoctools)))
9151 (inputs
9152 `(("karchive", karchive)
9153 ("kconfig" ,kconfig)
9154 ("kconfigwidgets" ,kconfigwidgets)
9155 ("kcoreaddons" ,kcoreaddons)
9156 ("kcrash" ,kcrash)
9157 ("kguiaddons" ,kguiaddons)
9158 ("ki18n" ,ki18n)
9159 ("kiconthemes" ,kiconthemes)
9160 ("kio" ,kio)
9161 ("kwidgetsaddons" ,kwidgetsaddons)
9162 ("kxmlgui" ,kxmlgui)
9163 ("libkdegames" ,libkdegames)
9164 ("glu" ,glu)
9165 ("qtbase" ,qtbase)
9166 ("qtdeclarative" ,qtdeclarative)
9167 ("qtsvg" ,qtsvg)))
9168 (home-page "https://games.kde.org/")
9169 (synopsis "Sudoku puzzle game and solver")
9170 (description "KSudoku is a Sudoku game and solver, supporting a range of
9171 2D and 3D Sudoku variants. In addition to playing Sudoku, it can print Sudoku
9172 puzzle sheets and find the solution to any Sudoku puzzle.
9173
9174 The word Sudoku means \"single number in an allotted place\" in Japanese.
9175 These are the basic rules: Every Sudoku is a square divided into 3x3
9176 subsquares with 3x3 cells each.
9177
9178 Some cells are filled with a number at the beginning. The remaining ones are
9179 to be filled by the player using numbers from 1 to 9, without repeating a
9180 number twice on each column, row or subsquare (each of them must contain only
9181 one 1, one 2, one 3, and so on). The game requires logic and patience.
9182 Solving takes usually 10 to 30 minutes, depending on puzzle level, your skill
9183 and experience.
9184
9185 The numerals in Sudoku puzzles are used for convenience (for example in 16x16
9186 board we use letters): arithmetic relationships between numbers are
9187 irrelevant.
9188
9189 This program supports also 16x16 games with numbers from 1 to 16 and 256
9190 cells with 16 cols, rows and subsquares!
9191
9192 More information at http://en.wikipedia.org/wiki/Sudoku
9193
9194 This package is part of the KDE games module.")
9195 (license (list license:gpl2+ license:fdl1.2+))))
9196
9197 (define-public klines
9198 (package
9199 (name "klines")
9200 (version "19.08.3")
9201 (source
9202 (origin
9203 (method url-fetch)
9204 (uri (string-append "mirror://kde/stable/applications/" version
9205 "/src/klines-" version ".tar.xz"))
9206 (sha256
9207 (base32 "1g1f46jp0rb8gpqkgcf915ydpsscn1sxk3gjvm8bcqgx9ddq59xa"))))
9208 (build-system qt-build-system)
9209 (native-inputs
9210 `(("extra-cmake-modules" ,extra-cmake-modules)
9211 ("kdoctools" ,kdoctools)))
9212 (inputs
9213 `(("kcompletion" ,kcompletion)
9214 ("kconfigwidgets" ,kconfigwidgets)
9215 ("kcoreaddons" ,kcoreaddons)
9216 ("kcrash" ,kcrash)
9217 ("kdbusaddons" ,kdbusaddons)
9218 ("ki18n" ,ki18n)
9219 ("kwidgetsaddons" ,kwidgetsaddons)
9220 ("kxmlgui" ,kxmlgui)
9221 ("libkdegames" ,libkdegames)
9222 ("qtbase" ,qtbase)
9223 ("qtdeclarative" ,qtdeclarative)))
9224 (home-page "https://games.kde.org/")
9225 (synopsis "Place 5 equal pieces together, but wait, there are 3 new ones")
9226 (description "KLines is a simple but highly addictive one player game.
9227
9228 The player has to move the colored balls around the game board, gathering them
9229 into the lines of the same color by five. Once the line is complete it is
9230 removed from the board, therefore freeing precious space. In the same time
9231 the new balls keep arriving by three after each move, filling up the game
9232 board.
9233
9234 KLines is a single-player game where the player removes colored balls from the
9235 board by arranging them into lines of five or more. However, every time the
9236 player moves a ball, three more balls are added to the board.
9237
9238 This package is part of the KDE games module.")
9239 (license (list license:gpl2+ license:fdl1.2+))))
9240
9241 (define-public kgoldrunner
9242 (package
9243 (name "kgoldrunner")
9244 (version "19.08.3")
9245 (source
9246 (origin
9247 (method url-fetch)
9248 (uri (string-append "mirror://kde/stable/applications/" version "/src/kgoldrunner-"
9249 version ".tar.xz"))
9250 (sha256
9251 (base32 "16rcvq796r3asz4v4ap75xvwnxd3dd2nsq5r9vxvzl6rrf1w9bj4"))))
9252 (build-system qt-build-system)
9253 (native-inputs
9254 `(("extra-cmake-modules" ,extra-cmake-modules)
9255 ("kdoctools" ,kdoctools)))
9256 (inputs
9257 `(("kcompletion" ,kcompletion)
9258 ("kcoreaddons" ,kcoreaddons)
9259 ("kcrash" ,kcrash)
9260 ("kdbusaddons" ,kdbusaddons)
9261 ("ki18n" ,ki18n)
9262 ("kio" ,kio)
9263 ("kwidgetsaddons" ,kwidgetsaddons)
9264 ("kxmlgui" ,kxmlgui)
9265 ("libkdegames" ,libkdegames)
9266 ("qtbase" ,qtbase)
9267 ("qtdeclarative" ,qtdeclarative)))
9268 (home-page "https://games.kde.org/")
9269 (synopsis "Action and puzzle solving game")
9270 (description "KGoldrunner is an action game where the hero runs through a
9271 maze, climbs stairs, dig holes and dodges enemies in order to collect all the
9272 gold nuggets and escape to the next level. Your enemies are also after the
9273 gold. Worse still, they are after you!.
9274
9275 KGoldrunner is a fast-paced platform game where the player must navigate a
9276 maze while collecting gold nuggets and avoiding enemies. A variety of level
9277 packs are included, as well as an editor to create new levels.
9278
9279 This package is part of the KDE games module.")
9280 (license (list license:gpl2+ license:fdl1.2+))))
9281
9282 (define-public kdiamond
9283 (package
9284 (name "kdiamond")
9285 (version "19.08.3")
9286 (source
9287 (origin
9288 (method url-fetch)
9289 (uri (string-append "mirror://kde/stable/applications/" version
9290 "/src/kdiamond-" version ".tar.xz"))
9291 (sha256
9292 (base32 "1v5yb9hb26lk277zhw8d37ks829yfqr5anzx1qhms44gca5kqhva"))))
9293 (build-system qt-build-system)
9294 (native-inputs
9295 `(("extra-cmake-modules" ,extra-cmake-modules)
9296 ("kdoctools" ,kdoctools)))
9297 (inputs
9298 `(("kcompletion", kcompletion)
9299 ("kconfig" ,kconfig)
9300 ("kconfigwidgets" ,kconfigwidgets)
9301 ("kcoreaddons" ,kcoreaddons)
9302 ("kcrash" ,kcrash)
9303 ("kdbusaddons" ,kdbusaddons)
9304 ("ki18n" ,ki18n)
9305 ("knotifications" ,knotifications)
9306 ("knotifyconfig" ,knotifyconfig)
9307 ("kwidgetsaddons" ,kwidgetsaddons)
9308 ("kxmlgui" ,kxmlgui)
9309 ("libkdegames" ,libkdegames)
9310 ("qtbase" ,qtbase)
9311 ("qtdeclarative" ,qtdeclarative)))
9312 (home-page "https://games.kde.org/")
9313 (synopsis "Three-in-a-row game")
9314 (description "KDiamond is a three-in-a-row game like Bejeweled. It
9315 features unlimited fun with randomly generated games and five difficulty
9316 levels with varying number of diamond colors and board sizes.
9317
9318 This package is part of the KDE games module.")
9319 (license (list license:gpl2+ license:fdl1.2+))))
9320
9321 (define-public kfourinline
9322 (package
9323 (name "kfourinline")
9324 (version "19.08.3")
9325 (source
9326 (origin
9327 (method url-fetch)
9328 (uri (string-append "mirror://kde/stable/applications/" version
9329 "/src/kfourinline-" version ".tar.xz"))
9330 (sha256
9331 (base32 "1vprs6dc1ccn3g6k594i9s94xy4b91vzlqjysyc6fqcq2fs54ny3"))))
9332 (build-system qt-build-system)
9333 (native-inputs
9334 `(("extra-cmake-modules" ,extra-cmake-modules)
9335 ("kdoctools" ,kdoctools)))
9336 (inputs
9337 `(("kcompletion" ,kcompletion)
9338 ("kconfig" ,kconfig)
9339 ("kconfigwidgets" ,kconfigwidgets)
9340 ("kcoreaddons" ,kcoreaddons)
9341 ("kcrash" ,kcrash)
9342 ("kdelibs4support" ,kdelibs4support)
9343 ("kdnssd" ,kdnssd)
9344 ("ki18n" ,ki18n)
9345 ("kxmlgui" ,kxmlgui)
9346 ("libkdegames" ,libkdegames)
9347 ("qtbase" ,qtbase)
9348 ("qtdeclarative" ,qtdeclarative)
9349 ("qtsvg" ,qtsvg)))
9350 (home-page "https://games.kde.org/")
9351 (synopsis "Place 4 pieces in a row")
9352 (description "KFourInLine is a board game for two players based on the
9353 Connect-Four game.
9354
9355 KFourInLine is a game where two players take turns dropping pieces into a
9356 grid, the winner being the first to place four pieces in a line.
9357
9358 This package is part of the KDE games module.")
9359 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
9360
9361 (define-public kblackbox
9362 (package
9363 (name "kblackbox")
9364 (version "19.08.3")
9365 (source
9366 (origin
9367 (method url-fetch)
9368 (uri (string-append "mirror://kde/stable/applications/" version
9369 "/src/kblackbox-" version ".tar.xz"))
9370 (sha256
9371 (base32 "1x42sfpf75c6mavwkc7g7dm11y9s5dpj8igphly5kvm0pajqby0n"))))
9372 (build-system qt-build-system)
9373 (native-inputs
9374 `(("extra-cmake-modules" ,extra-cmake-modules)
9375 ("kdoctools" ,kdoctools)))
9376 (inputs
9377 `(("karchive" ,karchive)
9378 ("kcompletion" ,kcompletion)
9379 ("kconfig" ,kconfig)
9380 ("kcoreaddons" ,kcoreaddons)
9381 ("kcrash" ,kcrash)
9382 ("kdbusaddons" ,kdbusaddons)
9383 ("ki18n" ,ki18n)
9384 ("ktextwidgets" ,ktextwidgets)
9385 ("kxmlgui" ,kxmlgui)
9386 ("libkdegames" ,libkdegames)
9387 ("qtbase" ,qtbase)
9388 ("qtdeclarative" ,qtdeclarative)
9389 ("qtsvg" ,qtsvg)))
9390 (home-page "https://games.kde.org/")
9391 (synopsis "Find atoms in a grid by shooting electrons")
9392 (description "KBlackbox is a game of hide and seek played on a grid of
9393 boxes where the computer has hidden several balls. The position of the hidden
9394 balls can be deduced by shooting beams into the box
9395
9396 KBlackBox is a game of hide and seek played on an grid of boxes, where the
9397 player shoots rays into the grid to deduce the positions of hidden objects.
9398
9399 This package is part of the KDE games module.")
9400 (license (list license:gpl2+ license:fdl1.2+))))
9401
9402 (define-public knetwalk
9403 (package
9404 (name "knetwalk")
9405 (version "19.08.3")
9406 (source
9407 (origin
9408 (method url-fetch)
9409 (uri (string-append "mirror://kde/stable/applications/" version
9410 "/src/knetwalk-" version ".tar.xz"))
9411 (sha256
9412 (base32 "1i340salzgqdw8y33wrrydmpgx3pvwf5wrbljlh67cjf6s4csx7d"))))
9413 (build-system qt-build-system)
9414 (native-inputs
9415 `(("extra-cmake-modules" ,extra-cmake-modules)
9416 ("kdoctools" ,kdoctools)))
9417 (inputs
9418 `(("kcompletion" ,kcompletion)
9419 ("kconfig" ,kconfig)
9420 ("kconfigwidgets" ,kconfigwidgets)
9421 ("kcoreaddons" ,kcoreaddons)
9422 ("kcrash" ,kcrash)
9423 ("kdbusaddons" ,kdbusaddons)
9424 ("ki18n" ,ki18n)
9425 ("ktextwidgets" ,ktextwidgets)
9426 ("kwidgetsaddons" ,kwidgetsaddons)
9427 ("kxmlgui" ,kxmlgui)
9428 ("libkdegames" ,libkdegames)
9429 ("qtbase" ,qtbase)
9430 ("qtdeclarative" ,qtdeclarative)))
9431 (home-page "https://games.kde.org/")
9432 (synopsis "Turn the board pieces to get all computers connected")
9433 (description "KNetWalk is a small game where you have to build up a
9434 computer network by rotating the wires to connect the terminals to the server.
9435 When the network is build, a highscore-list comes up where competitions can be
9436 fought out.
9437
9438 KNetwalk is a puzzle game where the player arranges sections of wire to
9439 connect all the computers on the board.
9440
9441 This package is part of the KDE games module.")
9442 (license (list license:gpl2+ license:fdl1.2+))))
9443
9444 (define-public bomber
9445 (package
9446 (name "bomber")
9447 (version "19.08.3")
9448 (source
9449 (origin
9450 (method url-fetch)
9451 (uri (string-append "mirror://kde/stable/applications/" version
9452 "/src/bomber-" version ".tar.xz"))
9453 (sha256
9454 (base32 "1lvzd0mzgq25akvwvkm57l3plm65k731v2i1ahakn985bb5gc3is"))))
9455 (build-system qt-build-system)
9456 (native-inputs
9457 `(("extra-cmake-modules" ,extra-cmake-modules)
9458 ("kdoctools" ,kdoctools)))
9459 (inputs
9460 `(("kcompletiom" ,kcompletion)
9461 ("kconfig" ,kconfig)
9462 ("kcoreaddons" ,kcoreaddons)
9463 ("kcrash" ,kcrash)
9464 ("kdbusaddons" ,kdbusaddons)
9465 ("ki18n" ,ki18n)
9466 ("kxmlgui" ,kxmlgui)
9467 ("libkdegames" ,libkdegames)
9468 ("qtbase" ,qtbase)
9469 ("qtdeclarative" ,qtdeclarative)))
9470 (home-page "https://games.kde.org/")
9471 (synopsis "Arcade bombing game")
9472 (description "Bomber is a single player arcade game.
9473
9474 The player is invading various cities in a plane that is decreasing in height.
9475 The goal of the game is to destroy all the buildings and advance to the next
9476 level. Each level gets a bit harder by increasing the speed of the plane and
9477 the height of the buildings.
9478
9479 Bomber is a game where you fly a spaceship and attempt to bomb the buildings
9480 below you. Each pass the spaceship makes, it gets lower and lower. If you've
9481 not destroyed a building in your path, you will crash into it.
9482
9483 This package is part of the KDE games module.")
9484 (license (list license:gpl2+ license:fdl1.2+))))
9485
9486 (define-public granatier
9487 (package
9488 (name "granatier")
9489 (version "19.08.3")
9490 (source
9491 (origin
9492 (method url-fetch)
9493 (uri (string-append "mirror://kde/stable/applications/" version
9494 "/src/granatier-" version ".tar.xz"))
9495 (sha256
9496 (base32 "141qmdinz7ikbbrs8dq6cap3nl22sl7pw62r80pf3xxwn2q4phpa"))))
9497 (build-system qt-build-system)
9498 (native-inputs
9499 `(("extra-cmake-modules" ,extra-cmake-modules)
9500 ("kdoctools" ,kdoctools)))
9501 (inputs
9502 `(("kcompletion" ,kcompletion)
9503 ("kconfig" ,kconfig)
9504 ("kconfigwidgets" ,kconfigwidgets)
9505 ("kcoreaddons" ,kcoreaddons)
9506 ("kcrash" ,kcrash)
9507 ("kdbusaddons" ,kdbusaddons)
9508 ("ki18n" ,ki18n)
9509 ("knewstuff" ,knewstuff)
9510 ("kwidgetsaddons" ,kwidgetsaddons)
9511 ("kxmlgui" ,kxmlgui)
9512 ("libkdegames" ,libkdegames)
9513 ("qtbase" ,qtbase)
9514 ("qtdeclarative" ,qtdeclarative)
9515 ("qtsvg" ,qtsvg)))
9516 (home-page "https://games.kde.org/")
9517 (synopsis "Bomberman clone")
9518 (description "Granatier is a clone of the classic Bomberman game,
9519 inspired by the work of the Clanbomber clone.
9520
9521 This package is part of the KDE games module.")
9522 (license (list license:gpl2+ license:fdl1.2+))))
9523
9524 (define-public ksirk
9525 (package
9526 (name "ksirk")
9527 (version "19.08.3")
9528 (source
9529 (origin
9530 (method url-fetch)
9531 (uri (string-append "mirror://kde/stable/applications/" version
9532 "/src/ksirk-" version ".tar.xz"))
9533 (sha256
9534 (base32 "1b1wixs2hp5qnvdygfwa3kvy0kn94ysa4ifmx90q6r3yfr2lpfca"))))
9535 (build-system qt-build-system)
9536 (native-inputs
9537 `(("extra-cmake-modules" ,extra-cmake-modules)
9538 ("kdoctools" ,kdoctools)))
9539 (inputs
9540 `(("kcrash" ,kcrash)
9541 ("ki18n" ,ki18n)
9542 ("kiconthemes" ,kiconthemes)
9543 ("kio" ,kio)
9544 ("knewstuff" ,knewstuff)
9545 ("kwallet" ,kwallet)
9546 ("kxmlgui" ,kxmlgui)
9547 ("libkdegames" ,libkdegames)
9548 ("phonon" ,phonon)
9549 ("qca" ,qca)
9550 ("qtbase" ,qtbase)
9551 ("qtdeclarative" ,qtdeclarative)
9552 ("qtsvg" ,qtsvg)
9553 ("zlib" ,zlib)))
9554 (home-page "https://games.kde.org/")
9555 (synopsis "Computerized version of the well known strategy board game
9556 'Risk'")
9557 (description "KsirK is a multi-player network-enabled game. The goal of
9558 the game is simply to conquer the world by attacking your neighbors with your
9559 armies.
9560
9561 At the beginning of the game, countries are distributed to all the players.
9562 Each country contains one army represented by an infantryman. Each player has
9563 some armies to distribute to his countries. On each turn, each player can
9564 attack his neighbours, eventually conquering one or more countries. At the
9565 end of each turn, some bonus armies are distributed to the players in function
9566 of the number of countries they own. The winner is the player that conquered
9567 all the world.
9568
9569 Features:
9570 @itemize
9571 @item Support for 1-6 human or computer players
9572 @item Multi-player gaming over a network
9573 @item You can easily create new skins with SVG graphics and the skin editor
9574 @item Hot New Stuff support. You can easily download and install new skins
9575 @end itemize
9576
9577 This package is part of the KDE games module.")
9578 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
9579
9580 (define-public palapeli
9581 (package
9582 (name "palapeli")
9583 (version "19.08.3")
9584 (source
9585 (origin
9586 (method url-fetch)
9587 (uri (string-append "mirror://kde/stable/applications/" version
9588 "/src/palapeli-" version ".tar.xz"))
9589 (sha256
9590 (base32 "1g91ydbc0x2y2gn3lcb5w03mn7k78l5bq4cb1s59kx6yjbflv3pw"))))
9591 (build-system qt-build-system)
9592 (native-inputs
9593 `(("extra-cmake-modules" ,extra-cmake-modules)
9594 ("kdoctools" ,kdoctools)))
9595 (inputs
9596 `(("karchive" ,karchive)
9597 ("kcompletion" ,kcompletion)
9598 ("kconfig" ,kconfig)
9599 ("kconfigwidgets" ,kconfigwidgets)
9600 ("kcoreaddons" ,kcoreaddons)
9601 ("kcrash" ,kcrash)
9602 ("kcrash" ,kcrash)
9603 ("ki18n" ,ki18n)
9604 ("ki18n" ,ki18n)
9605 ("kio" ,kio)
9606 ("kitemviews" ,kitemviews)
9607 ("knotifications" ,knotifications)
9608 ("kservice" ,kservice)
9609 ("kwidgetsaddons" ,kwidgetsaddons)
9610 ("kxmlgui" ,kxmlgui)
9611 ("libkdegames" ,libkdegames)
9612 ("qtbase" ,qtbase)
9613 ("qtdeclarative" ,qtdeclarative)
9614 ("qtsvg" ,qtsvg)
9615 ("shared-mime-info" ,shared-mime-info)))
9616 (home-page "https://games.kde.org/")
9617 (synopsis "Jigsaw puzzle game")
9618 (description "Palapeli is a jigsaw puzzle game. Unlike other games in
9619 that genre, you are not limited to aligning pieces on imaginary grids. The
9620 pieces are freely moveable. Also, Palapeli features real persistency, i.e.
9621 everything you do is saved on your disk immediately.
9622
9623 Palapeli is the Finnish word for jigsaw puzzle.
9624
9625 This package is part of the KDE games module.")
9626 (license license:gpl2+)))
9627
9628 (define-public kiriki
9629 (package
9630 (name "kiriki")
9631 (version "19.08.3")
9632 (source
9633 (origin
9634 (method url-fetch)
9635 (uri (string-append "mirror://kde/stable/applications/" version
9636 "/src/kiriki-" version ".tar.xz"))
9637 (sha256
9638 (base32 "1xg25dj95g81dc5l7k47am4j52abrwwfx4h73lvsbn4lc8lfmshw"))))
9639 (build-system qt-build-system)
9640 (native-inputs
9641 `(("extra-cmake-modules" ,extra-cmake-modules)
9642 ("kdoctools" ,kdoctools)))
9643 (inputs
9644 `(("kcompletion" ,kcompletion)
9645 ("kconfig" ,kconfig)
9646 ("kconfigwidgets" ,kconfigwidgets)
9647 ("kcoreaddons" ,kcoreaddons)
9648 ("kcrash" ,kcrash)
9649 ("kdbusaddons" ,kdbusaddons)
9650 ("ki18n" ,ki18n)
9651 ("kiconthemes" ,kiconthemes)
9652 ("kxmlgui" ,kxmlgui)
9653 ("libkdegames" ,libkdegames)
9654 ("qtbase" ,qtbase)
9655 ("qtdeclarative" ,qtdeclarative)))
9656 (home-page "https://games.kde.org/")
9657 (synopsis "Yahtzee dice game")
9658 (description "Kiriki is an addictive and fun dice game, designed to be
9659 played by as many as six players.
9660
9661 Participants have to collect points by rolling five dice for up to three times
9662 per single turn to make combinations with the highest score.
9663
9664 This package is part of the KDE games module.")
9665 (license (list license:gpl2+ license:fdl1.2+))))
9666
9667 (define-public kigo
9668 (package
9669 (name "kigo")
9670 (version "19.08.3")
9671 (source
9672 (origin
9673 (method url-fetch)
9674 (uri (string-append "mirror://kde/stable/applications/" version
9675 "/src/kigo-" version ".tar.xz"))
9676 (sha256
9677 (base32 "00l5gcbi8xyj9c1lngkrddka3a4m4cd78prfplrpq32ma9xq681f"))))
9678 (build-system qt-build-system)
9679 (native-inputs
9680 `(("extra-cmake-modules" ,extra-cmake-modules)
9681 ("kdoctools" ,kdoctools)))
9682 (inputs
9683 `(("kconfig" ,kconfig)
9684 ("kconfigwidgets" ,kconfigwidgets)
9685 ("kcoreaddons" ,kcoreaddons)
9686 ("kcrash" ,kcrash)
9687 ("kdbusaddons" ,kdbusaddons)
9688 ("ki18n" ,ki18n)
9689 ("kio" ,kio)
9690 ("knewstuff", knewstuff)
9691 ("ktextwidgets" ,ktextwidgets)
9692 ("kxmlgui" ,kxmlgui)
9693 ("libkdegames" ,libkdegames)
9694 ("qtbase" ,qtbase)
9695 ("qtdeclarative" ,qtdeclarative)
9696 ("qtsvg" ,qtsvg)))
9697 (home-page "https://games.kde.org/")
9698 (synopsis "Go board game")
9699 (description "Kigo is an open-source implementation of the popular Go
9700 game.
9701
9702 Go is a strategic board game for two players. It is also known as
9703 igo (Japanese), weiqi or wei ch'i (Chinese) or baduk (Korean). Go is noted
9704 for being rich in strategic complexity despite its simple rules. The game is
9705 played by two players who alternately place black and white stones (playing
9706 pieces, now usually made of glass or plastic) on the vacant intersections of a
9707 grid of 19x19 lines (9x9 or 13x13 for easier games).
9708
9709 You also need to install a go engine, e.g. @code{gnugo}.
9710
9711 This package is part of the KDE games module.")
9712 (license license:gpl3+)))
9713
9714 (define-public kubrick
9715 (package
9716 (name "kubrick")
9717 (version "19.08.3")
9718 (source
9719 (origin
9720 (method url-fetch)
9721 (uri (string-append "mirror://kde/stable/applications/" version
9722 "/src/kubrick-" version ".tar.xz"))
9723 (sha256
9724 (base32 "0ma8wja4rqlsmsr8cyicfpkwlgqva4450ls4c0ql53p0kabf04gx"))))
9725 (build-system qt-build-system)
9726 (native-inputs
9727 `(("extra-cmake-modules" ,extra-cmake-modules)
9728 ("kdoctools" ,kdoctools)))
9729 (inputs
9730 `(("glu" ,glu)
9731 ("kconfig" ,kconfig)
9732 ("kconfigwidgets" ,kconfigwidgets)
9733 ("kcoreaddons" ,kcoreaddons)
9734 ("kcrash" ,kcrash)
9735 ("ki18n" ,ki18n)
9736 ("kio" ,kio)
9737 ("kwidgetsaddons" ,kwidgetsaddons)
9738 ("kxmlgui" ,kxmlgui)
9739 ("libkdegames" ,libkdegames)
9740 ("qtbase" ,qtbase)
9741 ("qtdeclarative" ,qtdeclarative)
9742 ("qtsvg" ,qtsvg)))
9743 (home-page "https://games.kde.org/")
9744 (synopsis "Game based on Rubik's Cube")
9745 (description "Kubrick is a game based on the Rubik's Cube puzzle.
9746
9747 The cube sizes range from 2x2x2 up to 6x6x6, or you can play with irregular
9748 \"bricks\" such as 5x3x2 or \"mats\" such as 6x4x1 or 2x2x1. The game has a
9749 selection of puzzles at several levels of difficulty, as well as demos of
9750 pretty patterns and solution moves, or you can make up your own puzzles. The
9751 game has unlimited undo, redo, save and reload capabilities.
9752
9753 This package is part of the KDE games module.")
9754 (license (list license:gpl2+ license:fdl1.2+))))
9755
9756 (define-public lskat
9757 (package
9758 (name "lskat")
9759 (version "19.08.3")
9760 (source
9761 (origin
9762 (method url-fetch)
9763 (uri (string-append "mirror://kde/stable/applications/" version
9764 "/src/lskat-" version ".tar.xz"))
9765 (sha256
9766 (base32 "1qk5hd27zb42pbcxq5wyzz62nj5f0qdmgy54r9rnk92pzzzk94s9"))))
9767 (build-system qt-build-system)
9768 (native-inputs
9769 `(("extra-cmake-modules" ,extra-cmake-modules)
9770 ("kdoctools" ,kdoctools)))
9771 (inputs
9772 `(("kcompletion" ,kcompletion)
9773 ("kconfig" ,kconfig)
9774 ("kcoreaddons" ,kcoreaddons)
9775 ("kcrash" ,kcrash)
9776 ("kguiaddons" ,kguiaddons)
9777 ("ki18n" ,ki18n)
9778 ("kwidgetsaddons" ,kwidgetsaddons)
9779 ("kxmlgui" ,kxmlgui)
9780 ("libkdegames" ,libkdegames)
9781 ("qtbase" ,qtbase)
9782 ("qtdeclarative" ,qtdeclarative)
9783 ("qtsvg" ,qtsvg)))
9784 (home-page "https://games.kde.org/")
9785 (synopsis "Lieutnant Skat card game")
9786 (description "Lieutnant Skat (from German \"Offiziersskat\") is a fun and
9787 engaging card game for two players, where the second player is either live
9788 opponent, or a built in artificial intelligence.
9789
9790 Lieutnant Skat is a simplified variant of the Skat card game for two players.
9791
9792 This package is part of the KDE games module.")
9793 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
9794
9795 (define-public kapman
9796 (package
9797 (name "kapman")
9798 (version "19.08.3")
9799 (source
9800 (origin
9801 (method url-fetch)
9802 (uri (string-append "mirror://kde/stable/applications/" version
9803 "/src/kapman-" version ".tar.xz"))
9804 (sha256
9805 (base32 "03pq38caam30q4bw14c045kayw2d87xq1yaa3s2jkrylylfq3p0f"))))
9806 (build-system qt-build-system)
9807 (native-inputs
9808 `(("extra-cmake-modules" ,extra-cmake-modules)
9809 ("kdoctools" ,kdoctools)))
9810 (inputs
9811 `(("kcompletion" ,kcompletion)
9812 ("kconfig" ,kconfig)
9813 ("kconfigwidgets" ,kconfigwidgets)
9814 ("kcoreaddons" ,kcoreaddons)
9815 ("kcrash" ,kcrash)
9816 ("kdbusaddons" ,kdbusaddons)
9817 ("ki18n" ,ki18n)
9818 ("kxmlgui" ,kxmlgui)
9819 ("libkdegames" ,libkdegames)
9820 ("qtbase" ,qtbase)
9821 ("qtdeclarative" ,qtdeclarative)
9822 ("qtsvg" ,qtsvg)))
9823 (home-page "https://games.kde.org/")
9824 (synopsis "Pac-Man clone")
9825 (description "Kapman is a clone of the well known game Pac-Man.
9826
9827 You must run through the maze to eat all pills without being captured by a
9828 ghost. By eating an energizer, Kapman gets the ability to eat ghosts for a
9829 few seconds. When a stage is cleared of pills and energizer the player is
9830 taken to the next stage with slightly increased game speed
9831
9832 This package is part of the KDE games module.")
9833 (license (list license:gpl2+ license:fdl1.2+))))
9834
9835 (define-public kspaceduel
9836 (package
9837 (name "kspaceduel")
9838 (version "19.08.3")
9839 (source
9840 (origin
9841 (method url-fetch)
9842 (uri (string-append "mirror://kde/stable/applications/" version
9843 "/src/kspaceduel-" version ".tar.xz"))
9844 (sha256
9845 (base32 "1hppni0ihs7psc0dly5rxyy2a38nzhlig9yfyhi3lkh36z05pql8"))))
9846 (build-system qt-build-system)
9847 (native-inputs
9848 `(("extra-cmake-modules" ,extra-cmake-modules)
9849 ("kdoctools" ,kdoctools)))
9850 (inputs
9851 `(("kcompletion" ,kcompletion)
9852 ("kconfig" ,kconfig)
9853 ("kconfigwidgets" ,kconfigwidgets)
9854 ("kcoreaddons" ,kcoreaddons)
9855 ("kcrash" ,kcrash)
9856 ("kdbusaddons" ,kdbusaddons)
9857 ("ki18n" ,ki18n)
9858 ("kxmlgui" ,kxmlgui)
9859 ("libkdegames" ,libkdegames)
9860 ("qtbase" ,qtbase)
9861 ("qtdeclarative" ,qtdeclarative)
9862 ("qtsvg" ,qtsvg)))
9863 (home-page "https://games.kde.org/")
9864 (synopsis "Two player game with shooting spaceships flying around a sun")
9865 (description "KSpaceduel is a space battle game for one or two players,
9866 where two ships fly around a star in a struggle to be the only survivor.
9867
9868 This package is part of the KDE games module.")
9869 (license (list license:gpl2+ license:fdl1.2+))))
9870
9871 (define-public bovo
9872 (package
9873 (name "bovo")
9874 (version "19.08.3")
9875 (source
9876 (origin
9877 (method url-fetch)
9878 (uri (string-append "mirror://kde/stable/applications/" version
9879 "/src/bovo-" version ".tar.xz"))
9880 (sha256
9881 (base32 "0dbpng0w52nahmx7brsll66zw23ql1g6pcvn2k4g2lnvxch0i59g"))))
9882 (build-system qt-build-system)
9883 (native-inputs
9884 `(("extra-cmake-modules" ,extra-cmake-modules)
9885 ("kdoctools" ,kdoctools)))
9886 (inputs
9887 `(("kcompletion" ,kcompletion)
9888 ("kcoreaddons" ,kcoreaddons)
9889 ("kcrash" ,kcrash)
9890 ("kdbusaddons" ,kdbusaddons)
9891 ("ki18n" ,ki18n)
9892 ("kxmlgui" ,kxmlgui)
9893 ("libkdegames" ,libkdegames)
9894 ("qtbase" ,qtbase)
9895 ("qtdeclarative" ,qtdeclarative)
9896 ("qtsvg" ,qtsvg)))
9897 (home-page "https://games.kde.org/")
9898 (synopsis "Classic pen and paper game: five in a line")
9899 (description "Bovo is a Gomoku (from Japanese 五目並べ - lit. \"five
9900 points\") like game for two players, where the opponents alternate in placing
9901 their respective pictogram on the game board. The winner is the first to
9902 complete a line of five markers. (Also known as: Connect Five, Five in a row,
9903 X and O, Naughts and Crosses)
9904
9905 This package is part of the KDE games module.")
9906 (license (list license:gpl2+ license:fdl1.2+))))
9907
9908 (define-public killbots
9909 (package
9910 (name "killbots")
9911 (version "19.08.3")
9912 (source
9913 (origin
9914 (method url-fetch)
9915 (uri (string-append "mirror://kde/stable/applications/" version
9916 "/src/killbots-" version ".tar.xz"))
9917 (sha256
9918 (base32 "1qi86q7diw7glkp9v33yim9nhz2da4balbxa1hjrdgjdv8zdbxbm"))))
9919 (build-system qt-build-system)
9920 (native-inputs
9921 `(("extra-cmake-modules" ,extra-cmake-modules)
9922 ("kdoctools" ,kdoctools)))
9923 (inputs
9924 `(("kcompletion" ,kcompletion)
9925 ("kconfig" ,kconfig)
9926 ("kconfigwidgets" ,kconfigwidgets)
9927 ("kcoreaddons" ,kcoreaddons)
9928 ("kcrash" ,kcrash)
9929 ("kdbusaddons" ,kdbusaddons)
9930 ("ki18n" ,ki18n)
9931 ("kwidgetsaddons" ,kwidgetsaddons)
9932 ("kxmlgui" ,kxmlgui)
9933 ("libkdegames" ,libkdegames)
9934 ("qtbase" ,qtbase)
9935 ("qtdeclarative" ,qtdeclarative)))
9936 (home-page "https://games.kde.org/")
9937 (synopsis "Port of the classic BSD console game robots")
9938 (description "Killbots is a simple game of evading killer robots.
9939
9940 Who created the robots and why they have been programmed to destroy, no one
9941 knows. All that is known is that the robots are numerous and their sole
9942 objective is to destroy you. Fortunately for you, their creator has focused
9943 on quantity rather than quality and as a result the robots are severely
9944 lacking in intelligence. Your superior wit and a fancy teleportation device
9945 are your only weapons against the never-ending stream of mindless automatons.
9946
9947 This package is part of the KDE games module.")
9948 (license (list license:gpl2+ license:fdl1.2+))))
9949
9950 (define-public ksnakeduel
9951 (package
9952 (name "ksnakeduel")
9953 (version "19.08.3")
9954 (source
9955 (origin
9956 (method url-fetch)
9957 (uri (string-append "mirror://kde/stable/applications/" version
9958 "/src/ksnakeduel-" version ".tar.xz"))
9959 (sha256
9960 (base32 "0mprrnpax8pv7ab36zwhvdfj8id52w8g6x76nnj8qvkdlkjiqdnn"))))
9961 (build-system qt-build-system)
9962 (native-inputs
9963 `(("extra-cmake-modules" ,extra-cmake-modules)
9964 ("kdoctools" ,kdoctools)))
9965 (inputs
9966 `(("kcompletion" ,kcompletion)
9967 ("kconfig" ,kconfig)
9968 ("kconfigwidgets" ,kconfigwidgets)
9969 ("kcoreaddons" ,kcoreaddons)
9970 ("kcrash" ,kcrash)
9971 ("kdbusaddons" ,kdbusaddons)
9972 ("kguiaddons" ,kguiaddons)
9973 ("ki18n" ,ki18n)
9974 ("kxmlgui" ,kxmlgui)
9975 ("libkdegames" ,libkdegames)
9976 ("qtbase" ,qtbase)
9977 ("qtdeclarative" ,qtdeclarative)
9978 ("qtsvg" ,qtsvg)))
9979 (home-page "https://games.kde.org/")
9980 (synopsis "Snake race played against the computer")
9981 (description "KSnakeDuel is a fast action game where you steer a snake
9982 which has to eat food. While eating the snake grows. But once a player
9983 collides with the other snake or the wall the game is lost. This becomes of
9984 course more and more difficult the longer the snakes grow.
9985
9986 This package is part of the KDE games module.")
9987 (license (list license:gpl2+ license:fdl1.2+))))
9988
9989 (define-public kollision
9990 (package
9991 (name "kollision")
9992 (version "19.08.3")
9993 (source
9994 (origin
9995 (method url-fetch)
9996 (uri (string-append "mirror://kde/stable/applications/" version
9997 "/src/kollision-" version ".tar.xz"))
9998 (sha256
9999 (base32 "1p7qrn3d0ybpvc9k6k5wzj54dsrp1rqh39844maz0ay2fhvmch12"))))
10000 (build-system qt-build-system)
10001 (native-inputs
10002 `(("extra-cmake-modules" ,extra-cmake-modules)
10003 ("kdoctools" ,kdoctools)))
10004 (inputs
10005 `(("kcompletion" ,kcompletion)
10006 ("kconfig" ,kconfig)
10007 ("kcoreaddons" ,kcoreaddons)
10008 ("kcrash" ,kcrash)
10009 ("kdbusaddons" ,kdbusaddons)
10010 ("ki18n" ,ki18n)
10011 ("kwidgetsaddons" ,kwidgetsaddons)
10012 ("kxmlgui" ,kxmlgui)
10013 ("libkdegames" ,libkdegames)
10014 ("qtbase" ,qtbase)
10015 ("qtdeclarative" ,qtdeclarative)))
10016 (home-page "https://games.kde.org/")
10017 (synopsis "Simple ball dodging game")
10018 (description "In Kollision you use mouse to control a small blue ball in a
10019 closed space environment filled with small red balls, which move about
10020 chaotically. Your goal is to avoid touching any of those red balls with your
10021 blue one, because the moment you do the game will be over. The longer you can
10022 stay in game the higher will your score be.
10023
10024 This package is part of the KDE games module.")
10025 (license (list license:gpl2+ license:fdl1.2+))))
10026
10027 (define-public knavalbattle
10028 (package
10029 (name "knavalbattle")
10030 (version "19.08.3")
10031 (source
10032 (origin
10033 (method url-fetch)
10034 (uri (string-append "mirror://kde/stable/applications/" version
10035 "/src/knavalbattle-" version ".tar.xz"))
10036 (sha256
10037 (base32 "0sdfjplqkb30x2mvh66pkzay6vn5px87779sh2s8lpl6fcw0v9g4"))))
10038 (build-system qt-build-system)
10039 (native-inputs
10040 `(("extra-cmake-modules" ,extra-cmake-modules)
10041 ("kdoctools" ,kdoctools)))
10042 (inputs
10043 `(("kauth" ,kauth)
10044 ("kcompletion" ,kcompletion)
10045 ("kconfig" ,kconfig)
10046 ("kconfigwidgets" ,kconfigwidgets)
10047 ("kcoreaddons" ,kcoreaddons)
10048 ("kcrash" ,kcrash)
10049 ("kdbusaddons" ,kdbusaddons)
10050 ("kdnssd" ,kdnssd)
10051 ("ki18n" ,ki18n)
10052 ("ktextwidgets" ,ktextwidgets)
10053 ("kxmlgui" ,kxmlgui)
10054 ("libkdegames" ,libkdegames)
10055 ("qtbase" ,qtbase)
10056 ("qtdeclarative" ,qtdeclarative)))
10057 (home-page "https://games.kde.org/")
10058 (synopsis "Battleship board game with built-in game server")
10059 (description "KBattleship is a Battle Ship game for KDE.
10060
10061 Ships are placed on a board which represents the sea. Players try to hit each
10062 others ships in turns without knowing where they are placed. The first player
10063 to destroy all ships wins the game.
10064
10065 This package is part of the KDE games module.")
10066 (license (list license:gpl2+ license:fdl1.2+))))
10067
10068 (define-public kreversi
10069 (package
10070 (name "kreversi")
10071 (version "19.08.3")
10072 (source
10073 (origin
10074 (method url-fetch)
10075 (uri (string-append "mirror://kde/stable/applications/" version
10076 "/src/kreversi-" version ".tar.xz"))
10077 (sha256
10078 (base32 "0b6q8df2bawgnrswhq59z37axad0q3zpvvzxdds7sz1lw505xw9h"))))
10079 (build-system qt-build-system)
10080 (native-inputs
10081 `(("extra-cmake-modules" ,extra-cmake-modules)
10082 ("kdoctools" ,kdoctools)))
10083 (inputs
10084 `(("kconfig" ,kconfig)
10085 ("kconfigwidgets" ,kconfigwidgets)
10086 ("kcoreaddons" ,kcoreaddons)
10087 ("kcrash" ,kcrash)
10088 ("kdbusaddons" ,kdbusaddons)
10089 ("kdeclarative" ,kdeclarative)
10090 ("ki18n" ,ki18n)
10091 ("kiconthemes" ,kiconthemes)
10092 ("kio" ,kio)
10093 ("kxmlgui" ,kxmlgui)
10094 ("libkdegames" ,libkdegames)
10095 ("qtbase" ,qtbase)
10096 ("qtdeclarative" ,qtdeclarative)
10097 ("qtsvg" ,qtsvg)))
10098 (home-page "https://games.kde.org/")
10099 (synopsis "Old reversi board game, also known as othello")
10100 (description "KReversi is a simple one player strategy game played
10101 against the computer.
10102
10103 If a player's piece is captured by an opposing player, that piece is turned
10104 over to reveal the color of that player. A winner is declared when one player
10105 has more pieces of his own color on the board and there are no more possible
10106 moves.
10107
10108 This package is part of the KDE games module.")
10109 (license (list license:gpl2+ license:fdl1.2+))))
10110
10111 (define-public ksquares
10112 (package
10113 (name "ksquares")
10114 (version "19.08.3")
10115 (source
10116 (origin
10117 (method url-fetch)
10118 (uri (string-append "mirror://kde/stable/applications/" version
10119 "/src/ksquares-" version ".tar.xz"))
10120 (sha256
10121 (base32 "0hv8hls5s627lys08nnw72rfzsafj3dmp49mh2afzmh6lgk9h5vy"))))
10122 (build-system qt-build-system)
10123 (native-inputs
10124 `(("extra-cmake-modules" ,extra-cmake-modules)
10125 ("kdoctools" ,kdoctools)))
10126 (inputs
10127 `(("kcompletion" ,kcompletion)
10128 ("kconfig" ,kconfig)
10129 ("kconfigwidgets" ,kconfigwidgets)
10130 ("kcoreaddons" ,kcoreaddons)
10131 ("kcrash" ,kcrash)
10132 ("kdbusaddons" ,kdbusaddons)
10133 ("ki18n" ,ki18n)
10134 ("kwidgetsaddons" ,kwidgetsaddons)
10135 ("kxmlgui" ,kxmlgui)
10136 ("libkdegames" ,libkdegames)
10137 ("qtbase" ,qtbase)
10138 ("qtdeclarative" ,qtdeclarative)))
10139 (home-page "https://games.kde.org/")
10140 (synopsis "Dots and Boxes game")
10141 (description "KSquares is an implementation of the popular paper based
10142 game Squares. Two players take turns connecting dots on a grid to complete
10143 squares, the player with the most squares wins.
10144
10145 This package is part of the KDE games module.")
10146 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
10147
10148 (define-public kjumpingcube
10149 (package
10150 (name "kjumpingcube")
10151 (version "19.08.3")
10152 (source
10153 (origin
10154 (method url-fetch)
10155 (uri (string-append "mirror://kde/stable/applications/" version
10156 "/src/kjumpingcube-" version ".tar.xz"))
10157 (sha256
10158 (base32 "0d67zqkf2xffjkj671gl2n6nj6jajyn6rgqqj5i6gm500mqi9rm1"))))
10159 (build-system qt-build-system)
10160 (native-inputs
10161 `(("extra-cmake-modules" ,extra-cmake-modules)
10162 ("kdoctools" ,kdoctools)))
10163 (inputs
10164 `(("kconfig" ,kconfig)
10165 ("kconfigwidgets" ,kconfigwidgets)
10166 ("kcoreaddons" ,kcoreaddons)
10167 ("kcrash" ,kcrash)
10168 ("kdbusaddons" ,kdbusaddons)
10169 ("ki18n" ,ki18n)
10170 ("kio" ,kio)
10171 ("kwidgetsaddons" ,kwidgetsaddons)
10172 ("kxmlgui" ,kxmlgui)
10173 ("libkdegames" ,libkdegames)
10174 ("qtbase" ,qtbase)
10175 ("qtdeclarative" ,qtdeclarative)
10176 ("qtsvg" ,qtsvg)))
10177 (home-page "https://games.kde.org/")
10178 (synopsis "Simple tactical game for number-crunchers")
10179 (description "KJumpingcube is a simple tactical game for one or two
10180 players, played on a grid of numbered squares. Each turn, players compete for
10181 control of the board by capturing or adding to one square.
10182
10183 This package is part of the KDE games module.")
10184 (license (list license:gpl2+ license:fdl1.2+))))
10185
10186 (define-public xmoto
10187 (package
10188 (name "xmoto")
10189 (version "0.5.11")
10190 (source
10191 (origin
10192 (method url-fetch)
10193 (uri (string-append
10194 "http://download.tuxfamily.org/xmoto/xmoto/" version "/"
10195 "xmoto-" version "-src.tar.gz"))
10196 (sha256
10197 (base32 "1ci6r8zd0l7z28cy92ddf9dmqbdqwinz2y1cny34c61b57wsd155"))
10198 (patches
10199 (search-patches
10200 "xmoto-remove-glext.patch" ;fixes licensing issue
10201 "xmoto-reproducible.patch"
10202 "xmoto-utf8.patch"))
10203 ;; Unbundle ODE.
10204 (modules '((guix build utils)))
10205 (snippet
10206 `(begin
10207 (delete-file-recursively "src/ode")
10208 #t))))
10209 (build-system gnu-build-system)
10210 (arguments
10211 ;; XXX: First flag prevents a build error with GCC7+. The second
10212 ;; flag works around missing text in game. Both are fixed
10213 ;; upstream. Remove once xmoto 0.5.12+ is released.
10214 `(#:make-flags '("CXXFLAGS=-fpermissive -D_GLIBCXX_USE_CXX11_ABI=0")
10215 #:phases
10216 (modify-phases %standard-phases
10217 (add-after 'install 'install-desktop-file
10218 (lambda* (#:key outputs #:allow-other-keys)
10219 (let* ((out (assoc-ref outputs "out"))
10220 (apps (string-append out "/share/applications"))
10221 (pixmaps (string-append out "/share/pixmaps")))
10222 (install-file "extra/xmoto.desktop" apps)
10223 (install-file "extra/xmoto.xpm" pixmaps)
10224 #t)))
10225 (add-after 'install-desktop-file 'install-fonts
10226 (lambda* (#:key outputs inputs #:allow-other-keys)
10227 (let ((font-dir (string-append (assoc-ref inputs "font-dejavu")
10228 "/share/fonts/truetype/"))
10229 (target-dir (string-append (assoc-ref outputs "out")
10230 "/share/xmoto/Textures/Fonts/")))
10231 (for-each (lambda (f)
10232 (let ((font (string-append font-dir f))
10233 (target (string-append target-dir f)))
10234 (delete-file target)
10235 (symlink font target)))
10236 '("DejaVuSans.ttf" "DejaVuSansMono.ttf"))
10237 #t)))
10238 (add-after 'install-fonts 'install-man-page
10239 (lambda* (#:key outputs #:allow-other-keys)
10240 (install-file "xmoto.6"
10241 (string-append (assoc-ref outputs "out")
10242 "/share/man/man6"))
10243 #t)))))
10244 (native-inputs
10245 `(("gettext" ,gettext-minimal)))
10246 (inputs
10247 `(("curl" ,curl)
10248 ("font-dejavu" ,font-dejavu)
10249 ("glu" ,glu)
10250 ("libjpeg" ,libjpeg)
10251 ("libpng" ,libpng)
10252 ("libxdg-basedir" ,libxdg-basedir)
10253 ("libxml2" ,libxml2)
10254 ("lua" ,lua-5.2)
10255 ("ode" ,ode)
10256 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-net sdl-ttf)))
10257 ("sqlite" ,sqlite)
10258 ("zlib" ,zlib)))
10259 (home-page "https://xmoto.tuxfamily.org/")
10260 (synopsis "2D motocross platform game")
10261 (description "X-Moto is a challenging 2D motocross platform game, where
10262 physics play an all important role in the gameplay. You need to control your
10263 bike to its limit, if you want to have a chance finishing the more difficult
10264 challenges.")
10265 (license (list license:gpl2+ ;whole project
10266 license:bsd-4 ;src/bzip
10267 license:bsd-3 ;src/md5sum
10268 license:lgpl2.1+ ;src/iqsort.h
10269 license:expat))))
10270
10271 (define-public eboard
10272 (package
10273 (name "eboard")
10274 (version "1.1.3")
10275 (source
10276 (origin
10277 (method git-fetch)
10278 (uri (git-reference
10279 (url "https://github.com/fbergo/eboard.git")
10280 (commit (string-append "v" version))))
10281 (file-name (git-file-name name version))
10282 (sha256
10283 (base32 "1z4pwpqyvxhlda99h6arh2rjk90fbms9q29fqizjblrdn01dlxn1"))))
10284 (build-system gnu-build-system)
10285 (native-inputs
10286 `(("perl" ,perl)
10287 ("pkg-config" ,pkg-config)))
10288 (inputs
10289 `(("gtk+" ,gtk+-2)
10290 ("libpng" ,libpng)
10291 ("gstreamer" ,gstreamer)))
10292 (arguments
10293 `(#:tests? #f
10294 #:phases
10295 (modify-phases %standard-phases
10296 (replace 'configure
10297 (lambda* (#:key outputs #:allow-other-keys)
10298 (make-file-writable "eboard-config")
10299 (setenv "CC" "gcc")
10300 (invoke "./configure"
10301 (string-append "--prefix=" (assoc-ref outputs "out")))
10302 #t))
10303 (add-before 'install 'make-required-directories
10304 (lambda* (#:key outputs #:allow-other-keys)
10305 (mkdir-p (string-append (assoc-ref outputs "out")
10306 "/share/eboard"))
10307 #t)))))
10308 (synopsis "Graphical user interface to play chess")
10309 (description
10310 "Eboard is a chess board interface for ICS (Internet Chess Servers)
10311 and chess engines.")
10312 (home-page "https://www.bergo.eng.br/eboard/")
10313 (license license:gpl2+)))
10314
10315 (define-public chessx
10316 (package
10317 (name "chessx")
10318 (version "1.5.0")
10319 (source
10320 (origin
10321 (method url-fetch)
10322 (uri (string-append "mirror://sourceforge/chessx/chessx/"
10323 version "/chessx-" version ".tgz"))
10324 (sha256
10325 (base32 "09rqyra28w3z9ldw8sx07k5ap3sjlli848p737maj7c240rasc6i"))))
10326 (build-system qt-build-system)
10327 (native-inputs
10328 `(("qttools" ,qttools)))
10329 (inputs
10330 `(("qtbase" ,qtbase)
10331 ("qtmultimedia" ,qtmultimedia)
10332 ("qtsvg" ,qtsvg)
10333 ("zlib" ,zlib)))
10334 (arguments
10335 `(#:tests? #f
10336 #:phases
10337 (modify-phases %standard-phases
10338 (add-after 'unpack 'fix-paths
10339 (lambda* (#:key inputs #:allow-other-keys)
10340 (substitute* "chessx.pro"
10341 (("\\$\\$\\[QT_INSTALL_BINS\\]/lrelease")
10342 (string-append (assoc-ref inputs "qttools") "/bin/lrelease")))
10343 #t))
10344 (add-after 'fix-paths 'make-qt-deterministic
10345 (lambda _
10346 (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1")
10347 #t))
10348 (replace 'configure
10349 (lambda _
10350 (invoke "qmake")
10351 #t))
10352 (replace 'install
10353 (lambda* (#:key outputs #:allow-other-keys)
10354 (let ((out (assoc-ref outputs "out")))
10355 (install-file "release/chessx" (string-append out "/bin"))
10356 (install-file "unix/chessx.desktop"
10357 (string-append out "/share/applications")))
10358 #t)))))
10359 (synopsis "Chess game database")
10360 (description
10361 "ChessX is a chess database. With ChessX you can operate on your
10362 collection of chess games in many ways: browse, edit, add, organize, analyze,
10363 etc. You can also play games on FICS or against an engine.")
10364 (home-page "http://chessx.sourceforge.net/")
10365 (license license:gpl2+)))
10366
10367 (define-public stockfish
10368 (package
10369 (name "stockfish")
10370 (version "11")
10371 (source
10372 (origin
10373 (method git-fetch)
10374 (uri (git-reference
10375 (url "https://github.com/official-stockfish/Stockfish.git")
10376 (commit (string-append "sf_" version))))
10377 (file-name (git-file-name name version))
10378 (sha256
10379 (base32 "12mppipinymj8s1ipq9a7is453vncly49c32ym9wvyklsgyxfzlk"))))
10380 (build-system gnu-build-system)
10381 (arguments
10382 `(#:tests? #f
10383 #:make-flags (list "-C" "src"
10384 "build"
10385 (string-append "PREFIX="
10386 (assoc-ref %outputs "out"))
10387 (string-append "ARCH="
10388 ,(match (%current-system)
10389 ("x86_64-linux" "x86-64")
10390 ("i686-linux" "x86-32")
10391 ("aarch64-linux" "general-64")
10392 ("armhf-linux" "armv7")
10393 ("mips64el-linux" "general-64")
10394 (_ "general-32"))))
10395 #:phases (modify-phases %standard-phases
10396 (delete 'configure))))
10397 (synopsis "Strong chess engine")
10398 (description
10399 "Stockfish is a very strong chess engines. It is much stronger than the
10400 best human chess grandmasters. It can be used with UCI-compatible GUIs like
10401 ChessX.")
10402 (home-page "https://stockfishchess.org/")
10403 (license license:gpl3+)))
10404
10405 (define-public barrage
10406 (package
10407 (name "barrage")
10408 (version "1.0.5")
10409 (source
10410 (origin
10411 (method url-fetch)
10412 (uri (string-append "mirror://sourceforge/lgames/barrage/"
10413 "barrage-" version ".tar.gz"))
10414 (sha256
10415 (base32 "0139wxyrir10cbkvkjn548xgmp84wax8mfwk80yxbxlcdamrg257"))))
10416 (build-system gnu-build-system)
10417 (inputs
10418 `(("hicolor-icon-theme" ,hicolor-icon-theme)
10419 ("sdl" ,sdl)
10420 ("sdl-mixer" ,sdl-mixer)))
10421 (arguments
10422 `(#:configure-flags
10423 (list
10424 (string-append "CFLAGS="
10425 "-I" (assoc-ref %build-inputs "sdl-mixer")
10426 "/include/SDL"))))
10427 (home-page "http://lgames.sourceforge.net/Barrage/")
10428 (synopsis "Violent point-and-click shooting game with nice effects")
10429 (description
10430 "Barrage is a rather destructive action game that puts you on a shooting
10431 range with the objective to hit as many dummy targets as possible within
10432 3 minutes. You control a gun that may either fire small or large grenades at
10433 soldiers, jeeps and tanks. The gameplay is simple but it is not that easy to
10434 get high scores.")
10435 (license license:gpl2+)))
10436
10437 (define-public 7kaa
10438 (package
10439 (name "7kaa")
10440 (version "2.15.3")
10441 (source
10442 (origin
10443 (method url-fetch)
10444 (uri (string-append "https://github.com/the3dfxdude/7kaa/"
10445 "releases/download/v" version "/"
10446 "7kaa-" version ".tar.xz"))
10447 (sha256
10448 (base32 "0blj47mcsfw1sn3465j6iham8m6ki07iggnq4q8nnaqnryx710jc"))))
10449 (build-system gnu-build-system)
10450 (native-inputs
10451 `(("gettext" ,gettext-minimal)
10452 ("pkg-config" ,pkg-config)))
10453 (inputs
10454 `(("curl" ,curl)
10455 ("enet" ,enet)
10456 ("openal" ,openal)
10457 ("sdl2" ,sdl2)))
10458 (home-page "https://7kfans.com/")
10459 (synopsis "Seven Kingdoms Ancient Adversaries: real-time strategy game")
10460 (description
10461 "Seven Kingdoms, designed by Trevor Chan, brings a blend of Real-Time
10462 Strategy with the addition of trade, diplomacy, and espionage. The game
10463 enables players to compete against up to six other kingdoms allowing players
10464 to conquer opponents by defeating them in war (with troops or machines),
10465 capturing their buildings with spies, or offering opponents money for their
10466 kingdom.")
10467 (license license:gpl2+)))
10468
10469 (define-public neverball
10470 ;; Git version is 6-years younger than latest release.
10471 (let ((commit "760a25d32a5fb0661b99426d4ddcb9ac9f3d1644")
10472 (revision "1"))
10473 (package
10474 (name "neverball")
10475 (version (git-version "1.6.0" revision commit))
10476 (source
10477 (origin
10478 (method git-fetch)
10479 (uri (git-reference
10480 (url "https://github.com/Neverball/neverball.git")
10481 (commit commit)))
10482 (sha256
10483 (base32
10484 "0bwh67df3lyf33bv710y25l3frjdd34j9b7gsjadwxviz6r1vpj5"))
10485 (file-name (git-file-name name version))
10486 (modules '((guix build utils)))
10487 (snippet
10488 '(begin
10489 ;; Octocat seems to be non-free. Oddly, Debian doesn't strip it.
10490 (delete-file-recursively "data/ball/octocat")
10491 #t))))
10492 (build-system copy-build-system)
10493 (arguments
10494 `(#:install-plan
10495 '(("neverball" "bin/")
10496 ("neverputt" "bin/")
10497 ("mapc" "bin/")
10498 ("data" "share/games/neverball/")
10499 ("locale" "share/")
10500 ("dist/" "share/games/neverball" #:include ("neverball_replay.png"
10501 "neverlogos.svg"
10502 "svg readme.txt"))
10503 ("dist/" "share/applications" #:include ("neverball.desktop"
10504 "neverputt.desktop"))
10505 ("dist/neverball_16.png"
10506 "/share/icons/hicolor/16x16/apps/neverball.png")
10507 ("dist/neverball_24.png"
10508 "/share/icons/hicolor/24x24/apps/neverball.png")
10509 ("dist/neverball_32.png"
10510 "/share/icons/hicolor/32x32/apps/neverball.png")
10511 ("dist/neverball_48.png"
10512 "/share/icons/hicolor/48x48/apps/neverball.png")
10513 ("dist/neverball_64.png"
10514 "/share/icons/hicolor/64x64/apps/neverball.png")
10515 ("dist/neverball_128.png"
10516 "/share/icons/hicolor/128x128/apps/neverball.png")
10517 ("dist/neverball_256.png"
10518 "/share/icons/hicolor/256x256/apps/neverball.png")
10519 ("dist/neverball_512.png"
10520 "/share/icons/hicolor/512x512/apps/neverball.png")
10521 ("dist/neverputt_16.png"
10522 "/share/icons/hicolor/16x16/apps/neverputt.png")
10523 ("dist/neverputt_24.png"
10524 "/share/icons/hicolor/24x24/apps/neverputt.png")
10525 ("dist/neverputt_32.png"
10526 "/share/icons/hicolor/32x32/apps/neverputt.png")
10527 ("dist/neverputt_48.png"
10528 "/share/icons/hicolor/48x48/apps/neverputt.png")
10529 ("dist/neverputt_64.png"
10530 "/share/icons/hicolor/64x64/apps/neverputt.png")
10531 ("dist/neverputt_128.png"
10532 "/share/icons/hicolor/128x128/apps/neverputt.png")
10533 ("dist/neverputt_256.png"
10534 "/share/icons/hicolor/256x256/apps/neverputt.png")
10535 ("dist/neverputt_512.png"
10536 "/share/icons/hicolor/512x512/apps/neverputt.png")
10537 ("dist/" "share/man/man1" #:include ("mapc.1"))
10538 ("dist/" "share/man/man6" #:include ("neverball.6" "neverputt.6"))
10539 ("doc/" "share/doc/neverball")
10540 ("README.md" "share/doc/neverball/"))
10541 #:phases
10542 (modify-phases %standard-phases
10543 (add-before 'install 'build
10544 (lambda* (#:key inputs outputs #:allow-other-keys)
10545 (let* ((out (assoc-ref outputs "out"))
10546 (sdl (assoc-ref inputs "sdl")))
10547 (invoke "make" "-j" (number->string (parallel-job-count))
10548 "--environment-overrides"
10549 "CC=gcc" "BUILD=release"
10550 (string-append "DATADIR="
10551 out
10552 "/share/games/neverball/data")
10553 (string-append "LOCALEDIR=" out "/share/locale")
10554 (string-append "SDL_CPPFLAGS=-I"
10555 sdl
10556 "/include/SDL2/")))
10557 #t))
10558 (add-after 'install 'fix-some-broken-fonts
10559 (lambda* (#:key outputs #:allow-other-keys)
10560 (let* ((out (assoc-ref outputs "out")))
10561 (wrap-program (string-append out "/bin/neverball")
10562 `("LANG" = ("en_US.utf8")))
10563 (wrap-program (string-append out "/bin/neverputt")
10564 `("LANG" = ("en_US.utf8"))))
10565 #t)))))
10566 (native-inputs
10567 `(("gettext" ,gettext-minimal))) ;for msgfmt
10568 (inputs
10569 `(("libjpeg" ,libjpeg)
10570 ("libpng" ,libpng)
10571 ("libvorbis" ,libvorbis)
10572 ("physfs" ,physfs)
10573 ("sdl" ,(sdl-union (list sdl2 sdl2-ttf)))))
10574 (home-page "https://neverball.org/")
10575 (synopsis "3D floor-tilting game")
10576 (description
10577 "In the grand tradition of Marble Madness and Super Monkey Ball,
10578 Neverball has you guide a rolling ball through dangerous territory. Balance
10579 on narrow bridges, navigate mazes, ride moving platforms, and dodge pushers
10580 and shovers to get to the goal. Race against the clock to collect coins to
10581 earn extra balls. Also included is Neverputt, which is a 3D miniature golf
10582 game.") ;thanks to Debian for description
10583 (license license:gpl2+))))