gnu: sky: Fix synopsis.
[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 Nikita <nikita@n0.is>
19 ;;; Copyright © 2016 Albin Söderqvist <albin@fripost.org>
20 ;;; Copyright © 2016, 2017, 2018, 2019, 2020 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, 2020 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, 2020 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, 2020 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, 2020 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 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
55 ;;; Copyright © 2020 Trevor Hass <thass@okstate.edu>
56 ;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at>
57 ;;;
58 ;;; This file is part of GNU Guix.
59 ;;;
60 ;;; GNU Guix is free software; you can redistribute it and/or modify it
61 ;;; under the terms of the GNU General Public License as published by
62 ;;; the Free Software Foundation; either version 3 of the License, or (at
63 ;;; your option) any later version.
64 ;;;
65 ;;; GNU Guix is distributed in the hope that it will be useful, but
66 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
67 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
68 ;;; GNU General Public License for more details.
69 ;;;
70 ;;; You should have received a copy of the GNU General Public License
71 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
72
73 (define-module (gnu packages games)
74 #:use-module (ice-9 match)
75 #:use-module ((guix licenses) #:prefix license:)
76 #:use-module (guix utils)
77 #:use-module (guix packages)
78 #:use-module (guix download)
79 #:use-module (guix git-download)
80 #:use-module (guix svn-download)
81 #:use-module (guix gexp)
82 #:use-module (gnu packages)
83 #:use-module (gnu packages adns)
84 #:use-module (gnu packages algebra)
85 #:use-module (gnu packages autotools)
86 #:use-module (gnu packages backup)
87 #:use-module (gnu packages base)
88 #:use-module (gnu packages build-tools)
89 #:use-module (gnu packages admin)
90 #:use-module (gnu packages audio)
91 #:use-module (gnu packages avahi)
92 #:use-module (gnu packages assembly)
93 #:use-module (gnu packages bash)
94 #:use-module (gnu packages bison)
95 #:use-module (gnu packages boost)
96 #:use-module (gnu packages check)
97 #:use-module (gnu packages cmake)
98 #:use-module (gnu packages compression)
99 #:use-module (gnu packages curl)
100 #:use-module (gnu packages crypto)
101 #:use-module (gnu packages cyrus-sasl)
102 #:use-module (gnu packages documentation)
103 #:use-module (gnu packages docbook)
104 #:use-module (gnu packages emulators)
105 #:use-module (gnu packages flex)
106 #:use-module (gnu packages fltk)
107 #:use-module (gnu packages fonts)
108 #:use-module (gnu packages fontutils)
109 #:use-module (gnu packages freedesktop)
110 #:use-module (gnu packages fribidi)
111 #:use-module (gnu packages game-development)
112 #:use-module (gnu packages gcc)
113 #:use-module (gnu packages gettext)
114 #:use-module (gnu packages ghostscript)
115 #:use-module (gnu packages gimp)
116 #:use-module (gnu packages gl)
117 #:use-module (gnu packages glib)
118 #:use-module (gnu packages gnome)
119 #:use-module (gnu packages gnupg)
120 #:use-module (gnu packages gnuzilla)
121 #:use-module (gnu packages gperf)
122 #:use-module (gnu packages graphics)
123 #:use-module (gnu packages gsasl)
124 #:use-module (gnu packages gstreamer)
125 #:use-module (gnu packages gtk)
126 #:use-module (gnu packages guile)
127 #:use-module (gnu packages haskell)
128 #:use-module (gnu packages haskell-crypto)
129 #:use-module (gnu packages haskell-xyz)
130 #:use-module (gnu packages icu4c)
131 #:use-module (gnu packages image)
132 #:use-module (gnu packages imagemagick)
133 #:use-module (gnu packages kde)
134 #:use-module (gnu packages kde-frameworks)
135 #:use-module (gnu packages less)
136 #:use-module (gnu packages libcanberra)
137 #:use-module (gnu packages libedit)
138 #:use-module (gnu packages libunwind)
139 #:use-module (gnu packages linux)
140 #:use-module (gnu packages llvm)
141 #:use-module (gnu packages lua)
142 #:use-module (gnu packages man)
143 #:use-module (gnu packages maths)
144 #:use-module (gnu packages messaging)
145 #:use-module (gnu packages mp3)
146 #:use-module (gnu packages music)
147 #:use-module (gnu packages multiprecision)
148 #:use-module (gnu packages ncurses)
149 #:use-module (gnu packages netpbm)
150 #:use-module (gnu packages networking)
151 #:use-module (gnu packages ocaml)
152 #:use-module (gnu packages opencl)
153 #:use-module (gnu packages pcre)
154 #:use-module (gnu packages perl)
155 #:use-module (gnu packages perl-check)
156 #:use-module (gnu packages perl-compression)
157 #:use-module (gnu packages pkg-config)
158 #:use-module (gnu packages protobuf)
159 #:use-module (gnu packages pulseaudio)
160 #:use-module (gnu packages python)
161 #:use-module (gnu packages python-xyz)
162 #:use-module (gnu packages qt)
163 #:use-module (gnu packages readline)
164 #:use-module (gnu packages ruby)
165 #:use-module (gnu packages shells)
166 #:use-module (gnu packages sdl)
167 #:use-module (gnu packages serialization)
168 #:use-module (gnu packages sqlite)
169 #:use-module (gnu packages squirrel)
170 #:use-module (gnu packages swig)
171 #:use-module (gnu packages tcl)
172 #:use-module (gnu packages terminals)
173 #:use-module (gnu packages texinfo)
174 #:use-module (gnu packages textutils)
175 #:use-module (gnu packages tls)
176 #:use-module (gnu packages upnp)
177 #:use-module (gnu packages video)
178 #:use-module (gnu packages vulkan)
179 #:use-module (gnu packages web)
180 #:use-module (gnu packages wget)
181 #:use-module (gnu packages wxwidgets)
182 #:use-module (gnu packages xdisorg)
183 #:use-module (gnu packages xorg)
184 #:use-module (gnu packages xiph)
185 #:use-module (gnu packages xml)
186 #:use-module (guix build-system copy)
187 #:use-module (guix build-system cmake)
188 #:use-module (guix build-system glib-or-gtk)
189 #:use-module (guix build-system gnu)
190 #:use-module (guix build-system go)
191 #:use-module (guix build-system meson)
192 #:use-module (guix build-system perl)
193 #:use-module (guix build-system python)
194 #:use-module (guix build-system qt)
195 #:use-module (guix build-system scons)
196 #:use-module (guix build-system trivial)
197 #:use-module ((srfi srfi-1) #:hide (zip))
198 #:use-module (srfi srfi-26))
199
200 (define-public abe
201 (package
202 (name "abe")
203 (version "1.1")
204 (source
205 (origin
206 (method url-fetch)
207 (uri (string-append "mirror://sourceforge/abe/abe/abe-" version
208 "/abe-" version ".tar.gz"))
209 (sha256
210 (base32 "1xvpnq1y6y48fn3pvn2lk0h1ilmalv7nb7awpid1g4jcq1sfmi6z"))))
211 (build-system gnu-build-system)
212 (arguments
213 `(#:configure-flags
214 (list (string-append "--with-data-dir="
215 (assoc-ref %outputs "out")
216 "/share/abe"))
217 #:phases
218 (modify-phases %standard-phases
219 (replace 'bootstrap
220 (lambda _ (invoke "sh" "autogen.sh")))
221 (add-before 'build 'set-SDL
222 ;; Set correct environment for SDL.
223 (lambda* (#:key inputs #:allow-other-keys)
224 (setenv "CPATH"
225 (string-append
226 (assoc-ref inputs "sdl") "/include/SDL:"
227 (or (getenv "CPATH") "")))
228 #t))
229 (add-after 'install 'finalize-install
230 (lambda* (#:key outputs #:allow-other-keys)
231 (let ((share (string-append (assoc-ref outputs "out") "/share")))
232 ;; Installation script does not copy game data files.
233 (let ((data (string-append share "/abe")))
234 (for-each (lambda (dir)
235 (let ((target (string-append data "/" dir)))
236 (mkdir-p target)
237 (copy-recursively dir target)))
238 '("images" "maps" "sounds")))
239 ;; Create desktop file.
240 (let ((apps (string-append share "/applications")))
241 (mkdir-p apps)
242 (make-desktop-entry-file
243 (string-append apps "/abe.desktop")
244 #:name "Abe's Amazing Adventure"
245 #:exec ,name
246 #:categories '("AdventureGame" "Game")
247 #:keywords
248 '("side-scrolling" "adventure" "pyramid" "singleplayer")
249 #:comment
250 '(("de" "Ein sich seitwärts bewegendes Abenteuerspiel")
251 (#f "Side-scrolling game")))))
252 #t)))))
253 (native-inputs
254 `(("autoconf" ,autoconf)
255 ("automake" ,automake)))
256 (inputs
257 `(("libxi" ,libxi)
258 ("libxmu" ,libxmu)
259 ("libxt" ,libxt)
260 ("sdl" ,(sdl-union (list sdl sdl-mixer)))))
261 (home-page "http://abe.sourceforge.net")
262 (synopsis "Scrolling, platform-jumping, ancient pyramid exploring game")
263 (description
264 "Abe's Amazing Adventure is a scrolling,
265 platform-jumping, key-collecting, ancient pyramid exploring game, vaguely in
266 the style of similar games for the Commodore+4.")
267 (license license:gpl2+)))
268
269 ;; Data package for adanaxisgpl.
270 (define adanaxis-mush
271 (let ((version "1.1.0"))
272 (origin
273 (method url-fetch)
274 (uri (string-append "http://www.mushware.com/files/adanaxis-mush-"
275 version ".tar.gz"))
276 (sha256
277 (base32 "0mk9ibis5nkdcalcg1lkgnsdxxbw4g5w2i3icjzy667hqirsng03")))))
278
279 (define-public adanaxisgpl
280 (package
281 (name "adanaxisgpl")
282 (version "1.2.5")
283 (source
284 (origin
285 (method url-fetch)
286 (uri (string-append "http://www.mushware.com/files/adanaxisgpl-"
287 version ".tar.gz"))
288 (sha256
289 (base32 "0jkn637jaabvlhd6hpvzb57vvjph94l6fbf7qxbjlw9zpr19dw1f"))
290 (modules '((guix build utils)))
291 (snippet
292 '(begin
293 ;; Necessary for building with gcc >=4.7.
294 (substitute* "src/Mushcore/MushcoreSingleton.h"
295 (("SingletonPtrSet\\(new SingletonType\\);")
296 "MushcoreSingleton::SingletonPtrSet(new SingletonType);"))
297 ;; Avoid an "invalid conversion from const char* to char*" error.
298 (substitute* "src/Platform/X11/PlatformMiscUtils.cpp"
299 (("char \\*end, \\*result;")
300 (string-append "const char *end;"
301 "\n"
302 "char *result;")))
303 #t))))
304 (build-system gnu-build-system)
305 (arguments
306 `(#:tests? #f ; no check target
307 #:phases
308 (modify-phases %standard-phases
309 (add-after 'install 'install-data
310 (lambda* (#:key inputs outputs #:allow-other-keys)
311 (let ((data (assoc-ref inputs "adanaxis-mush"))
312 (share (string-append (assoc-ref outputs "out")
313 "/share/" ,name "-" ,version)))
314 (mkdir-p share)
315 (invoke "tar" "xvf" data "-C" share)))))))
316 (native-inputs
317 `(("adanaxis-mush" ,adanaxis-mush))) ; game data
318 (inputs
319 `(("expat" ,expat)
320 ("freeglut" ,freeglut)
321 ("glu" ,glu)
322 ("libjpeg" ,libjpeg-turbo)
323 ("libogg" ,libogg)
324 ("libtiff" ,libtiff)
325 ("libvorbis" ,libvorbis)
326 ("libx11" ,libx11)
327 ("libxext" ,libxext)
328 ("pcre" ,pcre)
329 ("sdl" ,sdl)
330 ("sdl-mixer" ,sdl-mixer)))
331 (home-page "https://www.mushware.com")
332 (synopsis "Action game in four spatial dimensions")
333 (description
334 "Adanaxis is a fast-moving first person shooter set in deep space, where
335 the fundamentals of space itself are changed. By adding another dimension to
336 space this game provides an environment with movement in four directions and
337 six planes of rotation. Initially the game explains the 4D control system via
338 a graphical sequence, before moving on to 30 levels of gameplay with numerous
339 enemy, ally, weapon and mission types. Features include simulated 4D texturing,
340 mouse and joystick control, and original music.")
341 (license license:gpl2)))
342
343 (define-public alex4
344 (package
345 (name "alex4")
346 (version "1.2.1")
347 (source
348 (origin
349 (method git-fetch)
350 (uri (git-reference
351 (url "https://github.com/carstene1ns/alex4")
352 (commit version)))
353 (file-name (git-file-name name version))
354 (sha256
355 (base32 "098wy72mh4lsvq3gm0rhamjssf9l1hp6hhkpzrv7klpb97cwwc3h"))))
356 (build-system gnu-build-system)
357 (arguments
358 `(#:tests? #f ; no check target
359 #:make-flags
360 (list "CC=gcc"
361 "CFLAGS=-D_FILE_OFFSET_BITS=64"
362 (string-append "PREFIX=" (assoc-ref %outputs "out")))
363 #:phases
364 (modify-phases %standard-phases
365 (delete 'configure) ; no configure script
366 (add-after 'install 'install-data
367 (lambda* (#:key outputs #:allow-other-keys)
368 (let ((share (string-append (assoc-ref outputs "out")
369 "/share/" ,name)))
370 (install-file "alex4.ini" share)
371 #t))))))
372 (inputs
373 `(("allegro" ,allegro-4)
374 ("dumb" ,dumb-allegro4)))
375 (home-page "http://allegator.sourceforge.net/")
376 (synopsis "Retro platform game")
377 (description
378 "Guide Alex the Allegator through the jungle in order to save his
379 girlfriend Lola from evil humans who want to make a pair of shoes out of her.
380 Plenty of classic platforming in four nice colors guaranteed!
381
382 The game includes a built-in editor so you can design and share your own maps.")
383 (license license:gpl2+)))
384
385 (define-public armagetronad
386 (package
387 (name "armagetronad")
388 (version "0.2.9.0.1")
389 (source (origin
390 (method url-fetch)
391 (uri (string-append "mirror://sourceforge/armagetronad/stable/"
392 version "/armagetronad-" version ".tbz"))
393 (sha256
394 (base32
395 "19rfhlg4gp0r7k1j8v4iw20325ciy156nmzax4xikmw22c6nmxcz"))))
396 (build-system gnu-build-system)
397 (native-inputs
398 `(("pkg-config" ,pkg-config)))
399 (inputs
400 `(("libxml2" ,libxml2)
401 ("sdl" ,sdl)
402 ("sdl-image" ,sdl-image)
403 ("freeglut" ,freeglut)
404 ("libpng" ,libpng)
405 ("libjpeg-turbo" ,libjpeg-turbo)))
406 (home-page "http://www.armagetronad.org")
407 (synopsis "Tron clone in 3D")
408 (description "Armagetron Advanced is a multiplayer game in 3d that
409 attempts to emulate and expand on the lightcycle sequence from the movie Tron.
410 It's an old school arcade game slung into the 21st century. Highlights
411 include a customizable playing arena, HUD, unique graphics, and AI bots. For
412 the more advanced player there are new game modes and a wide variety of
413 physics settings to tweak as well.")
414 (license license:gpl2+)))
415
416 (define-public astromenace
417 (package
418 (name "astromenace")
419 (version "1.4.1")
420 (source
421 (origin
422 (method git-fetch)
423 (uri (git-reference
424 (url "https://github.com/viewizard/astromenace")
425 (commit (string-append "v" version))))
426 (file-name (git-file-name name version))
427 (sha256
428 (base32 "1ad6l887jxqv8xspwc2rvy8ym9sdlmkqdqhsh0pi076kjarxsyws"))))
429 (build-system cmake-build-system)
430 (arguments
431 `(#:tests? #f ;no test
432 #:configure-flags (list (string-append "-DDATADIR="
433 (assoc-ref %outputs "out")
434 "/share/astromenace"))
435 #:phases
436 (modify-phases %standard-phases
437 (replace 'install
438 ;; Upstream provides no install phase.
439 (lambda* (#:key inputs outputs #:allow-other-keys)
440 (let* ((out (assoc-ref outputs "out"))
441 (bin (string-append out "/bin"))
442 (share (string-append out "/share"))
443 (apps (string-append share "/applications"))
444 (data (string-append share "/astromenace"))
445 (icons (string-append share "/icons/hicolor/64x64/apps")))
446 (install-file "astromenace" bin)
447 (install-file "gamedata.vfs" data)
448 (let ((source (assoc-ref inputs "source")))
449 (with-directory-excursion (string-append source "/share")
450 (install-file "astromenace.desktop" apps)
451 (mkdir-p icons)
452 (copy-file "astromenace_64.png"
453 (string-append icons "/astromenace.png")))))
454 #t)))))
455 (inputs
456 `(("freealut" ,freealut)
457 ("freetype" ,freetype)
458 ("glu" ,glu)
459 ("libogg" ,libogg)
460 ("libvorbis" ,libvorbis)
461 ("openal" ,openal)
462 ("sdl2" ,sdl2)))
463 (home-page "https://www.viewizard.com/")
464 (synopsis "3D space shooter with spaceship upgrade possibilities")
465 (description
466 "Space is a vast area, an unbounded territory where it seems there is
467 a room for everybody, but reversal of fortune put things differently. The
468 hordes of hostile creatures crawled out from the dark corners of the universe,
469 craving to conquer your homeland. Their force is compelling, their legions
470 are interminable. However, humans didn't give up without a final showdown and
471 put their best pilot to fight back. These malicious invaders chose the wrong
472 galaxy to conquer and you are to prove it! Go ahead and make alien aggressors
473 regret their insolence.")
474 ;; Game is released under GPL3+ terms. Artwork is subject to CC
475 ;; BY-SA 4.0, and fonts to OFL1.1.
476 (license (list license:gpl3+ license:cc-by-sa4.0 license:silofl1.1))))
477
478 (define-public bastet
479 (package
480 (name "bastet")
481 (version "0.43.2")
482 (source
483 (origin
484 (method git-fetch)
485 (uri (git-reference
486 (url "https://github.com/fph/bastet")
487 (commit version)))
488 (file-name (git-file-name name version))
489 (sha256
490 (base32 "09kamxapm9jw9przpsgjfg33n9k94bccv65w95dakj0br33a75wn"))
491 (patches
492 (search-patches "bastet-change-source-of-unordered_set.patch"))))
493 (build-system gnu-build-system)
494 (arguments
495 `(#:make-flags
496 (list (string-append "CXXFLAGS=-I"
497 (assoc-ref %build-inputs "boost") "/include"))
498 #:phases
499 (modify-phases %standard-phases
500 (delete 'configure) ; no configure script
501 (replace 'check
502 ;; The 'Test' target builds the tests, but doesn't actually run them.
503 (lambda* (#:key make-flags #:allow-other-keys)
504 (apply invoke "make" "Test" make-flags)
505 (setenv "HOME" ".")
506 (invoke "./Test")))
507 (replace 'install
508 (lambda* (#:key outputs #:allow-other-keys)
509 (let* ((out (assoc-ref outputs "out"))
510 (share (string-append out "/share"))
511 (hicolor (string-append share "/icons/hicolor")))
512 (install-file "bastet"
513 (string-append out "/bin"))
514
515 (install-file "bastet.desktop"
516 (string-append share "/applications"))
517 (install-file "bastet.svg"
518 (string-append hicolor "/scalable/apps"))
519
520 (install-file "bastet.appdata.xml"
521 (string-append share "/appdata"))
522
523 (install-file "bastet.6"
524 (string-append out "/share/man/man6"))
525 #t))))))
526 (native-inputs
527 `(("hicolor-icon-theme" ,hicolor-icon-theme)))
528 (inputs
529 `(("boost" ,boost)
530 ("ncurses" ,ncurses)))
531 (home-page "https://fph.altervista.org/prog/bastet.html")
532 (synopsis "Antagonistic Tetris-style falling brick game for text terminals")
533 (description
534 "Bastet (short for Bastard Tetris) is a simple ncurses-based falling brick
535 game. Unlike normal Tetris, Bastet does not choose the next brick at random.
536 Instead, it uses a special algorithm to choose the worst brick possible.
537
538 Playing bastet can be a painful experience, especially if you usually make
539 canyons and wait for the long I-shaped block to clear four rows at a time.")
540 (license license:gpl3+)))
541
542 (define-public blobwars
543 (package
544 (name "blobwars")
545 (version "2.00")
546 (source
547 (origin
548 (method url-fetch)
549 (uri (string-append "mirror://sourceforge/blobwars/"
550 "blobwars-" version ".tar.gz"))
551 (sha256
552 (base32 "16aagvkx6azf75gm5kaa94bh5npydvhqp3fvdqyfsanzdjgjf1n4"))))
553 (build-system gnu-build-system)
554 (arguments
555 `(#:tests? #f ;no test
556 #:make-flags
557 (let ((out (assoc-ref %outputs "out")))
558 (list (string-append "PREFIX=" out)
559 (string-append "BINDIR=" out "/bin/")
560 "USEPAK=1"
561 "RELEASE=1"))
562 #:phases
563 (modify-phases %standard-phases
564 (add-after 'unpack 'werror-begone
565 (lambda _
566 (substitute* "Makefile" (("-Werror") ""))
567 #t))
568 (delete 'configure)))) ;no configure script
569 (native-inputs
570 `(("gettext" ,gettext-minimal)
571 ("pkg-config" ,pkg-config)))
572 (inputs
573 `(("hicolor-icon-theme" ,hicolor-icon-theme)
574 ("sdl" ,(sdl-union (list sdl2
575 sdl2-image
576 sdl2-mixer
577 sdl2-ttf
578 sdl2-net)))))
579 (home-page "https://sourceforge.net/projects/blobwars/")
580 (synopsis "Platform action game featuring a blob with a lot of weapons")
581 (description "Blobwars: Metal Blob Solid is a 2D platform game, the first
582 in the Blobwars series. You take on the role of a fearless Blob agent. Your
583 mission is to infiltrate various enemy bases and rescue as many MIAs as
584 possible, while battling many vicious aliens.")
585 (license (list license:gpl2 ; For code and graphics
586 license:cc0 ; Music and sounds have specific licenses
587 license:cc-by3.0 ; see /doc/readme
588 license:cc-by-sa3.0
589 license:lgpl2.1+
590 license:bsd-2))))
591
592 (define-public bzflag
593 (package
594 (name "bzflag")
595 (version "2.4.20")
596 (source
597 (origin
598 (method url-fetch)
599 (uri (string-append "https://download.bzflag.org/bzflag/source/"
600 version "/bzflag-" version ".tar.bz2"))
601 (sha256
602 (base32 "16brxqmfiyz4j4lb8ihzjcbwqmpsms6vm3ijbp34lnw0blbwdjb2"))))
603 (build-system gnu-build-system)
604 (arguments
605 `(#:phases
606 (modify-phases %standard-phases
607 (add-after 'install 'install-desktop-file-and-icons
608 (lambda* (#:key outputs #:allow-other-keys)
609 (let* ((share (string-append (assoc-ref outputs "out") "/share"))
610 (data (string-append share "/bzflag"))
611 (hicolor (string-append share "/icons/hicolor"))
612 (applications (string-append share "/applications")))
613 ;; Move desktop file.
614 (install-file (string-append data "/bzflag.desktop")
615 applications)
616 ;; Install icons.
617 (for-each (lambda (size)
618 (let* ((dim (string-append size "x" size))
619 (dir (string-append hicolor "/" dim "/apps")))
620 (mkdir-p dir)
621 (copy-file
622 (string-append data "/bzflag-" dim ".png")
623 (string-append dir "/bzflag.png"))))
624 '("48" "256")))
625 #t)))))
626 (native-inputs
627 `(("pkg-config" ,pkg-config)))
628 (inputs
629 `(("c-ares" ,c-ares)
630 ("curl" ,curl)
631 ("glew" ,glew)
632 ("glu" ,glu)
633 ("sdl2" ,sdl2)
634 ("zlib" ,zlib)))
635 (home-page "https://www.bzflag.org/")
636 (synopsis "3D first person tank battle game")
637 (description
638 "BZFlag is a 3D multi-player multiplatform tank battle game that
639 allows users to play against each other in a network environment.
640 There are five teams: red, green, blue, purple and rogue (rogue tanks
641 are black). Destroying a player on another team scores a win, while
642 being destroyed or destroying a teammate scores a loss. Rogues have
643 no teammates (not even other rogues), so they cannot shoot teammates
644 and they do not have a team score.
645
646 There are two main styles of play: capture-the-flag and free-for-all.
647 In capture-the-flag, each team (except rogues) has a team base and
648 each team with at least one player has a team flag. The object is to
649 capture an enemy team's flag by bringing it to your team's base. This
650 destroys every player on the captured team, subtracts one from that
651 team's score, and adds one to your team's score. In free-for-all,
652 there are no team flags or team bases. The object is simply to get as
653 high a score as possible.")
654 ;; The game is dual-licensed.
655 (license (list license:lgpl2.1 license:mpl2.0))))
656
657 (define-public cataclysm-dda
658 (package
659 (name "cataclysm-dda")
660 (version "0.E-2")
661 (source
662 (origin
663 (method git-fetch)
664 (uri (git-reference
665 (url "https://github.com/CleverRaven/Cataclysm-DDA")
666 (commit version)))
667 (sha256
668 (base32 "15l6w6lxays7qmsv0ci2ry53asb9an9dh7l7fc13256k085qcg68"))
669 (file-name (git-file-name name version))))
670 (build-system gnu-build-system)
671 (arguments
672 '(#:make-flags
673 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
674 "USE_HOME_DIR=1" "DYNAMIC_LINKING=1" "RELEASE=1"
675 "LOCALIZE=1" "LANGUAGES=all")
676 #:phases
677 (modify-phases %standard-phases
678 (delete 'configure)
679 (add-after 'build 'build-tiles
680 (lambda* (#:key make-flags outputs #:allow-other-keys)
681 ;; Change prefix directory and enable tile graphics and sound.
682 (apply invoke "make" "TILES=1" "SOUND=1"
683 (string-append "PREFIX="
684 (assoc-ref outputs "tiles"))
685 (cdr make-flags))))
686 (add-after 'install 'install-tiles
687 (lambda* (#:key make-flags outputs #:allow-other-keys)
688 (apply invoke "make" "install" "TILES=1" "SOUND=1"
689 (string-append "PREFIX="
690 (assoc-ref outputs "tiles"))
691 (cdr make-flags)))))
692 ;; TODO: Add libtap++ from https://github.com/cbab/libtappp as a native
693 ;; input in order to support tests.
694 #:tests? #f))
695 (outputs '("out"
696 "tiles")) ;for tile graphics and sound support
697 (native-inputs
698 `(("gettext" ,gettext-minimal)
699 ("pkg-config" ,pkg-config)))
700 (inputs
701 `(("freetype" ,freetype)
702 ("libogg" ,libogg)
703 ("libvorbis" ,libvorbis)
704 ("ncurses" ,ncurses)
705 ("sdl2" ,sdl2)
706 ("sdl2-image" ,sdl2-image)
707 ("sdl2-ttf" ,sdl2-ttf)
708 ("sdl2-mixer" ,sdl2-mixer)))
709 (home-page "https://cataclysmdda.org/")
710 (synopsis "Survival horror roguelike video game")
711 (description
712 "Cataclysm: Dark Days Ahead (or \"DDA\" for short) is a roguelike set
713 in a post-apocalyptic world. Struggle to survive in a harsh, persistent,
714 procedurally generated world. Scavenge the remnants of a dead civilization
715 for food, equipment, or, if you are lucky, a vehicle with a full tank of gas
716 to get you out of Dodge. Fight to defeat or escape from a wide variety of
717 powerful monstrosities, from zombies to giant insects to killer robots and
718 things far stranger and deadlier, and against the others like yourself, that
719 want what you have.")
720 (license license:cc-by-sa3.0)))
721
722 (define-public corsix-th
723 (package
724 (name "corsix-th")
725 (version "0.64")
726 (source
727 (origin
728 (method git-fetch)
729 (uri (git-reference
730 (url "https://github.com/CorsixTH/CorsixTH")
731 (commit (string-append "v" version))))
732 (file-name (git-file-name name version))
733 (sha256
734 (base32 "0chh9cv2kdc39sr0x8hclcyzd8dz2y6grgagqzkvr7j570wa5cqh"))))
735 (build-system cmake-build-system)
736 (arguments
737 `(#:phases
738 (modify-phases %standard-phases
739 (add-after 'install 'wrap-binary
740 (lambda _
741 ;; Set Lua module paths and default MIDI soundfont on startup.
742 (let* ((out (assoc-ref %outputs "out"))
743 (fluid (assoc-ref %build-inputs "fluid-3"))
744 (lua-version ,(version-major+minor (package-version lua)))
745 (lua-cpath
746 (map (lambda (lib)
747 (string-append
748 (assoc-ref %build-inputs (string-append "lua-" lib))
749 "/lib/lua/" lua-version "/?.so"))
750 '("filesystem" "lpeg"))))
751 (wrap-program (string-append out "/bin/corsix-th")
752 `("LUA_CPATH" ";" = ,lua-cpath)
753 `("SDL_SOUNDFONTS" ":" suffix
754 (,(string-append fluid "/share/soundfonts/FluidR3Mono_GM.sf3")))))
755 #t)))
756 #:tests? #f)) ; TODO need busted package to run tests
757 ;; Omit Lua-Socket dependency to disable automatic updates.
758 (inputs
759 `(("ffmpeg" ,ffmpeg)
760 ("fluid-3" ,fluid-3)
761 ("freetype" ,freetype)
762 ("lua" ,lua)
763 ("lua-filesystem" ,lua-filesystem)
764 ("lua-lpeg" ,lua-lpeg)
765 ("sdl2" ,sdl2)
766 ("sdl2-mixer" ,sdl2-mixer)))
767 (home-page "https://corsixth.com")
768 (synopsis "Implementation of the @i{Theme Hospital} game engine")
769 (description
770 "This package provides a reimplementation of the 1997 Bullfrog business
771 simulation game @i{Theme Hospital}. As well as faithfully recreating the
772 original engine, CorsixTH adds support for high resolutions, custom levels and
773 more. This package does @emph{not} provide the game assets.")
774 (license (list
775 license:expat ; main license
776 license:bsd-3)))) ; CorsixTH/Src/random.c
777
778 (define-public cowsay
779 (package
780 (name "cowsay")
781 (version "3.04")
782 (source (origin
783 (method git-fetch)
784 (uri (git-reference
785 (url "https://github.com/tnalpgge/rank-amateur-cowsay")
786 (commit (string-append name "-" version))))
787 (file-name (git-file-name name version))
788 (sha256
789 (base32
790 "06455kq37hvq1xb7adyiwrx0djs50arsxvjgixyxks16lm1rlc7n"))))
791 (build-system gnu-build-system)
792 (arguments
793 `(#:phases
794 (modify-phases %standard-phases
795 (delete 'configure) ; no configure script
796 (delete 'build) ; nothing to be built
797 (replace 'install
798 (lambda* (#:key outputs #:allow-other-keys)
799 (invoke "sh" "install.sh"
800 (assoc-ref outputs "out"))))
801 (delete 'check)
802 (add-after 'install 'check
803 (lambda* (#:key outputs #:allow-other-keys)
804 (invoke (string-append (assoc-ref outputs "out")
805 "/bin/cowsay")
806 "We're done!"))))))
807 (inputs
808 `(("perl" ,perl)))
809 (home-page (string-append "https://web.archive.org/web/20071026043648/"
810 "http://www.nog.net:80/~tony/warez/cowsay.shtml"))
811 (synopsis "Speaking cow text filter")
812 (description "Cowsay is basically a text filter. Send some text into it,
813 and you get a cow saying your text. If you think a talking cow isn't enough,
814 cows can think too: all you have to do is run @command{cowthink}. If you're
815 tired of cows, a variety of other ASCII-art messengers are available.")
816 (license license:gpl3+)))
817
818 (define-public lolcat
819 (let ((commit "35dca3d0a381496d7195cd78f5b24aa7b62f2154")
820 (revision "0"))
821 (package
822 (name "lolcat")
823 (version (git-version "1.0" revision commit))
824 (source
825 (origin
826 (method git-fetch)
827 (uri (git-reference
828 (url "https://github.com/jaseg/lolcat")
829 (commit commit)))
830 (sha256
831 (base32
832 "0jjbkqcc2ikjxd1xgdyv4rb0vsw218181h89f2ywg29ffs3ypd8g"))
833 (file-name (git-file-name name version))))
834 (build-system gnu-build-system)
835 (arguments
836 `(#:tests? #f ; no check target
837 #:make-flags
838 (list ,(string-append "CC=" (cc-for-target)))
839 #:phases
840 (modify-phases %standard-phases
841 (delete 'bootstrap)
842 (delete 'configure)
843 (replace 'install
844 (lambda* (#:key outputs #:allow-other-keys)
845 (let* ((out (assoc-ref outputs "out"))
846 (dest (string-append out "/bin")))
847 (mkdir-p dest)
848 (install-file "lolcat" dest)
849 (install-file "censor" dest)
850 #t))))))
851 (home-page "https://github.com/jaseg/lolcat")
852 (synopsis "Rainbow coloring effect for text console display")
853 (description "@command{lolcat} concatenates files and streams like
854 regular @command{cat}, but it also adds terminal escape codes between
855 characters and lines resulting in a rainbow effect.")
856 (license license:wtfpl2))))
857
858 (define-public foobillard++
859 ;; Even though this latest revision is old already, stable release is
860 ;; lagging way behind it, and has issues with textures rendering.
861 (let ((svn-revision 170))
862 (package
863 (name "foobillard++")
864 (version (string-append "3.43-r" (number->string svn-revision)))
865 (source
866 (origin
867 (method svn-fetch)
868 (uri (svn-reference
869 (url "svn://svn.code.sf.net/p/foobillardplus/code/")
870 (revision svn-revision)))
871 (file-name (git-file-name name version))
872 (sha256
873 (base32 "00b693ys5zvzjbjzzj3dqfzm5xw64gwjf9m8qv6bkmf0klbhmayk"))
874 (patches
875 (search-patches "foobillard++-pkg-config.patch"))
876 (modules '((guix build utils)))
877 (snippet
878 '(begin
879 ;; Unfortunately, the game includes background music with
880 ;; a non-commercial clause. Delete it.
881 (for-each delete-file (find-files "data/music" "\\.ogg$"))
882 #t))))
883 (build-system gnu-build-system)
884 (arguments
885 `(#:configure-flags
886 (list
887 ;; Install data in a less exotic location.
888 (string-append "--prefix=" (assoc-ref %outputs "out") "/share")
889 ;; Prevent a build error about undefined trigonometric functions.
890 "--enable-fastmath=no")
891 #:phases
892 (modify-phases %standard-phases
893 (add-after 'unpack 'fix-makefile
894 ;; Remove hard-coded directories. Also fix installation
895 ;; rule: it tries to move around non-existent files or
896 ;; files already moved.
897 (lambda* (#:key outputs #:allow-other-keys)
898 (substitute* "Makefile.am"
899 (("/usr") (assoc-ref outputs "out"))
900 (("cp .*?/foobillardplus\\.desktop.*") "")
901 (("cp .*?/foobillardplus\\.(png|xbm) \\$\\(datarootdir\\).*")
902 ""))
903 #t))
904 (add-after 'unpack 'unbundle-font
905 ;; XXX: The package ships with LinBiolinum_aSB.ttf and
906 ;; LinBiolinum_aS.ttf, which are not provided by
907 ;; `font-linuxlibertine' package. Therefore, we cannot replace
908 ;; them yet.
909 (lambda* (#:key inputs #:allow-other-keys)
910 (let ((dejavu (string-append (assoc-ref inputs "font-dejavu")
911 "/share/fonts/truetype/")))
912 (with-directory-excursion "data"
913 (for-each (lambda (f)
914 (delete-file f)
915 (symlink (string-append dejavu f) f))
916 '("DejaVuSans-Bold.ttf" "DejaVuSans.ttf"))))
917 #t))
918 (replace 'bootstrap
919 (lambda _
920 (invoke "aclocal" "--force")
921 (invoke "autoconf" "-f")
922 (invoke "autoheader" "-f")
923 (invoke "automake" "-a" "-c" "-f")))
924 (add-before 'build 'prepare-build
925 ;; Set correct environment for SDL.
926 (lambda* (#:key inputs #:allow-other-keys)
927 (setenv "CPATH"
928 (string-append (assoc-ref inputs "sdl")
929 "/include/SDL:"
930 (or (getenv "CPATH") "")))
931 #t))
932 (add-before 'build 'fix-settings-directory
933 ;; Hide foobillardplus settings directory in $HOME.
934 (lambda _
935 (substitute* "src/history.c"
936 (("/foobillardplus-data") "/.foobillardplus"))
937 #t))
938 (add-before 'install 'create-directories
939 ;; Install process does not create directories before
940 ;; trying to move file in it.
941 (lambda* (#:key outputs #:allow-other-keys)
942 (let ((out (assoc-ref outputs "out")))
943 (mkdir-p (string-append out "/share/icons"))
944 (mkdir-p (string-append out "/share/applications")))
945 #t))
946 (add-after 'install 'symlink-executable
947 ;; Symlink executable to $out/bin.
948 (lambda* (#:key outputs #:allow-other-keys)
949 (let* ((out (assoc-ref outputs "out"))
950 (bin (string-append out "/bin")))
951 (mkdir-p bin)
952 (with-directory-excursion bin
953 (symlink "../share/foobillardplus/bin/foobillardplus"
954 "foobillardplus"))
955 #t))))))
956 (native-inputs
957 `(("autoconf" ,autoconf)
958 ("automake" ,automake)
959 ("pkg-config" ,pkg-config)))
960 (inputs
961 `(("font-dejavu" ,font-dejavu)
962 ("freetype" ,freetype)
963 ("glu" ,glu)
964 ("libpng" ,libpng)
965 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-net)))))
966 (home-page "http://foobillardplus.sourceforge.net/")
967 (synopsis "3D billiard game")
968 (description "FooBillard++ is an advanced 3D OpenGL billiard game
969 based on the original foobillard 3.0a sources from Florian Berger.
970 You can play it with one or two players or against the computer.
971
972 The game features:
973
974 @itemize
975 @item Wood paneled table with gold covers and gold diamonds.
976 @item Reflections on balls.
977 @item Zoom in and out, rotation, different angles and bird's eye view.
978 @item Different game modes: 8 or 9-ball, Snooker or Carambole.
979 @item Tournaments. Compete against other players.
980 @item Animated cue with strength and eccentric hit adjustment.
981 @item Jump shots and snipping.
982 @item Realistic gameplay and billiard sounds.
983 @item Red-Green stereo.
984 @item And much more.
985 @end itemize")
986 (license (list license:gpl2 license:silofl1.1)))))
987
988 (define-public freedoom
989 (package
990 (name "freedoom")
991 (version "0.12.1")
992 (source
993 (origin
994 (method git-fetch)
995 (uri (git-reference
996 (url "https://github.com/freedoom/freedoom")
997 (commit (string-append "v" version))))
998 (file-name (git-file-name name version))
999 (sha256
1000 (base32 "1mq60lfwaaxmch7hsz8403pwafnlsmsd5z2df2j77ppwndwcrypb"))))
1001 (build-system gnu-build-system)
1002 (arguments
1003 '(#:make-flags
1004 (list (string-append "prefix=" (assoc-ref %outputs "out")))
1005 #:tests? #f ; no check target
1006 #:phases
1007 (modify-phases %standard-phases
1008 (delete 'bootstrap)
1009 (replace 'configure
1010 (lambda* (#:key inputs outputs #:allow-other-keys)
1011 (let* ((freedoom (assoc-ref outputs "out"))
1012 (wad-dir (string-append freedoom "/share/games/doom")))
1013 ;; Make sure that the install scripts know where to find
1014 ;; the appropriate WAD files.
1015 (substitute* "dist/freedoom"
1016 (("IWAD=freedm.wad")
1017 (string-append "IWAD=" wad-dir "/freedm.wad"))
1018 (("IWAD=freedoom1.wad")
1019 (string-append "IWAD=" wad-dir "/freedoom1.wad"))
1020 (("IWAD=freedoom2.wad")
1021 (string-append "IWAD=" wad-dir "/freedoom2.wad")))
1022 #t))))))
1023 (native-inputs
1024 `(("asciidoc" ,asciidoc)
1025 ("deutex" ,deutex)
1026 ("python" ,python)
1027 ("python-pillow" ,python-pillow)))
1028 (home-page "https://freedoom.github.io/")
1029 (synopsis "Free content game based on the Doom engine")
1030 (native-search-paths
1031 (list (search-path-specification
1032 (variable "DOOMWADDIR")
1033 (files '("share/games/doom")))
1034 (search-path-specification
1035 (variable "DOOMWADPATH")
1036 (files '("share/games/doom")))))
1037 (description
1038 "The Freedoom project aims to create a complete free content first person
1039 shooter game. Freedoom by itself is just the raw material for a game: it must
1040 be paired with a compatible game engine (such as @code{prboom-plus}) to be
1041 played. Freedoom complements the Doom engine with free levels, artwork, sound
1042 effects and music to make a completely free game.")
1043 (license license:bsd-3)))
1044
1045 (define-public freedroidrpg
1046 (package
1047 (name "freedroidrpg")
1048 (version "0.16.1")
1049 (source
1050 (origin
1051 (method url-fetch)
1052 (uri (string-append "http://ftp.osuosl.org/pub/freedroid/"
1053 "freedroidRPG-" (version-major+minor version) "/"
1054 "freedroidRPG-" version ".tar.gz"))
1055 (sha256
1056 (base32 "0n4kn38ncmcy3lrxmq8fjry6c1z50z4q1zcqfig0j4jb0dsz2va2"))))
1057 (build-system gnu-build-system)
1058 (arguments
1059 `(#:configure-flags
1060 (list
1061 (string-append "CFLAGS="
1062 "-I" (assoc-ref %build-inputs "sdl-gfx") "/include/SDL "
1063 "-I" (assoc-ref %build-inputs "sdl-image") "/include/SDL "
1064 "-I" (assoc-ref %build-inputs "sdl-mixer") "/include/SDL")
1065 "--enable-opengl")
1066 ;; FIXME: the test suite fails with the following error output:
1067 ;; 4586 Segmentation fault env SDL_VIDEODRIVER=dummy \
1068 ;; SDL_AUDIODRIVER=dummy ./src/freedroidRPG -nb text
1069 #:tests? #f))
1070 (native-inputs
1071 `(("pkg-config" ,pkg-config)))
1072 (inputs
1073 `(("glu" ,glu)
1074 ("libjpeg" ,libjpeg-turbo)
1075 ("libogg" ,libogg)
1076 ("libpng" ,libpng)
1077 ("libvorbis" ,libvorbis)
1078 ("mesa" ,mesa)
1079 ("python" ,python-wrapper)
1080 ("sdl" ,sdl)
1081 ("sdl-gfx" ,sdl-gfx)
1082 ("sdl-image" ,sdl-image)
1083 ("sdl-mixer" ,sdl-mixer)
1084 ("zlib" ,zlib)))
1085 (home-page "http://www.freedroid.org/")
1086 (synopsis "Isometric role-playing game against killer robots")
1087 (description
1088 "Freedroid RPG is an @dfn{RPG} (Role-Playing Game) with isometric graphics.
1089 The game tells the story of a world destroyed by a conflict between robots and
1090 their human masters. To restore peace to humankind, the player must complete
1091 numerous quests while fighting off rebelling robots---either by taking control
1092 of them, or by simply blasting them to pieces with melee and ranged weapons in
1093 real-time combat.")
1094 (license (list license:expat ; lua/
1095 license:gpl3 ; src/gen_savestruct.py
1096 license:gpl2+)))) ; the rest
1097
1098 (define-public golly
1099 (package
1100 (name "golly")
1101 (version "3.3")
1102 (source (origin
1103 (method url-fetch)
1104 (uri (string-append "mirror://sourceforge/golly/golly/golly-"
1105 version "/golly-" version
1106 "-src.tar.gz"))
1107 (sha256
1108 (base32
1109 "1j3ksnar4rdam4xiyspgyrs1pifbvxfxkrn65brkwxpx39mpgzc8"))))
1110 (build-system gnu-build-system)
1111 (arguments
1112 '(#:make-flags (list "CC=gcc"
1113 (string-append "GOLLYDIR="
1114 (assoc-ref %outputs "out")
1115 "/share/golly"))
1116 #:tests? #f ; no check target
1117 #:phases
1118 (modify-phases %standard-phases
1119 (replace 'configure
1120 (lambda* (#:key inputs #:allow-other-keys)
1121 ;; For some reason, setting the PYTHON_SHLIB make flag doesn't
1122 ;; properly set the path to the Python shared library. This
1123 ;; substitution acheives the same end by different means.
1124 (substitute* "gui-wx/wxprefs.cpp"
1125 (("pythonlib = wxT\\(STRINGIFY\\(PYTHON_SHLIB\\)\\)")
1126 (string-append "pythonlib = \""
1127 (assoc-ref inputs "python")
1128 "/lib/libpython-2.7.so\"")))
1129 #t))
1130 (replace 'build
1131 (lambda* (#:key make-flags outputs #:allow-other-keys)
1132 (with-directory-excursion "gui-wx"
1133 (apply invoke `("make" ,@make-flags "-f" "makefile-gtk")))))
1134 (replace 'install
1135 (lambda* (#:key outputs #:allow-other-keys)
1136 (let* ((out (assoc-ref outputs "out"))
1137 (bin (string-append out "/bin"))
1138 (doc (string-append out "/share/doc/golly"))
1139 (pixmaps (string-append out "/share/pixmaps"))
1140 (share (string-append out "/share/golly")))
1141 (for-each (lambda (binary)
1142 (install-file binary bin))
1143 '("bgolly" "golly"))
1144 (for-each (lambda (document)
1145 (install-file
1146 (string-append "docs/" document ".html")
1147 doc))
1148 '("License" "ReadMe" "ToDo"))
1149 (install-file "gui-wx/icons/appicon.xpm" pixmaps)
1150 (for-each (lambda (folder)
1151 (copy-recursively
1152 folder
1153 (string-append share "/" folder)))
1154 '("Help" "Patterns" "Rules" "Scripts")))
1155 #t)))))
1156 (native-inputs
1157 `(("lua" ,lua)))
1158 (inputs
1159 `(("glu" ,glu)
1160 ("mesa" ,mesa)
1161 ("python" ,python-2)
1162 ("wxwidgets" ,wxwidgets-gtk2)
1163 ("zlib" ,zlib)))
1164 (home-page "http://golly.sourceforge.net/")
1165 (synopsis "Software for exploring cellular automata")
1166 (description
1167 "Golly simulates Conway's Game of Life and many other types of cellular
1168 automata. The following features are available:
1169 @enumerate
1170 @item Support for bounded and unbounded universes, with cells of up to 256
1171 states.
1172 @item Support for multiple algorithms, including Bill Gosper's Hashlife
1173 algorithm.
1174 @item Loading patterns from BMP, PNG, GIF and TIFF image files.
1175 @item Reading RLE, macrocell, Life 1.05/1.06, dblife and MCell files.
1176 @item Scriptable via Lua or Python.
1177 @item Extracting patterns, rules and scripts from zip files.
1178 @item Downloading patterns, rules and scripts from online archives.
1179 @item Pasting patterns from the clipboard.
1180 @item Unlimited undo/redo.
1181 @item Configurable keyboard shortcuts.
1182 @item Auto fit option to keep patterns within the view.
1183 @end enumerate")
1184 (license license:gpl2+)))
1185
1186 (define-public julius
1187 (package
1188 (name "julius")
1189 (version "1.4.1")
1190 (source
1191 (origin
1192 (method git-fetch)
1193 (uri (git-reference
1194 (url "https://github.com/bvschaik/julius")
1195 (commit (string-append "v" version))))
1196 (file-name (git-file-name name version))
1197 (sha256
1198 (base32 "12hhnhdwgz7hd3hlndbnk15pxggm1375qs0764ija4nl1gbpb110"))
1199 ;; Remove unused bundled libraries.
1200 (modules '((guix build utils)))
1201 (snippet
1202 '(begin
1203 (with-directory-excursion "ext"
1204 (for-each delete-file-recursively '("dirent" "png" "SDL2" "zlib")))
1205 #t))))
1206 (build-system cmake-build-system)
1207 (inputs
1208 `(("libpng" ,libpng)
1209 ("sdl2" ,sdl2)
1210 ("sdl2-mixer" ,sdl2-mixer)))
1211 (home-page "https://github.com/bvschaik/julius")
1212 (synopsis "Re-implementation of Caesar III game engine")
1213 (description
1214 "Engine for Caesar III, a city-building real-time strategy game.
1215 Julius includes some UI enhancements while preserving the logic (including
1216 bugs) of the original game, so that saved games are compatible. This package
1217 does not include game data.")
1218 (license (list license:agpl3
1219 license:zlib)))) ; ext/tinyfiledialogs
1220
1221 (define-public augustus
1222 (package
1223 (inherit julius)
1224 (name "augustus")
1225 (version (package-version julius))
1226 (source
1227 (origin
1228 (method git-fetch)
1229 (uri (git-reference
1230 (url "https://github.com/Keriew/augustus")
1231 (commit (string-append "v" version))))
1232 (file-name (git-file-name name version))
1233 (sha256
1234 (base32 "0ii0w0iwa9zv5bbqfcps5mxifd796m6fw4gvjf09pkm3yjgqc0ag"))
1235 ;; Remove unused bundled libraries.
1236 (modules '((guix build utils)))
1237 (snippet
1238 '(begin
1239 (with-directory-excursion "ext"
1240 (for-each delete-file-recursively '("dirent" "png" "SDL2" "zlib")))
1241 #t))))
1242 (arguments
1243 ;; No tests. See https://github.com/Keriew/augustus/issues/82.
1244 `(#:tests? #f))
1245 (home-page "https://github.com/Keriew/augustus")
1246 (synopsis "Re-implementation of Caesar III game engine with gameplay changes")
1247 (description
1248 "Fork of Julius, an engine for the a city-building real-time strategy
1249 game Caesar III. Gameplay enhancements include:
1250
1251 @itemize
1252 @item roadblocks;
1253 @item market special orders;
1254 @item global labour pool;
1255 @item partial warehouse storage;
1256 @item increased game limits;
1257 @item zoom controls.
1258 @end itemize\n")))
1259
1260 (define-public meandmyshadow
1261 (package
1262 (name "meandmyshadow")
1263 (version "0.5a")
1264 (source (origin
1265 (method url-fetch)
1266 (uri (string-append "mirror://sourceforge/meandmyshadow/"
1267 version "/meandmyshadow-" version
1268 "-src.tar.gz"))
1269 (sha256
1270 (base32
1271 "0i98v6cgmpsxy7mbb0s2y6f6qq6mkwzk2nrv1nz39ncf948aky2h"))))
1272 (build-system cmake-build-system)
1273 (arguments
1274 `(#:tests? #f)) ; there are no tests
1275 (native-inputs
1276 `(("pkg-config" ,pkg-config)))
1277 (inputs
1278 `(("curl" ,curl)
1279 ("libarchive" ,libarchive)
1280 ("lua" ,lua)
1281 ("sdl" ,(sdl-union (list sdl2
1282 sdl2-image
1283 sdl2-mixer
1284 sdl2-ttf)))))
1285 (home-page "https://acmepjz.github.io/meandmyshadow/")
1286 (synopsis "Puzzle/platform game")
1287 (description "Me and My Shadow is a puzzle/platform game in which you try
1288 to reach the exit by solving puzzles. Spikes, moving blocks, fragile blocks
1289 and much more stand between you and the exit. Record your moves and let your
1290 shadow mimic them to reach blocks you couldn't reach alone.")
1291 (license license:gpl3+)))
1292
1293 (define-public opensurge
1294 (package
1295 (name "opensurge")
1296 (version "0.5.1.2")
1297 (source
1298 (origin
1299 (method git-fetch)
1300 (uri (git-reference
1301 (url "https://github.com/alemart/opensurge")
1302 (commit (string-append "v" version))))
1303 (file-name (git-file-name name version))
1304 (sha256
1305 (base32 "0ih7hlqjnp9rv0m4lqf7c0s1ai532way5i4pk45jq1gqm8325dbv"))))
1306 (build-system cmake-build-system)
1307 (arguments
1308 `(#:tests? #f ;there are no tests
1309 #:configure-flags
1310 (let* ((out (assoc-ref %outputs "out"))
1311 (share (string-append out "/share")))
1312 (list (string-append "-DCMAKE_INSTALL_PREFIX=" out "/bin")
1313 (string-append "-DGAME_DATADIR=" share "/" ,name)
1314 (string-append "-DDESKTOP_ENTRY_PATH=" share "/applications")
1315 (string-append "-DDESKTOP_ICON_PATH=" share "/pixmaps")
1316 (string-append "-DDESKTOP_METAINFO_PATH=" share "/metainfo")))
1317 #:phases
1318 (modify-phases %standard-phases
1319 (add-after 'unpack 'fix-xdg-open-path
1320 (lambda* (#:key inputs #:allow-other-keys)
1321 ;; Look for xdg-open in the store.
1322 (substitute* "src/core/web.c"
1323 (("/usr(/bin/xdg-open)" _ bin)
1324 (string-append (assoc-ref inputs "xdg-utils") bin)))
1325 #t))
1326 (add-after 'unpack 'unbundle-fonts
1327 (lambda* (#:key inputs #:allow-other-keys)
1328 ;; Replace bundled Roboto fonts with links to the store.
1329 (with-directory-excursion "fonts"
1330 (let ((roboto-dir (string-append
1331 (assoc-ref inputs "font-google-roboto")
1332 "/share/fonts/truetype/")))
1333 (for-each
1334 (lambda (font)
1335 (delete-file font)
1336 (symlink (string-append roboto-dir font) font))
1337 '("Roboto-Black.ttf" "Roboto-Bold.ttf" "Roboto-Medium.ttf")))
1338 #t))))))
1339 (inputs
1340 `(("allegro" ,allegro)
1341 ("font-google-roboto" ,font-google-roboto)
1342 ("surgescript" ,surgescript)
1343 ("xdg-utils" ,xdg-utils)))
1344 (home-page "https://opensurge2d.org")
1345 (synopsis "2D retro side-scrolling game")
1346 (description "@code{Open Surge} is a 2D retro side-scrolling platformer
1347 inspired by the Sonic games. The player runs at high speeds through each
1348 level while collecting items and avoiding obstacles. The game includes a
1349 built-in level editor.")
1350 (license
1351 ;; Code is under GPL 3+, assets are under various licenses.
1352 ;; See src/misc/credits.c for details.
1353 (list license:gpl3+
1354 license:cc0
1355 license:cc-by3.0
1356 license:cc-by-sa3.0
1357 license:expat
1358 license:public-domain
1359 license:silofl1.1))))
1360
1361 (define-public knights
1362 (package
1363 (name "knights")
1364 (version "025")
1365 (source (origin
1366 (method url-fetch)
1367 (uri (string-append "http://www.knightsgame.org.uk/files/knights_"
1368 version "_src.tar.gz"))
1369 (sha256
1370 (base32
1371 "18vp2ygvn0s0jz8rm585jqf6hjqkam1ximq81k0r9hpmfj7wb88f"))))
1372 (build-system gnu-build-system)
1373 (arguments
1374 '(#:make-flags
1375 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
1376 "CXXFLAGS=-lpthread")
1377 #:phases
1378 (modify-phases %standard-phases
1379 ;; No configure script.
1380 (delete 'configure))
1381 #:tests? #f)) ;; No check target.
1382 (inputs
1383 `(("boost" ,boost)
1384 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
1385 ("freetype" ,freetype)
1386 ("fontconfig" ,fontconfig)
1387 ("curl" ,curl)))
1388 (native-inputs
1389 `(("pkg-config" ,pkg-config)))
1390 (home-page "http://www.knightsgame.org.uk/")
1391 (synopsis "Multiplayer dungeon game involving knights and quests")
1392 (description "Knights is a multiplayer game involving several knights who
1393 must run around a dungeon and complete various quests. Each game revolves
1394 around a quest – for example, you might have to find some items and carry them
1395 back to your starting point. This may sound easy, but as there are only
1396 enough items in the dungeon for one player to win, you may end up having to
1397 kill your opponents to get their stuff! Other quests involve escaping from
1398 the dungeon, fighting a duel to the death against the enemy knights, or
1399 destroying an ancient book using a special wand.")
1400 ;; This package includes modified sources of lua (X11), enet (Expat), and
1401 ;; guichan (BSD-3). The "Coercri" library is released under the Boost
1402 ;; license. The whole package is released under GPLv3+.
1403 (license license:gpl3+)))
1404
1405 (define-public gnome-chess
1406 (package
1407 (name "gnome-chess")
1408 (version "3.37.3")
1409 (source (origin
1410 (method url-fetch)
1411 (uri (string-append "mirror://gnome/sources/gnome-chess/"
1412 (version-major+minor version) "/"
1413 "gnome-chess-" version ".tar.xz"))
1414 (sha256
1415 (base32
1416 "09axf0q1mp13sv8cs0syfg8ahcd9r2qb26278r09j6s4njxmkfv4"))))
1417 (build-system meson-build-system)
1418 (arguments
1419 '(#:glib-or-gtk? #t
1420 #:phases
1421 (modify-phases %standard-phases
1422 (add-after 'unpack 'skip-gtk-update-icon-cache
1423 ;; Don't create 'icon-theme.cache'.
1424 (lambda _
1425 (substitute* "meson_post_install.py"
1426 (("gtk-update-icon-cache") "true"))
1427 #t)))))
1428 (inputs
1429 `(("gtk+" ,gtk+)
1430 ("librsvg" ,librsvg)))
1431 (native-inputs
1432 `(("gettext" ,gettext-minimal)
1433 ("glib:bin" ,glib "bin") ; for desktop-file-validate and appstream-util
1434 ("itstool" ,itstool)
1435 ("pkg-config" ,pkg-config)
1436 ("vala" ,vala)))
1437 (home-page "https://wiki.gnome.org/Apps/Chess")
1438 (synopsis "Chess board for GNOME")
1439 (description "GNOME Chess provides a 2D board for playing chess games
1440 against human or computer players. It supports loading and saving games in
1441 Portable Game Notation. To play against a computer, install a chess engine
1442 such as chess or stockfish.")
1443 (license license:gpl3+)))
1444
1445 (define-public gnubg
1446 (package
1447 (name "gnubg")
1448 (version "1.06.002")
1449 (source
1450 (origin
1451 (method url-fetch)
1452 (uri (string-append "mirror://gnu/gnubg/gnubg-release-"
1453 version "-sources.tar.gz"))
1454 (sha256
1455 (base32
1456 "11xwhcli1h12k6rnhhyq4jphzrhfik7i8ah3k32pqw803460n6yf"))))
1457 (build-system gnu-build-system)
1458 (inputs `(;; XXX: Build with an older Pango for 'pango_font_get_hb_font' and
1459 ;; 'pango_coverage_get_type'. Try removing this for versions > 1.06.002.
1460 ("pango" ,pango-1.42)
1461
1462 ("glib" ,glib)
1463 ("readline" ,readline)
1464 ("gtk+" ,gtk+-2)
1465 ("mesa" ,mesa)
1466 ("glu" ,glu)
1467 ("gtkglext" ,gtkglext)
1468 ("sqlite" ,sqlite)
1469 ("libcanberra" ,libcanberra)))
1470 (native-inputs `(("python-2" ,python-2)
1471 ("pkg-config" ,pkg-config)))
1472 (arguments
1473 `(#:phases
1474 (modify-phases %standard-phases
1475 (add-after 'install 'install-desktop-file
1476 (lambda* (#:key outputs #:allow-other-keys)
1477 (let* ((out (assoc-ref outputs "out"))
1478 (apps (string-append out "/share/applications")))
1479 (mkdir-p apps)
1480 (with-output-to-file (string-append apps "/gnubg.desktop")
1481 (lambda _
1482 (format #t
1483 "[Desktop Entry]~@
1484 Name=GNU Backgammon~@
1485 Exec=~a/bin/gnubg -w~@
1486 Icon=gnubg~@
1487 Categories=Game;~@
1488 Terminal=false~@
1489 Type=Application~%"
1490 out))))
1491 #t)))))
1492 (home-page "https://www.gnu.org/software/gnubg/")
1493 (synopsis "Backgammon game")
1494 (description "The GNU backgammon application (also known as \"gnubg\") can
1495 be used for playing, analyzing and teaching the game. It has an advanced
1496 evaluation engine based on artificial neural networks suitable for both
1497 beginners and advanced players. In addition to a command-line interface, it
1498 also features an attractive, 3D representation of the playing board.")
1499 (license license:gpl3+)))
1500
1501 (define-public gnubik
1502 (package
1503 (name "gnubik")
1504 (version "2.4.3")
1505 (source
1506 (origin
1507 (method url-fetch)
1508 (uri (string-append "mirror://gnu/gnubik/gnubik-"
1509 version ".tar.gz"))
1510 (sha256
1511 (base32
1512 "1vlf924mq8hg93bsjj0rzvs0crc6psmlxyc6zn0fr7msnmpx6gib"))))
1513 (build-system gnu-build-system)
1514 (arguments
1515 '(#:phases (modify-phases %standard-phases
1516 (add-after 'unpack 'skip-gtk-update-icon-cache
1517 (lambda _
1518 ;; Do not attempt to run 'gtk-update-icon-cache', which is
1519 ;; unnecessary and causes a needless dependency on glib.
1520 (substitute* "Makefile.in"
1521 (("gtk-update-icon-cache")
1522 "true"))
1523 #t)))))
1524 (inputs `(("gtk+" ,gtk+-2)
1525 ("mesa" ,mesa)
1526 ("glu" ,glu)
1527 ("libx11" ,libx11)
1528 ("guile" ,guile-2.0)
1529 ("gtkglext" ,gtkglext)))
1530 (native-inputs `(("gettext" ,gettext-minimal)
1531 ("pkg-config" ,pkg-config)))
1532 (home-page "https://www.gnu.org/software/gnubik/")
1533 (synopsis "3d Rubik's cube game")
1534 (description
1535 "GNUbik is a puzzle game in which you must manipulate a cube to make
1536 each of its faces have a uniform color. The game is customizable, allowing
1537 you to set the size of the cube (the default is 3x3) or to change the colors.
1538 You may even apply photos to the faces instead of colors. The game is
1539 scriptable with Guile.")
1540 (license license:gpl3+)))
1541
1542 (define-public gnushogi
1543 (package
1544 (name "gnushogi")
1545 (version "1.4.2")
1546 (source
1547 (origin
1548 (method url-fetch)
1549 (uri (string-append "mirror://gnu/gnushogi/gnushogi-"
1550 version ".tar.gz"))
1551 (sha256
1552 (base32
1553 "0a9bsl2nbnb138lq0h14jfc5xvz7hpb2bcsj4mjn6g1hcsl4ik0y"))))
1554 (arguments `(#:tests? #f)) ;; No check target.
1555 (build-system gnu-build-system)
1556 (home-page "https://www.gnu.org/software/gnushogi/")
1557 (synopsis "The game of Shogi (Japanese chess)")
1558 (description "GNU Shogi is a program that plays the game Shogi (Japanese
1559 Chess). It is similar to standard chess but this variant is far more complicated.")
1560 (license license:gpl3+)))
1561
1562 (define-public ltris
1563 (package
1564 (name "ltris")
1565 (version "1.2.1")
1566 (source
1567 (origin
1568 (method url-fetch)
1569 (uri (string-append "mirror://sourceforge/lgames/ltris/"
1570 "ltris-" version ".tar.gz"))
1571 (sha256
1572 (base32 "0959vvxh5xnxzpdv7i67lpd2b6ghx69z65ldnclj1z6llyfzfs7q"))))
1573 (build-system gnu-build-system)
1574 (arguments
1575 '(;; The code in LTris uses traditional GNU semantics for inline functions
1576 #:configure-flags '("CFLAGS=-fgnu89-inline")
1577 #:phases
1578 (modify-phases %standard-phases
1579 (add-after 'set-paths 'set-sdl-paths
1580 (lambda* (#:key inputs #:allow-other-keys)
1581 (setenv "CPATH"
1582 (string-append (assoc-ref inputs "sdl-union")
1583 "/include/SDL:"
1584 (or (getenv "CPATH") "")))
1585 #t)))))
1586 (inputs
1587 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))))
1588 (home-page "http://lgames.sourceforge.net/LTris/")
1589 (synopsis "Tetris clone based on the SDL library")
1590 (description
1591 "LTris is a tetris clone: differently shaped blocks are falling down the
1592 rectangular playing field and can be moved sideways or rotated by 90 degree
1593 units with the aim of building lines without gaps which then disappear (causing
1594 any block above the deleted line to fall down). LTris has three game modes: In
1595 Classic you play until the stack of blocks reaches the top of the playing field
1596 and no new blocks can enter. In Figures the playing field is reset to a new
1597 figure each level and later on tiles and lines suddenly appear. In Multiplayer
1598 up to three players (either human or CPU) compete with each other sending
1599 removed lines to all opponents. There is also a Demo mode in which you can
1600 watch your CPU playing while enjoying a cup of tea!")
1601 (license license:gpl2+)))
1602
1603 (define-public nethack
1604 (package
1605 (name "nethack")
1606 (version "3.6.6")
1607 (source
1608 (origin
1609 (method url-fetch)
1610 (uri
1611 (string-append "https://www.nethack.org/download/" version "/nethack-"
1612 (string-join (string-split version #\.) "") "-src.tgz"))
1613 (sha256
1614 (base32 "1liyckjp34j354qnxc1zn9730lh1p2dabrg1hap24z6xnqx0rpng"))))
1615 (native-inputs
1616 `(("bison" ,bison)
1617 ("flex" ,flex)))
1618 (inputs
1619 `(("ncurses" ,ncurses)
1620 ("less" ,less)))
1621 (build-system gnu-build-system)
1622 (arguments
1623 '(#:make-flags
1624 `(,(string-append "PREFIX=" (assoc-ref %outputs "out")))
1625 #:phases
1626 (modify-phases %standard-phases
1627 (add-before 'configure 'patch-paths
1628 (lambda _
1629 (substitute* "sys/unix/nethack.sh"
1630 (("^ *cd .*$") ""))
1631 (substitute* "sys/unix/Makefile.utl"
1632 (("^YACC *=.*$") "YACC = bison -y\n")
1633 (("^LEX *=.*$") "LEX = flex\n")
1634 (("^# CC = gcc") "CC = gcc"))
1635 (substitute* "sys/unix/hints/linux"
1636 (("/bin/gzip") (string-append
1637 (assoc-ref %build-inputs "gzip")
1638 "/bin/gzip"))
1639 (("^WINTTYLIB=.*") "WINTTYLIB=-lncurses"))
1640 (substitute* "include/config.h"
1641 (("^.*define CHDIR.*$") "")
1642 (("^/\\* *#*define *REPRODUCIBLE_BUILD *\\*/")
1643 ;; Honor SOURCE_DATE_EPOCH.
1644 "#define REPRODUCIBLE_BUILD"))
1645
1646 ;; Note: 'makedefs' rejects and ignores dates that are too old
1647 ;; or too new, so we must choose something reasonable here.
1648 (setenv "SOURCE_DATE_EPOCH" "1531865062")
1649
1650 (substitute* "sys/unix/Makefile.src"
1651 (("^# CC = gcc") "CC = gcc"))
1652 #t))
1653 (replace 'configure
1654 (lambda _
1655 (let ((bash (string-append
1656 (assoc-ref %build-inputs "bash")
1657 "/bin/bash")))
1658 (with-directory-excursion "sys/unix"
1659 (substitute* "setup.sh" (("/bin/sh") bash))
1660 (invoke bash "setup.sh" "hints/linux"))
1661 #t)))
1662 (add-after 'install 'fixup-paths
1663 (lambda _
1664 (let* ((output (assoc-ref %outputs "out"))
1665 (nethack-script (string-append output "/bin/nethack")))
1666 (mkdir-p (string-append output "/games/lib/nethackuserdir"))
1667 (for-each
1668 (lambda (file)
1669 (rename-file
1670 (string-append output "/games/lib/nethackdir/" file)
1671 (string-append output "/games/lib/nethackuserdir/"
1672 file)))
1673 '("xlogfile" "logfile" "perm" "record" "save"))
1674 (mkdir-p (string-append output "/bin"))
1675 (call-with-output-file nethack-script
1676 (lambda (port)
1677 (format port "#!~a/bin/sh
1678 PATH=~a:$PATH
1679 if [ ! -d ~~/.config/nethack ]; then
1680 mkdir -p ~~/.config/nethack
1681 cp -r ~a/games/lib/nethackuserdir/* ~~/.config/nethack
1682 chmod -R +w ~~/.config/nethack
1683 fi
1684
1685 RUNDIR=$(mktemp -d)
1686
1687 cleanup() {
1688 rm -rf $RUNDIR
1689 }
1690 trap cleanup EXIT
1691
1692 cd $RUNDIR
1693 for i in ~~/.config/nethack/*; do
1694 ln -s $i $(basename $i)
1695 done
1696 for i in ~a/games/lib/nethackdir/*; do
1697 ln -s $i $(basename $i)
1698 done
1699 ~a/games/nethack"
1700 (assoc-ref %build-inputs "bash")
1701 (list->search-path-as-string
1702 (list
1703 (string-append
1704 (assoc-ref %build-inputs "coreutils") "/bin")
1705 (string-append
1706 (assoc-ref %build-inputs "less") "/bin"))
1707 ":")
1708 output
1709 output
1710 output)))
1711 (chmod nethack-script #o555)
1712 #t)))
1713 (delete 'check))))
1714 (home-page "https://nethack.org")
1715 (synopsis "Classic dungeon crawl game")
1716 (description "NetHack is a single player dungeon exploration game that runs
1717 on a wide variety of computer systems, with a variety of graphical and text
1718 interfaces all using the same game engine. Unlike many other Dungeons &
1719 Dragons-inspired games, the emphasis in NetHack is on discovering the detail of
1720 the dungeon and not simply killing everything in sight - in fact, killing
1721 everything in sight is a good way to die quickly. Each game presents a
1722 different landscape - the random number generator provides an essentially
1723 unlimited number of variations of the dungeon and its denizens to be discovered
1724 by the player in one of a number of characters: you can pick your race, your
1725 role, and your gender.")
1726 (license
1727 (license:fsdg-compatible
1728 "https://nethack.org/common/license.html"))))
1729
1730 (define-public pipewalker
1731 (package
1732 (name "pipewalker")
1733 (version "0.9.4")
1734 (source
1735 (origin
1736 (method url-fetch)
1737 (uri (string-append "http://downloads.sourceforge.net/pipewalker/"
1738 "pipewalker-" version ".tar.gz"))
1739 (sha256
1740 (base32 "1x46wgk0s55562pd96cxagxkn6wpgglq779f9b64ff1k3xzp3myn"))))
1741 (build-system gnu-build-system)
1742 (arguments
1743 `(#:configure-flags
1744 (list (string-append "--docdir=" (assoc-ref %outputs "out")
1745 "/share/doc/" ,name "-" ,version))
1746 #:phases
1747 (modify-phases %standard-phases
1748 (add-after 'configure 'patch-docdir
1749 ;; Makefile.in ignores configure's ‘--docdir=...’ option. Fix that.
1750 (lambda _
1751 (substitute* "Makefile"
1752 (("(pkgdocdatadir = ).*" _ assignment)
1753 (string-append assignment "$(docdir)\n")))
1754 #t)))))
1755 (inputs
1756 `(("libpng" ,libpng)
1757 ("mesa" ,mesa)
1758 ("sdl" ,sdl)))
1759 (home-page "http://pipewalker.sourceforge.net/")
1760 (synopsis "Logical tile puzzle")
1761 (description
1762 "PipeWalker is a simple puzzle game with many diffent themes: connect all
1763 computers to one network server, bring water from a source to the taps, etc.
1764 The underlying mechanism is always the same: you must turn each tile in the
1765 grid in the right direction to combine all components into a single circuit.
1766 Every puzzle has a complete solution, although there may be more than one.")
1767 (license license:gpl3+)))
1768
1769 (define-public prboom-plus
1770 (package
1771 (name "prboom-plus")
1772 (version "2.5.1.4")
1773 (source (origin
1774 (method url-fetch)
1775 (uri (string-append "mirror://sourceforge/prboom-plus/prboom-plus/"
1776 version "/prboom-plus-" version ".tar.gz"))
1777 (sha256
1778 (base32 "151v6nign86m1a2vqz27krsccpc9m4d1jax4y43v2fa82wfj9qp0"))
1779 (modules '((guix build utils)))
1780 (snippet
1781 '(begin
1782 (substitute* "src/version.c"
1783 (("__DATE__") "")
1784 (("__TIME__") ""))
1785 #t))))
1786 (build-system gnu-build-system)
1787 (arguments
1788 '(#:configure-flags '("--disable-cpu-opt")
1789 #:make-flags `(,(string-append "gamesdir="
1790 (assoc-ref %outputs "out") "/bin"))
1791 #:phases
1792 (modify-phases %standard-phases
1793 (add-after 'set-paths 'set-sdl'paths
1794 (lambda* (#:key inputs #:allow-other-keys)
1795 (setenv "CPATH"
1796 (string-append (assoc-ref inputs "sdl-union")
1797 "/include/SDL:"
1798 (or (getenv "CPATH") "")))
1799 #t)))))
1800 (inputs
1801 `(("fluidsynth" ,fluidsynth)
1802 ("glu" ,glu)
1803 ("libmad" ,libmad)
1804 ("libpng" ,libpng)
1805 ("libvorbis" ,libvorbis)
1806 ("pcre" ,pcre)
1807 ("portmidi" ,portmidi)
1808 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-net)))))
1809 (home-page "http://prboom-plus.sourceforge.net/")
1810 (synopsis "Version of the classic 3D shoot'em'up game Doom")
1811 (description
1812 "PrBoom+ is a Doom source port developed from the original PrBoom project.")
1813 (license license:gpl2+)))
1814
1815 (define-public retux
1816 (let ((release "1.4.1")
1817 (revision 1))
1818 (package
1819 (name "retux")
1820 (version (if (zero? revision)
1821 release
1822 (string-append release "-"
1823 (number->string revision))))
1824 (source (origin
1825 (method url-fetch)
1826 (uri (string-append "https://github.com/retux-game/retux/"
1827 "releases/download/v"
1828 version "/retux-"
1829 release "-src.tar.gz"))
1830 (sha256
1831 (base32
1832 "1vrldg2qh2gqfswj7vkpc589ldrrjd903j6cnfdik9zh0jhlq4h2"))))
1833 (build-system python-build-system)
1834 (arguments
1835 `(#:tests? #f ; no check target
1836 #:phases
1837 (modify-phases %standard-phases
1838 ;; no setup.py script
1839 (delete 'build)
1840 (replace 'install
1841 (lambda* (#:key outputs #:allow-other-keys)
1842 (let* ((out (assoc-ref outputs "out"))
1843 (bin (string-append out "/bin"))
1844 (data (string-append out "/share/retux")))
1845 (mkdir-p bin)
1846
1847 (substitute* "retux.py"
1848 ;; Use the correct data directory.
1849 (("os\\.path\\.join\\(os\\.path\\.dirname\\(__file__\\), \"data\"\\),")
1850 (string-append "\"" data "\",")))
1851
1852 (copy-file "retux.py" (string-append bin "/retux"))
1853 (copy-recursively "data" data)
1854 #t))))))
1855 (inputs
1856 `(("python-sge-pygame" ,python-sge-pygame)
1857 ("python-six" ,python-six)
1858 ("python-xsge" ,python-xsge)))
1859 (home-page "https://retux-game.github.io/")
1860 (synopsis "Action platformer game")
1861 (description
1862 "ReTux is an action platformer loosely inspired by the Mario games,
1863 utilizing the art assets from the @code{SuperTux} project.")
1864 ;; GPL version 3 or later is the license for the code and some art.
1865 ;; The rest of the licenses are for the art exclusively, as listed in
1866 ;; data/LICENSES.
1867 (license (list license:cc0
1868 license:cc-by3.0
1869 license:cc-by-sa3.0
1870 license:cc-by-sa4.0
1871 license:gpl2+
1872 license:gpl3+)))))
1873
1874 (define-public roguebox-adventures
1875 (package
1876 (name "roguebox-adventures")
1877 (version "3.0.1")
1878 (source
1879 (origin
1880 (method url-fetch)
1881 (uri (string-append
1882 "http://download.tuxfamily.org/rba/RogueBoxAdventures_v"
1883 (string-join (string-split version #\.) "_") "_Source.zip"))
1884 (file-name (string-append name "-" version ".zip"))
1885 (sha256
1886 (base32
1887 "05zd03s5w9kcpklfgcggbaa6rwf59nm0q9vcj6gh9v2lh402k067"))))
1888 (build-system python-build-system)
1889 (arguments
1890 `(#:tests? #f ; no check target
1891 #:phases
1892 (modify-phases %standard-phases
1893 (replace 'unpack
1894 (lambda* (#:key source #:allow-other-keys)
1895 (and (invoke "unzip" source)
1896 ;; The actual source is buried a few directories deep.
1897 (chdir (string-append "RogueBoxAdventures_v"
1898 (string-join
1899 (string-split ,version #\.) "_")
1900 "_Source")))))
1901 ;; no setup.py script
1902 (replace 'build
1903 (lambda* (#:key outputs #:allow-other-keys)
1904 (let* ((out (assoc-ref outputs "out"))
1905 (data (string-append
1906 out "/share/games/roguebox-adventures")))
1907 ;; Use the correct data directory.
1908 (substitute* '("main.py" "LIB/getch.py" "LIB/getch_gcwz.py")
1909 (("basic_path + os\\.sep + 'DATA'")
1910 (string-append "'" data "'"))
1911 (("^basic_path.*$")
1912 (string-append "basic_path ='" data "'\n")))
1913 (substitute* "LIB/dialog.py"
1914 (("d_path = os\\.path\\.dirname\\(.*\\)\\)")
1915 (string-append "d_path = '" data "'")))
1916 (substitute* "LIB/gra_files.py"
1917 (("basic_path = b_path\\.replace\\('/LIB',''\\)")
1918 (string-append "basic_path ='" data "'\n")))
1919
1920 ;; The game must save in the user's home directory because
1921 ;; the store is read-only.
1922 (substitute* "main.py"
1923 (("home_save = False") "home_save = True")
1924 (("'icon_small.png'")
1925 (string-append "'" data "/icon_small.png'"))))
1926 #t))
1927 (replace 'install
1928 (lambda* (#:key outputs #:allow-other-keys)
1929 (let* ((out (assoc-ref outputs "out"))
1930 (bin (string-append out "/bin"))
1931 (roguebox-adventures
1932 (string-append bin "/roguebox-adventures"))
1933 (data (string-append
1934 out "/share/games/roguebox-adventures"))
1935 (lib (string-append data "/LIB"))
1936 (doc (string-append
1937 out "/share/doc/roguebox-adventures")))
1938 (mkdir-p bin)
1939 (mkdir-p doc)
1940
1941 (for-each (lambda (file)
1942 (copy-recursively file
1943 (string-append data "/" file)))
1944 '("AUDIO" "FONT" "GRAPHIC" "LIB" "LICENSE"
1945 "icon_big.png" "icon_small.png"))
1946 (for-each (lambda (file)
1947 (chmod file #o555)
1948 (install-file file lib))
1949 '("main.py" "run.py"))
1950
1951 (copy-recursively "DOC" doc)
1952
1953 (call-with-output-file
1954 roguebox-adventures
1955 (lambda (p)
1956 (format p "\
1957 #!~a
1958 export PYTHONPATH=~a/LIB:~a
1959 exec -a \"~a\" ~a \"$@\"\n"
1960 (which "bash") data (getenv "PYTHONPATH")
1961 (which "python3")
1962 (string-append lib "/main.py"))))
1963 (chmod roguebox-adventures #o555))
1964 #t)))))
1965 (native-inputs
1966 `(("unzip" ,unzip)))
1967 (inputs
1968 `(("python-pygame" ,python-pygame)
1969 ("python-tmx" ,python-tmx)))
1970 (home-page "https://rogueboxadventures.tuxfamily.org")
1971 (synopsis "A classical roguelike/sandbox game")
1972 (description
1973 "RogueBox Adventures is a graphical roguelike with strong influences
1974 from sandbox games like Minecraft or Terraria. The main idea of RogueBox
1975 Adventures is to offer the player a kind of roguelike toy-world. This world
1976 can be explored and changed freely.")
1977 ;; The GPL3+ is for code, the rest are for art.
1978 (license (list license:cc0
1979 license:cc-by3.0
1980 license:gpl3+
1981 license:silofl1.1))))
1982
1983 (define-public seahorse-adventures
1984 (package
1985 (name "seahorse-adventures")
1986 (version "1.2")
1987 (source
1988 (origin
1989 (method git-fetch)
1990 (uri (git-reference
1991 (url "https://github.com/dulsi/seahorse-adventures")
1992 (commit (string-append "release-" version))))
1993 (file-name (git-file-name name version))
1994 (sha256
1995 (base32 "1rnvk06npaqcpjz5z6xcmssz61i32s422lydp49vrnf3j2g4yimd"))
1996 (modules '((guix build utils)
1997 (ice-9 ftw)
1998 (srfi srfi-1)))
1999 ;; Remove non-free (non-commercial) font.
2000 (snippet
2001 `(begin
2002 (for-each delete-file (find-files "data/fonts" "."))
2003 #t))))
2004 (build-system python-build-system)
2005 (arguments
2006 `(#:tests? #f ;no test
2007 #:phases
2008 (modify-phases %standard-phases
2009 (delete 'build) ;pure Python
2010 (replace 'install ;no install script
2011 (lambda* (#:key outputs #:allow-other-keys)
2012 (let* ((out (assoc-ref outputs "out"))
2013 (bin (string-append out "/bin"))
2014 (share (string-append out "/share"))
2015 (applications (string-append share "/applications"))
2016 (data (string-append share "/seahorse-adventures")))
2017 ;; Install data.
2018 (for-each (lambda (f)
2019 (chmod f #o555)
2020 (install-file f data))
2021 '("leveledit.py" "run_game.py" "tileedit.py"))
2022 (for-each (lambda (dir)
2023 (let ((target (string-append data "/" dir)))
2024 (mkdir-p target)
2025 (copy-recursively dir target)))
2026 '("data" "lib"))
2027 ;; Create executable.
2028 (mkdir-p bin)
2029 (let ((executable (string-append bin "/seahorse-adventures")))
2030 (call-with-output-file executable
2031 (lambda (p)
2032 (format p
2033 "#!~a~@
2034 export PYTHONPATH=~a:~a~@
2035 exec -a \"~a\" ~a \"$@\"~%"
2036 (which "bash") data (getenv "PYTHONPATH")
2037 (which "python3")
2038 (string-append data "/run_game.py"))))
2039 (chmod executable #o555))
2040 ;; Add desktop file.
2041 (mkdir-p applications)
2042 (make-desktop-entry-file
2043 (string-append applications "/seahorse-adventures.desktop")
2044 #:name "Seahorse Adventures"
2045 #:comment
2046 '((#f "Help Barbie the seahorse float on bubbles to the moon"))
2047 #:exec ,name
2048 #:icon ,name
2049 #:categories '("Game" "ActionGame")
2050 #:keywords '("game" "retro" "platform"))
2051 ;; Add icons.
2052 (for-each
2053 (lambda (size)
2054 (let ((dir (string-append share "/icons/hicolor/"
2055 size "x" size "/apps")))
2056 (mkdir-p dir)
2057 (copy-file
2058 (string-append "icon" size ".png")
2059 (string-append dir "/searhorse-adventures.png"))))
2060 '("32" "64" "128")))
2061 #t))
2062 (add-after 'install 'unbundle-fonts
2063 ;; Unbundle Bitstream Vera font and replace deleted one.
2064 (lambda* (#:key outputs inputs #:allow-other-keys)
2065 (let* ((out (assoc-ref outputs "out"))
2066 (data (string-append out "/share/seahorse-adventures"))
2067 (vera (string-append (assoc-ref inputs "font-bitstream-vera")
2068 "/share/fonts/truetype/Vera.ttf")))
2069 (let ((themes-dir (string-append data "/data/themes/")))
2070 (for-each
2071 (lambda (theme)
2072 (let ((target (string-append themes-dir theme "/Vera.ttf")))
2073 (delete-file target)
2074 (symlink vera target)))
2075 '("default" "gray")))
2076 (symlink vera (string-append data "/data/fonts/04B_20__.TTF"))
2077 (substitute* (string-append data "/lib/main.py")
2078 (("f_scale = 0.35") "f_scale = 0.47")))
2079 #t)))))
2080 (inputs
2081 `(("font-bitstream-vera" ,font-bitstream-vera)
2082 ("python-pygame" ,python-pygame)))
2083 (home-page "http://www.imitationpickles.org/barbie/")
2084 (synopsis "Help Barbie the seahorse float on bubbles to the moon")
2085 (description
2086 "Barbie Seahorse Adventures is a retro style platform arcade game.
2087 You are Barbie the seahorse who travels through the jungle, up to the
2088 volcano until you float on bubbles to the moon. On the way to your
2089 final destination you will encounter various enemies, servants of the
2090 evil overlord who has stolen the galaxy crystal. Avoid getting hit
2091 and defeat them with your bubbles!")
2092 ;; GPL2+ is for code, CC0 is for art.
2093 (license (list license:gpl2+ license:cc0))))
2094
2095 (define-public superstarfighter
2096 (package
2097 (name "superstarfighter")
2098 (version "0.6.4")
2099 (source
2100 (origin
2101 (method git-fetch)
2102 (uri (git-reference
2103 (url "https://github.com/notapixelstudio/superstarfighter")
2104 (commit (string-append "v" version))))
2105 (file-name (git-file-name name version))
2106 (sha256
2107 (base32 "1fly63yf5ls1xwm15if4lxwy67wi84k4gvjllljpykrl18vw2y0y"))))
2108 (build-system gnu-build-system)
2109 (arguments
2110 `(#:tests? #f ;there are no tests
2111 #:phases
2112 (modify-phases %standard-phases
2113 (replace 'configure
2114 (lambda _
2115 (chdir "godot")
2116 (setenv "HOME" (getcwd))
2117 (with-output-to-file "export_presets.cfg"
2118 (lambda ()
2119 (display
2120 "[preset.0]
2121 name=\"Guix\"
2122 platform=\"Linux/X11\"
2123 runnable=true
2124 [preset.0.options]")))
2125 #t))
2126 (replace 'build
2127 (lambda _
2128 (let ((godot (assoc-ref %build-inputs "godot-headless")))
2129 (invoke (string-append godot "/bin/godot_server")
2130 "--export-pack" "Guix"
2131 "superstarfighter.pck" "project.godot"))
2132 #t))
2133 (replace 'install
2134 (lambda* (#:key inputs outputs #:allow-other-keys)
2135 (let* ((out (assoc-ref outputs "out"))
2136 (bin (string-append out "/bin"))
2137 (share (string-append out "/share"))
2138 (data (string-append share "/superstarfighter"))
2139 (icons (string-append share "/icons/hicolor/256x256/apps")))
2140 (install-file "superstarfighter.pck" data)
2141 (mkdir-p bin)
2142 (call-with-output-file (string-append bin "/superstarfighter")
2143 (lambda (port)
2144 (format port
2145 "#!/bin/sh~@
2146 exec ~a/bin/godot --main-pack ~a/superstarfighter.pck~%"
2147 (assoc-ref inputs "godot")
2148 data)
2149 (chmod port #o755)))
2150 (mkdir-p icons)
2151 (copy-file "icon.png" (string-append icons "/" ,name ".png"))
2152 (make-desktop-entry-file
2153 (string-append share "/applications/" ,name ".desktop")
2154 #:name "SuperStarfighter"
2155 #:comment "Fast-paced arcade combat game"
2156 #:exec ,name
2157 #:icon ,name
2158 #:categories '("Game" "ArcadeGame")))
2159 #t)))))
2160 (native-inputs
2161 `(("godot-headless" ,godot "headless")))
2162 (inputs
2163 `(("godot" ,godot)))
2164 (home-page "https://notapixel.itch.io/superstarfighter")
2165 (synopsis "Fast-paced local multiplayer arcade game")
2166 (description "In SuperStarfighter, up to four local players compete in a
2167 2D arena with fast-moving ships and missiles. Different game types are
2168 available, as well as a single-player mode with AI-controlled ships.")
2169 (license (list license:expat ; game
2170 license:silofl1.1)))) ; fonts
2171
2172 (define %ufoai-commit "a542a87a891f96b1ab2c44d35b2f6f16859a5019")
2173 (define %ufoai-revision "0")
2174 (define %ufoai-version (git-version "2.6.0_dev" %ufoai-revision %ufoai-commit))
2175 (define ufoai-source
2176 (origin
2177 (method git-fetch)
2178 (uri (git-reference
2179 (url "git://git.code.sf.net/p/ufoai/code") ;HTTPS fails mid-clone
2180 (commit %ufoai-commit)))
2181 (file-name (string-append "ufoai-" %ufoai-version "-checkout"))
2182 (sha256
2183 (base32
2184 "024s7b9rcg7iw8i2p72gwnvabk23ljlq0nldws0y4b6hpwzyn1wz"))
2185 (modules '((guix build utils)
2186 (srfi srfi-1)
2187 (ice-9 ftw)))
2188 (snippet
2189 '(begin
2190 ;; Delete ~32MiB of bundled dependencies.
2191 (with-directory-excursion "src/libs"
2192 (for-each delete-file-recursively
2193 (lset-difference equal? (scandir ".")
2194 '("." ".." "gtest" "mumble"))))
2195
2196 ;; Use relative path to Lua headers.
2197 (substitute* "src/common/scripts_lua.h"
2198 (("\\.\\./libs/lua/") ""))
2199
2200 ;; Adjust Makefile targets to not depend on 'ufo2map', since we build
2201 ;; it as a separate package. This way we don't need to make the same
2202 ;; adjustments for 'ufoai-data' and 'ufoai' below.
2203 (substitute* "build/maps.mk"
2204 (("\\./ufo2map") "ufo2map")
2205 (("maps: ufo2map") "maps:"))
2206 (substitute* "build/modules/testall.mk"
2207 (("testall: ufo2map") "testall:"))
2208
2209 ;; If no cURL headers are found, the build system will try to include
2210 ;; the bundled version, even when not required. Prevent that.
2211 (substitute* "build/default.mk"
2212 (("^include src/libs/curl/lib/Makefile\\.inc")
2213 ""))
2214
2215 ;; While here, improve reproducibility by adding the '-X' flag to the
2216 ;; zip command used to create the map files, in order to prevent time
2217 ;; stamps from making it into the generated archives.
2218 (substitute* "build/data.mk"
2219 (("\\$\\(call ZIP\\)")
2220 "$(call ZIP) -X"))
2221 #t))))
2222
2223 (define-public ufo2map
2224 (package
2225 (name "ufo2map")
2226 (version %ufoai-version)
2227 (home-page "https://ufoai.org/")
2228 (source ufoai-source)
2229 (build-system gnu-build-system)
2230 (arguments
2231 '(#:configure-flags '("CC=gcc" "CXX=g++"
2232 "--enable-release"
2233 "--enable-ufo2map"
2234 "--disable-uforadiant"
2235 "--disable-cgame-campaign"
2236 "--disable-cgame-multiplayer"
2237 "--disable-cgame-skirmish"
2238 "--disable-game"
2239 "--disable-memory"
2240 "--disable-testall"
2241 "--disable-ufoded"
2242 "--disable-ufo"
2243 "--disable-ufomodel"
2244 "--disable-ufoslicer")
2245 #:tests? #f ;no tests
2246 #:phases (modify-phases %standard-phases
2247 (replace 'configure
2248 (lambda* (#:key (configure-flags '()) #:allow-other-keys)
2249 ;; The home-made configure script does not understand
2250 ;; some of the default flags of gnu-build-system.
2251 (apply invoke "./configure" configure-flags)))
2252 (replace 'install
2253 (lambda* (#:key outputs #:allow-other-keys)
2254 (let ((out (assoc-ref outputs "out")))
2255 (install-file "ufo2map" (string-append out "/bin"))
2256 (install-file "debian/ufo2map.6"
2257 (string-append out "/share/man/man6"))
2258 #t))))))
2259 (native-inputs
2260 `(("pkg-config" ,pkg-config)))
2261 (inputs
2262 `(("libjpeg" ,libjpeg-turbo)
2263 ("libpng" ,libpng)
2264 ("lua" ,lua-5.1)
2265 ("sdl-union" ,(sdl-union (list sdl2 sdl2-mixer sdl2-ttf)))))
2266 (synopsis "UFO: AI map generator")
2267 (description
2268 "This package provides @command{ufo2map}, a program used to generate
2269 maps for the UFO: Alien Invasion strategy game.")
2270 (license license:gpl2+)))
2271
2272 (define ufoai-data
2273 (package
2274 (name "ufoai-data")
2275 (version %ufoai-version)
2276 (home-page "https://ufoai.org/")
2277 (source ufoai-source)
2278 (build-system gnu-build-system)
2279 (arguments
2280 '(#:tests? #f
2281 #:configure-flags '("CC=gcc" "CXX=g++")
2282 #:phases (modify-phases %standard-phases
2283 (replace 'configure
2284 (lambda* (#:key outputs (configure-flags '()) #:allow-other-keys)
2285 (apply invoke "./configure" configure-flags)))
2286 (replace 'build
2287 (lambda* (#:key (parallel-build? #t) #:allow-other-keys)
2288 (invoke "make"
2289 "-j" (if parallel-build?
2290 (number->string (parallel-job-count))
2291 "1")
2292 "maps")))
2293 (add-after 'build 'pack
2294 (lambda _
2295 (invoke "make" "pk3")))
2296 (replace 'install
2297 (lambda* (#:key outputs #:allow-other-keys)
2298 (let ((out (assoc-ref outputs "out")))
2299 (for-each (lambda (file)
2300 (install-file file out))
2301 (find-files "base" "\\.pk3$"))
2302 #t))))))
2303 (native-inputs
2304 `(("python" ,python-2)
2305 ("ufo2map" ,ufo2map)
2306 ("which" ,which)
2307 ("zip" ,zip)))
2308 (synopsis "UFO: AI data files")
2309 (description
2310 "This package contains maps and other assets for UFO: Alien Invasion.")
2311 ;; Most assets are available under either GPL2 or GPL2+. Some use other
2312 ;; licenses, see LICENSES for details.
2313 (license (list license:gpl2+ license:gpl2 license:cc-by3.0
2314 license:cc-by-sa3.0 license:public-domain))))
2315
2316 (define-public ufoai
2317 (package
2318 (name "ufoai")
2319 (version %ufoai-version)
2320 (home-page "https://ufoai.org/")
2321 (source ufoai-source)
2322 (build-system gnu-build-system)
2323 (arguments
2324 `(#:configure-flags
2325 (list (string-append "--prefix=" (assoc-ref %outputs "out"))
2326 (string-append "--datadir=" (assoc-ref %outputs "out")
2327 "/share/games/ufo")
2328 "CC=gcc" "CXX=g++"
2329 "--enable-release"
2330 "--enable-game"
2331 "--disable-ufo2map"
2332 "--disable-dependency-tracking"
2333
2334 ;; Disable hard links to prevent huge NARs.
2335 "--disable-hardlinkedgame"
2336 "--disable-hardlinkedcgame")
2337 #:phases (modify-phases %standard-phases
2338 (add-after 'unpack 'symlink-data-files
2339 (lambda* (#:key inputs #:allow-other-keys)
2340 (let ((data (assoc-ref inputs "ufoai-data")))
2341 ;; Symlink the data files to where the build system
2342 ;; expects to find them. Ultimately these files are
2343 ;; copied to $out/share/games/ufoai/base, losing the
2344 ;; symlinks; we could fix that after install, but it
2345 ;; does not make a big difference in practice due to
2346 ;; deduplication.
2347 (with-directory-excursion "base"
2348 (for-each (lambda (file)
2349 (symlink file (basename file)))
2350 (find-files data "\\.pk3$")))
2351 #t)))
2352 (add-before 'configure 'create-language-files
2353 (lambda _
2354 (invoke "make" "lang")))
2355 (replace 'configure
2356 (lambda* (#:key outputs (configure-flags '()) #:allow-other-keys)
2357 (apply invoke "./configure" configure-flags)))
2358 (replace 'check
2359 (lambda* (#:key tests? #:allow-other-keys)
2360 (if tests?
2361 (invoke "./testall")
2362 (format #t "test suite not run~%"))
2363 #t))
2364 (add-after 'install 'install-man-pages
2365 (lambda* (#:key outputs #:allow-other-keys)
2366 (let* ((out (assoc-ref outputs "out"))
2367 (man6 (string-append out "/share/man/man6")))
2368 (install-file "debian/ufo.6" man6)
2369 (install-file "debian/ufoded.6" man6)
2370 #t))))
2371
2372 ;; TODO: Some map tests occasionally fail because of randomness issues,
2373 ;; e.g. not enough generated aliens. The test runner also fails early
2374 ;; in the build container with 'failed to shutdown server'?
2375 #:tests? #f))
2376 (native-inputs
2377 `(("gettext" ,gettext-minimal)
2378 ("pkg-config" ,pkg-config)
2379 ("python" ,python-2)
2380 ("ufo2map" ,ufo2map)
2381 ("ufoai-data" ,ufoai-data)))
2382 (inputs
2383 `(("curl" ,curl)
2384 ("libjpeg" ,libjpeg-turbo)
2385 ("libogg" ,libogg)
2386 ("libpng" ,libpng)
2387 ("libtheora" ,libtheora)
2388 ("libvorbis" ,libvorbis)
2389 ("libxml2" ,libxml2)
2390 ("lua" ,lua-5.1)
2391 ("mesa" ,mesa)
2392 ("minixml" ,minixml)
2393 ("sdl-union" ,(sdl-union (list sdl2 sdl2-mixer sdl2-ttf)))
2394 ("zlib" ,zlib)))
2395 (synopsis "Turn-based tactical strategy game")
2396 (description
2397 "UFO: Alien Invasion is a tactical strategy game set in the year 2084.
2398 You control a secret organisation charged with defending Earth from a brutal
2399 alien enemy. Build up your bases, prepare your team, and dive head-first into
2400 the fast and flowing turn-based combat.
2401
2402 Over the long term you will need to conduct research into the alien threat to
2403 figure out their mysterious goals and use their powerful weapons for your own
2404 ends. You will produce unique items and use them in combat against your
2405 enemies.
2406
2407 You can also use them against your friends with the multiplayer functionality.
2408
2409 Warning: This is a pre-release version of UFO: AI! Some things may not work
2410 properly.")
2411
2412 ;; The game code and most assets are GPL2+, but we use GPL2 only here
2413 ;; because some assets do not use the "or later" clause. Many individual
2414 ;; assets use Creative Commons or Public Domain; see the LICENSE file.
2415 (license (delete license:gpl2+ (package-license ufoai-data)))))
2416
2417 (define-public xshogi
2418 (package
2419 (name "xshogi")
2420 (version "1.4.2")
2421 (source
2422 (origin
2423 (method url-fetch)
2424 (uri (string-append "mirror://gnu/gnushogi/xshogi-"
2425 version ".tar.gz"))
2426 (sha256
2427 (base32
2428 "1dns0nhymak44by18sv48m4xb2skiwbi2i3nb9hl6w9iwd2i2brf"))))
2429 (build-system gnu-build-system)
2430 (inputs
2431 `(("libxaw" ,libxaw)
2432 ("libxt" ,libxt)))
2433 (home-page "https://www.gnu.org/software/gnushogi/")
2434 (synopsis "User interface for gnushogi")
2435 (description "A graphical user interface for the package @code{gnushogi}.")
2436 ;; Contains a copy of GPLv3 but the licence notices simply
2437 ;; state "GNU General Public Licence" without specifying a version.
2438 (license license:gpl1+)))
2439
2440 (define-public abbaye
2441 (package
2442 (name "abbaye")
2443 (version "2.0.1")
2444 (source
2445 (origin
2446 (method git-fetch)
2447 (uri (git-reference
2448 (url "https://github.com/nevat/abbayedesmorts-gpl")
2449 (commit (string-append "v" version))))
2450 (file-name (git-file-name name version))
2451 (sha256
2452 (base32 "1pwqf7r9bqb2p3xrw9i7y8pgr1401fy3mnnqpb1qkhmdl3gqi9hb"))
2453 (modules '((guix build utils)))
2454 (snippet
2455 ;; Unbundle fonts.
2456 '(begin
2457 (delete-file-recursively "fonts")
2458 #t))))
2459 (build-system gnu-build-system)
2460 (arguments
2461 '(#:make-flags '("CC=gcc")
2462 #:phases (modify-phases %standard-phases
2463 (add-after 'set-paths 'set-sdl-paths
2464 (lambda* (#:key inputs #:allow-other-keys)
2465 (setenv "CPATH"
2466 (string-append (assoc-ref inputs "sdl-union")
2467 "/include/SDL:"
2468 (or (getenv "CPATH") "")))))
2469 (add-after 'patch-source-shebangs 'patch-makefile
2470 (lambda* (#:key outputs #:allow-other-keys)
2471 ;; Replace /usr with package output directory.
2472 (substitute* "Makefile"
2473 (("/usr") (assoc-ref outputs "out")))))
2474 (add-before 'install 'make-install-dirs
2475 (lambda* (#:key outputs #:allow-other-keys)
2476 (let ((prefix (assoc-ref outputs "out")))
2477 ;; Create directories that the makefile assumes exist.
2478 (mkdir-p (string-append prefix "/bin"))
2479 (mkdir-p (string-append prefix "/share/applications"))
2480 (mkdir-p (string-append prefix "/share/pixmaps")))))
2481 ;; No configure script.
2482 (delete 'configure))
2483 #:tests? #f)) ;; No check target.
2484 (native-inputs `(("pkg-config" ,pkg-config)))
2485 (inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer)))))
2486 (home-page "https://github.com/nevat/abbayedesmorts-gpl")
2487 (synopsis "GNU/Linux port of the indie game \"l'Abbaye des Morts\"")
2488 (description "L'Abbaye des Morts is a 2D platform game set in 13th century
2489 France. The Cathars, who preach about good Christian beliefs, were being
2490 expelled by the Catholic Church out of the Languedoc region in France. One of
2491 them, called Jean Raymond, found an old church in which to hide, not knowing
2492 that beneath its ruins lay buried an ancient evil.")
2493 (license license:gpl3)))
2494
2495 (define-public angband
2496 (package
2497 (name "angband")
2498 (version "4.2.1")
2499 (source
2500 (origin
2501 (method url-fetch)
2502 (uri (string-append "https://rephial.org/downloads/"
2503 (version-major+minor version)
2504 "/angband-" version ".tar.gz"))
2505 (sha256
2506 (base32 "03qdavkj2ik02mqjxmlm5bn17ba3yxb1rirp8ghnxy3bsk4kbmxc"))
2507 (modules '((guix build utils)))
2508 (snippet
2509 ;; So, some of the sounds/graphics/tilesets are under different
2510 ;; licenses... some of them even nonfree! This is a console-only
2511 ;; version of this package so we just remove them.
2512 ;; In the future, if someone tries to make a graphical variant of
2513 ;; this package, they can deal with that mess themselves. :)
2514 '(begin
2515 (for-each (lambda (subdir)
2516 (let ((lib-subdir (string-append "lib/" subdir)))
2517 (delete-file-recursively lib-subdir)))
2518 '("fonts" "icons" "sounds" "tiles"))
2519 (substitute* "lib/Makefile"
2520 ;; And don't try to invoke makefiles in the directories we removed.
2521 (("gamedata customize help screens fonts tiles sounds icons user")
2522 "gamedata customize help screens user"))
2523 #t))))
2524 (build-system gnu-build-system)
2525 (arguments
2526 `(#:tests? #f ; no check target
2527 #:configure-flags (list (string-append "--bindir=" %output "/bin"))
2528 #:phases
2529 (modify-phases %standard-phases
2530 (replace 'bootstrap
2531 (lambda _
2532 (substitute* "acinclude.m4"
2533 (("ncursesw5-config") "ncursesw6-config"))
2534 (invoke "sh" "autogen.sh"))))))
2535 (native-inputs
2536 `(("autoconf" ,autoconf)
2537 ("automake" ,automake)))
2538 (inputs `(("ncurses" ,ncurses)))
2539 (home-page "https://rephial.org/")
2540 (synopsis "Dungeon exploration roguelike")
2541 (description "Angband is a Classic dungeon exploration roguelike. Explore
2542 the depths below Angband, seeking riches, fighting monsters, and preparing to
2543 fight Morgoth, the Lord of Darkness.")
2544 (license license:gpl2)))
2545
2546 (define-public pingus
2547 (package
2548 (name "pingus")
2549 (version "0.7.6")
2550 (source
2551 (origin
2552 (method git-fetch)
2553 (uri (git-reference
2554 (url "https://gitlab.com/pingus/pingus.git")
2555 (commit (string-append "v" version))))
2556 (file-name (git-file-name name version))
2557 (sha256
2558 (base32
2559 "0wp06kcmknsnxz7bjnsndb8x062z7r23fb3yrnbfnj68qhz18y74"))
2560 (patches (search-patches "pingus-boost-headers.patch"
2561 "pingus-sdl-libs-config.patch"))
2562 (modules '((guix build utils)))
2563 (snippet
2564 '(begin
2565 (substitute* "src/pingus/screens/demo_session.cpp"
2566 (("#include <iostream>")
2567 ;; std::function moved to <functional> with C++ 11.
2568 ;; Remove this for versions newer than 0.7.6.
2569 "#include <iostream>\n#include <functional>"))
2570 #t))))
2571 (build-system gnu-build-system)
2572 (native-inputs `(("pkg-config" ,pkg-config)
2573 ("scons-python2" ,scons-python2)))
2574 (inputs `(("sdl" ,sdl)
2575 ("sdl-image" ,sdl-image)
2576 ("sdl-mixer" ,sdl-mixer)
2577 ("mesa" ,mesa)
2578 ("glu" ,glu)
2579 ("libpng" ,libpng)
2580 ("boost" ,boost)))
2581 (arguments
2582 '(#:make-flags (list (string-append "PREFIX=" %output))
2583 #:tests? #f ; no check target
2584 #:phases
2585 (modify-phases %standard-phases
2586 (delete 'configure)))) ; no configure script
2587 (home-page "https://pingus.seul.org/")
2588 (synopsis "Lemmings clone")
2589 (description
2590 "Pingus is a free Lemmings-like puzzle game in which the player takes
2591 command of a bunch of small animals and has to guide them through levels.
2592 Since the animals walk on their own, the player can only influence them by
2593 giving them commands, like build a bridge, dig a hole, or redirect all animals
2594 in the other direction. Multiple such commands are necessary to reach the
2595 level's exit. The game is presented in a 2D side view.")
2596 ;; Some source files are under bsd-3 and gpl2+ licenses.
2597 (license license:gpl3+)))
2598
2599 (define-public talkfilters
2600 (package
2601 (name "talkfilters")
2602 (version "2.3.8")
2603 (source
2604 (origin
2605 (method url-fetch)
2606 (uri (string-append "http://www.hyperrealm.com/talkfilters/"
2607 "talkfilters-" version ".tar.gz"))
2608 (sha256
2609 (base32 "19nc5vq4bnkjvhk8srqddzhcs93jyvpm9r6lzjzwc1mgf08yg0a6"))))
2610 (build-system gnu-build-system)
2611 (home-page "https://www.gnu.org/software/talkfilters/")
2612 (synopsis "Convert English text to humorous dialects")
2613 (description "The GNU Talk Filters are programs that convert English text
2614 into stereotyped or otherwise humorous dialects. The filters are provided as
2615 a C library, so they can easily be integrated into other programs.")
2616 (license license:gpl2+)))
2617
2618 (define-public taisei
2619 (package
2620 (name "taisei")
2621 (version "1.3.1")
2622 (source
2623 (origin
2624 (method url-fetch)
2625 (uri (string-append "https://github.com/taisei-project/"
2626 "taisei/releases/download/v" version
2627 "/taisei-v" version ".tar.xz"))
2628 (sha256
2629 (base32 "11f9mlqmzy1lszwcc1nsbar9q1hs4ml6pbm52hqfd4q0f4x3ln46"))))
2630 (build-system meson-build-system)
2631 (arguments
2632 `(#:build-type "release" ;comment out for bug-reporting (and cheats)
2633 #:configure-flags
2634 (list "-Dr_default=gles30"
2635 "-Dr_gles20=true"
2636 "-Dr_gles30=true"
2637 "-Dshader_transpiler=true")))
2638 (native-inputs
2639 `(("pkg-config" ,pkg-config)
2640 ("python" ,python)
2641 ("python-docutils" ,python-docutils)
2642 ("python-pygments" ,python-pygments)))
2643 (inputs
2644 `(("freetype" ,freetype)
2645 ("libpng" ,libpng)
2646 ("libwebp" ,libwebp)
2647 ("libzip" ,libzip)
2648 ("mesa" ,mesa)
2649 ("openssl" ,openssl)
2650 ("opusfile" ,opusfile)
2651 ("sdl2" ,sdl2)
2652 ("sdl2-mixer" ,sdl2-mixer)
2653 ("shaderc" ,shaderc)
2654 ("spirv-cross" ,spirv-cross)
2655 ("zlib" ,zlib)))
2656 (home-page "https://taisei-project.org/")
2657 (synopsis "Shoot'em up fangame and libre clone of Touhou Project")
2658 (description
2659 "The player controls a character (one of three: Good, Bad, and Dead),
2660 dodges the missiles (lots of it cover the screen, but the character's hitbox
2661 is very small), and shoot at the adversaries that keep appear on the screen.")
2662 (license (list ;;game
2663 license:expat
2664 ;;resources/00-taisei.pkgdir/bgm/
2665 ;;atlas/portraits/
2666 license:cc-by4.0
2667 ;;miscellaneous
2668 license:cc0
2669 license:public-domain))))
2670
2671 (define-public cmatrix
2672 (package
2673 (name "cmatrix")
2674 (version "2.0")
2675 (source
2676 (origin
2677 (method git-fetch)
2678 (uri (git-reference
2679 (url "https://github.com/abishekvashok/cmatrix")
2680 (commit (string-append "v" version))))
2681 (file-name (git-file-name name version))
2682 (sha256
2683 (base32
2684 "1h9jz4m4s5l8c3figaq46ja0km1gimrkfxm4dg7mf4s84icmasbm"))))
2685 (build-system gnu-build-system)
2686 (native-inputs
2687 `(("autoconf" ,autoconf)
2688 ("automake" ,automake)))
2689 (arguments
2690 '(#:phases
2691 (modify-phases %standard-phases
2692 (replace 'configure
2693 (lambda* (#:key outputs #:allow-other-keys)
2694 ;; This old ‘configure’ script doesn't support
2695 ;; variables passed as arguments.
2696 (let ((out (assoc-ref outputs "out")))
2697 (setenv "CONFIG_SHELL" (which "bash"))
2698 (invoke "./configure"
2699 (string-append "--prefix=" out))))))))
2700 (inputs `(("ncurses" ,ncurses)))
2701 (home-page "http://www.asty.org/cmatrix")
2702 (synopsis "Simulate the display from \"The Matrix\"")
2703 (description "CMatrix simulates the display from \"The Matrix\" and is
2704 based on the screensaver from the movie's website. It works with terminal
2705 settings up to 132x300 and can scroll lines all at the same rate or
2706 asynchronously and at a user-defined speed.")
2707 (license license:gpl2+)))
2708
2709 (define-public chess
2710 (package
2711 (name "chess")
2712 (version "6.2.7")
2713 (source
2714 (origin
2715 (method url-fetch)
2716 (uri (string-append "mirror://gnu/chess/gnuchess-" version
2717 ".tar.gz"))
2718 (sha256
2719 (base32
2720 "0ilq4bfl0lwyzf11q7n2skydjhalfn3bgxhrp5hjxs5bc5d6fdp5"))))
2721 (build-system gnu-build-system)
2722 (home-page "https://www.gnu.org/software/chess/")
2723 (synopsis "Full chess implementation")
2724 (description "GNU Chess is a chess engine. It allows you to compete
2725 against the computer in a game of chess, either through the default terminal
2726 interface or via an external visual interface such as GNU XBoard.")
2727 (properties '((upstream-name . "gnuchess")
2728 (ftp-directory . "/chess")))
2729 (license license:gpl3+)))
2730
2731 (define-public freedink-engine
2732 (package
2733 (name "freedink-engine")
2734 (version "109.6")
2735 (source (origin
2736 (method url-fetch)
2737 (uri (string-append "mirror://gnu/freedink/freedink-" version
2738 ".tar.gz"))
2739 (patches (search-patches "freedink-engine-fix-sdl-hints.patch"))
2740 (sha256
2741 (base32
2742 "00hhk1bjdrc1np2qz44sa5n1mb62qzwxbvsnws3vpms6iyn3a2sy"))))
2743 (build-system gnu-build-system)
2744 (arguments
2745 `(#:configure-flags '("--disable-embedded-resources")
2746 #:phases
2747 (modify-phases %standard-phases
2748 (add-after 'unpack 'disable-graphical-tests
2749 (lambda _
2750 ;; These tests require a graphical interface.
2751 (substitute* "src/Makefile.am"
2752 (("test_gfx_fonts TestIOGfxDisplay") ""))
2753 #t))
2754 (add-before 'bootstrap 'autoreconf
2755 (lambda _
2756 ;; automake is out of date in the source
2757 ;; autoreconf updates the automake scripts
2758 (invoke "autoreconf")
2759 ;; Build fails when autom4te.cache exists.
2760 (delete-file-recursively "autom4te.cache")
2761 #t))
2762 (add-after 'install 'delete-freedinkedit-desktop
2763 (lambda* (#:key outputs #:allow-other-keys)
2764 (let ((out (assoc-ref outputs "out")))
2765 ;; freedinkedit does not know where to find freedink data
2766 ;; freedink data is read-only, so it cannot be edited anyway.
2767 ;; TODO: fix freedink.desktop
2768 (delete-file-recursively (string-append
2769 out "/share/applications"))
2770 #t))))))
2771 (native-inputs `(("autoconf" ,autoconf)
2772 ("automake" ,automake)
2773 ("cxxtest" ,cxxtest)
2774 ("gettext" ,gettext-minimal)
2775 ("help2man" ,help2man)
2776 ("pkg-config" ,pkg-config)))
2777 (inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer
2778 sdl2-ttf sdl2-gfx)))
2779 ("fontconfig" ,fontconfig)
2780 ("glm" ,glm)))
2781 (properties '((ftp-directory . "/freedink")
2782 (upstream-name . "freedink")))
2783 (home-page "https://www.gnu.org/software/freedink/")
2784 (synopsis "Twisted adventures of young pig farmer Dink Smallwood")
2785 (description
2786 "GNU FreeDink is a free and portable re-implementation of the engine
2787 for the role-playing game Dink Smallwood. It supports not only the original
2788 game data files but it also supports user-produced game mods or \"D-Mods\".
2789 To that extent, it also includes a front-end for managing all of your D-Mods.")
2790 (license license:gpl3+)))
2791
2792 (define-public freedink-data
2793 (package
2794 (name "freedink-data")
2795 (version "1.08.20190120")
2796 (source (origin
2797 (method url-fetch)
2798 (uri (string-append "mirror://gnu/freedink/freedink-data-"
2799 version ".tar.gz"))
2800 (sha256
2801 (base32
2802 "17gvryadlxk172mblbsil7hina1z5wahwaxnr6g3mdq57dvl8pvi"))))
2803 (build-system gnu-build-system)
2804 (arguments
2805 `(#:phases
2806 (modify-phases %standard-phases
2807 (delete 'configure) ; no configure script
2808 (delete 'check)) ; no tests
2809 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))))
2810 (properties '((ftp-directory . "/freedink")))
2811 (home-page "https://www.gnu.org/software/freedink/")
2812 (synopsis "Game data for GNU Freedink")
2813 (description
2814 "This package contains the game data of GNU Freedink.")
2815 (license license:gpl3+)))
2816
2817 (define-public freedink-dfarc
2818 (package
2819 (name "freedink-dfarc")
2820 (version "3.14")
2821 (source (origin
2822 (method url-fetch)
2823 (uri (string-append "mirror://gnu/freedink/dfarc-"
2824 version ".tar.gz"))
2825 (sha256
2826 (base32
2827 "1yp8n3w426xnlp10xk06vfi2y3k9xrcfyck7s7qs1v0ys7n284d5"))))
2828 (build-system gnu-build-system)
2829 (native-inputs
2830 `(("intltool" ,intltool)))
2831 (inputs
2832 `(("bzip2" ,bzip2)
2833 ("wxwidgets" ,wxwidgets)))
2834 (properties '((ftp-directory . "/freedink")
2835 (upstream-name . "dfarc")))
2836 (home-page "https://www.gnu.org/software/freedink/")
2837 (synopsis "Front-end for managing and playing Dink Modules")
2838 (description "DFArc makes it easy to play and manage the GNU FreeDink game
2839 and its numerous D-Mods.")
2840 (license license:gpl3+)))
2841
2842 (define-public freedink
2843 ;; This is a wrapper that tells the engine where to find the data.
2844 (package (inherit freedink-engine)
2845 (name "freedink")
2846 (build-system trivial-build-system)
2847 (arguments
2848 '(#:builder (begin
2849 (use-modules (guix build utils))
2850
2851 (let* ((output (assoc-ref %outputs "out"))
2852 (bin (string-append output "/bin"))
2853 (executable (string-append bin "/freedink")))
2854 (mkdir-p bin)
2855 (call-with-output-file executable
2856 (lambda (port)
2857 (format port "#!~a/bin/sh
2858 exec ~a/bin/freedink -refdir ~a/share/dink\n"
2859 (assoc-ref %build-inputs "bash")
2860 (assoc-ref %build-inputs "engine")
2861 (assoc-ref %build-inputs "data"))
2862 (chmod port #o777)))
2863 #t))
2864 #:modules ((guix build utils))))
2865 (inputs `(("engine" ,freedink-engine)
2866 ("data" ,freedink-data)
2867 ("bash" ,bash)))
2868 (native-inputs '())))
2869
2870 (define-public xboard
2871 (package
2872 (name "xboard")
2873 (version "4.9.1")
2874 (source
2875 (origin
2876 (method url-fetch)
2877 (uri (string-append "mirror://gnu/xboard/xboard-" version
2878 ".tar.gz"))
2879 (sha256
2880 (base32
2881 "1mkh36xnnacnz9r00b5f9ld9309k32jv6mcavklbdnca8bl56bib"))))
2882 (build-system gnu-build-system)
2883 (inputs
2884 `(("gtk+" ,gtk+-2)
2885 ("librsvg" ,librsvg)))
2886 (native-inputs
2887 `(("texinfo" ,texinfo)
2888 ("pkg-config" ,pkg-config)))
2889 (home-page "https://www.gnu.org/software/xboard/")
2890 (synopsis "Graphical user interface for chess programs")
2891 (description "GNU XBoard is a graphical board for all varieties of chess,
2892 including international chess, xiangqi (Chinese chess), shogi (Japanese chess)
2893 and Makruk. Several lesser-known variants are also supported. It presents a
2894 fully interactive graphical interface and it can load and save games in the
2895 Portable Game Notation.")
2896 (license license:gpl3+)))
2897
2898 (define-public gtypist
2899 (package
2900 (name "gtypist")
2901 (version "2.9.5")
2902 (source (origin
2903 (method url-fetch)
2904 (uri (string-append "mirror://gnu/gtypist/gtypist-"
2905 version ".tar.xz"))
2906 (sha256
2907 (base32
2908 "0xzrkkmj0b1dw3yr0m9hml2y634cc4h61im6zwcq57s7285z8fn1"))
2909 (modules '((guix build utils)))
2910 (snippet
2911 ;; We do not provide `ncurses.h' within an `ncursesw'
2912 ;; sub-directory, so patch the source accordingly. See
2913 ;; <http://bugs.gnu.org/19018>.
2914 '(begin
2915 (for-each (lambda (file)
2916 (substitute* file
2917 (("ncursesw/ncurses.h")
2918 "ncurses.h")))
2919 (find-files "." "configure$|\\.c$"))
2920 #t))))
2921 (build-system gnu-build-system)
2922 (inputs `(("ncurses" ,ncurses)
2923 ("perl" ,perl)))
2924 (home-page "https://www.gnu.org/software/gtypist/")
2925 (synopsis "Typing tutor")
2926 (description
2927 "GNU Typist is a universal typing tutor. It can be used to learn and
2928 practice touch-typing. Several tutorials are included; in addition to
2929 tutorials for the standard QWERTY layout, there are also tutorials for the
2930 alternative layouts Dvorak and Colemak, as well as for the numpad. Tutorials
2931 are primarily in English, however some in other languages are provided.")
2932 (license license:gpl3+)))
2933
2934 (define-public irrlicht
2935 (package
2936 (name "irrlicht")
2937 (version "1.8.4")
2938 (source (origin
2939 (method url-fetch)
2940 (uri (string-append
2941 "mirror://sourceforge/irrlicht/Irrlicht%20SDK/"
2942 (version-major+minor version)
2943 "/" version "/irrlicht-" version ".zip"))
2944 (sha256
2945 (base32
2946 "0cz4z4dwrv5ypl19ll67wl6jjpy5k6ly4vr042w4br88qq5jhazl"))
2947 (patches (search-patches "irrlicht-use-system-libs.patch"))
2948 (modules '((guix build utils)))
2949 (snippet
2950 '(begin
2951 (for-each delete-file-recursively
2952 '("bin" ; bundled compiled Windows binaries"
2953 "source/Irrlicht/MacOSX"
2954 "source/Irrlicht/bzip2"
2955 "source/Irrlicht/jpeglib"
2956 "source/Irrlicht/libpng"
2957 "source/Irrlicht/lzma"
2958 "source/Irrlicht/zlib"))
2959 (delete-file "source/Irrlicht/glext.h")
2960 (delete-file "source/Irrlicht/glxext.h")
2961 (delete-file "source/Irrlicht/wglext.h")
2962 #t))))
2963 (build-system gnu-build-system)
2964 (arguments
2965 `(#:phases
2966 (modify-phases %standard-phases
2967 (add-after 'unpack 'chdir-to-source
2968 (lambda _
2969 ;; The actual source is buried a few directories deep.
2970 (chdir "source/Irrlicht/")
2971 #t))
2972 (add-after 'chdir-to-source 'fix-build-env
2973 (lambda* (#:key outputs #:allow-other-keys)
2974 (let ((out (assoc-ref outputs "out")))
2975 (substitute* "Makefile"
2976 (("INSTALL_DIR = /usr/local/lib")
2977 (string-append "INSTALL_DIR = " out "/lib"))
2978 ;; Add '-fpermissive' to the CXXFLAGS
2979 (("-Wall") "-Wall -fpermissive")) ; CImageLoaderJPG.cpp
2980 ;; The Makefile assumes these directories exist.
2981 (mkdir-p (string-append out "/lib"))
2982 (mkdir-p (string-append out "/include")))))
2983 (delete 'configure)) ; no configure script
2984 #:tests? #f ; no check target
2985 #:make-flags '("CC=gcc" "sharedlib")))
2986 (inputs
2987 `(("bzip2" ,bzip2)
2988 ("libjpeg" ,libjpeg-turbo)
2989 ("libpng" ,libpng)
2990 ("libx11" ,libx11)
2991 ("libxxf86vm" ,libxxf86vm)
2992 ("mesa" ,mesa)))
2993 (synopsis "3D game engine written in C++")
2994 (description
2995 "The Irrlicht Engine is a high performance realtime 3D engine written in
2996 C++. Features include an OpenGL renderer, extensible materials, scene graph
2997 management, character animation, particle and other special effects, support
2998 for common mesh file formats, and collision detection.")
2999 (home-page "http://irrlicht.sourceforge.net/")
3000 (license license:zlib)))
3001
3002 (define-public mars
3003 ;; The latest release on SourceForge relies on an unreleased version of SFML
3004 ;; with a different API, so we take the latest version from the official
3005 ;; repository on Github.
3006 (let ((commit "c855d044094a1d92317e38935d81ba938946132e")
3007 (revision "1"))
3008 (package
3009 (name "mars")
3010 (version (string-append "0.7.5." revision "." (string-take commit 7) ))
3011 (source (origin
3012 (method git-fetch)
3013 (uri (git-reference
3014 (url "https://github.com/thelaui/M.A.R.S.")
3015 (commit commit)))
3016 (file-name (git-file-name name version))
3017 (sha256
3018 (base32
3019 "1r4c5gap1z2zsv4yjd34qriqkxaq4lb4rykapyzkkdf4g36lc3nh"))
3020 (patches (search-patches "mars-sfml-2.3.patch"
3021 "mars-install.patch"))))
3022 (build-system cmake-build-system)
3023 (arguments
3024 `(#:tests? #f ; There are no tests
3025 #:phases
3026 (modify-phases %standard-phases
3027 (add-after 'unpack 'fix-install-path
3028 (lambda _
3029 (substitute* "src/CMakeLists.txt"
3030 (("\\$\\{CMAKE_INSTALL_PREFIX\\}/games")
3031 "${CMAKE_INSTALL_PREFIX}/bin"))
3032 #t))
3033 (add-after 'unpack 'fix-data-path
3034 (lambda* (#:key outputs #:allow-other-keys)
3035 (substitute* "src/System/settings.cpp"
3036 (("C_dataPath = \"./data/\";")
3037 (string-append "C_dataPath = \""
3038 (assoc-ref outputs "out")
3039 "/share/games/marsshooter/\";")))
3040 #t)))))
3041 (inputs
3042 `(("mesa" ,mesa)
3043 ("fribidi" ,fribidi)
3044 ("taglib" ,taglib)
3045 ("sfml" ,sfml)))
3046 (home-page "http://mars-game.sourceforge.net/")
3047 (synopsis "2D space shooter")
3048 (description
3049 "M.A.R.S. is a 2D space shooter with pretty visual effects and
3050 attractive physics. Players can battle each other or computer controlled
3051 enemies in different game modes such as space ball, death match, team death
3052 match, cannon keep, and grave-itation pit.")
3053 (license license:gpl3+))))
3054
3055 (define-public minetest
3056 (package
3057 (name "minetest")
3058 (version "5.3.0")
3059 (source (origin
3060 (method git-fetch)
3061 (uri (git-reference
3062 (url "https://github.com/minetest/minetest")
3063 (commit version)))
3064 (file-name (git-file-name name version))
3065 (sha256
3066 (base32
3067 "03ga3j3cg38w4lg4d4qxasmnjdl8n3lbizidrinanvyfdyvznyh6"))
3068 (modules '((guix build utils)))
3069 (snippet
3070 '(begin
3071 ;; Delete bundled libraries.
3072 (delete-file-recursively "lib")
3073 #t))))
3074 (build-system cmake-build-system)
3075 (arguments
3076 '(#:configure-flags
3077 (list "-DRUN_IN_PLACE=0"
3078 "-DENABLE_FREETYPE=1"
3079 "-DENABLE_GETTEXT=1"
3080 "-DENABLE_SYSTEM_JSONCPP=TRUE"
3081 (string-append "-DIRRLICHT_INCLUDE_DIR="
3082 (assoc-ref %build-inputs "irrlicht")
3083 "/include/irrlicht")
3084 (string-append "-DCURL_INCLUDE_DIR="
3085 (assoc-ref %build-inputs "curl")
3086 "/include/curl"))
3087 #:tests? #f)) ;no check target
3088 (native-search-paths
3089 (list (search-path-specification
3090 (variable "MINETEST_SUBGAME_PATH")
3091 (files '("share/minetest/games")))))
3092 (native-inputs
3093 `(("pkg-config" ,pkg-config)))
3094 (inputs
3095 `(("curl" ,curl)
3096 ("freetype" ,freetype)
3097 ("gettext" ,gettext-minimal)
3098 ("gmp" ,gmp)
3099 ("irrlicht" ,irrlicht)
3100 ("jsoncpp" ,jsoncpp)
3101 ("libjpeg" ,libjpeg-turbo)
3102 ("libpng" ,libpng)
3103 ("libogg" ,libogg)
3104 ("libvorbis" ,libvorbis)
3105 ("libxxf86vm" ,libxxf86vm)
3106 ("luajit" ,luajit)
3107 ("mesa" ,mesa)
3108 ("ncurses" ,ncurses)
3109 ("openal" ,openal)
3110 ("sqlite" ,sqlite)))
3111 (propagated-inputs
3112 `(("minetest-data" ,minetest-data)))
3113 (synopsis "Infinite-world block sandbox game")
3114 (description
3115 "Minetest is a sandbox construction game. Players can create and destroy
3116 various types of blocks in a three-dimensional open world. This allows
3117 forming structures in every possible creation, on multiplayer servers or as a
3118 single player. Mods and texture packs allow players to personalize the game
3119 in different ways.")
3120 (home-page "https://www.minetest.net/")
3121 (license license:lgpl2.1+)))
3122
3123 (define minetest-data
3124 (package
3125 (name "minetest-data")
3126 (version (package-version minetest))
3127 (source (origin
3128 (method git-fetch)
3129 (uri (git-reference
3130 (url "https://github.com/minetest/minetest_game")
3131 (commit version)))
3132 (file-name (git-file-name name version))
3133 (sha256
3134 (base32
3135 "1liciwlh013z5h08ib0psjbwn5wkvlr937ir7kslfk4vly984cjx"))))
3136 (build-system trivial-build-system)
3137 (native-inputs
3138 `(("source" ,source)))
3139 (arguments
3140 `(#:modules ((guix build utils))
3141 #:builder (begin
3142 (use-modules (guix build utils))
3143 (let ((install-dir (string-append
3144 %output
3145 "/share/minetest/games/minetest_game")))
3146 (mkdir-p install-dir)
3147 (copy-recursively
3148 (assoc-ref %build-inputs "source")
3149 install-dir)
3150 #t))))
3151 (synopsis "Main game data for the Minetest game engine")
3152 (description
3153 "Game data for the Minetest infinite-world block sandbox game.")
3154 (home-page "https://www.minetest.net/")
3155 (license license:lgpl2.1+)))
3156
3157 (define-public minetest-mineclone
3158 (package
3159 (name "minetest-mineclone")
3160 (version "0.66.2")
3161 (source (origin
3162 (method git-fetch)
3163 (uri (git-reference
3164 (url "https://git.minetest.land/Wuzzy/MineClone2")
3165 (commit version)))
3166 (file-name (git-file-name name version))
3167 (sha256
3168 (base32
3169 "0miszzlzplpvaj0j1yii9867ydr42wsaqa9g6grxdrci75p05g00"))))
3170 (build-system copy-build-system)
3171 (arguments
3172 `(#:install-plan
3173 '(("." "share/minetest/games/mineclone"))))
3174 (synopsis "Minecraft clone based on Minetest engine")
3175 (description
3176 "MineClone is a Minetest subgame, that aims to recreate Minecraft as
3177 closely as the engine allows.")
3178 (home-page "https://content.minetest.net/packages/Wuzzy/mineclone2/")
3179 (license license:gpl3+)))
3180
3181 (define glkterm
3182 (package
3183 (name "glkterm")
3184 (version "1.0.4")
3185 (source
3186 (origin
3187 (method url-fetch)
3188 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
3189 "glk/implementations/glkterm-104.tar.gz"))
3190 (sha256
3191 (base32
3192 "0zlj9nlnkdlvgbiliczinirqygiq8ikg5hzh5vgcmnpg9pvnwga7"))))
3193 (build-system gnu-build-system)
3194 (propagated-inputs `(("ncurses" ,ncurses))) ; required by Make.glkterm
3195 (arguments
3196 '(#:tests? #f ; no check target
3197 #:phases
3198 (modify-phases %standard-phases
3199 (replace 'install
3200 (lambda* (#:key outputs #:allow-other-keys)
3201 (let* ((out (assoc-ref outputs "out"))
3202 (inc (string-append out "/include"))
3203 (lib (string-append out "/lib")))
3204 (for-each
3205 (lambda (file)
3206 (install-file file inc))
3207 '("glk.h" "glkstart.h" "gi_blorb.h" "gi_dispa.h" "Make.glkterm"))
3208 (install-file "libglkterm.a" lib))
3209 #t))
3210 (delete 'configure)))) ; no configure script
3211 (home-page "http://www.eblong.com/zarf/glk/")
3212 (synopsis "Curses Implementation of the Glk API")
3213 (description
3214 "Glk defines a portable API for applications with text UIs. It was
3215 primarily designed for interactive fiction, but it should be suitable for many
3216 interactive text utilities, particularly those based on a command line.
3217 This is an implementation of the Glk library which runs in a terminal window,
3218 using the @code{curses.h} library for screen control.")
3219 (license (license:fsf-free "file://README"))))
3220
3221 (define-public glulxe
3222 (package
3223 (name "glulxe")
3224 (version "0.5.4")
3225 (source
3226 (origin
3227 (method url-fetch)
3228 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
3229 "glulx/interpreters/glulxe/glulxe-054.tar.gz"))
3230 (sha256
3231 (base32
3232 "0vipydg6ra90yf9b3ipgppwxyb2xdhcxwvirgjy0v20wlf56zhhz"))))
3233 (build-system gnu-build-system)
3234 (inputs `(("glk" ,glkterm)))
3235 (arguments
3236 '(#:tests? #f ; no check target
3237 #:make-flags
3238 (let* ((glk (assoc-ref %build-inputs "glk")))
3239 (list (string-append "GLKINCLUDEDIR=" glk "/include")
3240 (string-append "GLKLIBDIR=" glk "/lib")
3241 (string-append "GLKMAKEFILE=" "Make.glkterm")))
3242 #:phases
3243 (modify-phases %standard-phases
3244 (replace 'install
3245 (lambda* (#:key outputs #:allow-other-keys)
3246 (let* ((out (assoc-ref outputs "out"))
3247 (bin (string-append out "/bin")))
3248 (install-file "glulxe" bin))
3249 #t))
3250 (delete 'configure)))) ; no configure script
3251 (home-page "https://www.eblong.com/zarf/glulx/")
3252 (synopsis "Interpreter for Glulx VM")
3253 (description
3254 "Glulx is a 32-bit portable virtual machine intended for writing and
3255 playing interactive fiction. It was designed by Andrew Plotkin to relieve
3256 some of the restrictions in the venerable Z-machine format. This is the
3257 reference interpreter, using the Glk API.")
3258 (license license:expat)))
3259
3260 (define-public fifechan
3261 (package
3262 (name "fifechan")
3263 (version "0.1.5")
3264 (source (origin
3265 (method url-fetch)
3266 (uri (string-append "https://codeload.github.com/fifengine/"
3267 "fifechan/tar.gz/" version))
3268 (file-name (string-append name "-" version ".tar.gz"))
3269 (sha256
3270 (base32
3271 "0wxs9vz5x9y8chghd8vp7vfk089lfb0qnzggi17zrqkrngs5zgi9"))))
3272 (build-system cmake-build-system)
3273 (inputs
3274 `(("sdl2" ,sdl2)
3275 ("sdl2-image" ,sdl2-image)
3276 ("mesa" ,mesa)))
3277 (arguments
3278 '(#:tests? #f)) ; No included tests
3279 (home-page "https://fifengine.github.io/fifechan/")
3280 (synopsis "Cross platform GUI library specifically for games")
3281 (description
3282 "Fifechan is a lightweight cross platform GUI library written in C++
3283 specifically designed for games. It has a built in set of extendable GUI
3284 Widgets, and allows users to create more.")
3285 (license license:lgpl2.1+)))
3286
3287 (define-public fifengine
3288 (package
3289 (name "fifengine")
3290 (version "0.4.2")
3291 (source (origin
3292 (method url-fetch)
3293 (uri (string-append "https://codeload.github.com/fifengine/"
3294 "fifengine/tar.gz/" version))
3295 (file-name (string-append name "-" version ".tar.gz"))
3296 (patches (search-patches "fifengine-swig-compat.patch"))
3297 (sha256
3298 (base32
3299 "1y4grw25cq5iqlg05rnbyxw1njl11ypidnlsm3qy4sm3xxdvb0p8"))))
3300 (build-system cmake-build-system)
3301 (arguments
3302 `(#:tests? #f ; TODO The test running fails to run some tests.
3303 #:modules ((srfi srfi-1)
3304 (guix build cmake-build-system)
3305 (guix build utils))
3306 #:configure-flags
3307 (list
3308 (string-append "-DOPENALSOFT_INCLUDE_DIR="
3309 (assoc-ref %build-inputs "openal")
3310 "/include/AL")
3311 (string-append "-DPYTHON_SITE_PACKAGES="
3312 (assoc-ref %outputs "out")
3313 "/lib/python"
3314 ,(version-major+minor (package-version python))
3315 "/site-packages"))
3316 #:phases
3317 (modify-phases %standard-phases
3318 (add-after 'unpack 'patch-run_tests.py
3319 (lambda _
3320 ;; Patch the test runner to exit with a status of 1 if any test
3321 ;; fails, to allow detecting failures.
3322 (substitute* "run_tests.py"
3323 (("ERROR\\. One or more tests failed!'\\)")
3324 "ERROR. One or more tests failed!')
3325 \t\texit(1)"))
3326 #t))
3327 ;; Run tests after installation so that we can make use of the built
3328 ;; python modules.
3329 (delete 'check)
3330 (add-after 'install 'check
3331 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
3332 (define python-version
3333 (let* ((version (last (string-split
3334 (assoc-ref inputs "python")
3335 #\-)))
3336 (components (string-split version #\.))
3337 (major+minor (take components 2)))
3338 (string-join major+minor ".")))
3339
3340 (when tests?
3341 ;; Set PYTHONPATH so that python finds the installed modules.
3342 (setenv "PYTHONPATH"
3343 (string-append (getenv "PYTHONPATH") ":"
3344 (assoc-ref outputs "out")
3345 "/lib/python"
3346 python-version
3347 "/site-packages"))
3348 ;; The tests require an X server.
3349 (system "Xvfb :1 &")
3350 (setenv "DISPLAY" ":1")
3351 (setenv "XDG_RUNTIME_DIR" "/tmp")
3352 ;; Run tests
3353 (chdir ,(string-append "../" name "-" version))
3354 (invoke "python3" "run_tests.py" "-a"))
3355 #t)))))
3356 (inputs
3357 `(("sdl2" ,sdl2)
3358 ("sdl2-image" ,sdl2-image)
3359 ("sdl2-ttf" ,sdl2-ttf)
3360 ("tinyxml" ,tinyxml)
3361 ("openal" ,openal)
3362 ("libogg" ,libogg)
3363 ("glew" ,glew)
3364 ("libvorbis" ,libvorbis)
3365 ("boost" ,boost)
3366 ("fifechan" ,fifechan)
3367 ("swig" ,swig)
3368 ("python" ,python)))
3369 (native-inputs
3370 `(("python" ,python)
3371 ("swig" ,swig)
3372 ("xvfb" ,xorg-server)))
3373 (propagated-inputs
3374 `(("python-future" ,python-future)))
3375 (home-page "https://www.fifengine.net/")
3376 (synopsis "FIFE is a multi-platform isometric game engine written in C++")
3377 (description
3378 "@acronym{FIFE, Flexible Isometric Free Engine} is a multi-platform
3379 isometric game engine. Python bindings are included allowing users to create
3380 games using Python as well as C++.")
3381 (license license:lgpl2.1+)))
3382
3383 (define-public fizmo
3384 (package
3385 (name "fizmo")
3386 (version "0.8.5")
3387 (source (origin
3388 (method url-fetch)
3389 (uri (string-append "https://fizmo.spellbreaker.org/source/"
3390 "fizmo-" version ".tar.gz"))
3391 (sha256
3392 (base32
3393 "1amyc4n41jf08kxmdgkk30bzzx54miaxa97w28f417qwn8lrl98w"))))
3394 (build-system gnu-build-system)
3395 (arguments
3396 '(#:configure-flags
3397 (let ((libjpeg (assoc-ref %build-inputs "libjpeg"))
3398 (ncurses (assoc-ref %build-inputs "ncurses")))
3399 (list (string-append "--with-jpeg-includedir=" libjpeg "/include")))))
3400 (native-inputs
3401 `(("pkg-config" ,pkg-config)))
3402 (inputs
3403 `(("freetype" ,freetype)
3404 ("libjpeg" ,libjpeg-turbo)
3405 ("libpng" ,libpng)
3406 ("libsndfile" ,libsndfile)
3407 ("libxml2" ,libxml2)
3408 ("ncurses" ,ncurses)
3409 ("sdl2" ,sdl2)))
3410 (home-page "https://fizmo.spellbreaker.org/")
3411 (synopsis "Z-machine interpreter")
3412 (description
3413 "Fizmo is a console-based Z-machine interpreter. It is used to play
3414 interactive fiction, also known as text adventures, which were implemented
3415 either by Infocom or created using the Inform compiler.")
3416 (license license:bsd-3)))
3417
3418 (define-public gnugo
3419 (package
3420 (name "gnugo")
3421 (version "3.8")
3422 (source (origin
3423 (method url-fetch)
3424 (uri (string-append "mirror://gnu/gnugo/gnugo-" version
3425 ".tar.gz"))
3426 (sha256
3427 (base32
3428 "0wkahvqpzq6lzl5r49a4sd4p52frdmphnqsfdv7gdp24bykdfs6s"))))
3429 (build-system gnu-build-system)
3430 (inputs `(("readline" ,readline)))
3431 (synopsis "Play the game of Go")
3432 (description
3433 "GNU Go is a program that plays the game of Go, in which players
3434 place stones on a grid to form territory or capture other stones. While
3435 it can be played directly from the terminal, rendered in ASCII characters,
3436 it is also possible to play GNU Go with 3rd party graphical interfaces or
3437 even in Emacs. It supports the standard game storage format (SGF, Smart
3438 Game Format) and inter-process communication format (GMP, Go Modem
3439 Protocol).")
3440 (home-page "https://www.gnu.org/software/gnugo/")
3441 (license license:gpl3+)))
3442
3443 (define-public extremetuxracer
3444 (package
3445 (name "extremetuxracer")
3446 (version "0.8.0")
3447 (source (origin
3448 (method url-fetch)
3449 (uri (string-append
3450 "mirror://sourceforge/extremetuxracer/releases/"
3451 version "/etr-" version ".tar.xz"))
3452 (sha256
3453 (base32
3454 "05ysaxvsgps9fxc421kdifsxmc1sn6n79cjaa0k0i3fs9qqrja2b"))))
3455 (build-system gnu-build-system)
3456 (native-inputs
3457 `(("pkg-config" ,pkg-config)))
3458 (inputs
3459 `(("glu" ,glu)
3460 ("sfml" ,sfml)))
3461 (synopsis "High-speed arctic racing game based on Tux Racer")
3462 ;; Snarfed straight from Debian.
3463 (description "Extreme Tux Racer, or etracer as it is called for short, is
3464 a simple OpenGL racing game featuring Tux, the Linux mascot. The goal of the
3465 game is to slide down a snow- and ice-covered mountain as quickly as possible,
3466 avoiding the trees and rocks that will slow you down.
3467
3468 Collect herrings and other goodies while sliding down the hill, but avoid fish
3469 bones.
3470
3471 This game is based on the GPL version of the famous game TuxRacer.")
3472 (home-page "https://sourceforge.net/projects/extremetuxracer/")
3473 (license license:gpl2+)))
3474
3475 (define-public supertuxkart
3476 (package
3477 (name "supertuxkart")
3478 (version "1.2")
3479 (source
3480 (origin
3481 (method url-fetch)
3482 (uri (string-append "mirror://sourceforge/supertuxkart/SuperTuxKart/"
3483 version "/SuperTuxKart-" version "-src.tar.xz"))
3484 (sha256
3485 (base32
3486 "0dvx56hmy6wdhl7m9dw8zc1n3jqfp05gnxl6zs1rbfdyzl5dybh5"))
3487 (modules '((guix build utils)))
3488 (snippet
3489 ;; Delete bundled library sources
3490 '(begin
3491 ;; Supertuxkart uses modified versions of the Irrlicht engine
3492 ;; and the bullet library. The developers gave an explanation
3493 ;; here: http://forum.freegamedev.net/viewtopic.php?f=17&t=3906
3494 ;; FIXME: try to unbundle angelscript, libmcpp and libraqm
3495 (for-each delete-file-recursively
3496 '("lib/glew"
3497 "lib/wiiuse"
3498 "lib/enet"))
3499 #t))))
3500 (build-system cmake-build-system)
3501 (arguments
3502 `(#:tests? #f ; no check target
3503 #:configure-flags
3504 (list "-DUSE_WIIUSE=0"
3505 "-DUSE_SYSTEM_GLEW=TRUE"
3506 "-DUSE_SYSTEM_ENET=TRUE"
3507 ;; In order to use the system ENet library, IPv6 support (added in
3508 ;; SuperTuxKart version 1.1) must be disabled.
3509 "-DUSE_IPV6=FALSE"
3510 ;; FIXME: needs libopenglrecorder
3511 "-DBUILD_RECORDER=0")))
3512 (inputs
3513 `(("curl" ,curl)
3514 ("freetype" ,freetype)
3515 ("fribidi" ,fribidi)
3516 ("glew" ,glew)
3517 ("harfbuzz" ,harfbuzz)
3518 ("libvorbis" ,libvorbis)
3519 ("libx11" ,libx11)
3520 ("libxrandr" ,libxrandr)
3521 ("mesa" ,mesa)
3522 ("openal" ,openal)
3523 ("sdl2" ,sdl2)
3524 ("zlib" ,zlib)
3525 ;; The following input is needed to build the bundled and modified
3526 ;; version of irrlicht.
3527 ("enet" ,enet)
3528 ("libjpeg" ,libjpeg-turbo)
3529 ("openssl" ,openssl)))
3530 (native-inputs
3531 `(("pkg-config" ,pkg-config)))
3532 (home-page "https://supertuxkart.net/Main_Page")
3533 (synopsis "3D kart racing game")
3534 (description "SuperTuxKart is a 3D kart racing game, with a focus on
3535 having fun over realism. You can play with up to 4 friends on one PC, racing
3536 against each other or just trying to beat the computer; single-player mode is
3537 also available.")
3538 (license license:gpl3+)))
3539
3540 (define-public unknown-horizons
3541 (package
3542 (name "unknown-horizons")
3543 (version "2019.1")
3544 (source (origin
3545 (method url-fetch)
3546 (uri (string-append "https://codeload.github.com/unknown-horizons/"
3547 "unknown-horizons/tar.gz/" version))
3548 (file-name (string-append name "-" version ".tar.gz"))
3549 (sha256
3550 (base32
3551 "1n747p7h0qp48szgp262swg0xh8kxy1bw8ag1qczs4i26hyzs5x4"))
3552 (patches (search-patches "unknown-horizons-python-3.8-distro.patch"))))
3553 (build-system python-build-system)
3554 (arguments
3555 '(#:phases
3556 (modify-phases %standard-phases
3557 (add-before 'build 'set-HOME
3558 (lambda _
3559 (setenv "HOME" "/tmp")
3560 #t))
3561 (add-after 'build 'build-extra
3562 (lambda _
3563 (invoke "python3" "./setup.py" "build_i18n")
3564 (invoke "python3" "horizons/engine/generate_atlases.py" "2048")
3565 #t))
3566 (add-after 'install 'patch
3567 (lambda* (#:key outputs #:allow-other-keys)
3568 (let ((out (assoc-ref outputs "out")))
3569 (substitute* (string-append out "/bin/unknown-horizons")
3570 (("os\\.chdir\\(get\\_content\\_dir\\_parent_path\\(\\)\\)")
3571 (string-append "os.chdir(\""
3572 (assoc-ref outputs "out")
3573 "/share/unknown-horizons\")"))))
3574 #t))
3575 (add-before 'check 'fix-tests-with-pytest>=4
3576 (lambda _
3577 (substitute* "tests/conftest.py"
3578 (("pytest_namespace")
3579 "pytest_configure")
3580 (("get_marker")
3581 "get_closest_marker"))
3582 #t))
3583 ;; TODO: Run GUI tests as well
3584 (replace 'check
3585 (lambda _
3586 (substitute* "horizons/constants.py"
3587 (("IS_DEV_VERSION = False")
3588 "IS_DEV_VERSION = True"))
3589 (invoke "pytest" "tests")
3590 (substitute* "horizons/constants.py"
3591 (("IS_DEV_VERSION = True")
3592 "IS_DEV_VERSION = False"))
3593 #t)))))
3594 (inputs
3595 `(("fifengine" ,fifengine)
3596 ("python:tk" ,python "tk")
3597 ("python-pillow" ,python-pillow)
3598 ("python-pyyaml" ,python-pyyaml)))
3599 (native-inputs
3600 `(("intltool" ,intltool)
3601 ("python-distro" ,python-distro)
3602
3603 ;; Required for tests
3604 ("python-greenlet" ,python-greenlet)
3605 ("python-polib" ,python-polib)
3606 ("python-pytest" ,python-pytest)
3607 ("python-pytest-mock" ,python-pytest-mock)))
3608 (home-page "http://unknown-horizons.org/")
3609 (synopsis "Isometric realtime strategy, economy and city building simulation")
3610 (description
3611 "Unknown Horizons is a 2D realtime strategy simulation with an emphasis
3612 on economy and city building. Expand your small settlement to a strong and
3613 wealthy colony, collect taxes and supply your inhabitants with valuable
3614 goods. Increase your power with a well balanced economy and with strategic
3615 trade and diplomacy.")
3616 (license (list
3617 license:gpl2+ ; Covers code
3618 license:expat ; tests/dummy.py, ext/polib.py
3619 license:cc-by-sa3.0 ; Covers some media content
3620 license:cc-by3.0 ; Covers some media content
3621 license:bsd-3)))) ; horizons/ext/speaklater.py
3622
3623 (define-public gnujump
3624 (package
3625 (name "gnujump")
3626 (version "1.0.8")
3627 (source (origin
3628 (method url-fetch)
3629 (uri (string-append "mirror://gnu/gnujump/gnujump-"
3630 version ".tar.gz"))
3631 (sha256
3632 (base32
3633 "05syy9mzbyqcfnm0hrswlmhwlwx54f0l6zhcaq8c1c0f8dgzxhqk"))))
3634 (build-system gnu-build-system)
3635 (arguments
3636 '(#:phases
3637 (modify-phases %standard-phases
3638 (add-before
3639 'configure 'link-libm
3640 (lambda _ (setenv "LIBS" "-lm")))
3641 (add-after 'install 'create-desktop-entry
3642 (lambda* (#:key outputs #:allow-other-keys)
3643 (let* ((out (assoc-ref outputs "out"))
3644 (apps (string-append out "/share/applications")))
3645 (mkdir-p apps)
3646 (with-output-to-file
3647 (string-append apps "/gnujump.desktop")
3648 (lambda _
3649 (format #t
3650 "[Desktop Entry]~@
3651 Name=GNUjump~@
3652 Comment=Jump up the tower to survive~@
3653 Exec=~a/bin/gnujump~@
3654 Terminal=false~@
3655 Type=Application~@
3656 Categories=Game;ArcadeGame~%"
3657 out)))))))))
3658 (inputs
3659 `(("glu" ,glu)
3660 ("mesa" ,mesa)
3661 ("sdl" ,sdl)
3662 ("sdl-image" ,sdl-image)
3663 ("sdl-mixer" ,sdl-mixer)))
3664 (home-page "http://gnujump.es.gnu.org/")
3665 (synopsis
3666 "Game of jumping to the next floor, trying not to fall")
3667 (description
3668 "GNUjump is a simple, yet addictive game in which you must jump from
3669 platform to platform to avoid falling, while the platforms drop at faster rates
3670 the higher you go. The game features multiplayer, unlimited FPS, smooth floor
3671 falling, themeable graphics and sounds, and replays.")
3672 (license license:gpl3+)))
3673
3674 (define-public wesnoth
3675 (package
3676 (name "wesnoth")
3677 (version "1.14.14")
3678 (source (origin
3679 (method url-fetch)
3680 (uri (string-append "mirror://sourceforge/wesnoth/wesnoth-"
3681 (version-major+minor version)
3682 "/wesnoth-" version "/"
3683 "wesnoth-" version ".tar.bz2"))
3684 (sha256
3685 (base32
3686 "1l7mdxn4kw938qz824057rqh99b7y9439a54s64n1xz95w77lp0r"))))
3687 (build-system cmake-build-system)
3688 (arguments
3689 `(#:tests? #f)) ;no check target
3690 (native-inputs
3691 `(("gettext" ,gettext-minimal)
3692 ("pkg-config" ,pkg-config)))
3693 (inputs
3694 `(("boost" ,boost)
3695 ("dbus" ,dbus)
3696 ("fribidi" ,fribidi)
3697 ("libvorbis" ,libvorbis)
3698 ("openssl" ,openssl)
3699 ("pango" ,pango)
3700 ("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
3701 (home-page "https://www.wesnoth.org/")
3702 (synopsis "Turn-based strategy game")
3703 (description
3704 "The Battle for Wesnoth is a fantasy, turn based tactical strategy game,
3705 with several single player campaigns, and multiplayer games (both networked and
3706 local).
3707
3708 Battle for control on a range of maps, using variety of units which have
3709 advantages and disadvantages against different types of attacks. Units gain
3710 experience and advance levels, and are carried over from one scenario to the
3711 next campaign.")
3712 (license license:gpl2+)))
3713
3714 (define-public wesnoth-server
3715 (package
3716 (inherit wesnoth)
3717 (name "wesnoth-server")
3718 (inputs
3719 `(("boost" ,boost)
3720 ("icu4c" ,icu4c)
3721 ("openssl" ,openssl)
3722 ("sdl2" ,sdl2)))
3723 (arguments
3724 `(#:configure-flags '("-DENABLE_GAME=OFF")
3725 ,@(package-arguments wesnoth)))
3726 (synopsis "Dedicated @emph{Battle for Wesnoth} server")
3727 (description "This package contains a dedicated server for @emph{The
3728 Battle for Wesnoth}.")))
3729
3730 (define-public gamine
3731 (package
3732 (name "gamine")
3733 (version "1.6")
3734 (source (origin
3735 (method url-fetch)
3736 (uri (string-append "mirror://sourceforge/gamine-game/"
3737 "gamine-" version ".tar.gz"))
3738 (sha256
3739 (base32
3740 "1sc6f4445ciigd6yw0ri92746k4hk6ps0bvj9fm1gbp3c3fslk5n"))))
3741 (build-system gnu-build-system)
3742 (native-inputs
3743 `(("pkg-config" ,pkg-config)
3744 ("intltool" ,intltool)))
3745 (inputs
3746 `(("gstreamer" ,gstreamer)
3747 ("gst-plugins-base" ,gst-plugins-base) ; playbin plugin
3748 ("gst-plugins-good" ,gst-plugins-good) ; for wav playback
3749 ("gtk+" ,gtk+)))
3750 (arguments
3751 `(#:tests? #f
3752 #:make-flags
3753 (let ((out (assoc-ref %outputs "out")))
3754 (list (string-append "PREFIX=" out)
3755 (string-append "SYSCONFDIR=" out "/etc")))
3756 #:phases
3757 (modify-phases %standard-phases
3758 (delete 'configure)
3759 (add-after
3760 'install 'wrap-gamine
3761 (lambda* (#:key outputs #:allow-other-keys)
3762 (let ((out (assoc-ref outputs "out"))
3763 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
3764 (wrap-program (string-append out "/bin/gamine")
3765 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))))
3766 #t)))))
3767 (home-page "http://gamine-game.sourceforge.net/")
3768 (synopsis "Mouse and keyboard discovery for children")
3769 (description
3770 "Gamine is a game designed for young children who are learning to use the
3771 mouse and keyboard. The child uses the mouse to draw colored dots and lines
3772 on the screen and keyboard to display letters.")
3773 ;; Most files under gpl2+ or gpl3+, but eat.wav under gpl3
3774 (license license:gpl3)))
3775
3776 (define-public manaplus
3777 (package
3778 (name "manaplus")
3779 (version "1.9.3.23")
3780 (source (origin
3781 (method url-fetch)
3782 (uri (string-append
3783 "https://repo.manaplus.org/manaplus/download/"
3784 version "/manaplus-" version ".tar.xz"))
3785 (sha256
3786 (base32
3787 "1ky182p4svwdqm6cf7jbns85hidkhkhq4s17cs2p381f0klapfjz"))))
3788 (build-system gnu-build-system)
3789 (arguments
3790 '(#:configure-flags
3791 (list (string-append "CPPFLAGS=-I"
3792 (assoc-ref %build-inputs "sdl-union")
3793 "/include/SDL"))))
3794 (native-inputs
3795 `(("pkg-config" ,pkg-config)))
3796 (inputs
3797 `(("glu" ,glu)
3798 ("curl" ,curl)
3799 ("libxml2" ,libxml2)
3800 ("mesa" ,mesa)
3801 ("sdl-union" ,(sdl-union))))
3802 (home-page "https://manaplus.org")
3803 (synopsis "Client for 'The Mana World' and similar games")
3804 (description
3805 "ManaPlus is a 2D MMORPG client for game servers. It is the only
3806 fully supported client for @uref{http://www.themanaworld.org, The mana
3807 world}, @uref{http://evolonline.org, Evol Online} and
3808 @uref{http://landoffire.org, Land of fire}.")
3809 ;; "src/debug/*" and "src/sdl2gfx/*" are under Zlib.
3810 ;; "data/themes/{golden-delicious,jewelry}/*" are under CC-BY-SA.
3811 ;; The rest is under GPL2+.
3812 (license (list license:gpl2+ license:zlib license:cc-by-sa4.0))))
3813
3814 (define openttd-engine
3815 (package
3816 (name "openttd-engine")
3817 (version "1.10.0")
3818 (source
3819 (origin (method url-fetch)
3820 (uri (string-append "https://cdn.openttd.org/openttd-releases/"
3821 version "/openttd-" version "-source.tar.xz"))
3822 (sha256
3823 (base32
3824 "0lz2y2rjc23k0d97y65cqhy2splw9cmrbvhgz0iqps8xkan1m8hv"))))
3825 (build-system gnu-build-system)
3826 (arguments
3827 `(#:tests? #f ; no "check" target
3828 #:phases
3829 (modify-phases %standard-phases
3830 ;; The build process fails if the configure script is passed the
3831 ;; option "--enable-fast-install".
3832 (replace 'configure
3833 (lambda* (#:key inputs outputs (configure-flags '())
3834 #:allow-other-keys)
3835 (let ((out (assoc-ref outputs "out"))
3836 (lzo (assoc-ref inputs "lzo")))
3837 (apply invoke "./configure"
3838 (string-append "--prefix=" out)
3839 ;; Provide the "lzo" path.
3840 (string-append "--with-liblzo2="
3841 lzo "/lib/liblzo2.a")
3842 ;; Put the binary in 'bin' instead of 'games'.
3843 "--binary-dir=bin"
3844 configure-flags)))))))
3845 (native-inputs `(("pkg-config" ,pkg-config)))
3846 (inputs
3847 `(("allegro" ,allegro)
3848 ("fontconfig" ,fontconfig)
3849 ("freetype" ,freetype)
3850 ("icu4c" ,icu4c)
3851 ("libpng" ,libpng)
3852 ("lzo" ,lzo)
3853 ("sdl" ,sdl)
3854 ("xz" ,xz)
3855 ("zlib" ,zlib)))
3856 (synopsis "Transportation economics simulator game")
3857 (description "OpenTTD is a game in which you transport goods and
3858 passengers by land, water and air. It is a re-implementation of Transport
3859 Tycoon Deluxe with many enhancements including multiplayer mode,
3860 internationalization support, conditional orders and the ability to clone,
3861 autoreplace and autoupdate vehicles. This package only includes the game
3862 engine. When you start it you will be prompted to download a graphics set.")
3863 (home-page "https://www.openttd.org/")
3864 ;; This package is GPLv2, except for a few files located in
3865 ;; "src/3rdparty/" which are under the 3-clause BSD, LGPLv2.1+ and Zlib
3866 ;; licenses. In addition, this software contains an in-game downloader
3867 ;; from which the user may find non-functional data licensed under
3868 ;; different terms.
3869 (license (list license:bsd-3 license:gpl2 license:lgpl2.1+ license:zlib))))
3870
3871 (define openttd-opengfx
3872 (package
3873 (name "openttd-opengfx")
3874 (version "0.6.0")
3875 (source
3876 (origin
3877 (method url-fetch)
3878 (uri (string-append "https://cdn.openttd.org/opengfx-releases/"
3879 version "/opengfx-" version "-source.tar.xz"))
3880 (sha256
3881 (base32
3882 "0qxc6gl2gxcrn1np88dnjgbaaakkkx96b13rcmy1spryc8c09hyr"))))
3883 (build-system gnu-build-system)
3884 (arguments
3885 '(#:make-flags (list "CC=gcc"
3886 (string-append "INSTALL_DIR="
3887 (assoc-ref %outputs "out")
3888 "/share/games/openttd/baseset/opengfx"))
3889 #:phases
3890 (modify-phases %standard-phases
3891 (replace 'configure
3892 (lambda _
3893 ;; Make sure HOME is writable for GIMP.
3894 (setenv "HOME" (getcwd))
3895
3896 ;; Redirect stdout, not stderr, to /dev/null. This prevents
3897 ;; dos2unix from receiving its version information as a flag.
3898 (substitute* "Makefile"
3899 (("\\$\\(UNIX2DOS\\) -q --version 2>/dev/null")
3900 "$(UNIX2DOS) -q --version 1>/dev/null")))))
3901 ;; The check phase for this package only checks the md5sums of the built
3902 ;; GRF files against the md5sums of the release versions. Because we use
3903 ;; different software versions than upstream does, some of the md5sums
3904 ;; are different. However, the package is still reproducible, it's safe
3905 ;; to disable this test.
3906 #:tests? #f
3907 #:parallel-build? #f))
3908 (native-inputs `(("dos2unix" ,dos2unix)
3909 ("gimp" ,gimp)
3910 ("grfcodec" ,grfcodec)
3911 ("nml" ,nml)
3912 ("which" ,which)
3913 ("python" ,python-2)))
3914 (home-page "http://dev.openttdcoop.org/projects/opengfx")
3915 (synopsis "Base graphics set for OpenTTD")
3916 (description
3917 "The OpenGFX project is an implementation of the OpenTTD base graphics
3918 set that aims to ensure the best possible out-of-the-box experience.
3919
3920 OpenGFX provides you with...
3921 @enumerate
3922 @item All graphics you need to enjoy OpenTTD.
3923 @item Uniquely drawn rail vehicles for every climate.
3924 @item Completely snow-aware rivers.
3925 @item Different river and sea water.
3926 @item Snow-aware buoys.
3927 @end enumerate")
3928 (license license:gpl2)))
3929
3930 (define openttd-opensfx
3931 (package
3932 (name "openttd-opensfx")
3933 (version "0.2.3")
3934 (source
3935 (origin
3936 (method url-fetch)
3937 (uri (string-append
3938 "https://binaries.openttd.org/extra/opensfx/"
3939 version "/opensfx-" version "-source.tar.gz"))
3940 (sha256
3941 (base32
3942 "03jxgp02ks31hmsdh4xh0xcpkb70ds8jakc9pfc1y9vdrdavh4p5"))))
3943 (build-system gnu-build-system)
3944 (native-inputs
3945 `(("catcodec" ,catcodec)
3946 ("python" ,python-2)))
3947 (arguments
3948 `(#:make-flags
3949 (list (string-append "INSTALL_DIR=" %output
3950 "/share/games/openttd/baseset/opensfx"))
3951 #:phases
3952 (modify-phases %standard-phases
3953 (add-after 'unpack 'make-reproducible
3954 (lambda _
3955 ;; Remove the time dependency of the installed tarball by setting
3956 ;; the modification times if its members to 0.
3957 (substitute* "scripts/Makefile.def"
3958 (("-cf") " --mtime=@0 -cf"))
3959 #t))
3960 (delete 'configure))))
3961 (home-page "http://dev.openttdcoop.org/projects/opensfx")
3962 (synopsis "Base sounds for OpenTTD")
3963 (description "OpenSFX is a set of free base sounds for OpenTTD which make
3964 it possible to play OpenTTD without requiring the proprietary sound files from
3965 the original Transport Tycoon Deluxe.")
3966 (license license:cc-sampling-plus-1.0)))
3967
3968 (define openttd-openmsx
3969 (package
3970 (name "openttd-openmsx")
3971 (version "0.3.1")
3972 (source
3973 (origin
3974 (method url-fetch)
3975 (uri (string-append
3976 "https://binaries.openttd.org/extra/openmsx/"
3977 version "/openmsx-" version "-source.tar.gz"))
3978 (sha256
3979 (base32
3980 "0nskq97a6fsv1v6d62zf3yb8whzhqnlh3lap3va3nzvj7csjgf7c"))))
3981 (build-system gnu-build-system)
3982 (native-inputs
3983 `(("python" ,python-2)))
3984 (arguments
3985 `(#:make-flags
3986 (list (string-append "INSTALL_DIR=" %output
3987 "/share/games/openttd/baseset"))
3988 #:phases
3989 (modify-phases %standard-phases
3990 (delete 'configure)
3991 (add-after 'install 'post-install
3992 ;; Rename openmsx-version to openmsx
3993 (lambda* (#:key outputs #:allow-other-keys)
3994 (let ((install-directory (string-append (assoc-ref outputs "out")
3995 "/share/games/openttd/baseset")))
3996 (rename-file (string-append install-directory "/openmsx-" ,version)
3997 (string-append install-directory "/openmsx"))
3998 #t))))))
3999 (home-page "http://dev.openttdcoop.org/projects/openmsx")
4000 (synopsis "Music set for OpenTTD")
4001 (description "OpenMSX is a music set for OpenTTD which makes it possible
4002 to play OpenTTD without requiring the proprietary music from the original
4003 Transport Tycoon Deluxe.")
4004 (license license:gpl2)))
4005
4006 (define-public openttd
4007 (package
4008 (inherit openttd-engine)
4009 (name "openttd")
4010 (arguments
4011 `(#:configure-flags
4012 (list (string-append "--with-midi=" (assoc-ref %build-inputs "timidity++")
4013 "/bin/timidity"))
4014 ,@(substitute-keyword-arguments (package-arguments openttd-engine)
4015 ((#:phases phases)
4016 `(modify-phases ,phases
4017 (add-after 'install 'install-data
4018 (lambda* (#:key inputs outputs #:allow-other-keys)
4019 (for-each
4020 (lambda (input)
4021 (copy-recursively (assoc-ref inputs input)
4022 (assoc-ref outputs "out")))
4023 (list "opengfx" "openmsx" "opensfx"))
4024 #t)))))))
4025 (inputs
4026 `(("timidity++" ,timidity++)
4027 ,@(package-inputs openttd-engine)))
4028 (native-inputs
4029 `(("opengfx" ,openttd-opengfx)
4030 ("openmsx" ,openttd-openmsx)
4031 ("opensfx" ,openttd-opensfx)
4032 ,@(package-native-inputs openttd-engine)))))
4033
4034 (define openrct2-title-sequences
4035 (package
4036 (name "openrct2-title-sequences")
4037 (version "0.1.2")
4038 (source
4039 (origin
4040 (method url-fetch)
4041 (uri (string-append "https://github.com/OpenRCT2/title-sequences/releases/download/v"
4042 version "/title-sequence-v" version ".zip"))
4043 (file-name (string-append name "-" version ".zip"))
4044 (sha256
4045 (base32
4046 "0qbyxrsw8hlgaq0r5d7lx7an3idy4qbfv7yiw9byhldk763n9cfw"))))
4047 (build-system trivial-build-system)
4048 (native-inputs
4049 `(("bash" ,bash)
4050 ("coreutils" ,coreutils)
4051 ("unzip" ,unzip)))
4052 (arguments
4053 `(#:modules ((guix build utils))
4054 #:builder
4055 (begin
4056 (use-modules (guix build utils))
4057 (let* ((out (assoc-ref %outputs "out"))
4058 (openrct2-title-sequences (string-append out
4059 "/share/openrct2/title-sequences"))
4060 (source (assoc-ref %build-inputs "source"))
4061 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
4062 (copy-file source (string-append ,name "-" ,version ".zip"))
4063 (invoke unzip (string-append ,name "-" ,version ".zip"))
4064 (delete-file (string-append ,name "-" ,version ".zip"))
4065 (mkdir-p openrct2-title-sequences)
4066 (copy-recursively "."
4067 openrct2-title-sequences)
4068 #t))))
4069 (home-page "https://github.com/OpenRCT2/OpenRCT2")
4070 (synopsis "Title sequences for OpenRCT2")
4071 (description
4072 "openrct2-title-sequences is a set of title sequences for OpenRCT2.")
4073 (license license:gpl3+)))
4074
4075 (define openrct2-objects
4076 (package
4077 (name "openrct2-objects")
4078 (version "1.0.9")
4079 (source
4080 (origin
4081 (method url-fetch)
4082 (uri (string-append "https://github.com/OpenRCT2/objects/releases/download/v"
4083 version "/objects.zip"))
4084 (file-name (string-append name "-" version ".zip"))
4085 (sha256
4086 (base32 "02apb8h553m7d6jvysgb1zahvxc1yzyygfca2iclb21b3fhpsas4"))))
4087 (build-system trivial-build-system)
4088 (native-inputs
4089 `(("bash" ,bash)
4090 ("coreutils" ,coreutils)
4091 ("unzip" ,unzip)))
4092 (arguments
4093 `(#:modules ((guix build utils))
4094 #:builder
4095 (begin
4096 (use-modules (guix build utils))
4097 (let* ((out (assoc-ref %outputs "out"))
4098 (openrct2-objects (string-append out
4099 "/share/openrct2/objects"))
4100 (source (assoc-ref %build-inputs "source"))
4101 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
4102 (copy-file source (string-append ,name "-" ,version ".zip"))
4103 (invoke unzip (string-append ,name "-" ,version ".zip"))
4104 (delete-file (string-append ,name "-" ,version ".zip"))
4105 (mkdir-p openrct2-objects)
4106 (copy-recursively "."
4107 openrct2-objects)
4108 #t))))
4109 (home-page "https://github.com/OpenRCT2/OpenRCT2")
4110 (synopsis "Objects for OpenRCT2")
4111 (description
4112 "openrct2-objects is a set of objects for OpenRCT2.")
4113 (license license:gpl3+)))
4114
4115 (define-public openrct2
4116 (package
4117 (name "openrct2")
4118 (version "0.2.6")
4119 (source
4120 (origin
4121 (method git-fetch)
4122 (uri (git-reference
4123 (url "https://github.com/OpenRCT2/OpenRCT2")
4124 (commit (string-append "v" version))))
4125 (file-name (git-file-name name version))
4126 (sha256
4127 (base32 "1vikbkg3wh5ngzdfilb6irbh6nqinf138qpdz8wz9izlvl8s36k4"))))
4128 (build-system cmake-build-system)
4129 (arguments
4130 `(#:configure-flags (list "-DDOWNLOAD_OBJECTS=OFF"
4131 "-DDOWNLOAD_TITLE_SEQUENCES=OFF")
4132 #:tests? #f ; tests require network access
4133 #:phases
4134 (modify-phases %standard-phases
4135 (add-after 'unpack 'fix-usr-share-paths&add-data
4136 (lambda* (#:key inputs outputs #:allow-other-keys)
4137 (let ((titles (assoc-ref inputs "openrct2-title-sequences"))
4138 (objects (assoc-ref inputs "openrct2-objects")))
4139 ;; Fix some references to /usr/share.
4140 (substitute* "src/openrct2/platform/Platform.Linux.cpp"
4141 (("/usr/share")
4142 (string-append (assoc-ref %outputs "out") "/share")))
4143 (copy-recursively
4144 (string-append titles "/share/openrct2/title-sequences")
4145 "data/title")
4146 (copy-recursively
4147 (string-append objects "/share/openrct2/objects")
4148 "data/object"))))
4149 (add-before 'configure 'get-rid-of-errors
4150 (lambda _
4151 ;; Don't treat warnings as errors.
4152 (substitute* "CMakeLists.txt"
4153 (("-Werror") ""))
4154 #t)))))
4155 (inputs `(("curl" ,curl)
4156 ("fontconfig" ,fontconfig)
4157 ("freetype" ,freetype)
4158 ("icu4c" ,icu4c)
4159 ("jansson" ,jansson)
4160 ("libpng" ,libpng)
4161 ("libzip" ,libzip)
4162 ("mesa" ,mesa)
4163 ("openrct2-objects" ,openrct2-objects)
4164 ("openrct2-title-sequences" ,openrct2-title-sequences)
4165 ("openssl" ,openssl)
4166 ("sdl2" ,sdl2)
4167 ("speexdsp" ,speexdsp)
4168 ("zlib" ,zlib)))
4169 (native-inputs
4170 `(("pkg-config" ,pkg-config)))
4171 (home-page "https://github.com/OpenRCT2/OpenRCT2")
4172 (synopsis "Free software re-implementation of RollerCoaster Tycoon 2")
4173 (description "OpenRCT2 is a free software re-implementation of
4174 RollerCoaster Tycoon 2 (RCT2). The gameplay revolves around building and
4175 maintaining an amusement park containing attractions, shops and facilities.
4176
4177 Note that this package does @emph{not} provide the game assets (sounds,
4178 images, etc.)")
4179 ;; See <https://github.com/OpenRCT2/OpenRCT2/wiki/Required-RCT2-files>
4180 ;; regarding assets.
4181 (license license:gpl3+)))
4182
4183 (define-public pinball
4184 (package
4185 (name "pinball")
4186 (version "0.3.1")
4187 (source
4188 (origin (method url-fetch)
4189 (uri (string-append "mirror://sourceforge/pinball/pinball/"
4190 "pinball-" version "/"
4191 "pinball-" version ".tar.gz"))
4192 (sha256
4193 (base32
4194 "1f2whlrfidwfh8lvr8cspcyirc6840r5d1ajm7x99qmngygrhixs"))
4195 (patches (search-patches "pinball-const-fix.patch"
4196 "pinball-cstddef.patch"
4197 "pinball-missing-separators.patch"
4198 "pinball-src-deps.patch"
4199 "pinball-system-ltdl.patch"))))
4200 (build-system gnu-build-system)
4201 (inputs
4202 `(("glu" ,glu)
4203 ("mesa" ,mesa)
4204 ("sdl" ,sdl)
4205 ("sdl-image" ,sdl-image)
4206 ("sdl-mixer" ,sdl-mixer)))
4207 (arguments
4208 '(#:configure-flags
4209 (list (string-append "CPPFLAGS=-I"
4210 (assoc-ref %build-inputs "sdl-image")
4211 "/include/SDL -I"
4212 (assoc-ref %build-inputs "sdl-mixer")
4213 "/include/SDL"))))
4214 (home-page "http://pinball.sourceforge.net")
4215 (synopsis "Pinball simulator")
4216 (description "The Emilia Pinball Project is a pinball simulator. There
4217 are only two levels to play with, but they are very addictive.")
4218 (license license:gpl2)))
4219
4220 (define-public pioneers
4221 (package
4222 (name "pioneers")
4223 (version "15.6")
4224 (source (origin
4225 (method url-fetch)
4226 (uri (string-append "https://downloads.sourceforge.net/pio/"
4227 "pioneers-" version ".tar.gz"))
4228 (sha256
4229 (base32
4230 "07b3xdd81n8ybsb4fzc5lx0813y9crzp1hj69khncf4faj48sdcs"))))
4231 (build-system gnu-build-system)
4232 (inputs `(("avahi" ,avahi)
4233 ("gtk+" ,gtk+)
4234 ("librsvg" ,librsvg)))
4235 (native-inputs `(("intltool" ,intltool)
4236 ("itstool" ,itstool)
4237 ("libxml2" ,libxml2)
4238 ("pkg-config" ,pkg-config)))
4239 (synopsis "Board game inspired by The Settlers of Catan")
4240 (description "Pioneers is an emulation of the board game The Settlers of
4241 Catan. It can be played on a local network, on the internet, and with AI
4242 players.")
4243 (home-page "http://pio.sourceforge.net/")
4244 (license license:gpl2+)))
4245
4246 (define-public einstein
4247 (package
4248 (name "einstein")
4249 (version "2.0")
4250 (source (origin
4251 (method url-fetch)
4252 (uri (string-append "mirror://debian/pool/main/e/"
4253 "einstein/einstein_2.0.dfsg.2.orig.tar.gz"))
4254 (sha256
4255 (base32
4256 "1hxrlv6n8py48j487i6wbb4n4vd55w0na69r7ccmmr9vmrsw5mlk"))
4257 (patches (search-patches "einstein-build.patch"))))
4258 (build-system gnu-build-system)
4259 (inputs
4260 `(("freetype" ,freetype)
4261 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf)))
4262 ("zlib" ,zlib)))
4263 (native-inputs
4264 `(("font-dejavu" ,font-dejavu)))
4265 (arguments
4266 `(#:tests? #f ; no check target
4267 #:phases
4268 (modify-phases %standard-phases
4269 (replace 'configure
4270 (lambda* (#:key outputs inputs #:allow-other-keys)
4271 (let ((out (assoc-ref outputs "out"))
4272 (dejavu (string-append (assoc-ref inputs "font-dejavu")
4273 "/share/fonts/truetype/DejaVuSans.ttf")))
4274 (substitute* "Makefile"
4275 (("PREFIX=/usr/local") (string-append "PREFIX=" out)))
4276 ;; The patch above registers a free font for use by the binary,
4277 ;; but the font is copied during the compile phase into a
4278 ;; resources file, so we need to make the ttf file available.
4279 (symlink dejavu "res/DejaVuSans.ttf")
4280 #t))))))
4281 (synopsis "Logic puzzle game")
4282 (description "The goal of this logic game is to open all cards in a 6x6
4283 grid, using a number of hints as to their relative position. The game idea
4284 is attributed to Albert Einstein.")
4285 ;; The original home page has disappeared.
4286 (home-page (string-append "http://web.archive.org/web/20120521062745/"
4287 "http://games.flowix.com/en/index.html"))
4288 ;; License according to
4289 ;; http://web.archive.org/web/20150222180355/http://www.babichev.info/en/projects/index.html
4290 ;; The source code is a DFSG-sanitized tarball and does not contain any
4291 ;; license information.
4292 (license license:gpl3+)))
4293
4294 (define-public powwow
4295 (package
4296 (name "powwow")
4297 (version "1.2.19")
4298 (source (origin
4299 (method url-fetch)
4300 (uri (string-append
4301 "https://www.hoopajoo.net/static/projects/powwow-"
4302 version ".tar.gz"))
4303 (sha256
4304 (base32
4305 "10rjl63hmf62qslyhzqrbw3i2zf09dgxv65avhj0iiz0m4pbc9wy"))))
4306 (inputs
4307 `(("ncurses" ,ncurses)))
4308 (build-system gnu-build-system)
4309 (home-page "https://www.hoopajoo.net/projects/powwow.html")
4310 (synopsis "MUD and telnet client")
4311 (description
4312 "POWWOW is a client software which can be used for telnet as well as for
4313 @dfn{Multi-User Dungeon} (MUD). Additionally it can serve as a nice client for
4314 the chat server psyced with the specific config located at
4315 http://lavachat.symlynx.com/unix/")
4316 (license license:gpl2+)))
4317
4318 (define-public red-eclipse
4319 (let ((release "2.0.0")
4320 (revision 0))
4321 (package
4322 (name "red-eclipse")
4323 (version (if (zero? revision)
4324 release
4325 (string-append release "-"
4326 (number->string revision))))
4327 (source
4328 (origin
4329 (method git-fetch)
4330 (uri (git-reference
4331 (url "https://github.com/redeclipse/base")
4332 (commit (string-append "v" release))
4333 (recursive? #t))) ; for game data
4334 (file-name (git-file-name name version))
4335 (sha256
4336 (base32 "0sz0mqhwx8r9n4mk3qrxw420nlsm3y0n48gd0lazgd64lfqjh3ab"))
4337 (modules '((guix build utils)))
4338 (snippet
4339 ;; Remove proprietary libraries and other pre-compiled binaries.
4340 '(begin
4341 (delete-file-recursively "bin")
4342 #t))))
4343 (build-system gnu-build-system)
4344 (arguments
4345 `(#:tests? #f ; no check target
4346 #:make-flags (list "CC=gcc" "-Csrc"
4347 (string-append "INSTDIR="
4348 (assoc-ref %outputs "out") "/bin")
4349 (string-append "prefix="
4350 (assoc-ref %outputs "out")))
4351 #:phases
4352 (modify-phases %standard-phases
4353 (add-after 'unpack 'add-store-data-package-path-as-default
4354 (lambda* (#:key outputs #:allow-other-keys)
4355 (substitute* "src/engine/server.cpp"
4356 (("data = \"data\"")
4357 (string-append "data = \""
4358 (assoc-ref outputs "out")
4359 "/share/redeclipse/data\"")))
4360 #t))
4361 (delete 'configure) ; no configure script
4362 (add-after 'set-paths 'set-sdl-paths
4363 (lambda* (#:key inputs #:allow-other-keys)
4364 (setenv "CPATH"
4365 (string-append (assoc-ref inputs "sdl-union")
4366 "/include/SDL2:"
4367 (or (getenv "CPATH") "")))
4368 #t))
4369 (add-after 'install 'copy-data
4370 (lambda* (#:key outputs #:allow-other-keys)
4371 (let ((out (assoc-ref outputs "out")))
4372 (copy-recursively "config"
4373 (string-append out "/config"))
4374 (copy-file "doc/examples/servinit.cfg"
4375 (string-append out "/config/servinit.cfg"))
4376 (copy-recursively "data"
4377 (string-append out "/share/redeclipse/data"))
4378 (mkdir-p (string-append out "/lib/redeclipse"))
4379 (symlink (string-append out "/share/redeclipse/data")
4380 (string-append out "/lib/redeclipse/data")))
4381 #t))
4382 (add-after 'copy-data 'wrap-program
4383 (lambda* (#:key inputs outputs #:allow-other-keys)
4384 (let* ((out (assoc-ref outputs "out"))
4385 (bin (string-append out "/bin")))
4386 (with-directory-excursion bin
4387 (rename-file "redeclipse_linux"
4388 ".redeclipse_linux-real")
4389 (rename-file "redeclipse_server_linux"
4390 ".redeclipse_server_linux-real")
4391 (call-with-output-file "redeclipse_linux"
4392 (lambda (port)
4393 (format port "#!~a/bin/sh
4394 # Run the thing from its home, otherwise it just bails out.
4395 cd \"~a\"
4396 exec -a \"$0\" ~a/.redeclipse_linux-real~%"
4397 (assoc-ref inputs "bash") ;implicit input
4398 (string-append out)
4399 (string-append bin))))
4400 (call-with-output-file "redeclipse_server_linux"
4401 (lambda (port)
4402 (format port "#!~a/bin/sh
4403 # Run the thing from its home, otherwise it just bails out.
4404 cd \"~a\"
4405 exec -a \"$0\" ~a/.redeclipse_server_linux-real~%"
4406 (assoc-ref inputs "bash") ;implicit input
4407 (string-append out)
4408 (string-append bin))))
4409 (chmod "redeclipse_linux" #o555)
4410 (chmod "redeclipse_server_linux" #o555)))
4411 #t)))))
4412 (native-inputs
4413 `(("pkg-config" ,pkg-config)))
4414 (inputs
4415 `(("curl" ,curl)
4416 ("freetype" ,freetype)
4417 ("glu" ,glu)
4418 ("sdl-union" ,(sdl-union (list sdl2
4419 sdl2-image
4420 sdl2-mixer)))))
4421 (home-page "https://redeclipse.net/")
4422 (synopsis "Arena shooter derived from the Cube 2 engine")
4423 (description
4424 "Red Eclipse is an arena shooter, created from the Cube2 engine.
4425 Offering an innovative parkour system and distinct but all potent weapons,
4426 Red Eclipse provides fast paced and accessible gameplay.")
4427 ;; The engine is under Zlib; data files are covered by the other
4428 ;; licenses. More details at file:///doc/all-licenses.txt.
4429 (license (list license:expat
4430 license:zlib
4431 license:cc-by-sa4.0
4432 license:cc-by-sa3.0
4433 license:cc-by3.0
4434 license:cc0
4435 license:public-domain
4436 license:silofl1.1)))))
4437
4438 (define-public grue-hunter
4439 (package
4440 (name "grue-hunter")
4441 (version "1.0")
4442 (source (origin
4443 (method url-fetch)
4444 (uri (string-append "https://jxself.org/grue-hunter.tar.gz"))
4445 (sha256
4446 (base32
4447 "1hjcpy5439qs3v2zykis7hsi0i17zjs62gks3zd8mnfw9ni4i2h3"))))
4448 (build-system trivial-build-system) ; no Makefile.PL
4449 (arguments `(#:modules ((guix build utils))
4450 #:builder
4451 (begin
4452 (use-modules (guix build utils))
4453 (use-modules (srfi srfi-1))
4454
4455 (let* ((tarball (assoc-ref %build-inputs "tarball"))
4456 (perl (string-append (assoc-ref %build-inputs
4457 "perl")
4458 "/bin"))
4459 (gzip (string-append (assoc-ref %build-inputs
4460 "gzip")
4461 "/bin/gzip"))
4462 (tar (string-append (assoc-ref %build-inputs
4463 "tar")
4464 "/bin/tar"))
4465 (out (assoc-ref %outputs "out"))
4466 (bin (string-append out "/bin"))
4467 (doc (string-append out
4468 "/share/doc/grue-hunter")))
4469 (copy-file tarball "grue-hunter.tar.gz")
4470 (invoke gzip "-d" "grue-hunter.tar.gz")
4471 (invoke tar "xvf" "grue-hunter.tar")
4472
4473 (mkdir-p bin)
4474 (copy-file "grue-hunter/gh.pl"
4475 (string-append bin "/grue-hunter"))
4476 (patch-shebang (string-append bin "/grue-hunter")
4477 (list perl))
4478
4479 (install-file "grue-hunter/AGPLv3.txt" doc)
4480
4481 #t))))
4482 (inputs `(("perl" ,perl)
4483 ("tar" ,tar)
4484 ("gzip" ,gzip)
4485 ("tarball" ,source)))
4486 (home-page "https://jxself.org/grue-hunter.shtml")
4487 (synopsis "Text adventure game")
4488 (description
4489 "Grue Hunter is a text adventure game written in Perl. You must make
4490 your way through an underground cave system in search of the Grue. Can you
4491 capture it and get out alive?")
4492 (license license:agpl3+)))
4493
4494 (define-public lierolibre
4495 (package
4496 (name "lierolibre")
4497 (version "0.5")
4498 (source (origin
4499 (method url-fetch)
4500 (uri (string-append "https://launchpad.net/lierolibre/trunk/"
4501 version "/+download/lierolibre-"
4502 version ".tar.xz"))
4503 (sha256
4504 (base32
4505 "1cf1gvsn4qq190lrf9k5bpjnqwlcfw7pajvdnh7z5r4jqw0rsbl9"))
4506 (patches
4507 (search-patches "lierolibre-check-unaligned-access.patch"
4508 "lierolibre-try-building-other-arch.patch"
4509 "lierolibre-remove-arch-warning.patch"
4510 "lierolibre-newer-libconfig.patch"
4511 "lierolibre-is-free-software.patch"))
4512 (modules '((guix build utils)))
4513 (snippet
4514 '(begin
4515 ;; Delete pre-compiled files.
4516 (delete-file "data/LIERO.CHR")
4517 (delete-file "data/LIERO.SND")
4518 #t))))
4519 (build-system gnu-build-system)
4520 (native-inputs
4521 `(("imagemagick" ,imagemagick)
4522 ("pkg-config" ,pkg-config)
4523 ("util-linux" ,util-linux)
4524 ("sox" ,sox)))
4525 (inputs
4526 `(("boost" ,boost)
4527 ("libconfig" ,libconfig)
4528 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
4529 ("zlib" ,zlib)))
4530 (home-page "https://gitlab.com/lierolibre/lierolibre")
4531 (synopsis "Old-school earthworm action game")
4532 (description
4533 "lierolibre is an earthworm action game where you fight another player
4534 (or the computer) underground using a wide array of weapons.
4535
4536 Features:
4537 @itemize
4538 @item 2 worms, 40 weapons, great playability, two game modes: Kill'em All
4539 and Game of Tag, plus AI-players without true intelligence!
4540 @item Dat nostalgia.
4541 @item Extensions via a hidden F1 menu:
4542 @itemize
4543 @item Replays
4544 @item Game controller support
4545 @item Powerlevel palettes
4546 @end itemize
4547 @item Ability to write game variables to plain text files.
4548 @item Ability to load game variables from both EXE and plain text files.
4549 @item Scripts to extract and repack graphics, sounds and levels.
4550 @end itemize
4551
4552 To switch between different window sizes, use F6, F7 and F8, to switch to
4553 fullscreen, use F5 or Alt+Enter.")
4554 ;; Code mainly BSD-2, some parts under Boost 1.0. All assets are WTFPL2.
4555 (license (list license:bsd-2 license:boost1.0 license:wtfpl2))))
4556
4557 (define-public tennix
4558 (package
4559 (name "tennix")
4560 (version "1.3.1")
4561 (source
4562 (origin
4563 (method git-fetch)
4564 (uri (git-reference
4565 (url "https://repo.or.cz/tennix.git")
4566 (commit (string-append "tennix-" version))))
4567 (file-name (git-file-name name version))
4568 (sha256
4569 (base32 "02cj4lrdrisal5s9pnbf2smx7qz9czczjzndfkhfx0qy67b957sk"))
4570 ;; Remove non-free images.
4571 (modules '((guix build utils)))
4572 (snippet
4573 '(begin
4574 (for-each delete-file
4575 '("data/loc_training_camp.png"
4576 "data/loc_austrian_open.png"
4577 "data/loc_olympic_green_tennis.png"))
4578 #t))))
4579 (build-system gnu-build-system)
4580 (arguments
4581 `(#:tests? #f ;no test
4582 #:phases
4583 (modify-phases %standard-phases
4584 (add-after 'unpack 'fix-include
4585 (lambda _
4586 (substitute* '("src/graphics.h" "src/sound.h")
4587 (("#include \"(SDL_(image|ttf|mixer)\\.h)\"" _ header)
4588 (string-append "#include \"SDL/" header "\"")))
4589 (substitute* '("src/tennix.h" "src/network.h" "src/SDL_rotozoom.h")
4590 (("#include <SDL.h>") "#include <SDL/SDL.h>")
4591 (("#include <SDL_net.h>") "#include <SDL/SDL_net.h>"))
4592 #t))
4593 (add-after 'unpack 'locate-install
4594 ;; Build process cannot expand "$(INSTALL)" in Makefile.
4595 (lambda _
4596 (substitute* "makefile"
4597 (("^CONFIGURE_OUTPUT :=.*" all)
4598 (string-append "INSTALL := install -c\n" all)))
4599 #t))
4600 (replace 'configure
4601 ;; The "configure" script is picky about the arguments it
4602 ;; gets. Call it ourselves.
4603 (lambda _
4604 (invoke "./configure" "--prefix" (assoc-ref %outputs "out")))))))
4605 (native-inputs
4606 `(("which" ,which)))
4607 (inputs
4608 `(("python" ,python-wrapper)
4609 ("sdl" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf sdl-net)))))
4610 (home-page "http://icculus.org/tennix/")
4611 (synopsis "Play tennis against the computer or a friend")
4612 (description "Tennix is a 2D tennis game. You can play against the
4613 computer or against another player using the keyboard. The game runs
4614 in-window at 640x480 resolution or fullscreen.")
4615 ;; Project is licensed under GPL2+ terms. It includes images
4616 ;; released under Public Domain terms, and SDL_rotozoom, released
4617 ;; under LGPL2.1 terms.
4618 (license (list license:gpl2+ license:public-domain license:lgpl2.1))))
4619
4620 (define-public warzone2100
4621 (package
4622 (name "warzone2100")
4623 (version "3.4.1")
4624 (source
4625 (origin
4626 (method url-fetch)
4627 (uri (string-append "mirror://sourceforge/warzone2100/releases/"
4628 version
4629 "/warzone2100_src.tar.xz"))
4630 (sha256
4631 (base32 "0savalmw1kp1sf8vg5aqrl5hc77p4jacxy5y9qj8k2hi2vqdfb7a"))
4632 (modules '((guix build utils)))
4633 (snippet
4634 '(begin
4635 (with-directory-excursion "3rdparty"
4636 (for-each
4637 delete-file-recursively
4638 '("discord-rpc"
4639 "miniupnp"
4640 "utfcpp")))
4641 #t))))
4642 (build-system cmake-build-system)
4643 (arguments
4644 `(#:configure-flags '("-DWZ_DISTRIBUTOR=Guix"
4645 "-DENABLE_DISCORD=off")
4646 #:tests? #f ; TODO: Tests seem to be broken, configure.ac is missing.
4647 #:phases
4648 (modify-phases %standard-phases
4649 (add-after 'unpack 'fix-utfcpp-include
4650 (lambda _
4651 (substitute* "lib/framework/wzstring.cpp"
4652 (("<utfcpp/source/utf8.h>") "<utf8.h>"))
4653 #t))
4654 (add-after 'unpack 'link-tests-with-qt
4655 (lambda _
4656 (substitute* "tests/Makefile.am"
4657 (("(framework_linktest_LDADD|maptest_LDADD) = " prefix)
4658 (string-append prefix "$(QT5_LIBS) ")))
4659 #t))
4660 (add-after 'unpack 'fix-ivis-linktest
4661 (lambda _
4662 (substitute* "tests/ivis_linktest.cpp"
4663 (("iV_DrawTextRotated.*;")
4664 (string-append "iV_DrawTextRotated(\"Press ESC to exit.\", "
4665 "100, 100, 0.0f, font_regular);")))
4666 #t)))))
4667 (native-inputs `(("asciidoc" ,asciidoc)
4668 ("asciidoctor" ,ruby-asciidoctor)
4669 ("gettext" ,gettext-minimal)
4670 ("pkg-config" ,pkg-config)
4671 ("unzip" ,unzip)
4672 ;; 7z is used to create .zip archive, not `zip' as in version 3.2.*.
4673 ("p7zip" ,p7zip)))
4674 (inputs `(("curl" ,curl)
4675 ("fontconfig" ,fontconfig)
4676 ("freetype" ,freetype)
4677 ("glew" ,glew)
4678 ("harfbuzz" ,harfbuzz)
4679 ("libtheora" ,libtheora)
4680 ("libvorbis" ,libvorbis)
4681 ("libxrandr" ,libxrandr)
4682 ("libsodium" ,libsodium)
4683 ("miniupnpc" ,miniupnpc)
4684 ("openal" ,openal)
4685 ("physfs" ,physfs)
4686 ("qtbase" ,qtbase)
4687 ("qtscript" ,qtscript)
4688 ("openssl" ,openssl)
4689 ("sdl2" ,sdl2)
4690 ("utfcpp" ,utfcpp)))
4691 (home-page "https://wz2100.net")
4692 (synopsis "3D Real-time strategy and real-time tactics game")
4693 (description
4694 "Warzone 2100 offers campaign, multi-player, and single-player skirmish
4695 modes. An extensive tech tree with over 400 different technologies, combined
4696 with the unit design system, allows for a wide variety of possible units and
4697 tactics.")
4698 ;; Everything is GPLv2+ unless otherwise specified in COPYING.NONGPL
4699 (license (list license:bsd-3
4700 license:cc0
4701 license:cc-by-sa3.0
4702 license:expat
4703 license:gpl2+
4704 license:lgpl2.1+))))
4705
4706 (define-public widelands
4707 (package
4708 (name "widelands")
4709 (version "21")
4710 (source
4711 (origin
4712 (method url-fetch)
4713 (uri (string-append "https://launchpad.net/widelands/"
4714 "build" version "/build" version "/+download/"
4715 "widelands-build" version "-source.tar.gz"))
4716 (sha256
4717 (base32 "0mz3jily0w1zxxqbnkqrp6hl88xhrwzbil9crq7gpcwidx60w7k0"))
4718 (modules '((guix build utils)))
4719 (snippet
4720 '(begin
4721 (delete-file-recursively "src/third_party/minizip")
4722 #t))
4723 (patches
4724 ;; Use system Minizip. Patch is provided by Debian, and discussed
4725 ;; upstream at <https://github.com/widelands/widelands/issues/399>.
4726 (search-patches "widelands-system-wide_minizip.patch"))))
4727 (build-system cmake-build-system)
4728 (arguments
4729 `(#:configure-flags
4730 (let* ((out (assoc-ref %outputs "out"))
4731 (share (string-append out "/share")))
4732 (list (string-append "-DCMAKE_INSTALL_PREFIX=" out "/bin")
4733 (string-append "-DWL_INSTALL_BASEDIR=" share "/widelands")
4734 (string-append "-DWL_INSTALL_DATADIR=" share "/widelands")
4735 "-DOPTION_BUILD_WEBSITE_TOOLS=OFF"
4736 ;; CMakeLists.txt does not handle properly RelWithDebInfo build
4737 ;; type. When used, no game data is installed!
4738 "-DCMAKE_BUILD_TYPE=Release"))
4739 #:phases
4740 (modify-phases %standard-phases
4741 (add-after 'unpack 'unbundle-fonts
4742 ;; Unbundle fonts already packaged in Guix. XXX: missing fonts are
4743 ;; amiri, Culmus, mmrCensus, Nakula, and Sinhala.
4744 (lambda* (#:key inputs #:allow-other-keys)
4745 (with-directory-excursion "data/i18n/fonts"
4746 (for-each (lambda (font)
4747 (delete-file-recursively font)
4748 (symlink (string-append (assoc-ref inputs font)
4749 "/share/fonts/truetype")
4750 font))
4751 '("DejaVu" "MicroHei")))
4752 #t)))))
4753 (native-inputs
4754 `(("gettext" ,gettext-minimal)
4755 ("python" ,python-wrapper)))
4756 (inputs
4757 `(("boost" ,boost)
4758 ("glew" ,glew)
4759 ("icu4c" ,icu4c)
4760 ("libpng" ,libpng)
4761 ("minizip" ,minizip)
4762 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
4763 ("zlib" ,zlib)
4764 ;; Fonts for the ‘unbundle-fonts’ phase. Case matters in name!
4765 ("DejaVu" ,font-dejavu)
4766 ("MicroHei" ,font-wqy-microhei)))
4767 (home-page "https://www.widelands.org/")
4768 (synopsis "Fantasy real-time strategy game")
4769 (description
4770 "In Widelands, you are the regent of a small clan. You start out with
4771 nothing but your headquarters, where all your resources are stored.
4772
4773 In the course of the game, you will build an ever growing settlement. Every
4774 member of your clan will do his or her part to produce more resources---wood,
4775 food, iron, gold and more---to further this growth. The economic network is
4776 complex and different in the four tribes (Barbarians, Empire, Atlanteans, and
4777 Frisians).
4778
4779 As you are not alone in the world, you will meet other clans sooner or later.
4780 Some of them may be friendly and you may eventually trade with them. However,
4781 if you want to rule the world, you will have to train soldiers and fight.
4782
4783 Widelands offers single-player mode with different campaigns; the campaigns
4784 all tell stories of tribes and their struggle in the Widelands universe!
4785 However, settling really starts when you unite with friends over the Internet
4786 or LAN to build up new empires together---or to crush each other in the dusts
4787 of war. Widelands also offers an Artificial Intelligence to challenge you.")
4788 ;; Game is released as GPL2+. Some parts, e.g., art, are released under
4789 ;; different licenses.
4790 (license (list license:gpl2+
4791 license:expat ;src/third_party/eris
4792 license:silofl1.1 ;Widelands.ttf
4793 license:cc-by-sa3.0)))) ;some music files
4794
4795 (define-public starfighter
4796 (package
4797 (name "starfighter")
4798 (version "2.3.3")
4799 (source (origin
4800 (method url-fetch)
4801 (uri (string-append
4802 "https://github.com/pr-starfighter/starfighter/releases"
4803 "/download/v" version "/starfighter-"
4804 version "-src.tar.gz"))
4805 (sha256
4806 (base32
4807 "0jz2lgvmp299nks6ajg2yxbx4xcaxlc4cpfr61861p7m7z2nv84y"))))
4808 (build-system gnu-build-system)
4809 (native-inputs
4810 `(("pkg-config" ,pkg-config)))
4811 (inputs
4812 `(("pango" ,pango)
4813 ("sdl2" ,sdl2)
4814 ("sdl2-image" ,sdl2-image)
4815 ("sdl2-mixer" ,sdl2-mixer)
4816 ("sdl2-ttf" ,sdl2-ttf)))
4817 (home-page "https://pr-starfighter.github.io/")
4818 (synopsis "2D scrolling shooter game")
4819 (description
4820 "In the year 2579, the intergalactic weapons corporation, WEAPCO, has
4821 dominated the galaxy. Guide Chris Bainfield and his friend Sid Wilson on
4822 their quest to liberate the galaxy from the clutches of WEAPCO. Along the
4823 way, you will encounter new foes, make new allies, and assist local rebels
4824 in strikes against the evil corporation.")
4825 ;; gfx and music are under CC-BY 3.0, CC-BY-SA 3.0, CC0 or Public Domain.
4826 (license (list license:gpl3+
4827 license:cc-by3.0
4828 license:cc-by-sa3.0
4829 license:cc0
4830 license:public-domain))))
4831
4832 (define-public chromium-bsu
4833 (package
4834 (name "chromium-bsu")
4835 (version "0.9.16.1")
4836 (source (origin
4837 (method url-fetch)
4838 (uri (string-append "mirror://sourceforge/chromium-bsu"
4839 "/Chromium B.S.U. source code/"
4840 "chromium-bsu-" version ".tar.gz"))
4841 (sha256
4842 (base32
4843 "0jk2w5b6s6nkzri585bbz16cif2fhqcnl5l1mq3rd98r9nil3hd1"))))
4844 (build-system gnu-build-system)
4845 (native-inputs `(("pkg-config" ,pkg-config)))
4846 (inputs `(("gettext" ,gettext-minimal)
4847 ("glu" ,glu)
4848 ("quesoglc" ,quesoglc)
4849 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))))
4850 (home-page "http://chromium-bsu.sourceforge.net/")
4851 (synopsis "Fast-paced, arcade-style, top-scrolling space shooter")
4852 (description
4853 "In this game you are the captain of the cargo ship Chromium B.S.U. and
4854 are responsible for delivering supplies to the troops on the front line. Your
4855 ship has a small fleet of robotic fighters which you control from the relative
4856 safety of the Chromium vessel.")
4857 ;; Clarified Artistic License for everything but sound, which is covered
4858 ;; by the Expat License.
4859 (license (list license:clarified-artistic license:expat))))
4860
4861 (define-public tuxpaint
4862 (package
4863 (name "tuxpaint")
4864 (version "0.9.23") ;keep VER_DATE below in sync
4865 (source
4866 (origin
4867 (method url-fetch)
4868 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint/"
4869 version "/tuxpaint-" version ".tar.gz"))
4870 (sha256
4871 (base32
4872 "09k9pxi88r3dx6dyjwf9h85d4qpva4i29qz63dc558hg9v21k69l"))
4873 (modules '((guix build utils)))
4874 (snippet
4875 '(begin
4876 ;; Remove win32 directory which contains binary dll's and the
4877 ;; deprecated visualc directory.
4878 (for-each delete-file-recursively '("win32" "visualc"))
4879 (substitute* "Makefile"
4880 ;; Do not rely on $(GPERF) being an absolute file name
4881 (("\\[ -x \\$\\(GPERF\\) \\]")
4882 "$(GPERF) --version >/dev/null 2>&1"))
4883 #t))
4884 (patches (search-patches "tuxpaint-stamps-path.patch"))))
4885 (build-system gnu-build-system)
4886 (native-inputs
4887 `(("gperf" ,gperf)
4888 ("pkg-config" ,pkg-config)))
4889 (inputs
4890 `(("cairo" ,cairo)
4891 ("fribidi" ,fribidi)
4892 ("gettext" ,gettext-minimal)
4893 ("libpng" ,libpng)
4894 ("librsvg" ,librsvg)
4895 ("libpaper" ,libpaper)
4896 ("netpbm" ,netpbm)
4897 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf sdl-image)))))
4898 ;; TODO: Use system fonts rather than those in data/fonts
4899 (arguments
4900 `(#:make-flags `("VER_DATE=2018-09-02"
4901 "GPERF=gperf" "CC=gcc"
4902 "SDL_PCNAME=sdl SDL_image SDL_mixer SDL_ttf"
4903 ,(string-append "PREFIX=" %output)
4904 "KDE_PREFIX=$(PREFIX)/share/applications"
4905 "KDE_ICON_PREFIX=$(PREFIX)/share/icons/"
4906 "COMPLETIONDIR=$(PREFIX)/etc/bash_completion.d")
4907 #:parallel-build? #f ;fails on some systems
4908 #:tests? #f ;No tests
4909 #:phases (modify-phases %standard-phases
4910 (delete 'configure) ;no configure phase
4911 (add-before 'install 'no-sys-cache
4912 (lambda _ ;do not rebuild system conf cache
4913 (substitute* "Makefile"
4914 (("kbuildsycoca4") ""))
4915 #t))
4916 (add-after 'install 'fix-import
4917 (lambda* (#:key inputs outputs #:allow-other-keys)
4918 (let* ((out (assoc-ref outputs "out"))
4919 (net (assoc-ref inputs "netpbm"))
4920 (tpi (string-append out "/bin/tuxpaint-import")))
4921 (substitute* tpi
4922 ;; Point to installation prefix so that the default
4923 ;; configure file is found.
4924 (("/usr/local") out))
4925 ;; tuxpaint-import uses a bunch of programs from
4926 ;; netpbm, so make sure it knows where those are
4927 (wrap-program tpi
4928 `("PATH" ":" prefix
4929 (,(string-append net "/bin"))))))))))
4930 (native-search-paths
4931 (list (search-path-specification
4932 (variable "TUXPAINT_STAMPS_PATH")
4933 (files '("share/tuxpaint/stamps")))))
4934 (home-page "http://www.tuxpaint.org")
4935 (synopsis "Drawing software for children")
4936 (description
4937 "Tux Paint is a free drawing program designed for young children (kids
4938 ages 3 and up). It has a simple, easy-to-use interface; fun sound effects;
4939 and an encouraging cartoon mascot who helps guide children as they use the
4940 program. It provides a blank canvas and a variety of drawing tools to help
4941 your child be creative.")
4942 (license license:gpl2+)))
4943
4944 (define-public tuxpaint-stamps
4945 (package
4946 (name "tuxpaint-stamps")
4947 (version "2018.09.01")
4948 (source
4949 (origin
4950 (method url-fetch)
4951 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-stamps/"
4952 (string-map (λ (x) (if (eq? x #\.) #\- x)) version)
4953 "/tuxpaint-stamps-" version ".tar.gz"))
4954 (sha256
4955 (base32
4956 "1skr23k27yj3vgwfazpzxp90lb2a278gxrkr3bxw7az6zpkmb3yp"))))
4957 (build-system trivial-build-system)
4958 (native-inputs
4959 `(("tar" ,tar)
4960 ("gzip" ,gzip)))
4961 (arguments
4962 `(#:modules ((guix build utils))
4963 #:builder (begin
4964 (use-modules (guix build utils))
4965 (setenv "PATH"
4966 (string-append
4967 (assoc-ref %build-inputs "tar") "/bin" ":"
4968 (assoc-ref %build-inputs "gzip") "/bin"))
4969 (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
4970 (chdir (string-append ,name "-" ,version))
4971 (let ((dir (string-append %output "/share/tuxpaint/stamps")))
4972 (mkdir-p dir)
4973 (copy-recursively "stamps" dir))
4974 #t)))
4975 (home-page (package-home-page tuxpaint))
4976 (synopsis "Stamp images for Tux Paint")
4977 (description
4978 "This package contains a set of \"Rubber Stamp\" images which can be used
4979 with the \"Stamp\" tool within Tux Paint.")
4980 (license license:gpl2+)))
4981
4982 (define-public tuxpaint-config
4983 (package
4984 (name "tuxpaint-config")
4985 (version "0.0.14") ;keep VER_DATE below in sync
4986 (source
4987 (origin
4988 (method url-fetch)
4989 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-config/"
4990 version "/tuxpaint-config-" version ".tar.gz"))
4991 (sha256
4992 (base32
4993 "0zkgxk436nqcp43zghkfmh397c7dvh5bwn2as7gwvv208bzyij6g"))))
4994 (build-system gnu-build-system)
4995 (native-inputs
4996 `(("gettext" ,gettext-minimal)))
4997 (inputs
4998 `(("fltk" ,fltk)
4999 ("libpaper" ,libpaper)
5000 ;; TODO: Should the following be propagated by fltk?
5001 ("libx11" ,libx11)
5002 ("libxft" ,libxft)
5003 ("mesa" ,mesa)))
5004 (arguments
5005 `(#:make-flags `("VER_DATE=2018-09-01"
5006 "CONFDIR=/etc/tuxpaint" ;don't write to store
5007 ,(string-append "PREFIX=" %output)
5008 "GNOME_PREFIX=$(PREFIX)")
5009 #:parallel-build? #f ;race conditions
5010 #:tests? #f ;no tests
5011 #:phases (modify-phases %standard-phases
5012 (delete 'configure) ;no configure phase
5013 (add-before 'install 'gzip-no-name
5014 (lambda* _
5015 (substitute* "Makefile"
5016 ;; tuxpaint-config compresses its own documentation;
5017 ;; make sure it uses flags for reproducibility.
5018 (("gzip") "gzip --no-name"))))
5019 (add-before 'install 'make-install-dirs
5020 (lambda* (#:key outputs #:allow-other-keys)
5021 (let ((out (assoc-ref outputs "out")))
5022 (mkdir-p (string-append out "/bin"))
5023 #t))))))
5024 (home-page (package-home-page tuxpaint))
5025 (synopsis "Configure Tux Paint")
5026 (description
5027 "Tux Paint Config is a graphical configuration editor for Tux Paint.")
5028 (license license:gpl2))) ;no "or later" present
5029
5030 (define-public supertux
5031 (package
5032 (name "supertux")
5033 (version "0.6.2")
5034 (source (origin
5035 (method url-fetch)
5036 (uri (string-append "https://github.com/SuperTux/supertux/"
5037 "releases/download/v" version "/SuperTux-v"
5038 version "-Source.tar.gz"))
5039 (file-name (string-append name "-" version ".tar.gz"))
5040 (sha256
5041 (base32
5042 "167m3z4m8n76dvbv42m1fnvabpbpsxvr28zk9641916jl9pfba96"))
5043 (patches
5044 (search-patches "supertux-unbundle-squirrel.patch"))))
5045 (arguments
5046 '(#:tests? #f
5047 #:configure-flags '("-DINSTALL_SUBDIR_BIN=bin"
5048 "-DUSE_SYSTEM_PHYSFS=ON")
5049 #:phases
5050 (modify-phases %standard-phases
5051 (add-after 'unpack 'patch-squirrel-path
5052 (lambda* (#:key inputs #:allow-other-keys)
5053 (let ((squirrel (assoc-ref inputs "squirrel")))
5054 (substitute* "CMakeLists.txt"
5055 (("set\\(SQUIRREL_PREFIX.*")
5056 (string-append "set(SQUIRREL_PREFIX " squirrel ")"))
5057 (("add_dependencies\\(supertux2_lib squirrel\\)") "")
5058 (("\\$\\{SQUIRREL_PREFIX\\}/include")
5059 (string-append "${SQUIRREL_PREFIX}/include/squirrel"))))
5060 #t)))))
5061 (build-system cmake-build-system)
5062 (inputs `(("sdl2" ,sdl2)
5063 ("sdl2-image" ,sdl2-image)
5064 ("sdl2-mixer" ,sdl2-mixer)
5065 ("openal" ,openal)
5066 ("mesa" ,mesa)
5067 ("glew" ,glew)
5068 ("libvorbis" ,libvorbis)
5069 ("libogg" ,libogg)
5070 ("physfs" ,physfs)
5071 ("curl" ,curl)
5072 ("boost" ,boost)
5073 ("freetype" ,freetype)
5074 ("squirrel" ,squirrel)))
5075 (native-inputs
5076 `(("pkg-config" ,pkg-config)))
5077 (synopsis "2D platformer game")
5078 (description "SuperTux is a classic 2D jump'n run sidescroller game in
5079 a style similar to the original Super Mario games.")
5080 (home-page "https://supertux.org/")
5081 (license license:gpl3+)))
5082
5083 (define-public tintin++
5084 (package
5085 (name "tintin++")
5086 (version "2.02.04")
5087 (source
5088 (origin
5089 (method url-fetch)
5090 (uri (string-append "mirror://sourceforge/tintin/TinTin++ Source Code/"
5091 (string-drop-right version 1)
5092 "/tintin-" version ".tar.gz"))
5093 (sha256
5094 (base32 "1w1y20vqcikg59gnbxjbhyq2yanwqz1a6wp8vd1qnmil240id4j7"))))
5095 (inputs
5096 `(("gnutls" ,gnutls)
5097 ("pcre" ,pcre)
5098 ("readline" ,readline)
5099 ("zlib" ,zlib)))
5100 (arguments
5101 '(#:tests? #f ; no test suite
5102 #:phases
5103 (modify-phases %standard-phases
5104 ;; The source is in tt/src.
5105 (add-before 'configure 'chdir
5106 (lambda _
5107 (chdir "src")
5108 #t)))))
5109 (build-system gnu-build-system)
5110 (home-page "https://tintin.mudhalla.net/")
5111 (synopsis "MUD client")
5112 (description
5113 "TinTin++ is a MUD client which supports MCCP (Mud Client Compression
5114 Protocol), MMCP (Mud Master Chat Protocol), xterm 256 colors, most TELNET
5115 options used by MUDs, as well as those required to login via telnet on
5116 Linux / Mac OS X servers, and an auto mapper with a VT100 map display.")
5117 (license license:gpl3+)))
5118
5119 (define-public laby
5120 (package
5121 (name "laby")
5122 (version "0.6.4")
5123 (source
5124 (origin (method git-fetch)
5125 (uri (git-reference
5126 (url "https://github.com/sgimenez/laby")
5127 (commit (string-append name "-" version))))
5128 (file-name (git-file-name name version))
5129 (sha256
5130 (base32
5131 "12fq9hhrxpzgfinmj9ra9ckss9yficwdlrmgjvvsq7agvh3sgyl1"))
5132 (patches (search-patches "laby-make-install.patch"))))
5133 (build-system gnu-build-system)
5134 (inputs
5135 `(("lablgtk" ,lablgtk)
5136 ("ocaml" ,ocaml)
5137 ("ocaml-findlib" ,ocaml-findlib)
5138 ("ocamlbuild" ,ocamlbuild)))
5139 (arguments
5140 '(#:phases
5141 (modify-phases %standard-phases
5142 (delete 'configure)
5143 (add-before 'build 'allow-unsafe-strings
5144 ;; Fix a build failure with ocaml >=4.06.0.
5145 ;; See <https://github.com/sgimenez/laby/issues/53>.
5146 (lambda _
5147 (setenv "OCAMLPARAM" "safe-string=0,_")
5148 #t))
5149 (add-before 'build 'set-library-path
5150 (lambda* (#:key inputs #:allow-other-keys)
5151 (let ((lablgtk (assoc-ref inputs "lablgtk")))
5152 (setenv "LD_LIBRARY_PATH"
5153 (string-append lablgtk "/lib/ocaml/stublibs"))))))
5154 #:tests? #f ; no 'check' target
5155 #:make-flags
5156 (list (string-append "PREFIX=" (assoc-ref %outputs "out")) "all")))
5157 (home-page "https://sgimenez.github.io/laby/")
5158 (synopsis "Programming game")
5159 (description "Learn programming, playing with ants and spider webs ;-)
5160 Your robot ant can be programmed in many languages: OCaml, Python, C, C++,
5161 Java, Ruby, Lua, JavaScript, Pascal, Perl, Scheme, Vala, Prolog. Experienced
5162 programmers may also add their own favorite language.")
5163 (license license:gpl3+)))
5164
5165 (define-public bambam
5166 (package
5167 (name "bambam")
5168 (version "1.0.0")
5169 (source
5170 (origin
5171 (method git-fetch)
5172 (uri (git-reference
5173 (url "https://github.com/porridge/bambam")
5174 (commit (string-append "v" version))))
5175 (file-name (git-file-name name version))
5176 (sha256
5177 (base32 "18cwd1wpyyx8y61cags9bkdhx9x858xicc4y1c9c2s0xjmgzhl3i"))))
5178 (build-system python-build-system)
5179 (arguments
5180 `(#:tests? #f ; no tests
5181 #:phases
5182 (modify-phases %standard-phases
5183 (delete 'build) ; nothing to build
5184 (replace 'install
5185 (lambda* (#:key outputs #:allow-other-keys)
5186 (let* ((out (assoc-ref outputs "out"))
5187 (bin (string-append out "/bin"))
5188 (share (string-append out "/share")))
5189 (mkdir-p bin)
5190 (copy-file "bambam.py" (string-append bin "/bambam"))
5191 (install-file "bambam.6" (string-append share "/man/man6"))
5192 (copy-recursively "data" (string-append share "/bambam/data")))
5193 #t)))))
5194 (inputs
5195 `(("python-pygame" ,python-pygame)))
5196 (home-page "https://github.com/porridge/bambam")
5197 (synopsis "Keyboard mashing and doodling game for babies")
5198 (description "Bambam is a simple baby keyboard (and gamepad) masher
5199 application that locks the keyboard and mouse and instead displays bright
5200 colors, pictures, and sounds.")
5201 (license license:gpl3+)))
5202
5203 (define-public mrrescue
5204 (package
5205 (name "mrrescue")
5206 (version "1.02e")
5207 (source (origin
5208 (method url-fetch)
5209 (uri (string-append
5210 "https://github.com/SimonLarsen/mrrescue/releases/"
5211 "download/" version "/mrrescue" version ".love"))
5212 (file-name (string-append name "-" version ".love"))
5213 (sha256
5214 (base32
5215 "0jwzbwkgp1l5ia6c7s760gmdirbsncp6nfqp7vqdqsfb63la9gl2"))))
5216 (build-system trivial-build-system)
5217 (arguments
5218 `(#:modules ((guix build utils))
5219 #:builder
5220 (begin
5221 (use-modules (guix build utils))
5222 (let* ((out (assoc-ref %outputs "out"))
5223 (script (string-append out "/bin/" ,name))
5224 (data (string-append out "/share/" ,name))
5225 (source (assoc-ref %build-inputs "source"))
5226 (unzip (string-append (assoc-ref %build-inputs "unzip")
5227 "/bin/unzip"))
5228 (patch (string-append (assoc-ref %build-inputs "patch")
5229 "/bin/patch"))
5230 (bash (string-append (assoc-ref %build-inputs "bash")
5231 "/bin/bash"))
5232 (love (string-append (assoc-ref %build-inputs "love")
5233 "/bin/love")))
5234
5235 (mkdir-p (dirname script))
5236 (with-output-to-file script
5237 (lambda ()
5238 (format #t "#!~a~%" bash)
5239 (format #t "exec -a ~a \"~a\" \"~a\"~%" ,name love data)))
5240 (chmod script #o755)
5241
5242 ;; The better way to package this game would be to install *only* the
5243 ;; script above, pointing to the unextracted .love file in the store.
5244 ;; However, mrrescue 1.02e needs to be patched to work with Love 11.
5245 ;; Instead of extracting the .love file, patching it, and re-zipping
5246 ;; it to the store, simply point the script to the extracted patched
5247 ;; data directory directly.
5248 (mkdir-p data)
5249 (with-directory-excursion data
5250 (invoke unzip source)
5251 (invoke patch "-p1" "-i"
5252 (assoc-ref %build-inputs "love-11.patch")))
5253 #t))))
5254 (native-inputs
5255 `(("unzip" ,unzip)
5256 ("patch" ,patch)
5257 ("love-11.patch" ,(search-patch "mrrescue-support-love-11.patch"))))
5258 (inputs
5259 `(("bash" ,bash)
5260 ("love" ,love)))
5261 (home-page "https://tangramgames.dk/games/mrrescue")
5262 (synopsis "Arcade-style fire fighting game")
5263 (description
5264 "Mr. Rescue is an arcade styled 2d action game centered around evacuating
5265 civilians from burning buildings. The game features fast-paced fire
5266 extinguishing action, intense boss battles, a catchy soundtrack, and lots of
5267 throwing people around in pseudo-randomly generated buildings.")
5268 (license (list license:zlib ; for source code
5269 license:cc-by-sa3.0)))) ; for graphics and music assets
5270
5271 (define-public hyperrogue
5272 (package
5273 (name "hyperrogue")
5274 (version "11.3a")
5275 ;; When updating this package, be sure to update the "hyperrogue-data"
5276 ;; origin in native-inputs.
5277 (source (origin
5278 (method url-fetch)
5279 (uri (string-append
5280 "https://www.roguetemple.com/z/hyper/hyperrogue"
5281 (string-join (string-split version #\.) "")
5282 "-src.tgz"))
5283 (sha256
5284 (base32
5285 "1yxabbswq02fc5frigvs43f83m5vlxybc7n5mynkwzj2c70lfp2k"))))
5286 (build-system gnu-build-system)
5287 (arguments
5288 `(#:tests? #f ; no check target
5289 #:make-flags '("HYPERROGUE_USE_GLEW=1"
5290 "HYPERROGUE_USE_PNG=1")
5291 #:phases
5292 (modify-phases %standard-phases
5293 (add-after 'set-paths 'set-sdl-paths
5294 (lambda* (#:key inputs #:allow-other-keys)
5295 (setenv "CPATH"
5296 (string-append (or (getenv "CPATH") "") ":"
5297 (assoc-ref inputs "sdl-union")
5298 "/include/SDL"))))
5299 (replace 'configure
5300 (lambda* (#:key inputs outputs #:allow-other-keys)
5301 (let* ((out (assoc-ref outputs "out"))
5302 (share-dir (string-append out "/share/hyperrogue"))
5303 (dejavu-dir (string-append
5304 (assoc-ref inputs "font-dejavu")
5305 "/share/fonts/truetype"))
5306 (dejavu-font "DejaVuSans-Bold.ttf")
5307 (music-file "hyperrogue-music.txt"))
5308 ;; Fix font and music paths.
5309 (substitute* "basegraph.cpp"
5310 ((dejavu-font)
5311 (string-append dejavu-dir "/" dejavu-font)))
5312 (substitute* music-file
5313 (("\\*/")
5314 (string-append share-dir "/sounds/")))
5315 (substitute* "sound.cpp"
5316 (("musicfile = \"\"")
5317 (string-append "musicfile = \""
5318 share-dir "/" music-file "\"")))
5319 ;; Disable build machine CPU optimizations and warnings treated
5320 ;; as errors.
5321 (substitute* "Makefile"
5322 (("-march=native") "")
5323 (("-Werror") "")))
5324 #t))
5325 (replace 'install
5326 (lambda* (#:key inputs outputs #:allow-other-keys)
5327 (let* ((out (assoc-ref outputs "out"))
5328 (bin (string-append out "/bin"))
5329 (share-dir (string-append out "/share/hyperrogue")))
5330 (mkdir-p bin)
5331 (install-file "hyperrogue" bin)
5332 (install-file "hyperrogue-music.txt" share-dir))
5333 #t))
5334 (add-after 'install 'install-data
5335 (lambda* (#:key inputs outputs #:allow-other-keys)
5336 (let* ((data (assoc-ref inputs "hyperrogue-data"))
5337 (out (assoc-ref outputs "out"))
5338 (sounds (string-append out "/share/hyperrogue/sounds"))
5339 (unzip (string-append (assoc-ref inputs "unzip") "/bin/unzip")))
5340 ;; Extract media license information into sounds directory.
5341 (invoke unzip "-j" data
5342 (string-append
5343 "hyperrogue"
5344 (string-join (string-split ,version #\.) "")
5345 "/sounds/credits.txt") "-d" sounds)
5346 ;; Extract sounds and music into sounds directory.
5347 (invoke "unzip" "-j" data
5348 (string-append
5349 "hyperrogue"
5350 (string-join (string-split ,version #\.) "")
5351 "/*.ogg") "-d" sounds)))))))
5352 (native-inputs
5353 `(("hyperrogue-data"
5354 ,(origin
5355 (method url-fetch)
5356 (uri
5357 (string-append
5358 "https://www.roguetemple.com/z/hyper/hyperrogue"
5359 (string-join (string-split version #\.) "")
5360 "-win.zip"))
5361 (sha256
5362 (base32
5363 "11yhbia45f1w9z0j67h9nynwjqmvakr9l6rnrmdrdkzin6lvzzj4"))))
5364 ("unzip" ,unzip)))
5365 (inputs
5366 `(("font-dejavu" ,font-dejavu)
5367 ("glew" ,glew)
5368 ("libpng" ,libpng)
5369 ("sdl-union" ,(sdl-union (list sdl
5370 sdl-gfx
5371 sdl-mixer
5372 sdl-ttf)))))
5373 (home-page "https://www.roguetemple.com/z/hyper/")
5374 (synopsis "Non-euclidean graphical rogue-like game")
5375 (description
5376 "HyperRogue is a game in which the player collects treasures and fights
5377 monsters -- rogue-like but for the fact that it is played on the hyperbolic
5378 plane and not in euclidean space.
5379
5380 In HyperRogue, the player can move through different parts of the world, which
5381 are home to particular creatures and may be subject to their own rules of
5382 \"physics\".
5383
5384 While the game can use ASCII characters to display the the classical rogue
5385 symbols, it still needs graphics to render the non-euclidean world.")
5386 (license (list license:bsd-3 ; glew.c, mtrand.*
5387 license:cc-by-sa3.0 ; music
5388 license:cc-by-sa4.0 ; sounds
5389 license:cc0
5390 license:public-domain ; direntx.*, some sounds
5391 license:zlib ; savepng.*
5392 license:gpl2+)))) ; remaining files
5393
5394 (define-public kobodeluxe
5395 (package
5396 (name "kobodeluxe")
5397 (version "0.5.1")
5398 (source (origin
5399 (method url-fetch)
5400 (uri (string-append "http://olofson.net/kobodl/download/KoboDeluxe-"
5401 version ".tar.bz2"))
5402 (sha256
5403 (base32
5404 "0b2wvdpnmaibsy419c16dfwj5kvd3pccby2aaqvm964x74592yqg"))
5405 (patches (search-patches
5406 "kobodeluxe-const-charp-conversion.patch"
5407 "kobodeluxe-enemies-pipe-decl.patch"
5408 "kobodeluxe-graphics-window-signed-char.patch"
5409 "kobodeluxe-manpage-minus-not-hyphen.patch"
5410 "kobodeluxe-midicon-segmentation-fault.patch"
5411 "kobodeluxe-paths.patch"))))
5412 (build-system gnu-build-system)
5413 (arguments
5414 '(#:configure-flags
5415 (list (string-append "CPPFLAGS=-I"
5416 (assoc-ref %build-inputs "sdl-union")
5417 "/include/SDL"))))
5418 (inputs
5419 `(("glu" ,glu)
5420 ("sdl-union" ,(sdl-union (list sdl sdl-image)))))
5421 (synopsis "Shooter with space station destruction")
5422 (description
5423 "Kobo Deluxe is an enhanced version of Akira Higuchi's XKobo graphical game
5424 for Un*x systems with X11.")
5425 (home-page "http://olofson.net/kobodl/")
5426 (license license:gpl2+)))
5427
5428 (define-public freeciv
5429 (package
5430 (name "freeciv")
5431 (version "2.6.2")
5432 (source
5433 (origin
5434 (method url-fetch)
5435 (uri (list (string-append
5436 "http://files.freeciv.org/stable/freeciv-"
5437 version ".tar.bz2")
5438 (string-append
5439 "mirror://sourceforge/freeciv/Freeciv%20"
5440 (version-major+minor version) "/" version
5441 "/freeciv-" version ".tar.bz2")))
5442 (sha256
5443 (base32 "13vc2xg1cf19rhbnr7k38b56b2hdapqymq5vma1l69kn7hyyz0b1"))))
5444 (build-system gnu-build-system)
5445 (inputs
5446 `(("curl" ,curl)
5447 ("cyrus-sasl" ,cyrus-sasl)
5448 ("gtk+" ,gtk+)
5449 ("sdl-mixer" ,sdl-mixer)
5450 ("zlib" ,zlib)))
5451 (native-inputs
5452 `(("pkg-config" ,pkg-config)))
5453 (home-page "http://www.freeciv.org/")
5454 (synopsis "Turn-based empire building strategy game")
5455 (description "Freeciv is a turn-based empire building strategy game
5456 inspired by the history of human civilization. The game commences in
5457 prehistory and your mission is to lead your tribe from the Stone Age
5458 into the Space Age.")
5459 (license license:gpl2+)))
5460
5461 (define-public no-more-secrets
5462 (package
5463 (name "no-more-secrets")
5464 (version "0.3.3")
5465 (source
5466 (origin
5467 (method git-fetch)
5468 (uri (git-reference
5469 (url "https://github.com/bartobri/no-more-secrets")
5470 (commit (string-append "v" version))))
5471 (file-name (git-file-name name version))
5472 (sha256
5473 (base32 "1zfv4qabikf8w9winsr4brxrdvs3f0d7xvydksyx8bydadsm2v2h"))))
5474 (build-system gnu-build-system)
5475 (arguments
5476 `(#:tests? #f
5477 #:make-flags (list "CC=gcc" "all-ncurses"
5478 (string-append "prefix="
5479 (assoc-ref %outputs "out")))
5480 #:phases
5481 (modify-phases %standard-phases
5482 (delete 'configure))))
5483 (inputs
5484 `(("ncurses" ,ncurses)))
5485 (home-page "https://github.com/bartobri/no-more-secrets")
5486 (synopsis "Recreation of data decryption effect in \"Sneakers\"")
5487 (description
5488 "@code{No More Secrets} provides a command line tool called \"nms\"
5489 that recreates the famous data decryption effect seen on screen in the 1992
5490 movie \"Sneakers\".
5491
5492 This command works on piped data. Pipe any ASCII or UTF-8 text to nms, and
5493 it will apply the hollywood effect, initially showing encrypted data, then
5494 starting a decryption sequence to reveal the original plaintext characters.")
5495 (license license:expat)))
5496
5497 (define-public megaglest-data
5498 (package
5499 (name "megaglest-data")
5500 (version "3.13.0")
5501 (source
5502 (origin
5503 (method url-fetch)
5504 (uri (string-append
5505 "https://github.com/MegaGlest/megaglest-data"
5506 "/releases/download/" version "/megaglest-data-"
5507 version ".tar.xz"))
5508 (sha256
5509 (base32
5510 "0ipgza33z89fw3si32iafm981f3fvm0zldvbxj29whghd2k3rpj3"))))
5511 (build-system cmake-build-system)
5512 (arguments
5513 `(#:tests? #f))
5514 (home-page "https://megaglest.org/")
5515 (synopsis "Data files for MegaGlest")
5516 (description "This package contains the data files required for MegaGlest.")
5517 (license license:cc-by-sa3.0)))
5518
5519 (define-public megaglest
5520 (package
5521 (name "megaglest")
5522 (version "3.13.0")
5523 (source
5524 (origin
5525 (method url-fetch)
5526 (uri (string-append
5527 "https://github.com/MegaGlest/megaglest-source"
5528 "/releases/download/" version "/megaglest-source-"
5529 version ".tar.xz"))
5530 (sha256
5531 (base32
5532 "1ffck3ii1wp5k3nn5p0ga06jgp7pzk4zw0xln3xim2w7qrxzdzh9"))))
5533 (build-system cmake-build-system)
5534 (inputs
5535 `(("curl" ,curl)
5536 ("fontconfig" ,fontconfig)
5537 ("ftgl" ,ftgl)
5538 ("glew" ,glew)
5539 ("libjpeg-turbo" ,libjpeg-turbo)
5540 ("megaglest-data" ,megaglest-data)
5541 ("mesa" ,mesa)
5542 ("miniupnpc" ,miniupnpc)
5543 ("openal" ,openal)
5544 ("libircclient" ,libircclient)
5545 ("libpng" ,libpng)
5546 ("libvorbis" ,libvorbis)
5547 ("lua" ,lua)
5548 ("sdl2" ,sdl2)
5549 ("wxwidgets" ,wxwidgets)))
5550 (native-inputs
5551 `(("cppunit" ,cppunit)
5552 ("pkg-config" ,pkg-config)))
5553 (arguments
5554 `(#:configure-flags
5555 (list (string-append "-DCUSTOM_DATA_INSTALL_PATH="
5556 (assoc-ref %build-inputs "megaglest-data")
5557 "/share/megaglest")
5558 "-DBUILD_MEGAGLEST_TESTS=ON")
5559 #:phases
5560 (modify-phases %standard-phases
5561 (add-after 'unpack 'fix-ini-search-path
5562 (lambda* (#:key outputs #:allow-other-keys)
5563 (substitute* "source/glest_game/global/config.cpp"
5564 (("/usr/share/megaglest/")
5565 (string-append (assoc-ref outputs "out")
5566 "/share/megaglest/"))))))
5567 #:test-target "megaglest_tests"))
5568 (home-page "https://megaglest.org/")
5569 (synopsis "3D real-time strategy (RTS) game")
5570 (description "MegaGlest is a cross-platform 3D real-time strategy (RTS)
5571 game, where you control the armies of one of seven different factions: Tech,
5572 Magic, Egypt, Indians, Norsemen, Persian or Romans.")
5573 (license license:gpl2+)))
5574
5575 (define-public freegish
5576 (let ((commit "8795cd7adc95957883f2d3465eb9036a774667a7")
5577 (revision "1"))
5578 (package
5579 (name "freegish")
5580 (version (string-append "0-" revision "." (string-take commit 9)))
5581 (source (origin
5582 (method git-fetch)
5583 (uri (git-reference
5584 (url "https://github.com/freegish/freegish")
5585 (commit commit)))
5586 (file-name (git-file-name name version))
5587 (sha256
5588 (base32
5589 "1p1zf5qqagmcpi1db2bs02cnalpy3qiymp6yzan7k1bhmv859gsx"))
5590 (modules '((guix build utils)))
5591 ;; The audio files in the "music" directory are licensed under
5592 ;; CC-BY-NC, so we delete them.
5593 (snippet
5594 '(begin
5595 (delete-file-recursively "music")
5596 #t))))
5597 (build-system cmake-build-system)
5598 (arguments
5599 `(#:tests? #f ; no tests included
5600 #:configure-flags
5601 (list "-DCMAKE_INSTALL_FHS=ON")
5602 #:phases
5603 (modify-phases %standard-phases
5604 (add-after 'unpack 'set-DATAPATH
5605 (lambda* (#:key outputs #:allow-other-keys)
5606 (substitute* "CMakeLists.txt"
5607 (("^option\\(INSTALL_FHS" line)
5608 (string-append "add_definitions(-DDATAPATH=\""
5609 (assoc-ref outputs "out") "/share/freegish\")\n"
5610 line)))
5611 #t)))))
5612 (inputs
5613 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))
5614 ("openal" ,openal)
5615 ("libvorbis" ,libvorbis)
5616 ("libogg" ,libogg)
5617 ("mesa" ,mesa)
5618 ("libpng" ,libpng)
5619 ("zlib" ,zlib)))
5620 (home-page "https://github.com/freegish/freegish")
5621 (synopsis "Side-scrolling physics platformer with a ball of tar")
5622 (description "In FreeGish you control Gish, a ball of tar who lives
5623 happily with his girlfriend Brea, until one day a mysterious dark creature
5624 emerges from a sewer hole and pulls her below ground.")
5625 ;; The textures are available under the Expat license. All other assets
5626 ;; (including levels) are covered under CC-BY-SA or public domain. The
5627 ;; source code is under GPLv2+.
5628 (license (list license:gpl2+
5629 license:expat
5630 license:public-domain
5631 license:cc-by-sa3.0)))))
5632
5633 (define-public cdogs-sdl
5634 (package
5635 (name "cdogs-sdl")
5636 (version "0.8.0")
5637 (source
5638 (origin
5639 (method git-fetch)
5640 (uri (git-reference
5641 (url "https://github.com/cxong/cdogs-sdl")
5642 (commit version)))
5643 (file-name (git-file-name name version))
5644 (sha256
5645 (base32 "0vx37zb2iw7sfw5a2bs97ydlmb301nvy485ybdm8g46c5hn9s13c"))))
5646 (build-system cmake-build-system)
5647 (arguments
5648 `(#:configure-flags
5649 (list (string-append "-DCDOGS_DATA_DIR="
5650 (assoc-ref %outputs "out")
5651 "/share/cdogs-sdl/"))))
5652 (native-inputs
5653 `(("pkg-config" ,pkg-config)))
5654 (inputs
5655 `(("gtk+" ,gtk+)
5656 ("mesa" ,mesa)
5657 ("sdl2" ,sdl2)
5658 ("sdl2-image" ,sdl2-image)
5659 ("sdl2-mixer" ,sdl2-mixer)))
5660 (home-page "https://cxong.github.io/cdogs-sdl/")
5661 (synopsis "Classic overhead run-and-gun game")
5662 (description "C-Dogs SDL is a classic overhead run-and-gun game,
5663 supporting up to 4 players in co-op and deathmatch modes. Customize your
5664 player, choose from many weapons, and blast, slide and slash your way through
5665 over 100 user-created campaigns.")
5666 ;; GPLv2+ for code (includes files under BSD-2 and BSD-3),
5667 ;; CC0/CC-BY/CC-BY-SA for assets.
5668 (license (list license:gpl2+
5669 license:bsd-2
5670 license:bsd-3
5671 license:cc0
5672 license:cc-by3.0
5673 license:cc-by-sa3.0))))
5674
5675 (define-public kiki
5676 (package
5677 (name "kiki")
5678 (version "1.0.2")
5679 (source (origin
5680 (method url-fetch)
5681 (uri (string-append "mirror://sourceforge/kiki/kiki-src/"
5682 version "/kiki-" version "-src.tgz"))
5683 (sha256
5684 (base32
5685 "0ihjdsxbn8z3cz0gpcprafiipcqaiskgdnh1rhmw4qff8dszalbn"))
5686 (modules '((guix build utils)))
5687 (snippet
5688 '(begin
5689 (for-each delete-file (find-files "." "\\.dll$"))
5690 #t))
5691 (patches
5692 (search-patches "kiki-level-selection-crash.patch"
5693 "kiki-makefile.patch"
5694 "kiki-missing-includes.patch"
5695 "kiki-portability-64bit.patch"))))
5696 (build-system gnu-build-system)
5697 (arguments
5698 `(#:tests? #f ; there are no tests
5699 #:make-flags '("CXX=g++")
5700 #:phases
5701 (modify-phases %standard-phases
5702 (replace 'configure
5703 (lambda* (#:key inputs outputs #:allow-other-keys)
5704 (setenv "CPLUS_INCLUDE_PATH"
5705 (string-append (assoc-ref inputs "sdl-union")
5706 "/include/SDL:"
5707 (assoc-ref inputs "python")
5708 "/include/python2.7:"
5709 (or (getenv "CPLUS_INCLUDE_PATH") "")))
5710 (substitute* "src/main/main.cpp"
5711 (("#include <SDL.h>" line)
5712 (string-append line "
5713 #define K_INCLUDE_GLUT
5714 #include \"KIncludeTools.h\""))
5715 (("// initialize SDL" line)
5716 (string-append "glutInit(&argc,argv);\n" line)))
5717 (substitute* "src/main/KikiController.cpp"
5718 (("getenv\\(\"KIKI_HOME\"\\)")
5719 (string-append "\"" (assoc-ref outputs "out") "/share/kiki/\"")))
5720 (substitute* "linux/Makefile"
5721 (("CXXOPTS =" line)
5722 (string-append line " -fpermissive"))
5723 (("PYTHON_VERSION=.*") "PYTHON_VERSION=2.7")
5724 (("PYTHONHOME =.*")
5725 (string-append "PYTHONHOME = "
5726 (assoc-ref inputs "python")
5727 "/lib/python2.7/"))
5728 (("\\$\\(GLLIBS\\)" line)
5729 (string-append line " -lm -lpython2.7")))
5730 (substitute* "src/main/KikiPythonWidget.h"
5731 (("#define __KikiPythonWidget" line)
5732 (string-append line "\n#include \"KikiPython.h\"")))
5733 #t))
5734 (add-before 'build 'build-kodilib
5735 (lambda* (#:key make-flags #:allow-other-keys)
5736 (with-directory-excursion "kodilib/linux"
5737 (apply invoke "make" make-flags))))
5738 (add-after 'build-kodilib 'chdir
5739 (lambda _ (chdir "linux") #t))
5740 (replace 'install
5741 (lambda* (#:key outputs #:allow-other-keys)
5742 (let* ((out (assoc-ref outputs "out"))
5743 (bin (string-append out "/bin"))
5744 (share (string-append out "/share/kiki")))
5745 (mkdir-p bin)
5746 (mkdir-p share)
5747 (install-file "kiki" bin)
5748 (copy-recursively "../py" (string-append share "/py"))
5749 (copy-recursively "../sound" (string-append share "/sound"))
5750 #t))))))
5751 (inputs
5752 `(("glu" ,glu)
5753 ;; Kiki builds fine with freeglut 3.0.0 but segfaults on start.
5754 ("freeglut" ,freeglut-2.8)
5755 ("sdl-union" ,(sdl-union (list sdl
5756 sdl-mixer
5757 sdl-image)))
5758 ("python" ,python-2)))
5759 (native-inputs
5760 `(("swig" ,swig)))
5761 (home-page "http://kiki.sourceforge.net/")
5762 (synopsis "3D puzzle game")
5763 (description "Kiki the nano bot is a 3D puzzle game. It is basically a
5764 mixture of the games Sokoban and Kula-World. Your task is to help Kiki, a
5765 small robot living in the nano world, repair its maker.")
5766 ;; See <http://metadata.ftp-master.debian.org/changelogs/main/k/
5767 ;; kiki-the-nano-bot/kiki-the-nano-bot_1.0.2+dfsg1-4_copyright>
5768 ;; for a statement from the author.
5769 (license license:public-domain)))
5770
5771 (define-public teeworlds
5772 (package
5773 (name "teeworlds")
5774 (version "0.7.5")
5775 (source (origin
5776 (method git-fetch)
5777 (uri (git-reference
5778 (url "https://github.com/teeworlds/teeworlds")
5779 (commit version)))
5780 (file-name (git-file-name name version))
5781 (sha256
5782 (base32
5783 "169dl83q08zl4h813az8hjs4rs3dms9yjn6bnsld4fjcj0imvvc6"))
5784 (modules '((guix build utils)
5785 (ice-9 ftw)
5786 (ice-9 regex)
5787 (srfi srfi-1)
5788 (srfi srfi-26)))
5789 (snippet ; remove bundled libraries except md5
5790 '(let ((base-dir "src/engine/external/"))
5791 (for-each (compose (cut delete-file-recursively <>)
5792 (cut string-append base-dir <>))
5793 (remove (cut string-match "(^.)|(^md5$)" <>)
5794 (scandir base-dir)))
5795 #t))))
5796 (build-system gnu-build-system)
5797 (arguments
5798 `(#:tests? #f ; no tests included
5799 #:modules ((guix build gnu-build-system)
5800 (guix build utils)
5801 (srfi srfi-26))
5802 #:phases
5803 (modify-phases %standard-phases
5804 (replace 'configure
5805 (lambda* (#:key outputs #:allow-other-keys)
5806 ;; Embed path to assets.
5807 (substitute* "src/engine/shared/storage.cpp"
5808 (("#define DATA_DIR.*")
5809 (string-append "#define DATA_DIR \""
5810 (assoc-ref outputs "out")
5811 "/share/teeworlds/data"
5812 "\"")))
5813
5814 ;; Bam expects all files to have a recent time stamp.
5815 (for-each (cut utime <> 1 1)
5816 (find-files "."))
5817
5818 ;; Do not use bundled libraries.
5819 (substitute* "bam.lua"
5820 (("local json = Compile.+$")
5821 "local json = nil
5822 settings.link.libs:Add(\"jsonparser\")")
5823 (("local png = Compile.+$")
5824 "local png = nil
5825 settings.link.libs:Add(\"pnglite\")")
5826 (("local wavpack = Compile.+$")
5827 "local wavpack = nil
5828 settings.link.libs:Add(\"wavpack\")")
5829 (("if config\\.zlib\\.value == 1")
5830 "if config.zlib.value"))
5831 (substitute* "src/engine/client/graphics_threaded.cpp"
5832 (("engine/external/pnglite/pnglite\\.h")
5833 "pnglite.h"))
5834 (substitute* "src/engine/client/sound.cpp"
5835 (("engine/external/wavpack/wavpack\\.h")
5836 "wavpack/wavpack.h"))
5837 #t))
5838 (replace 'build
5839 (lambda _
5840 (invoke "bam" "-a" "-v" "conf=release")))
5841 (replace 'install
5842 (lambda* (#:key outputs #:allow-other-keys)
5843 (let* ((arch ,(system->linux-architecture
5844 (or (%current-target-system)
5845 (%current-system))))
5846 (build (string-append "build/" (if (string=? arch "i386")
5847 "x86" arch)
5848 "/release/"))
5849 (data-built (string-append build "data/"))
5850 (out (assoc-ref outputs "out"))
5851 (bin (string-append out "/bin/"))
5852 (data (string-append out "/share/teeworlds/data/")))
5853 (for-each (cut install-file <> bin)
5854 (map (cut string-append build <>)
5855 '("teeworlds" "teeworlds_srv")))
5856 (copy-recursively data-built data)
5857 #t))))))
5858 (inputs
5859 `(("freetype" ,freetype)
5860 ("glu" ,glu)
5861 ("json-parser" ,json-parser)
5862 ("mesa" ,mesa)
5863 ("pnglite" ,pnglite)
5864 ("sdl2" ,sdl2)
5865 ("sdl2-image" ,sdl2-image)
5866 ("sdl2-mixer" ,sdl2-mixer)
5867 ("wavpack" ,wavpack)
5868 ("zlib" ,zlib)))
5869 (native-inputs
5870 `(("bam" ,bam)
5871 ("python" ,python-wrapper)
5872 ("pkg-config" ,pkg-config)))
5873 (home-page "https://www.teeworlds.com")
5874 (synopsis "2D retro multiplayer shooter game")
5875 (description "Teeworlds is an online multiplayer game. Battle with up to
5876 16 players in a variety of game modes, including Team Deathmatch and Capture
5877 The Flag. You can even design your own maps!")
5878 (license license:bsd-3)))
5879
5880 (define-public enigma
5881 (package
5882 (name "enigma")
5883 (version "1.21")
5884 (source (origin
5885 (method url-fetch)
5886 (uri (string-append "mirror://sourceforge/enigma-game/"
5887 "Release%20" version "/enigma-"
5888 version ".tar.gz"))
5889 (sha256
5890 (base32
5891 "00ffh9pypj1948pg3q9sjp1nmiabh52p5c8wpg9n1dcfgl3cywnq"))))
5892 (build-system gnu-build-system)
5893 (arguments
5894 `(#:configure-flags
5895 (list "--with-system-enet")
5896 #:phases
5897 (modify-phases %standard-phases
5898 (add-after 'unpack 'fix-build-with-new-gcc
5899 (lambda _
5900 ;; Fix build with GCC6 and later by avoiding comparing ifstream
5901 ;; to NULL. Can be removed for versions > 1.21.
5902 (substitute* "src/lev/Proxy.cc"
5903 (("ifs != NULL")
5904 "ifs"))
5905 #t))
5906 (add-after 'unpack 'find-sdl
5907 (lambda _
5908 (substitute* "configure"
5909 (("SDL_ttf.h") "SDL/SDL_ttf.h"))
5910 (substitute* '("tools/ttf2bmf.cc"
5911 "lib-src/enigma-core/ecl_font.cc"
5912 "lib-src/enigma-core/ecl_video.cc"
5913 "lib-src/enigma-core/ecl_buffer.hh"
5914 "src/SoundEngine.cc"
5915 "src/SoundEngine.hh"
5916 "src/MusicManager.cc"
5917 "src/MusicManager.hh"
5918 "src/d_models.cc"
5919 "src/main.cc"
5920 "src/network.cc")
5921 (("#include \"SDL_(image|ttf|mixer|types|syswm|mutex).h\"" line header)
5922 (string-append "#include \"SDL/SDL_" header ".h\"")))
5923 (substitute* "src/main.cc"
5924 (("#include <SDL_(image|ttf|mixer).h>" line header)
5925 (string-append "#include \"SDL/SDL_" header ".h\"")))
5926 #t)))))
5927 (inputs
5928 `(("xerces-c" ,xerces-c)
5929 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
5930 ("curl" ,curl)
5931 ("enet" ,enet)))
5932 (native-inputs
5933 `(("pkg-config" ,pkg-config)
5934 ("imagemagick" ,imagemagick)))
5935 (home-page "https://www.nongnu.org/enigma")
5936 (synopsis "Puzzle game with a dexterity component")
5937 (description "Enigma is a puzzle game with 550 unique levels. The object
5938 of the game is to find and uncover pairs of identically colored ‘Oxyd’ stones.
5939 Simple? Yes. Easy? Certainly not! Hidden traps, vast mazes, laser beams,
5940 and most of all, countless hairy puzzles usually block your direct way to the
5941 Oxyd stones. Enigma’s game objects (and there are hundreds of them, lest you
5942 get bored) interact in many unexpected ways, and since many of them follow the
5943 laws of physics (Enigma’s special laws of physics, that is), controlling them
5944 with the mouse isn’t always trivial.")
5945 (license license:gpl2+)))
5946
5947 (define-public chroma
5948 (package
5949 (name "chroma")
5950 (version "1.17")
5951 (source (origin
5952 (method url-fetch)
5953 (uri (string-append "http://level7.org.uk/chroma/download/chroma-"
5954 version ".tar.bz2"))
5955 (sha256
5956 (base32
5957 "047sf00x71xbmi8bqrhfbmr9bk89l2gbykkqsfpw4wz6yfjscs6y"))))
5958 (build-system gnu-build-system)
5959 (arguments
5960 `(#:tests? #f ; no tests included
5961 #:configure-flags '("CFLAGS=-fgnu89-inline"))) ; fix inlines
5962 (inputs
5963 `(("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
5964 ("freetype" ,freetype)
5965 ("ncurses" ,ncurses)
5966 ("fontconfig" ,fontconfig)
5967 ("libxft" ,libxft)))
5968 (native-inputs
5969 `(("pkg-config" ,pkg-config)))
5970 (home-page "http://level7.org.uk/chroma/")
5971 (synopsis "Abstract puzzle game")
5972 (description "Chroma is an abstract puzzle game. A variety of colourful
5973 shapes are arranged in a series of increasingly complex patterns, forming
5974 fiendish traps that must be disarmed and mysterious puzzles that must be
5975 manipulated in order to give up their subtle secrets. Initially so
5976 straightforward that anyone can pick it up and begin to play, yet gradually
5977 becoming difficult enough to tax even the brightest of minds.")
5978 (license license:gpl2+)))
5979
5980 (define-public fillets-ng
5981 (package
5982 (name "fillets-ng")
5983 (version "1.0.1")
5984 (source (origin
5985 (method url-fetch)
5986 (uri (string-append "mirror://sourceforge/fillets/"
5987 "Fish%20Fillets%20-%20Next%20Generation/"
5988 version "/fillets-ng-" version ".tar.gz"))
5989 (sha256
5990 (base32
5991 "1nljp75aqqb35qq3x7abhs2kp69vjcj0h1vxcpdyn2yn2nalv6ij"))))
5992 (build-system gnu-build-system)
5993 (arguments
5994 `(#:configure-flags
5995 (list (string-append "--with-lua="
5996 (assoc-ref %build-inputs "lua")))
5997 #:make-flags
5998 (list (string-append "CFLAGS=-I"
5999 (assoc-ref %build-inputs "sdl-union")
6000 "/include/SDL")
6001 (string-append "CXXFLAGS=-I"
6002 (assoc-ref %build-inputs "sdl-union")
6003 "/include/SDL"))
6004 #:phases
6005 (modify-phases %standard-phases
6006 ;; Lua 5.1 does not provide it.
6007 (add-after 'unpack 'do-not-link-with-lualib
6008 (lambda _
6009 (substitute* "configure"
6010 (("-llualib") ""))
6011 #t))
6012 (add-after 'install 'install-data
6013 (lambda* (#:key inputs outputs #:allow-other-keys)
6014 (let ((data (string-append (assoc-ref outputs "out")
6015 "/share/games/fillets-ng")))
6016 (mkdir-p data)
6017 (invoke "tar" "-xvf"
6018 (assoc-ref inputs "fillets-ng-data")
6019 "--strip-components=1"
6020 "-C" data)))))))
6021 (inputs
6022 `(("sdl-union" ,(sdl-union (list sdl
6023 sdl-mixer
6024 sdl-image
6025 sdl-ttf)))
6026 ("fribidi" ,fribidi)
6027 ("libx11" ,libx11)
6028 ("lua" ,lua-5.1)))
6029 (native-inputs
6030 `(("pkg-config" ,pkg-config)
6031 ("fillets-ng-data"
6032 ,(origin
6033 (method url-fetch)
6034 (uri (string-append "mirror://sourceforge/fillets/"
6035 "Fish%20Fillets%20-%20Next%20Generation/"
6036 version "/fillets-ng-data-" version ".tar.gz"))
6037 (sha256
6038 (base32
6039 "169p0yqh2gxvhdilvjc2ld8aap7lv2nhkhkg4i1hlmgc6pxpkjgh"))))))
6040 (home-page "http://fillets.sourceforge.net/")
6041 (synopsis "Puzzle game")
6042 (description "Fish Fillets NG is strictly a puzzle game. The goal in
6043 every of the seventy levels is always the same: find a safe way out. The fish
6044 utter witty remarks about their surroundings, the various inhabitants of their
6045 underwater realm quarrel among themselves or comment on the efforts of your
6046 fish. The whole game is accompanied by quiet, comforting music.")
6047 (license license:gpl2+)))
6048
6049 (define-public crawl
6050 (package
6051 (name "crawl")
6052 (version "0.25.0")
6053 (source
6054 (origin
6055 (method url-fetch)
6056 (uri (list
6057 ;; Older releases get moved into a versioned directory
6058 (string-append "http://crawl.develz.org/release/"
6059 (version-major+minor version) "/stone_soup-"
6060 version "-nodeps.tar.xz")
6061 ;; Only the latest release is in this directory
6062 (string-append "http://crawl.develz.org/release/stone_soup-"
6063 version "-nodeps.tar.xz")))
6064 (sha256
6065 (base32 "0rn1wjxdqw33caiwisfypm1j8cid3c9pz01ahicl17144zs29z3d"))
6066 (patches (search-patches "crawl-upgrade-saves.patch"))
6067 ;; The 0.25.0 -nodeps.tar.xz was built from an OSX machine; normally
6068 ;; apparently it's built from a Debian machine before the Debian
6069 ;; packages are made. These ._* files are binary and have the string
6070 ;; "Mac OS X" in them... removing these seems to result in compilation
6071 ;; again.
6072 (modules '((guix build utils)))
6073 (snippet
6074 '(begin
6075 (for-each delete-file (find-files "." "^\\._"))
6076 #t))))
6077 (build-system gnu-build-system)
6078 (inputs
6079 `(("lua51" ,lua-5.1)
6080 ("ncurses" ,ncurses)
6081 ("sqlite" ,sqlite)
6082 ("zlib" ,zlib)))
6083 (native-inputs
6084 `(("bison" ,bison)
6085 ("flex" ,flex)
6086 ("perl" ,perl)
6087 ("python" ,python-wrapper)
6088 ("python-pyyaml" ,python-pyyaml)
6089 ("pkg-config" ,pkg-config)))
6090 (arguments
6091 `(#:make-flags
6092 (let* ((sqlite (assoc-ref %build-inputs "sqlite"))
6093 (out (assoc-ref %outputs "out")))
6094 (list (string-append "SQLITE_INCLUDE_DIR=" sqlite "/include")
6095 (string-append "prefix=" out)
6096 "SAVEDIR=~/.crawl"
6097 ;; Don't compile with SSE on systems which don't have it.
6098 ,@(match (%current-system)
6099 ((or "i686-linux" "x86_64-linux")
6100 '())
6101 (_ '("NOSSE=TRUE")))
6102 ;; don't build any bundled dependencies
6103 "BUILD_LUA="
6104 "BUILD_SQLITE="
6105 "BUILD_ZLIB="
6106 "-Csource"))
6107 #:phases
6108 (modify-phases %standard-phases
6109 (add-after 'unpack 'find-SDL-image
6110 (lambda _
6111 (substitute* "source/windowmanager-sdl.cc"
6112 (("SDL_image.h") "SDL2/SDL_image.h"))
6113 #t))
6114 (delete 'configure)
6115 (replace 'check
6116 (lambda* (#:key inputs outputs make-flags #:allow-other-keys)
6117 (setenv "HOME" (getcwd))
6118 ;; Fake a terminal for the test cases.
6119 (setenv "TERM" "xterm-256color")
6120 ;; Run the tests that don't require a debug build.
6121 (apply invoke "make" "nondebugtest"
6122 (format #f "-j~d" (parallel-job-count))
6123 ;; Force command line build for test cases.
6124 (append make-flags '("GAME=crawl" "TILES="))))))))
6125 (synopsis "Roguelike dungeon crawler game")
6126 (description "Dungeon Crawl Stone Soup (also known as \"Crawl\" or DCSS
6127 for short) is a roguelike adventure through dungeons filled with dangerous
6128 monsters in a quest to find the mystifyingly fabulous Orb of Zot.")
6129 (home-page "https://crawl.develz.org")
6130 (license (list license:gpl2+
6131 license:bsd-2
6132 license:bsd-3
6133 license:cc0
6134 license:expat
6135 license:zlib
6136 license:asl2.0))))
6137
6138 ;; The linter here claims that patch file names should start with the package
6139 ;; name. But, in this case, the patches are inherited from crawl with the
6140 ;; "crawl-" prefix instead of "crawl-tiles-".
6141 (define-public crawl-tiles
6142 (package
6143 (inherit crawl)
6144 (name "crawl-tiles")
6145 (arguments
6146 (substitute-keyword-arguments
6147 (package-arguments crawl)
6148 ((#:make-flags flags)
6149 `(let ((dejavu (assoc-ref %build-inputs "font-dejavu")))
6150 (cons*
6151 (string-append "PROPORTIONAL_FONT=" dejavu
6152 "/share/fonts/truetype/DejaVuSans.ttf")
6153 (string-append "MONOSPACED_FONT=" dejavu
6154 "/share/fonts/truetype/DejaVuSansMono.ttf")
6155 "TILES=y"
6156 ;; Rename the executable to allow parallel installation with crawl.
6157 "GAME=crawl-tiles"
6158 ,flags)))))
6159 (inputs
6160 `(,@(package-inputs crawl)
6161 ("font-dejavu" ,font-dejavu)
6162 ("freetype6" ,freetype)
6163 ("glu" ,glu)
6164 ("libpng" ,libpng)
6165 ("sdl2" ,sdl2)
6166 ("sdl2-image" ,sdl2-image)
6167 ("sdl2-mixer" ,sdl2-mixer)))
6168 (native-inputs
6169 `(,@(package-native-inputs crawl)
6170 ("pngcrush" ,pngcrush)
6171 ("which" ,which)))
6172 (synopsis "Graphical roguelike dungeon crawler game")))
6173
6174 (define-public lugaru
6175 (package
6176 (name "lugaru")
6177 (version "1.2")
6178 (source (origin
6179 (method url-fetch)
6180 (uri (string-append "https://bitbucket.org/osslugaru/lugaru/downloads/"
6181 "lugaru-" version ".tar.xz"))
6182 (sha256
6183 (base32
6184 "15zgcshy22q51rm72zi6y9z7qlgnz5iw3gczjdlir4bqmxy4gspk"))))
6185 (build-system cmake-build-system)
6186 (arguments
6187 `(#:configure-flags
6188 (list "-DSYSTEM_INSTALL=ON")
6189 ;; no test target
6190 #:tests? #f))
6191 (native-inputs
6192 `(("pkg-config" ,pkg-config)))
6193 (inputs
6194 `(("sdl2" ,sdl2)
6195 ("glu" ,glu)
6196 ("libjpeg" ,libjpeg-turbo)
6197 ("libpng" ,libpng)
6198 ("openal" ,openal)
6199 ("vorbis" ,libvorbis)
6200 ("zlib" ,zlib)))
6201 (home-page "https://osslugaru.gitlab.io")
6202 (synopsis "Cross-platform third-person action game")
6203 (description "Lugaru is a third-person action game. The main character,
6204 Turner, is an anthropomorphic rebel bunny rabbit with impressive combat skills.
6205 In his quest to find those responsible for slaughtering his village, he uncovers
6206 a far-reaching conspiracy involving the corrupt leaders of the rabbit republic
6207 and the starving wolves from a nearby den. Turner takes it upon himself to
6208 fight against their plot and save his fellow rabbits from slavery.")
6209 (license (list license:gpl2+ ; code
6210 ;; assets:
6211 license:cc-by-sa3.0
6212 license:cc-by-sa4.0))))
6213
6214 (define-public 0ad-data
6215 (package
6216 (name "0ad-data")
6217 (version "0.0.23b-alpha")
6218 (source
6219 (origin
6220 (method url-fetch)
6221 (uri (string-append "https://releases.wildfiregames.com/0ad-"
6222 version "-unix-data.tar.xz"))
6223 (file-name (string-append name "-" version ".tar.xz"))
6224 (sha256
6225 (base32
6226 "04x7729hk6zw1xj3n4s4lvaviijsnbjf5rhzvjxlr5fygvg4l6z1"))
6227 (modules '((guix build utils)))
6228 (snippet
6229 #~(begin
6230 (for-each (lambda (name)
6231 (let* ((dir (string-append "binaries/data/mods/" name))
6232 (file (string-append dir "/" name ".zip"))
6233 (unzip #$(file-append unzip "/bin/unzip")))
6234 (invoke unzip "-d" dir file)
6235 (delete-file file)))
6236 '("mod" "public"))
6237 #t))))
6238 (build-system trivial-build-system)
6239 (native-inputs `(("tar" ,tar)
6240 ("xz" ,xz)))
6241 (arguments
6242 `(#:modules ((guix build utils))
6243 #:builder
6244 (begin
6245 (use-modules (guix build utils))
6246 (let ((out (assoc-ref %outputs "out"))
6247 (source (assoc-ref %build-inputs "source"))
6248 (tar (string-append (assoc-ref %build-inputs "tar") "/bin/tar"))
6249 (xz-path (string-append (assoc-ref %build-inputs "xz") "/bin")))
6250 (setenv "PATH" xz-path)
6251 (mkdir out)
6252 (invoke tar "xvf" source "-C" out "--strip=3")))))
6253 (synopsis "Data files for 0ad")
6254 (description "0ad-data provides the data files required by the game 0ad.")
6255 (home-page "https://play0ad.com")
6256 (license (list (license:fsdg-compatible
6257 "http://tavmjong.free.fr/FONTS/ArevCopyright.txt"
6258 "Similar to the license of the Bitstream Vera fonts.")
6259 (license:fsdg-compatible
6260 "https://www.gnome.org/fonts/#Final_Bitstream_Vera_Fonts")
6261 license:cc-by-sa3.0
6262 license:expat
6263 license:gfl1.0
6264 license:gpl2+
6265 license:gpl3+))))
6266
6267 (define-public 0ad
6268 (package
6269 (name "0ad")
6270 (version "0.0.23b-alpha")
6271 (source
6272 (origin
6273 (method url-fetch)
6274 (uri (string-append "https://releases.wildfiregames.com/0ad-"
6275 version "-unix-build.tar.xz"))
6276 (file-name (string-append name "-" version ".tar.xz"))
6277 (sha256
6278 (base32
6279 "0draa53xg69i5qhqym85658m45xhwkbiimaldj4sr3703rjgggq1"))))
6280 ;; A snippet here would cause a build failure because of timestamps
6281 ;; reset. See https://bugs.gnu.org/26734.
6282 (inputs
6283 `(("0ad-data" ,0ad-data)
6284 ("curl" ,curl)
6285 ("enet" ,enet)
6286 ("gloox" ,gloox)
6287 ("icu4c" ,icu4c)
6288 ("libpng" ,libpng)
6289 ("libsodium" ,libsodium)
6290 ("libvorbis" ,libvorbis)
6291 ("libxcursor" ,libxcursor)
6292 ("libxml2" ,libxml2)
6293 ("miniupnpc" ,miniupnpc)
6294 ("mozjs-38" ,mozjs-38)
6295 ("openal" ,openal)
6296 ("sdl2" ,sdl2)
6297 ("wxwidgets" ,wxwidgets)
6298 ("zlib" ,zlib)))
6299 (native-inputs
6300 `(("boost" ,boost)
6301 ("cmake" ,cmake-minimal)
6302 ("mesa" ,mesa)
6303 ("pkg-config" ,pkg-config)
6304 ("python-2" ,python-2)))
6305 (build-system gnu-build-system)
6306 (arguments
6307 `(#:make-flags '("config=release" "verbose=1" "-C" "build/workspaces/gcc")
6308 #:phases
6309 (modify-phases %standard-phases
6310 (add-after 'unpack 'delete-bundles
6311 (lambda _
6312 (delete-file-recursively "libraries/source/spidermonkey")
6313 #t))
6314 (add-after 'unpack 'fix-x11-includes
6315 (lambda _
6316 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
6317 (("<Xlib.h>") "<X11/Xlib.h>"))
6318 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
6319 (("<Xatom.h>") "<X11/Xatom.h>"))
6320 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
6321 (("<Xcursor/Xcursor.h>") "<X11/Xcursor/Xcursor.h>"))
6322 #t))
6323 (replace 'configure
6324 (lambda* (#:key inputs outputs #:allow-other-keys)
6325 (let* ((jobs (number->string (parallel-job-count)))
6326 (out (assoc-ref outputs "out"))
6327 (lib (string-append out "/lib"))
6328 (data (string-append out "/share/0ad")))
6329 (setenv "JOBS" (string-append "-j" jobs))
6330 (setenv "CC" "gcc")
6331 (with-directory-excursion "build/workspaces"
6332 (invoke "./update-workspaces.sh"
6333 (string-append "--libdir=" lib)
6334 (string-append "--datadir=" data)
6335 ;; TODO: "--with-system-nvtt"
6336 "--with-system-mozjs38")))))
6337 (delete 'check)
6338 (replace 'install
6339 (lambda* (#:key inputs outputs #:allow-other-keys)
6340 (chdir "binaries")
6341 (let* ((out (assoc-ref outputs "out"))
6342 (bin (string-append out "/bin"))
6343 (lib (string-append out "/lib"))
6344 (data (string-append out "/share/0ad"))
6345 (applications (string-append out "/share/applications"))
6346 (pixmaps (string-append out "/share/pixmaps"))
6347 (0ad-data (assoc-ref inputs "0ad-data")))
6348 ;; data
6349 (copy-recursively "data" data)
6350 (for-each (lambda (file)
6351 (symlink (string-append 0ad-data "/" file)
6352 (string-append data "/" file)))
6353 '("config" "mods/mod" "mods/public" "tools"))
6354 ;; libraries
6355 (for-each (lambda (file)
6356 (install-file file lib))
6357 (find-files "system" "\\.so$"))
6358 ;; binaries
6359 (install-file "system/pyrogenesis" bin)
6360 (with-directory-excursion bin
6361 (symlink "pyrogenesis" "0ad"))
6362 ;; resources
6363 (with-directory-excursion "../build/resources"
6364 (install-file "0ad.desktop" applications)
6365 (install-file "0ad.png" pixmaps))
6366 #t)))
6367 (add-after 'install 'check
6368 (lambda _
6369 (with-directory-excursion "system"
6370 (invoke "./test")))))))
6371 (home-page "https://play0ad.com")
6372 (synopsis "3D real-time strategy game of ancient warfare")
6373 (description "0 A.D. is a real-time strategy (RTS) game of ancient
6374 warfare. It's a historically-based war/economy game that allows players to
6375 relive or rewrite the history of twelve ancient civilizations, each depicted
6376 at their peak of economic growth and military prowess.
6377
6378 0ad needs a window manager that supports 'Extended Window Manager Hints'.")
6379 (license (list license:bsd-2
6380 license:bsd-3
6381 license:expat
6382 license:gpl2+
6383 license:ibmpl1.0
6384 license:isc
6385 license:lgpl2.1
6386 license:lgpl3
6387 license:mpl2.0
6388 license:zlib))))
6389
6390 ;; There have been no official releases.
6391 (define-public open-adventure
6392 (let* ((commit "d43854f0f6bb8e9eea7fbce80348150e7e7fc34d")
6393 (revision "2"))
6394 (package
6395 (name "open-adventure")
6396 (version (string-append "2.5-" revision "." (string-take commit 7)))
6397 (source (origin
6398 (method git-fetch)
6399 (uri (git-reference
6400 (url "https://gitlab.com/esr/open-adventure")
6401 (commit commit)))
6402 (file-name (string-append name "-" version "-checkout"))
6403 (sha256
6404 (base32
6405 "08bwrvf4axb1rsfd6ia1fddsky9pc1p350vjskhaakg2czc6dsk0"))))
6406 (build-system gnu-build-system)
6407 (arguments
6408 `(#:make-flags (list "CC=gcc")
6409 #:parallel-build? #f ; not supported
6410 #:phases
6411 (modify-phases %standard-phases
6412 (replace 'configure
6413 (lambda* (#:key inputs outputs #:allow-other-keys)
6414 ;; Linenoise is meant to be included, so we have to
6415 ;; copy it into the working directory.
6416 (let* ((linenoise (assoc-ref inputs "linenoise"))
6417 (noisepath (string-append linenoise "/include/linenoise"))
6418 (out (assoc-ref outputs "out")))
6419 (copy-recursively noisepath "linenoise"))
6420 #t))
6421 (add-before 'build 'use-echo
6422 (lambda _
6423 (substitute* "tests/Makefile"
6424 (("/bin/echo") (which "echo")))
6425 #t))
6426 (add-after 'build 'build-manpage
6427 (lambda _
6428 ;; This target is missing a dependency
6429 (substitute* "Makefile"
6430 ((".adoc.6:" line)
6431 (string-append line " advent.adoc")))
6432 (invoke "make" ".adoc.6")))
6433 ;; There is no install target
6434 (replace 'install
6435 (lambda* (#:key outputs #:allow-other-keys)
6436 (let* ((out (assoc-ref outputs "out"))
6437 (bin (string-append out "/bin"))
6438 (man (string-append out "/share/man/man6")))
6439 (install-file "advent" bin)
6440 (install-file "advent.6" man))
6441 #t)))))
6442 (native-inputs
6443 `(("asciidoc" ,asciidoc)
6444 ("linenoise" ,linenoise)
6445 ("python" ,python)
6446 ("python-pyyaml" ,python-pyyaml)))
6447 (home-page "https://gitlab.com/esr/open-adventure")
6448 (synopsis "Colossal Cave Adventure")
6449 (description "The original Colossal Cave Adventure from 1976 was the
6450 origin of all text adventures, dungeon-crawl (computer) games, and
6451 computer-hosted roleplaying games. This is the last version released by
6452 Crowther & Woods, its original authors, in 1995. It has been known as
6453 \"adventure 2.5\" and \"430-point adventure\".")
6454 (license license:bsd-2))))
6455
6456 (define-public tome4
6457 (package
6458 (name "tome4")
6459 (version "1.6.7")
6460 (synopsis "Single-player, RPG roguelike game set in the world of Eyal")
6461 (source
6462 (origin
6463 (method url-fetch)
6464 (uri (string-append "https://te4.org/dl/t-engine/t-engine4-src-"
6465 version ".tar.bz2"))
6466 (sha256
6467 (base32 "0283hvms5hr29zr0grd6gq059k0hg8hcz3fsmwjmysiih8790i68"))
6468 (modules '((guix build utils)))
6469 (snippet
6470 '(begin
6471 (substitute* '("src/music.h" "src/tSDL.h")
6472 (("#elif defined(__FreeBSD__)" line)
6473 (string-append
6474 line " || defined(__GNUC__)")))
6475 (substitute* '("src/tgl.h")
6476 (("#include <GL/glext.h>") ""))
6477 #t))))
6478 (build-system gnu-build-system)
6479 (native-inputs
6480 `(("unzip" ,unzip)))
6481 (inputs
6482 `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
6483 ("glu" ,glu)
6484 ("premake4" ,premake4)
6485 ("openal" ,openal)
6486 ("vorbis" ,libvorbis)
6487 ("luajit" ,luajit)))
6488 (arguments
6489 `(#:make-flags '("CC=gcc" "config=release")
6490 ;; XXX: Building in parallel occasionally causes this build failure:
6491 ;; ../src/luajit2/src/host/buildvm.c:73:10: fatal error: buildvm_arch.h:
6492 ;; No such file or directory
6493 #:parallel-build? #f
6494 #:phases (modify-phases %standard-phases
6495 (delete 'bootstrap)
6496 (replace 'configure
6497 (lambda _
6498 (invoke "premake4" "gmake")
6499 #t))
6500 (add-after 'set-paths 'set-sdl-paths
6501 (lambda* (#:key inputs #:allow-other-keys)
6502 (setenv "CPATH"
6503 (string-append (assoc-ref inputs "sdl-union")
6504 "/include/SDL2:"
6505 (or (getenv "CPATH") "")))
6506 #t))
6507 (delete 'check)
6508 ;; premake doesn't provide install target
6509 (replace 'install
6510 (lambda* (#:key inputs outputs #:allow-other-keys)
6511 (let* ((out (assoc-ref outputs "out"))
6512 (usr (string-append out "/usr"))
6513 (bin (string-append out "/bin"))
6514 (licenses (string-append out "/share/licenses"))
6515 (documents (string-append out "/share/doc"))
6516 (pixmaps (string-append out "/share/pixmaps"))
6517 (icon "te4-icon.png")
6518 (data (string-append out "/share/" ,name))
6519 (applications (string-append
6520 out "/share/applications"))
6521 (unzip (string-append
6522 (assoc-ref inputs "unzip") "/bin/unzip"))
6523 (wrapper (string-append bin "/" ,name)))
6524 ;; icon
6525 (mkdir-p pixmaps)
6526 (invoke unzip "-j"
6527 (string-append
6528 "game/engines/te4-" ,version ".teae")
6529 (string-append
6530 "data/gfx/" icon) "-d" pixmaps)
6531 ;; game executable
6532 (install-file "t-engine" data)
6533 (mkdir-p bin)
6534 (with-output-to-file wrapper
6535 (lambda ()
6536 (display
6537 (string-append
6538 "#!/bin/sh\n"
6539 ;; No bootstrap code found,
6540 ;; defaulting to working directory
6541 ;; for engine code!
6542 "cd " data "\n"
6543 "exec -a tome4 ./t-engine \"$@\"\n"))))
6544 (chmod wrapper #o555)
6545 ;; licenses
6546 (for-each (lambda (file)
6547 (install-file file licenses))
6548 '("COPYING" "COPYING-MEDIA"))
6549 ;; documents
6550 (for-each (lambda (file)
6551 (install-file file documents))
6552 '("CONTRIBUTING" "CREDITS"))
6553 ;; data
6554 (copy-recursively "bootstrap" (string-append
6555 data "/bootstrap"))
6556 (copy-recursively "game" (string-append data "/game"))
6557 ;; launcher
6558 (mkdir-p applications)
6559 (make-desktop-entry-file
6560 (string-append applications "/" ,name ".desktop")
6561 #:name "ToME4"
6562 #:comment ,synopsis
6563 #:exec ,name
6564 #:icon icon
6565 #:categories '("Game" "RolePlaying")))
6566 #t)))))
6567 (home-page "https://te4.org")
6568 (description "Tales of Maj’Eyal (ToME) RPG, featuring tactical turn-based
6569 combat and advanced character building. Play as one of many unique races and
6570 classes in the lore-filled world of Eyal, exploring random dungeons, facing
6571 challenging battles, and developing characters with your own tailored mix of
6572 abilities and powers. With a modern graphical and customisable interface,
6573 intuitive mouse control, streamlined mechanics and deep, challenging combat,
6574 Tales of Maj’Eyal offers engaging roguelike gameplay for the 21st century.")
6575 (license license:gpl3+)))
6576
6577 (define-public quakespasm
6578 (package
6579 (name "quakespasm")
6580 (version "0.93.2")
6581 (source
6582 (origin
6583 (method url-fetch)
6584 (uri (string-append "mirror://sourceforge/quakespasm/Source/quakespasm-"
6585 version ".tgz"))
6586 (sha256
6587 (base32 "0qm0j5drybvvq8xadfyppkpk3rxqsxbywzm6iwsjwdf0iia3gss5"))))
6588 (arguments
6589 `(#:tests? #f
6590 #:make-flags '("CC=gcc"
6591 "MP3LIB=mpg123"
6592 "USE_CODEC_FLAC=1"
6593 "USE_CODEC_MIKMOD=1"
6594 "USE_SDL2=1"
6595 "-CQuake")
6596 #:phases (modify-phases %standard-phases
6597 (delete 'configure)
6598 (add-after 'unpack 'fix-makefile-paths
6599 (lambda* (#:key outputs #:allow-other-keys)
6600 (let ((out (assoc-ref outputs "out")))
6601 (mkdir-p (string-append out "/bin"))
6602 (substitute* "Quake/Makefile"
6603 (("/usr/local/games")
6604 (string-append out "/bin")))
6605 #t))))))
6606 (build-system gnu-build-system)
6607 (inputs `(("libmikmod" ,libmikmod)
6608 ("libvorbis" ,libvorbis)
6609 ("flac" ,flac)
6610 ("mesa" ,mesa)
6611 ("mpg123" ,mpg123)
6612 ("sdl2" ,sdl2)))
6613 (synopsis "First person shooter engine for Quake 1")
6614 (description "Quakespasm is a modern engine for id software's Quake 1.
6615 It includes support for 64 bit CPUs, custom music playback, a new sound driver,
6616 some graphical niceities, and numerous bug-fixes and other improvements.")
6617 (home-page "http://quakespasm.sourceforge.net/")
6618 (license license:gpl2+)))
6619
6620 (define-public vkquake
6621 (package
6622 (inherit quakespasm)
6623 (name "vkquake")
6624 (version "1.01.0")
6625 (source
6626 (origin
6627 (method git-fetch)
6628 (uri (git-reference
6629 (url "https://github.com/Novum/vkQuake")
6630 (commit version)))
6631 (file-name (git-file-name name version))
6632 (sha256
6633 (base32 "1iwin8j5kbyrknbkhjgpy8nmm7pxqzr0daa9gn7p38qhg2mh0a39"))))
6634 (arguments
6635 `(#:make-flags
6636 (let ((vulkanlib (string-append (assoc-ref %build-inputs
6637 "vulkan-loader") "/lib")))
6638 (list "CC=gcc"
6639 "MP3LIB=mpg123"
6640 "USE_CODEC_FLAC=1"
6641 "USE_CODEC_MIKMOD=1"
6642 "USE_SDL2=1"
6643 (string-append "LDFLAGS=-Wl,-rpath=" vulkanlib)
6644 "-CQuake"))
6645 #:phases (modify-phases %standard-phases
6646 (add-after 'unpack 'patch-for-new-vulkan
6647 (lambda _
6648 ;; Mimic upstream commit a869a22d9b51c68e for
6649 ;; compatibility with newer vulkan-headers.
6650 (substitute* "Quake/gl_rmisc.c"
6651 (("VK_DYNAMIC_STATE_RANGE_SIZE")
6652 "3"))
6653 #t))
6654 (delete 'configure)
6655 (add-after 'unpack 'fix-makefile-paths
6656 (lambda* (#:key outputs #:allow-other-keys)
6657 (let ((vulkan (assoc-ref %build-inputs
6658 "vulkan-loader"))
6659 (out (assoc-ref outputs "out")))
6660 (mkdir-p (string-append out "/bin"))
6661 (substitute* "Quake/Makefile" ((" /usr")
6662 (string-append " " out)))
6663 (substitute* "Quake/Makefile" (("/games")
6664 (string-append "/bin")))
6665 (substitute* "Quake/Makefile" (("..VULKAN_SDK.") vulkan))
6666 #t))))
6667 ,@(strip-keyword-arguments '(#:make-flags #:phases)
6668 (package-arguments quakespasm))))
6669 (inputs `(("vulkan-headers" ,vulkan-headers)
6670 ("vulkan-loader" ,vulkan-loader)
6671 ,@(package-inputs quakespasm)))
6672 (description "vkquake is a modern engine for id software's Quake 1.
6673 It includes support for 64 bit CPUs, custom music playback, a new sound driver,
6674 some graphical niceities, and numerous bug-fixes and other improvements.")
6675 (home-page "https://github.com/Novum/vkQuake")))
6676
6677 (define-public yamagi-quake2
6678 (package
6679 (name "yamagi-quake2")
6680 (version "7.10")
6681 (source
6682 (origin
6683 (method url-fetch)
6684 (uri (string-append "https://deponie.yamagi.org/quake2/quake2-"
6685 version ".tar.xz"))
6686 (sha256
6687 (base32
6688 "0psinbg25mysd58k99s1n34w31w5hj1vppb39gdjb0zqi6sl6cps"))))
6689 (build-system gnu-build-system)
6690 (arguments
6691 `(#:tests? #f
6692 #:make-flags
6693 (list "CC=gcc"
6694 ;; link openAL instead of using dlopen at runtime
6695 "DLOPEN_OPENAL=\"no\""
6696 ;; an optional directory where it will look for quake2 data files
6697 ;; in addition to the current working directory
6698 "WITH_SYSTEMWIDE=yes"
6699 "WITH_SYSTEMDIR=\"/opt/quake2\"")
6700 #:phases
6701 (modify-phases %standard-phases
6702 (delete 'configure)
6703 (replace 'install
6704 (lambda* (#:key outputs #:allow-other-keys)
6705 (let ((out (assoc-ref outputs "out")))
6706 (mkdir-p (string-append out "/lib"))
6707 (mkdir-p (string-append out "/bin"))
6708 ;; The yamagi-quake2 binary must be in the same directory
6709 ;; as it's engine libraries, but symlinking it to /bin is okay
6710 ;; https://github.com/yquake2/yquake2/blob/master/stuff/packaging.md
6711 (copy-recursively "release"
6712 (string-append out "/lib/yamagi-quake2"))
6713 (symlink (string-append out "/lib/yamagi-quake2/quake2")
6714 (string-append out "/bin/yamagi-quake2"))
6715 (symlink (string-append out "/lib/yamagi-quake2/q2ded")
6716 (string-append out "/bin/yamagi-q2ded"))))))))
6717 (inputs `(("sdl2" ,sdl2)
6718 ("mesa" ,mesa)
6719 ("libvorbis" ,libvorbis)
6720 ("zlib" ,zlib)
6721 ("openal" ,openal)))
6722 (native-inputs `(("pkg-config" ,pkg-config)))
6723 (synopsis "First person shooter engine based on quake2")
6724 (description "Yamagi Quake II is an enhanced client for id Software's Quake II.
6725 The main focus is an unchanged single player experience like back in 1997,
6726 thus the gameplay and the graphics are unaltered. However the user may use one
6727 of the unofficial retexturing packs. In comparison with the official client,
6728 over 1000 bugs were fixed and an extensive code audit done,
6729 making Yamagi Quake II one of the most solid Quake II implementations available.")
6730 (home-page "https://www.yamagi.org/quake2/")
6731 (license (list license:gpl2+ ; game and server
6732 (license:non-copyleft ; info-zip
6733 "file://LICENSE"
6734 "See Info-Zip section.")
6735 license:public-domain)))) ; stb
6736
6737 (define-public nudoku
6738 (package
6739 (name "nudoku")
6740 (version "1.0.0")
6741 (source (origin
6742 (method url-fetch)
6743 (uri (string-append "https://github.com/jubalh/nudoku/"
6744 "releases/download/" version
6745 "/nudoku-" version ".tar.xz"))
6746 (sha256
6747 (base32
6748 "0nr2j2z07nxk70s8xnmmpzccxicf7kn5mbwby2kg6aq8paarjm8k"))))
6749 (build-system gnu-build-system)
6750 (inputs `(("ncurses" ,ncurses)))
6751 (home-page "https://jubalh.github.io/nudoku/")
6752 (synopsis "Sudoku for your terminal")
6753 (description "Nudoku is a ncurses-based Sudoku game for your terminal.")
6754 (license license:gpl3+)))
6755
6756 (define-public the-butterfly-effect
6757 (package
6758 (name "the-butterfly-effect")
6759 (version "0.9.3.1")
6760 (source
6761 (origin
6762 (method git-fetch)
6763 (uri (git-reference
6764 (url "https://github.com/the-butterfly-effect/tbe")
6765 (commit (string-append "v" version))))
6766 (file-name (git-file-name name version))
6767 (sha256
6768 (base32
6769 "1ag2cp346f9bz9qy6za6q54id44d2ypvkyhvnjha14qzzapwaysj"))))
6770 (build-system gnu-build-system)
6771 (arguments
6772 `(#:phases
6773 (modify-phases %standard-phases
6774 (delete 'configure)
6775 ;; There is no "install" phase. By default, tbe is installed
6776 ;; in the build directory. Provide our own installation.
6777 (replace 'install
6778 (lambda* (#:key outputs #:allow-other-keys)
6779 (let* ((out (assoc-ref outputs "out"))
6780 (bin (string-append out "/bin"))
6781 (share (string-append out "/share")))
6782 (install-file "usr/games/tbe" bin)
6783 (mkdir-p share)
6784 (copy-recursively "usr/share" share)
6785 #t))))
6786 ;; Test suite requires a running Xorg server. Even when
6787 ;; provided, it fails with "D-Bus library appears to be
6788 ;; incorrectly set up; failed to read machine uuid: Failed to
6789 ;; open "/etc/machine-id": No such file or directory" along
6790 ;; with multiple "QPainter:: ... Painter not active" warnings.
6791 #:tests? #f))
6792 (inputs
6793 `(("qtbase" ,qtbase)
6794 ("qtsvg" ,qtsvg)))
6795 (native-inputs
6796 `(("cmake" ,cmake-minimal)
6797 ("gettext-minimal" ,gettext-minimal)
6798 ("qttools" ,qttools)))
6799 (synopsis "Realistic physics puzzle game")
6800 (description "The Butterfly Effect (tbe) is a game that uses
6801 realistic physics simulations to combine lots of simple mechanical
6802 elements to achieve a simple goal in the most complex way possible.")
6803 (home-page "http://the-butterfly-effect.org/")
6804 ;; Main license is GPL2-only. However, artwork is distributed
6805 ;; under various licenses, listed here.
6806 (license (list license:gpl2 license:public-domain license:expat
6807 license:cc-by-sa3.0 license:gpl3+ license:wtfpl2))))
6808
6809 (define-public pioneer
6810 (package
6811 (name "pioneer")
6812 (version "20200203")
6813 (source (origin
6814 (method git-fetch)
6815 (uri (git-reference
6816 (url "https://github.com/pioneerspacesim/pioneer")
6817 (commit version)))
6818 (file-name (git-file-name name version))
6819 (sha256
6820 (base32
6821 "1011xsi94jhw98mhm8kryq8ajig0qfbrdx5xdasi92bd4nk7lcp8"))))
6822 (build-system cmake-build-system)
6823 (native-inputs
6824 `(("pkg-config" ,pkg-config)))
6825 (inputs
6826 `(("assimp" ,assimp)
6827 ("curl" ,curl)
6828 ("freetype" ,freetype)
6829 ("glew" ,glew)
6830 ("glu" ,glu)
6831 ("libpng" ,libpng)
6832 ("libsigc++" ,libsigc++)
6833 ("libvorbis" ,libvorbis)
6834 ("lua" ,lua-5.2) ;not compatible with 5.3
6835 ("mesa" ,mesa)
6836 ("sdl" ,(sdl-union (list sdl2 sdl2-image)))))
6837 (arguments
6838 `(#:tests? #f ;tests are broken
6839 #:configure-flags (list "-DUSE_SYSTEM_LIBLUA:BOOL=YES"
6840 (string-append "-DPIONEER_DATA_DIR="
6841 %output "/share/games/pioneer"))))
6842 (home-page "https://pioneerspacesim.net")
6843 (synopsis "Game of lonely space adventure")
6844 (description
6845 "Pioneer is a space adventure game set in our galaxy at the turn of the
6846 31st century. The game is open-ended, and you are free to eke out whatever
6847 kind of space-faring existence you can think of. Look for fame or fortune by
6848 exploring the millions of star systems. Turn to a life of crime as a pirate,
6849 smuggler or bounty hunter. Forge and break alliances with the various
6850 factions fighting for power, freedom or self-determination. The universe is
6851 whatever you make of it.")
6852 (license license:gpl3)))
6853
6854 (define-public badass
6855 (let ((commit "3c3cd669b4fc8f73a102e3702788f7b28dc47dbb")
6856 (revision "0"))
6857 (package
6858 (name "badass")
6859 (version (git-version "0.0" revision commit))
6860 (source (origin
6861 (method git-fetch)
6862 (uri (git-reference
6863 (url "https://github.com/umayr/badass")
6864 (commit commit)))
6865 (file-name (git-file-name name version))
6866 (sha256
6867 (base32
6868 "05c9vdcb5ym3z0n5ll3v39mw4yl9jcjnlydmn0yl89ai9pv71zb6"))))
6869 (build-system go-build-system)
6870 (arguments
6871 '(#:import-path "github.com/umayr/badass"))
6872 (synopsis "Hacking contribution graphs in git")
6873 (description
6874 "Badass generates false commits for a range of dates, essentially
6875 hacking the gamification of contribution graphs on platforms such as
6876 Github or Gitlab.")
6877 (home-page "https://github.com/umayr/badass")
6878 (license license:expat))))
6879
6880 (define-public colobot
6881 (package
6882 (name "colobot")
6883 (version "0.1.12-alpha")
6884 (source
6885 (origin
6886 (method git-fetch)
6887 (uri (git-reference
6888 (url "https://github.com/colobot/colobot")
6889 (commit (string-append "colobot-gold-" version))
6890 (recursive? #t))) ;for "data/" subdir
6891 (file-name (git-file-name name version))
6892 (sha256
6893 (base32
6894 "1c181cclkrnspgs07lvndg2c81cjq3smkv7qim8c470cj88rcrp2"))))
6895 (build-system cmake-build-system)
6896 (arguments
6897 `(#:tests? #f ;no test
6898 #:phases
6899 (modify-phases %standard-phases
6900 (add-after 'unpack 'make-git-checkout-writable
6901 (lambda _
6902 (for-each make-file-writable (find-files "."))
6903 #t))
6904 (add-after 'unpack 'fix-directories
6905 (lambda _
6906 (substitute* "CMakeLists.txt"
6907 (("(\\$\\{CMAKE_INSTALL_PREFIX\\})/games" _ prefix)
6908 (string-append prefix "/bin"))
6909 (("(\\$\\{CMAKE_INSTALL_PREFIX\\}/share)/games/colobot" _ prefix)
6910 (string-append prefix "/colobot")))
6911 #t))
6912 (add-after 'fix-directories 'install-music
6913 ;; Retrieve and install music files.
6914 (lambda* (#:key inputs #:allow-other-keys)
6915 ;; Installation process tries to download music files using
6916 ;; "wget" if not already present. Since we are going another
6917 ;; route, skip "wget" command check.
6918 (substitute* "data/music/CMakeLists.txt"
6919 (("find_program\\(WGET wget\\)") ""))
6920 ;; Populate "music/" directory.
6921 (let ((data (assoc-ref inputs "colobot-music")))
6922 (invoke "tar" "-xvf" data "-Cdata/music"))
6923 #t)))))
6924 (native-inputs
6925 `(("colobot-music"
6926 ,(origin
6927 (method url-fetch)
6928 (uri (string-append "https://colobot.info/files/music/"
6929 "colobot-music_ogg_" version ".tar.gz"))
6930 (sha256
6931 (base32
6932 "1s86cd36rwkff329mb1ay1wi5qqyi35564ppgr3f4qqz9wj9vs2m"))))
6933 ("gettext" ,gettext-minimal)
6934 ("librsvg" ,librsvg)
6935 ("po4a" ,po4a)
6936 ("python" ,python-wrapper)))
6937 (inputs
6938 `(("boost" ,boost)
6939 ("glew" ,glew)
6940 ("libogg" ,libogg)
6941 ("libpng" ,libpng)
6942 ("libsndfile" ,libsndfile)
6943 ("libvorbis" ,libvorbis)
6944 ("openal" ,openal)
6945 ("physfs" ,physfs)
6946 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-ttf)))))
6947 (synopsis "Educational programming strategy game")
6948 (description "Colobot: Gold Edition is a real-time strategy game, where
6949 you can program your units (bots) in a language called CBOT, which is similar
6950 to C++ and Java. Your mission is to find a new planet to live and survive.
6951 You can save humanity and get programming skills!")
6952 (home-page "https://colobot.info")
6953 (license license:gpl3+)))
6954
6955 (define-public gzdoom
6956 (package
6957 (name "gzdoom")
6958 (version "4.3.2")
6959 (source
6960 (origin
6961 (method git-fetch)
6962 (uri (git-reference
6963 (url "https://github.com/coelckers/gzdoom")
6964 (commit (string-append "g" version))))
6965 (file-name (git-file-name name version))
6966 (sha256
6967 (base32 "0i4hyg72z84fc6ca2ic9q82q5cbgrbd7bynl3kpkypxvyasq08wz"))
6968 (patches (search-patches "gzdoom-search-in-installed-share.patch"
6969 "gzdoom-find-system-libgme.patch"))
6970 (modules '((guix build utils)))
6971 (snippet
6972 '(begin
6973 ;; Remove some bundled libraries. XXX There are more, but removing
6974 ;; them would require, at least, patching the build system.
6975 (with-directory-excursion "libraries"
6976 (delete-file-recursively "bzip2")
6977 (delete-file-recursively "game-music-emu")
6978 (delete-file-recursively "jpeg")
6979 (delete-file-recursively "zlib"))
6980 #t))))
6981 (arguments
6982 '(#:tests? #f
6983 #:configure-flags
6984 (let ((out (assoc-ref %outputs "out")))
6985 (list
6986 (string-append
6987 "-DCMAKE_CXX_FLAGS:="
6988 "-DSHARE_DIR=\\\"" out "/share/\\\" "
6989 "-DGUIX_OUT_PK3=\\\"" out "/share/games/doom\\\"")
6990
6991 ;; The build requires some extra convincing not to use the bundled
6992 ;; libgme previously deleted in the soure snippet.
6993 "-DFORCE_INTERNAL_GME=OFF"
6994
6995 ;; Link libraries at build time instead of loading them at run time.
6996 "-DDYN_OPENAL=OFF"
6997 "-DDYN_FLUIDSYNTH=OFF"
6998 "-DDYN_GTK=OFF"
6999 "-DDYN_MPG123=OFF"
7000 "-DDYN_SNDFILE=OFF"))
7001 #:phases
7002 (modify-phases %standard-phases
7003 (add-before 'configure 'fix-referenced-paths
7004 (lambda* (#:key inputs outputs #:allow-other-keys)
7005 (let ((fluid-3 (assoc-ref inputs "fluid-3"))
7006 (timidity++ (assoc-ref inputs "timidity++"))
7007 (out (assoc-ref outputs "out")))
7008
7009 (substitute*
7010 "src/CMakeLists.txt"
7011 (("COMMAND /bin/sh")
7012 (string-append "COMMAND " (which "sh"))))
7013
7014 (substitute*
7015 "libraries/zmusic/mididevices/music_fluidsynth_mididevice.cpp"
7016 (("/usr/share/sounds/sf2/FluidR3_GM.sf2")
7017 (string-append fluid-3 "/share/soundfonts/FluidR3Mono_GM.sf3")))
7018
7019 (substitute*
7020 "libraries/zmusic/mididevices/music_timiditypp_mididevice.cpp"
7021 (("exename = \"timidity\"")
7022 (string-append "exename = \"" timidity++ "/bin/timidity\"")))
7023 #t))))))
7024 (build-system cmake-build-system)
7025 (inputs `(("bzip2" ,bzip2)
7026 ("fluid-3" ,fluid-3)
7027 ("fluidsynth" ,fluidsynth)
7028 ("gtk+3" ,gtk+)
7029 ("libgme" ,libgme)
7030 ("libjpeg" ,libjpeg-turbo)
7031 ("libsndfile" ,libsndfile)
7032 ("mesa" ,mesa)
7033 ("mpg123" ,mpg123)
7034 ("openal" ,openal)
7035 ("sdl2" ,sdl2)
7036 ("timidity++" ,timidity++)
7037 ("zlib" ,zlib)))
7038 (native-inputs `(("pkg-config" ,pkg-config)
7039 ("unzip" ,unzip)))
7040 (synopsis "Modern Doom 2 source port")
7041 (description "GZdoom is a port of the Doom 2 game engine, with a modern
7042 renderer. It improves modding support with ZDoom's advanced mapping features
7043 and the new ZScript language. In addition to Doom, it supports Heretic, Hexen,
7044 Strife, Chex Quest, and fan-created games like Harmony, Hacx and Freedoom.")
7045 (home-page "https://zdoom.org/index")
7046 ;; The source uses x86 assembly
7047 (supported-systems '("x86_64-linux" "i686-linux"))
7048 (license (list license:gpl3+ ; gzdoom game
7049 license:lgpl3+ ; gzdoom renderer
7050 license:expat ; gdtoa
7051 (license:non-copyleft ; modified dumb
7052 "file://dumb/licence.txt"
7053 "Dumb license, explicitly GPL compatible.")))))
7054
7055 (define-public odamex
7056 (package
7057 (name "odamex")
7058 (version "0.8.3")
7059 (source
7060 (origin
7061 (method url-fetch)
7062 (uri (string-append
7063 "mirror://sourceforge/odamex/Odamex/" version "/"
7064 "odamex-src-" version ".tar.gz"))
7065 (sha256
7066 (base32 "0f887g87bmcq4dpcga7xc2mpxs947dkbc934ir9xs55gz6z13q96"))))
7067 (build-system cmake-build-system)
7068 (arguments `(#:tests? #f)) ; no tests
7069 (inputs
7070 `(("sdl" ,sdl)
7071 ("sdl-mixer" ,sdl-mixer)
7072 ("zlib" ,zlib)
7073 ("libpng" ,libpng)
7074 ("alsa-lib" ,alsa-lib)))
7075 (home-page "https://odamex.net/")
7076 (synopsis "Multiplayer Doom port")
7077 (description "Odamex is a modification of the Doom engine that
7078 allows players to easily join servers dedicated to playing Doom
7079 online.")
7080 (license license:gpl2+)))
7081
7082 (define-public chocolate-doom
7083 (package
7084 (name "chocolate-doom")
7085 (version "3.0.1")
7086 (source (origin
7087 (method url-fetch)
7088 (uri (string-append "https://www.chocolate-doom.org/downloads/"
7089 version
7090 "/chocolate-doom-"
7091 version
7092 ".tar.gz"))
7093 (sha256
7094 (base32
7095 "1iy8rx7kjvi1zjiw4zh77szzmd1sgpqajvbhprh1sj93fhbxcdfl"))))
7096 (build-system gnu-build-system)
7097 (inputs `(("sdl2-net" ,sdl2-net)
7098 ("sdl2-mixer" , sdl2-mixer)
7099 ("sdl2" ,sdl2)))
7100 (native-inputs
7101 `(("pkg-config" ,pkg-config)))
7102 (synopsis "Doom source port preserving the look, feel, and bugs of vanilla
7103 Doom")
7104 (description
7105 "Chocolate Doom takes a different approach to other source ports. Its
7106 aim is to accurately reproduce the experience of playing Vanilla Doom. It is
7107 a conservative, historically accurate Doom source port, which is compatible
7108 with the thousands of mods and levels that were made before the Doom source
7109 code was released. Rather than flashy new graphics, Chocolate Doom's main
7110 features are its accurate reproduction of the game as it was played in the
7111 1990s. The project is developed around a carefully-considered philosophy that
7112 intentionally restricts which features may be added (and rejects any that
7113 affect gameplay).")
7114 (home-page "https://www.chocolate-doom.org/wiki/index.php/Chocolate_Doom")
7115 (license license:gpl2)))
7116
7117 (define-public crispy-doom
7118 (package
7119 (inherit chocolate-doom)
7120 (name "crispy-doom")
7121 (version "5.8.0")
7122 (source (origin
7123 (method git-fetch)
7124 (uri (git-reference
7125 (url "https://github.com/fabiangreffrath/crispy-doom")
7126 (commit (string-append "crispy-doom-" version))))
7127 (file-name (git-file-name name version))
7128 (sha256
7129 (base32 "1b6gn0dysv631jynh769whww9xcss1gms78sz3nrn855q1dsvcb4"))))
7130 (native-inputs
7131 (append
7132 (package-native-inputs chocolate-doom)
7133 `(("automake" ,automake)
7134 ("autoreconf" ,autoconf))))
7135 (arguments
7136 `(#:phases
7137 (modify-phases %standard-phases
7138 (replace 'bootstrap
7139 ;; The bundled autogen.sh script unconditionally runs ./configure.
7140 (lambda _ (invoke "autoreconf" "-vif"))))))
7141 (synopsis "Limit-removing enhanced-resolution Doom source port based on
7142 Chocolate Doom")
7143 (description
7144 "Crispy Doom is a friendly fork of Chocolate Doom that provides a higher
7145 display resolution, removes the static limits of the Doom engine and offers
7146 further optional visual, tactical and physical enhancements while remaining
7147 entirely config file, savegame, netplay and demo compatible with the
7148 original.")
7149 (home-page "https://www.chocolate-doom.org/wiki/index.php/Crispy_Doom")))
7150
7151 (define shlomif-cmake-modules
7152 (origin
7153 (method url-fetch)
7154 (uri (string-append "https://bitbucket.org/shlomif/shlomif-cmake-modules/"
7155 "raw/c505713d7a7cda608f97f01577e5868a711b883e/"
7156 "shlomif-cmake-modules/Shlomif_Common.cmake"))
7157 (sha256
7158 (base32 "0kx9s1qqhhzprp1w3b67xmsns0n0v506bg5hgrshxaxpy6lqiwb2"))))
7159
7160 (define-public rinutils
7161 (package
7162 (name "rinutils")
7163 (version "0.2.0")
7164 (source (origin
7165 (method git-fetch)
7166 (uri (git-reference
7167 (url "https://github.com/shlomif/rinutils")
7168 (commit version)))
7169 (file-name (git-file-name name version))
7170 (sha256
7171 (base32
7172 "1fpxyg86ggv0h7j8aarjjxrvwlj7jycd3bw066c0dwkq2fszxsf2"))))
7173 (native-inputs
7174 `(("perl" ,perl)
7175 ;; The following is only needed for tests.
7176 ("perl-file-find-object" ,perl-file-find-object)
7177 ("perl-test-differences" ,perl-test-differences)
7178 ("perl-class-xsaccessor" ,perl-class-xsaccessor)
7179 ("perl-io-all" ,perl-io-all)
7180 ("perl-test-runvalgrind" ,perl-test-runvalgrind)
7181 ("cmake-rules" ,shlomif-cmake-modules)
7182 ("pkg-config" ,pkg-config)))
7183 (inputs
7184 `(("cmocka" ,cmocka)
7185 ("perl-env-path" ,perl-env-path)
7186 ("perl-inline" ,perl-inline)
7187 ("perl-inline-c" ,perl-inline-c)
7188 ("perl-string-shellquote" ,perl-string-shellquote)
7189 ("perl-test-trailingspace" ,perl-test-trailingspace)
7190 ("perl-file-find-object-rule" ,perl-file-find-object-rule)
7191 ("perl-text-glob" ,perl-text-glob)
7192 ("perl-number-compare" ,perl-number-compare)
7193 ("perl-moo" ,perl-moo)))
7194 (arguments
7195 `(#:phases
7196 (modify-phases %standard-phases
7197 (add-after 'unpack 'fix-build-env
7198 (lambda* (#:key inputs #:allow-other-keys)
7199 (use-modules (guix build utils))
7200 (let* ((cmake-rules (assoc-ref inputs "cmake-rules")))
7201 (copy-file cmake-rules
7202 (string-append "cmake/"
7203 (strip-store-file-name cmake-rules)))
7204 #t)))
7205 (replace 'check
7206 (lambda _
7207 (with-directory-excursion "../source"
7208 (setenv "FCS_TEST_BUILD" "1")
7209 (setenv "RINUTILS_TEST_BUILD" "1")
7210 ;; TODO: Run tests after setting RINUTILS_TEST_TIDY to `1',
7211 ;; which requires tidy-all.
7212 ;; (setenv "RINUTILS_TEST_TIDY" "1")
7213 (invoke "perl" "CI-testing/continuous-integration-testing.pl")))))))
7214 (build-system cmake-build-system)
7215 (home-page "https://www.shlomifish.org/open-source/projects/")
7216 (synopsis "C11 / gnu11 utilities C library")
7217 (description "This package provides C11 / gnu11 utilities C library")
7218 (license license:expat)))
7219
7220 (define-public fortune-mod
7221 (package
7222 (name "fortune-mod")
7223 (version "2.28.0")
7224 (source
7225 (origin
7226 (method git-fetch)
7227 (uri (git-reference
7228 (url "https://github.com/shlomif/fortune-mod")
7229 (commit (string-append "fortune-mod-" version))))
7230 (file-name (git-file-name name version))
7231 (sha256
7232 (base32 "1ppzgnffgdcmq6fq4gmdq2ig10ip2bnfgklkb3i8nc6bdxm7pb89"))))
7233 (build-system cmake-build-system)
7234 (arguments
7235 `(#:test-target "check"
7236 #:phases
7237 (modify-phases %standard-phases
7238 (add-after 'unpack 'fix-build-env
7239 (lambda* (#:key inputs #:allow-other-keys)
7240 (use-modules (guix build utils))
7241 (let* ((cmake-rules (assoc-ref inputs "cmake-rules")))
7242 (copy-file cmake-rules
7243 (string-append "fortune-mod/cmake/"
7244 (strip-store-file-name cmake-rules)))
7245 (chdir "fortune-mod")
7246 ;; TODO: Valgrind tests fail for some reason.
7247 ;; Similar issue: https://github.com/shlomif/fortune-mod/issues/21 (?)
7248 (delete-file "tests/t/valgrind.t")
7249 #t)))
7250 (add-after 'install 'fix-install-directory
7251 (lambda* (#:key outputs #:allow-other-keys)
7252 ;; Move binary from "games/" to "bin/" and remove the latter. This
7253 ;; is easier than patching CMakeLists.txt since the tests hard-code
7254 ;; the location as well.
7255 (let* ((out (assoc-ref outputs "out"))
7256 (bin (string-append out "/bin"))
7257 (games (string-append out "/games")))
7258 (rename-file (string-append games "/fortune")
7259 (string-append bin "/fortune"))
7260 (rmdir games)
7261 #t))))))
7262 (inputs `(("recode" ,recode)))
7263 (native-inputs
7264 `(("perl" ,perl)
7265 ;; The following is only needed for tests.
7266 ("perl-file-find-object" ,perl-file-find-object)
7267 ("perl-test-differences" ,perl-test-differences)
7268 ("perl-class-xsaccessor" ,perl-class-xsaccessor)
7269 ("perl-io-all" ,perl-io-all)
7270 ("perl-test-runvalgrind" ,perl-test-runvalgrind)
7271 ("cmake-rules" ,shlomif-cmake-modules)
7272 ("rinutils" ,rinutils)))
7273 (home-page "https://www.shlomifish.org/open-source/projects/fortune-mod/")
7274 (synopsis "The Fortune Cookie program from BSD games")
7275 (description "Fortune is a command-line utility which displays a random
7276 quotation from a collection of quotes.")
7277 (license license:bsd-4)))
7278
7279 (define xonotic-data
7280 (package
7281 (name "xonotic-data")
7282 (version "0.8.2")
7283 (source
7284 (origin
7285 (method url-fetch)
7286 (uri (string-append "http://dl.xonotic.org/xonotic-"
7287 version ".zip"))
7288 (file-name (string-append name "-" version ".zip"))
7289 (sha256
7290 (base32
7291 "1mcs6l4clvn7ibfq3q69k2p0z6ww75rxvnngamdq5ic6yhq74bx2"))))
7292 (build-system trivial-build-system)
7293 (native-inputs
7294 `(("unzip" ,unzip)))
7295 (arguments
7296 `(#:modules ((guix build utils))
7297 #:builder
7298 (begin
7299 (use-modules (guix build utils))
7300 (let* ((out (assoc-ref %outputs "out"))
7301 (xonotic (string-append out "/share/xonotic"))
7302 (source (assoc-ref %build-inputs "source"))
7303 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
7304 (copy-file source (string-append ,name "-" ,version ".zip"))
7305 (invoke unzip (string-append ,name "-" ,version ".zip"))
7306 (mkdir-p out)
7307 (mkdir-p xonotic)
7308 (chdir "Xonotic")
7309 (copy-recursively "data"
7310 (string-append xonotic "/data"))
7311 (copy-recursively "server"
7312 (string-append xonotic "/server"))
7313 (install-file "key_0.d0pk" xonotic)))))
7314 (home-page "http://xonotic.org")
7315 (synopsis "Data files for Xonotic")
7316 (description
7317 "Xonotic-data provides the data files required by the game Xonotic.")
7318 (license (list license:gpl2+
7319 (license:x11-style "file://server/rcon.pl")))))
7320
7321 (define-public xonotic
7322 (package
7323 (name "xonotic")
7324 (version "0.8.2")
7325 (source
7326 (origin
7327 (method url-fetch)
7328 (uri (string-append "http://dl.xonotic.org/xonotic-"
7329 version "-source.zip"))
7330 (file-name (string-append name "-" version ".zip"))
7331 (sha256
7332 (base32
7333 "0axxw04fyz6jlfqd0kp7hdrqa0li31sx1pbipf2j5qp9wvqicsay"))))
7334 (build-system gnu-build-system)
7335 (arguments
7336 `(#:configure-flags (list (string-append "--prefix="
7337 (assoc-ref %outputs "out"))
7338 "--disable-rijndael")
7339 #:phases
7340 (modify-phases %standard-phases
7341 (add-before 'configure 'make-darkplaces
7342 (lambda* (#:key outputs #:allow-other-keys)
7343 (let* ((out (assoc-ref outputs "out"))
7344 (sharedir (string-append out "/share/xonotic/")))
7345 (invoke "make" "-C" "source/darkplaces"
7346 (string-append "DP_FS_BASEDIR="
7347 sharedir)
7348 "DP_LINK_TO_LIBJPEG=1"
7349 "DP_SOUND_API=ALSA"
7350 "CC=gcc"
7351 "-f" "makefile"
7352 "cl-release")
7353 (invoke "make" "-C" "source/darkplaces"
7354 (string-append "DP_FS_BASEDIR="
7355 sharedir)
7356 "DP_LINK_TO_LIBJPEG=1"
7357 "DP_SOUND_API=ALSA"
7358 "CC=gcc"
7359 "-f" "makefile"
7360 "sdl-release")
7361 (invoke "make" "-C" "source/darkplaces"
7362 (string-append "DP_FS_BASEDIR="
7363 sharedir)
7364 "DP_LINK_TO_LIBJPEG=1"
7365 "DP_SOUND_API=ALSA"
7366 "CC=gcc"
7367 "-f" "makefile"
7368 "sv-release"))))
7369 (add-before 'configure 'bootstrap
7370 (lambda _
7371 (chdir "source/d0_blind_id")
7372 (invoke "sh" "autogen.sh")))
7373 (add-after 'build 'install-desktop-entry
7374 (lambda* (#:key outputs #:allow-other-keys)
7375 ;; Add .desktop files for the 2 variants and the symlink
7376 (let* ((output (assoc-ref outputs "out"))
7377 (apps (string-append output "/share/applications")))
7378 (mkdir-p apps)
7379 (with-output-to-file
7380 (string-append apps "/xonotic-glx.desktop")
7381 (lambda _
7382 (format #t
7383 "[Desktop Entry]~@
7384 Name=xonotic-glx~@
7385 Comment=Xonotic glx~@
7386 Exec=~a/bin/xonotic-glx~@
7387 TryExec=~@*~a/bin/xonotic-glx~@
7388 Icon=xonotic~@
7389 Categories=Game~@
7390 Type=Application~%"
7391 output)))
7392 (with-output-to-file
7393 (string-append apps "/xonotic-sdl.desktop")
7394 (lambda _
7395 (format #t
7396 "[Desktop Entry]~@
7397 Name=xonotic-sdl~@
7398 Comment=Xonotic sdl~@
7399 Exec=~a/bin/xonotic-sdl~@
7400 TryExec=~@*~a/bin/xonotic-sdl~@
7401 Icon=xonotic~@
7402 Categories=Game~@
7403 Type=Application~%"
7404 output)))
7405 (with-output-to-file
7406 (string-append apps "/xonotic.desktop")
7407 (lambda _
7408 (format #t
7409 "[Desktop Entry]~@
7410 Name=xonotic~@
7411 Comment=Xonotic~@
7412 Exec=~a/bin/xonotic-glx~@
7413 TryExec=~@*~a/bin/xonotic~@
7414 Icon=xonotic~@
7415 Categories=Game~@
7416 Type=Application~%"
7417 output)))
7418 #t)))
7419 (add-after 'install-desktop-entry 'install-icons
7420 (lambda* (#:key outputs #:allow-other-keys)
7421 (let ((out (assoc-ref outputs "out")))
7422 (with-directory-excursion "../../misc/logos/icons_png/"
7423 (for-each
7424 (lambda (file)
7425 (let* ((size (string-filter char-numeric? file))
7426 (icons (string-append out "/share/icons/hicolor/"
7427 size "x" size "/apps")))
7428 (mkdir-p icons)
7429 (copy-file file (string-append icons "/xonotic.png"))))
7430 '("xonotic_16.png" "xonotic_22.png" "xonotic_24.png"
7431 "xonotic_32.png" "xonotic_48.png" "xonotic_64.png"
7432 "xonotic_128.png" "xonotic_256.png" "xonotic_512.png"))))))
7433 (add-after 'install-icons 'install-binaries
7434 (lambda* (#:key outputs #:allow-other-keys)
7435 (let ((out (assoc-ref outputs "out")))
7436 (define (install src dst)
7437 (let ((dst (string-append out dst)))
7438 (mkdir-p (dirname dst))
7439 (copy-file src dst)))
7440 (mkdir-p (string-append out "/bin"))
7441 (install "../darkplaces/darkplaces-dedicated"
7442 "/bin/xonotic-dedicated")
7443 (install "../darkplaces/darkplaces-glx"
7444 "/bin/xonotic-glx")
7445 (install "../darkplaces/darkplaces-sdl"
7446 "/bin/xonotic-sdl")
7447 ;; Provide a default xonotic executable, defaulting to SDL.
7448 (symlink (string-append out "/bin/xonotic-sdl")
7449 (string-append out "/bin/xonotic"))
7450 #t)))
7451 (add-after 'install-binaries 'install-data
7452 (lambda* (#:key outputs inputs #:allow-other-keys)
7453 (let* ((out (assoc-ref outputs "out"))
7454 (data (assoc-ref inputs "xonotic-data")))
7455 (symlink (string-append data "/share/xonotic")
7456 (string-append out "/share/xonotic"))
7457 #t)))
7458 (add-after 'install-binaries 'wrap-binaries
7459 (lambda* (#:key outputs inputs #:allow-other-keys)
7460 ;; Curl and libvorbis need to be wrapped so that we get
7461 ;; sound and networking.
7462 (let* ((out (assoc-ref outputs "out"))
7463 (bin (string-append out "/bin/xonotic"))
7464 (bin-sdl (string-append out "/bin/xonotic-sdl"))
7465 (bin-glx (string-append out "/bin/xonotic-glx"))
7466 (bin-dedicated (string-append out "/bin/xonotic-dedicated"))
7467 (curl (assoc-ref inputs "curl"))
7468 (vorbis (assoc-ref inputs "libvorbis")))
7469 (wrap-program bin
7470 `("LD_LIBRARY_PATH" ":" prefix
7471 (,(string-append curl "/lib:" vorbis "/lib"))))
7472 (wrap-program bin-sdl
7473 `("LD_LIBRARY_PATH" ":" prefix
7474 (,(string-append curl "/lib:" vorbis "/lib"))))
7475 (wrap-program bin-glx
7476 `("LD_LIBRARY_PATH" ":" prefix
7477 (,(string-append curl "/lib:" vorbis "/lib"))))
7478 (wrap-program bin-dedicated
7479 `("LD_LIBRARY_PATH" ":" prefix
7480 (,(string-append curl "/lib:" vorbis "/lib"))))
7481 #t))))))
7482 (inputs
7483 `(("xonotic-data" ,xonotic-data)
7484 ("alsa-lib" ,alsa-lib)
7485 ("curl" ,curl)
7486 ("libjpeg" ,libjpeg-turbo)
7487 ("libmodplug" ,libmodplug)
7488 ("libvorbis" ,libvorbis)
7489 ("libogg" ,libogg)
7490 ("libxpm" ,libxpm)
7491 ("libxxf86dga" ,libxxf86dga)
7492 ("libxxf86vm" ,libxxf86vm)
7493 ("libx11" ,libx11)
7494 ("libxext" ,libxext)
7495 ("libxau" ,libxau)
7496 ("libxdmcp" ,libxdmcp)
7497 ("mesa" ,mesa)
7498 ("glu" ,glu)
7499 ("freetype" ,freetype)
7500 ("sdl2" ,sdl2)
7501 ("libpng" ,libpng)
7502 ("hicolor-icon-theme" ,hicolor-icon-theme)))
7503 (native-inputs
7504 `(("unzip" ,unzip)
7505 ("autoconf" ,autoconf)
7506 ("automake" ,automake)
7507 ("pkg-config" ,pkg-config)
7508 ("libtool" ,libtool)
7509 ("gmp" ,gmp)))
7510 (home-page "https://xonotic.org")
7511 (synopsis "Fast-paced first-person shooter game")
7512 (description
7513 "Xonotic is a free, fast-paced first-person shooter.
7514 The project is geared towards providing addictive arena shooter
7515 gameplay which is all spawned and driven by the community itself.
7516 Xonotic is a direct successor of the Nexuiz project with years of
7517 development between them, and it aims to become the best possible
7518 open-source FPS of its kind.")
7519 (license (list license:gpl2+
7520 license:bsd-3 ; /source/d0_blind_id folder and others
7521 (license:x11-style "" "See file rcon.pl.")))))
7522
7523 (define-public frotz
7524 (package
7525 (name "frotz")
7526 (version "2.44")
7527 (source (origin
7528 (method url-fetch)
7529 (uri (list (string-append
7530 "http://www.ifarchive.org/if-archive/infocom/interpreters/"
7531 "frotz/frotz-" version ".tar.gz")
7532 (string-append
7533 "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
7534 "frotz/frotz-" version ".tar.gz")))
7535 (sha256
7536 (base32
7537 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
7538 (build-system gnu-build-system)
7539 (arguments
7540 `(#:tests? #f ; there are no tests
7541 #:phases
7542 (modify-phases %standard-phases
7543 (delete 'configure)
7544 (add-before 'build 'curses
7545 (lambda _
7546 (substitute* "Makefile"
7547 (("lcurses") "lncurses"))
7548 #t))
7549 (replace 'install
7550 (lambda* (#:key outputs #:allow-other-keys)
7551 (let* ((out (assoc-ref outputs "out"))
7552 (bin (string-append out "/bin"))
7553 (man (string-append out "/share/man/man6")))
7554 (install-file "frotz" bin)
7555 (mkdir-p man)
7556 (install-file "doc/frotz.6" man)
7557 #t))))))
7558 (inputs `(("libmodplug" ,libmodplug)
7559 ("libsamplerate" ,libsamplerate)
7560 ("libsndfile" ,libsndfile)
7561 ("libvorbis" ,libvorbis)
7562 ("ncurses" ,ncurses)))
7563 (synopsis "Portable Z-machine interpreter (ncurses version) for text adventure games")
7564 (description "Frotz is an interpreter for Infocom games and other Z-machine
7565 games in the text adventure/interactive fiction genre. This version of Frotz
7566 complies with standard 1.0 of Graham Nelson's specification. It plays all
7567 Z-code games V1-V8, including V6, with sound support through libao, and uses
7568 ncurses for text display.")
7569 (home-page "http://frotz.sourceforge.net")
7570 (license license:gpl2+)))
7571
7572 (define-public frotz-dumb-terminal
7573 (package
7574 (name "frotz-dumb-terminal")
7575 (version "2.44")
7576 (source (origin
7577 (method url-fetch)
7578 (uri (list (string-append
7579 "http://www.ifarchive.org/if-archive/infocom/interpreters/"
7580 "frotz/frotz-" version ".tar.gz")
7581 (string-append
7582 "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
7583 "frotz/frotz-" version ".tar.gz")))
7584 (sha256
7585 (base32
7586 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
7587 (build-system gnu-build-system)
7588 (arguments
7589 `(#:tests? #f ; there are no tests
7590 #:phases
7591 (modify-phases %standard-phases
7592 (delete 'configure)
7593 (replace 'build
7594 (lambda _
7595 (invoke "make" "dumb")))
7596 (replace 'install
7597 (lambda* (#:key outputs #:allow-other-keys)
7598 (let* ((out (assoc-ref outputs "out"))
7599 (bin (string-append out "/bin"))
7600 (man (string-append out "/share/man/man6")))
7601 (install-file "dfrotz" bin)
7602 (mkdir-p man)
7603 (install-file "doc/dfrotz.6" man)
7604 #t))))))
7605 (synopsis "Portable Z-machine dumb interpreter for text adventure games")
7606 (description "Frotz is an interpreter for Infocom games and
7607 other Z-machine games in the text adventure/interactive fiction genre.
7608 dfrotz is the dumb interface version. You get no screen control; everything
7609 is just printed to the terminal line by line. The terminal handles all the
7610 scrolling. Maybe you'd like to experience what it's like to play Adventure on
7611 a teletype. A much cooler use for compiling Frotz with the dumb interface is
7612 that it can be wrapped in CGI scripting, PHP, and the like to allow people
7613 to play games on webpages. It can also be made into a chat bot.")
7614 (home-page "http://frotz.sourceforge.net")
7615 (license license:gpl2+)))
7616
7617 (define-public frotz-sdl
7618 (let* ((commit "4de8c34f2116fff554af6216c30ec9d41bf50b24"))
7619 (package
7620 (name "frotz-sdl")
7621 (version "2.45pre")
7622 (source (origin
7623 (method git-fetch)
7624 (uri (git-reference
7625 (url "https://gitlab.com/DavidGriffith/frotz")
7626 (commit commit)))
7627 (sha256
7628 (base32
7629 "18ms21pcrl7ipcnyqnf8janamkryzx78frsgd9kfk67jvbj0z2k8"))
7630 (file-name (git-file-name name version))))
7631 (build-system gnu-build-system)
7632 (arguments
7633 `(#:tests? #f ; there are no tests
7634 #:phases
7635 (modify-phases %standard-phases
7636 (delete 'configure)
7637 (add-before 'build 'patch-makefile
7638 (lambda _
7639 (substitute* "Makefile"
7640 (("lcurses") "lncurses")
7641 (("^BUILD_DATE_TIME =.*$")
7642 "BUILD_DATE_TIME = \"2.45pre-20180907.00000\"\n"))
7643 #t))
7644 (replace 'build
7645 (lambda _
7646 (invoke "make" "sdl")))
7647 (replace 'install
7648 (lambda* (#:key outputs #:allow-other-keys)
7649 (let* ((out (assoc-ref outputs "out"))
7650 (bin (string-append out "/bin"))
7651 (man (string-append out "/share/man/man6")))
7652 (install-file "sfrotz" bin)
7653 (mkdir-p man)
7654 (install-file "doc/sfrotz.6" man)
7655 #t))))))
7656 (native-inputs
7657 `(("pkg-config" ,pkg-config)
7658 ("which" ,which)
7659 ("perl" ,perl)))
7660 (inputs `(("sdl2" ,sdl2)
7661 ("sdl2-mixer" ,sdl2-mixer)
7662 ("libmodplug" ,libmodplug)
7663 ("libsamplerate" ,libsamplerate)
7664 ("libsndfile" ,libsndfile)
7665 ("libvorbis" ,libvorbis)
7666 ("ncurses" ,ncurses)
7667 ("freetype" ,freetype)
7668 ("libjpeg-turbo" ,libjpeg-turbo)))
7669 (synopsis "Portable Z-machine interpreter (SDL port) for text adventure games")
7670 (description "Frotz is an interpreter for Infocom games and other Z-machine
7671 games in the text adventure/interactive fiction genre. This version of Frotz
7672 using SDL fully supports all these versions of the Z-Machine including the
7673 graphical version 6. Graphics and sound are created through the use of the SDL
7674 libraries. AIFF sound effects and music in MOD and OGG formats are supported
7675 when packaged in Blorb container files or optionally from individual files.")
7676 (home-page "http://frotz.sourceforge.net")
7677 (license license:gpl2+))))
7678
7679 (define-public frozen-bubble
7680 ;; Last official release is very outdated (2010). Use latest commit (2017).
7681 (let ((commit "d6a029110ad6ab9e4960052e175addc98807fb7e")
7682 (revision "1"))
7683 (package
7684 (name "frozen-bubble")
7685 (version (git-version "2.2.1" revision commit))
7686 (source
7687 (origin
7688 (method git-fetch)
7689 (uri (git-reference
7690 (url "https://github.com/kthakore/frozen-bubble")
7691 (commit commit)))
7692 (file-name (git-file-name name version))
7693 (sha256
7694 (base32 "1rfrcym5lf4qac2qdklikb1ywijyxypq298azzxahy461dadl6cx"))))
7695 (build-system perl-build-system)
7696 (arguments
7697 `(#:phases
7698 (modify-phases %standard-phases
7699 ;; Build process needs to create files in the "server"
7700 ;; directory.
7701 (add-after 'unpack 'fix-permissions
7702 (lambda _
7703 (for-each make-file-writable
7704 (find-files "server" "." #:directories? #t))))
7705 ;; By default, build stops at warnings.
7706 (add-after 'unpack 'prevent-build-error
7707 (lambda _
7708 (substitute* "inc/My/Builder.pm"
7709 (("-Werror") ""))
7710 #t))
7711 (add-after 'install 'install-desktop-file-and-icons
7712 (lambda* (#:key outputs #:allow-other-keys)
7713 (let* ((share (string-append (assoc-ref outputs "out") "/share"))
7714 (hicolor (string-append share "/icons/hicolor")))
7715 ;; Create desktop entry.
7716 (make-desktop-entry-file
7717 (string-append share "/applications/" ,name ".desktop")
7718 #:name "Frozen Bubble"
7719 #:comment "Frozen Bubble arcade game"
7720 #:exec ,name
7721 #:icon ,name
7722 #:categories '("Game" "ArcadeGame"))
7723 ;; Add icons.
7724 (with-directory-excursion "share/icons"
7725 (for-each
7726 (lambda (size)
7727 (let* ((dim (string-append size "x" size))
7728 (dir (string-append hicolor "/" dim "/apps")))
7729 (mkdir-p dir)
7730 (copy-file
7731 (string-append "frozen-bubble-icon-" dim ".png")
7732 (string-append dir "/frozen-bubble.png"))))
7733 '("16" "32" "48" "64"))))
7734 #t))
7735 (add-after 'install 'wrap-perl-libs
7736 (lambda* (#:key outputs #:allow-other-keys)
7737 (let ((out (assoc-ref outputs "out"))
7738 (perl5lib (getenv "PERL5LIB")))
7739 (for-each (lambda (prog)
7740 (wrap-program (string-append out "/" prog)
7741 `("PERL5LIB" ":" prefix
7742 (,(string-append perl5lib ":" out
7743 "/lib/perl5/site_perl")))))
7744 (find-files "bin" ".")))
7745 #t)))))
7746 (native-inputs
7747 `(("perl-alien-sdl" ,perl-alien-sdl)
7748 ("perl-capture-tiny" ,perl-capture-tiny)
7749 ("perl-locale-maketext-lexicon" ,perl-locale-maketext-lexicon)
7750 ("perl-module-build" ,perl-module-build)
7751 ("pkg-config" ,pkg-config)))
7752 (inputs
7753 `(("glib" ,glib)
7754 ("perl-compress-bzip2" ,perl-compress-bzip2)
7755 ("perl-file-sharedir" ,perl-file-sharedir)
7756 ("perl-file-slurp" ,perl-file-slurp)
7757 ("perl-file-which" ,perl-file-which)
7758 ("perl-ipc-system-simple" ,perl-ipc-system-simple)
7759 ("perl-sdl" ,perl-sdl)
7760 ("sdl" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-pango sdl-ttf)))))
7761 (home-page "http://frozen-bubble.org/")
7762 (synopsis "Puzzle with bubbles")
7763 (description
7764 "Frozen-Bubble is a clone of the popular Puzzle Bobble game, in which
7765 you attempt to shoot bubbles into groups of the same color to cause them to
7766 pop.
7767
7768 Players compete as penguins and must use the arrow keys to aim a colored
7769 bubble at groups of bubbles. The objective is to clear all the bubbles off
7770 the screen before a bubble passes below a line at the bottom.
7771
7772 It features 100 single-player levels, a two-player mode, music and striking
7773 graphics. A level editor is also included to allow players to create and play
7774 their own levels.")
7775 (license license:gpl2))))
7776
7777 (define-public libmanette
7778 (package
7779 (name "libmanette")
7780 (version "0.2.5")
7781 (source (origin
7782 (method url-fetch)
7783 (uri (string-append "mirror://gnome/sources/libmanette/"
7784 (version-major+minor version) "/"
7785 "libmanette-" version ".tar.xz"))
7786 (sha256
7787 (base32
7788 "0awsl0d34k3w18jdiyh377r7qi00s4kmh5gc97vx9jy0h22f01l0"))))
7789 (build-system meson-build-system)
7790 (native-inputs
7791 `(("glib" ,glib "bin") ; for glib-compile-resources
7792 ("gobject-introspection" ,gobject-introspection)
7793 ("pkg-config" ,pkg-config)
7794 ("vala" ,vala)))
7795 (inputs
7796 `(("libevdev" ,libevdev)
7797 ("libgudev" ,libgudev)))
7798 (home-page "https://wiki.gnome.org/Apps/Games")
7799 (synopsis "Game controller library")
7800 (description "Libmanette is a small GObject library giving you simple
7801 access to game controllers. It supports the de-facto standard gamepads as
7802 defined by the W3C standard Gamepad specification or as implemented by the SDL
7803 GameController.")
7804 (license license:lgpl2.1+)))
7805
7806 (define-public quadrapassel
7807 (package
7808 (name "quadrapassel")
7809 (version "3.36.05")
7810 (source (origin
7811 (method url-fetch)
7812 (uri (string-append "mirror://gnome/sources/quadrapassel/"
7813 (version-major+minor version) "/"
7814 "quadrapassel-" version ".tar.xz"))
7815 (sha256
7816 (base32
7817 "04abxmimh5npw8rhz1sfi6wxilgc6i1wka9mlnfwp8v1p1cb00cv"))))
7818 (build-system meson-build-system)
7819 (arguments
7820 '(#:glib-or-gtk? #t
7821 #:phases
7822 (modify-phases %standard-phases
7823 (add-after 'unpack 'skip-gtk-update-icon-cache
7824 ;; Don't create 'icon-theme.cache'.
7825 (lambda _
7826 (substitute* "build-aux/meson_post_install.py"
7827 (("gtk-update-icon-cache") (which "true")))
7828 #t)))))
7829 (native-inputs
7830 `(("desktop-file-utils" ,desktop-file-utils) ;for desktop-file-validate
7831 ("gettext" ,gettext-minimal)
7832 ("glib" ,glib "bin") ;for glib-compile-resources
7833 ("itstool" ,itstool)
7834 ("libxml2" ,libxml2) ;for xmllint
7835 ("pkg-config" ,pkg-config)
7836 ("vala" ,vala)))
7837 (inputs
7838 `(("clutter" ,clutter)
7839 ("clutter-gtk" ,clutter-gtk)
7840 ("gsound" ,gsound)
7841 ("gtk+" ,gtk+)
7842 ("libcanberra" ,libcanberra)
7843 ("libmanette" ,libmanette)
7844 ("librsvg" ,librsvg)))
7845 (home-page "https://wiki.gnome.org/Apps/Quadrapassel")
7846 (synopsis "GNOME version of Tetris")
7847 (description "Quadrapassel comes from the classic falling-block game,
7848 Tetris. The goal of the game is to create complete horizontal lines of
7849 blocks, which will disappear. The blocks come in seven different shapes made
7850 from four blocks each: one straight, two L-shaped, one square, and two
7851 S-shaped. The blocks fall from the top center of the screen in a random
7852 order. You rotate the blocks and move them across the screen to drop them in
7853 complete lines. You score by dropping blocks fast and completing lines. As
7854 your score gets higher, you level up and the blocks fall faster.")
7855 (license license:gpl2+)))
7856
7857 (define-public endless-sky
7858 (package
7859 (name "endless-sky")
7860 (version "0.9.12")
7861 (source
7862 (origin
7863 (method git-fetch)
7864 (uri (git-reference
7865 (url "https://github.com/endless-sky/endless-sky")
7866 (commit (string-append "v" version))))
7867 (file-name (git-file-name name version))
7868 (sha256
7869 (base32 "18nkl4s3r5sy3sd9lhbdg9160c7fggklklprx0d5azifc8g6k0wj"))))
7870 (build-system scons-build-system)
7871 (arguments
7872 `(#:scons ,scons-python2
7873 #:scons-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
7874 #:tests? #f ; no tests
7875 #:phases
7876 (modify-phases %standard-phases
7877 (add-after 'unpack 'patch-resource-locations
7878 (lambda* (#:key outputs #:allow-other-keys)
7879 (substitute* "source/Files.cpp"
7880 (("/usr/local/")
7881 (string-append (assoc-ref outputs "out") "/")))
7882 #t))
7883 (add-after 'unpack 'patch-scons
7884 (lambda _
7885 (substitute* "SConstruct"
7886 ;; Keep environmental variables
7887 (("Environment\\(\\)")
7888 "Environment(ENV = os.environ)")
7889 ;; Install into %out/bin
7890 (("games\"") "bin\""))
7891 #t)))))
7892 (inputs
7893 `(("glew" ,glew)
7894 ("libjpeg" ,libjpeg-turbo)
7895 ("libmad" ,libmad)
7896 ("libpng" ,libpng)
7897 ("openal" ,openal)
7898 ("sdl2" ,sdl2)))
7899 (home-page "https://endless-sky.github.io/")
7900 (synopsis "2D space trading and combat game")
7901 (description "Endless Sky is a 2D space trading and combat game. Explore
7902 other star systems. Earn money by trading, carrying passengers, or completing
7903 missions. Use your earnings to buy a better ship or to upgrade the weapons and
7904 engines on your current one. Blow up pirates. Take sides in a civil war. Or
7905 leave human space behind and hope to find friendly aliens whose culture is more
7906 civilized than your own.")
7907 (license (list license:gpl3+
7908 license:cc-by-sa3.0
7909 license:cc-by-sa4.0
7910 license:public-domain))))
7911
7912 (define-public stepmania
7913 (package
7914 (name "stepmania")
7915 (version "5.1.0-b2")
7916 (source
7917 (origin
7918 (method git-fetch)
7919 (uri (git-reference
7920 (url "https://github.com/stepmania/stepmania")
7921 (commit (string-append "v" version))))
7922 (file-name (git-file-name name version))
7923 (sha256
7924 (base32
7925 "0a7y9l7xm510vgnpmj1is7p9m6d6yd0fcaxrjcickz295k5w3rdn"))
7926 (modules '((guix build utils)))
7927 (snippet
7928 '(begin
7929 ;; Remove song files, which are licensed under a non-commercial
7930 ;; clause, and a course pointing to them.
7931 (for-each delete-file-recursively
7932 '("Songs/StepMania 5/Goin' Under"
7933 "Songs/StepMania 5/MechaTribe Assault"
7934 "Songs/StepMania 5/Springtime"))
7935 (for-each delete-file '("Courses/Default/Jupiter.crs"
7936 "Courses/Default/Jupiter.png"))
7937 ;; Unbundle libpng.
7938 (substitute* "extern/CMakeLists.txt"
7939 (("include\\(CMakeProject-png.cmake\\)") ""))
7940 (delete-file-recursively "extern/libpng")
7941 #t))))
7942 (build-system cmake-build-system)
7943 (arguments
7944 `(#:tests? #f ;FIXME: couldn't find how to run tests
7945 #:build-type "Release"
7946 #:out-of-source? #f ;for the 'install-desktop' phase
7947 #:configure-flags
7948 (list "-DWITH_SYSTEM_FFMPEG=1"
7949 ;; SSE instructions are available on Intel systems only.
7950 ,@(if (any (cute string-prefix? <> (or (%current-target-system)
7951 (%current-system)))
7952 '("x86_64" "i686"))
7953 '()
7954 '("-DWITH_SSE2=NO"))
7955 ;; Configuration cannot find GTK2 without the two following
7956 ;; flags.
7957 (string-append "-DGTK2_GDKCONFIG_INCLUDE_DIR="
7958 (assoc-ref %build-inputs "gtk+")
7959 "/lib/gtk-2.0/include")
7960 (string-append "-DGTK2_GLIBCONFIG_INCLUDE_DIR="
7961 (assoc-ref %build-inputs "glib")
7962 "/lib/glib-2.0/include"))
7963 #:phases
7964 (modify-phases %standard-phases
7965 (add-after 'unpack 'ensure-application-files-can-be-found
7966 (lambda* (#:key outputs #:allow-other-keys)
7967 (let ((out (assoc-ref outputs "out")))
7968 (substitute* "src/arch/LoadingWindow/LoadingWindow_Gtk.cpp"
7969 (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\" \\+ \"GtkModule.so\"")
7970 (string-append "\"" out
7971 "/share/stepmania/GtkModule.so\"")))
7972 (substitute* "src/arch/ArchHooks/ArchHooks_Unix.cpp"
7973 (("Root = sDirOfExecutable")
7974 (string-append "Root = \"" out "/share/stepmania/\""))
7975 (("sDirOfExecutable \\+ \"/(Packages|Songs)\"" _ dir)
7976 (string-append "\"" out "/share/stepmania/" dir "\"")))
7977 (substitute* "src/RageFileManager.cpp"
7978 (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\"")
7979 (string-append "\"" out "/share/stepmania/\""))))
7980 #t))
7981 (add-after 'unpack 'fix-install-subdir
7982 ;; Installation would be done in "%out/stepmania-X.Y", but we
7983 ;; prefer the more common layout "%out/share/stepmania".
7984 (lambda _
7985 (substitute* "src/CMakeLists.txt"
7986 (("\"stepmania-.*?\"") "\"share/stepmania\""))
7987 #t))
7988 (add-after 'unpack 'unbundle-libpng
7989 (lambda* (#:key inputs #:allow-other-keys)
7990 (substitute* "src/CMakeLists.txt"
7991 (("\\$\\{SM_EXTERN_DIR\\}/libpng/include")
7992 (string-append (assoc-ref inputs "libpng") "/include")))
7993 #t))
7994 (add-after 'install 'install-executable
7995 (lambda* (#:key outputs #:allow-other-keys)
7996 (let* ((out (assoc-ref outputs "out"))
7997 (bin (string-append out "/bin"))
7998 (exe (string-append out "/share/stepmania/stepmania")))
7999 (mkdir-p bin)
8000 (symlink exe (string-append bin "/stepmania"))
8001 #t)))
8002 (add-after 'install-executable 'install-desktop
8003 (lambda* (#:key outputs #:allow-other-keys)
8004 (let* ((out (assoc-ref outputs "out"))
8005 (share (string-append out "/share"))
8006 (applications (string-append share "/applications"))
8007 (icons (string-append share "/icons")))
8008 (install-file "stepmania.desktop" applications)
8009 (mkdir-p icons)
8010 (copy-recursively "icons" icons)
8011 #t)))
8012 ;; Move documentation in a more usual place, i.e.,
8013 ;; "%out/share/doc/stepmania/".
8014 (add-after 'install-desktop 'install-doc
8015 (lambda* (#:key outputs #:allow-other-keys)
8016 (let* ((out (assoc-ref outputs "out"))
8017 (share (string-append out "/share")))
8018 (with-directory-excursion share
8019 (mkdir-p "doc")
8020 (symlink "../stepmania/Docs" "doc/stepmania"))
8021 #t))))))
8022 (native-inputs
8023 `(("pkg-config" ,pkg-config)
8024 ("yasm" ,yasm)))
8025 (inputs
8026 `(("alsa-lib" ,alsa-lib)
8027 ;; Per upstream, StepMania is only guaranteed to work with a very
8028 ;; specific FFmpeg version, which is included in the repository as
8029 ;; a Git submodule. This particular version requirement usually
8030 ;; changes every few years.
8031 ("ffmpeg" ,ffmpeg-for-stepmania)
8032 ("glib" ,glib)
8033 ("glew" ,glew)
8034 ("gtk+" ,gtk+-2)
8035 ("jsoncpp" ,jsoncpp)
8036 ("libpng" ,libpng)
8037 ("libjpeg" ,libjpeg-turbo)
8038 ("libmad" ,libmad)
8039 ("libogg" ,libogg)
8040 ("libva" ,libva)
8041 ("libvorbis" ,libvorbis)
8042 ("libxinerama" ,libxinerama)
8043 ("libxrandr" ,libxrandr)
8044 ("mesa" ,mesa)
8045 ("pcre" ,pcre)
8046 ("pulseaudio" ,pulseaudio)
8047 ("sdl" ,sdl2)
8048 ("udev" ,eudev)
8049 ("zlib" ,zlib)))
8050 (synopsis "Advanced rhythm game designed for both home and arcade use")
8051 (description "StepMania is a dance and rhythm game. It features 3D
8052 graphics, keyboard and dance pad support, and an editor for creating your own
8053 steps.
8054
8055 This package provides the core application, but no song is shipped. You need
8056 to download and install them in @file{$HOME/.stepmania-X.Y/Songs} directory.")
8057 (home-page "https://www.stepmania.com")
8058 (license license:expat)))
8059
8060 (define-public btanks
8061 (package
8062 (name "btanks")
8063 (version "0.9.8083")
8064 (source
8065 (origin
8066 (method url-fetch)
8067 (uri (string-append "mirror://sourceforge/btanks/btanks-source/"
8068 "btanks-" version ".tar.bz2"))
8069 (sha256
8070 (base32
8071 "0ha35kxc8xlbg74wsrbapfgxvcrwy6psjkqi7c6adxs55dmcxliz"))))
8072 (build-system scons-build-system)
8073 (arguments
8074 `(#:tests? #f ; there are none
8075 #:scons ,scons-python2
8076 #:scons-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
8077 #:phases
8078 (modify-phases %standard-phases
8079 (add-after 'unpack 'replace-removed-scons-syntax
8080 (lambda _
8081 (substitute* "SConstruct"
8082 (("Options") "Variables")
8083 (("opts.Add\\(BoolOption.*") "opts.Add('gcc_visibility', 'gcc visibility', 'true')")
8084 (("opts.Add\\(EnumOption.*") "opts.Add('mode', 'build mode', 'release')"))
8085 #t))
8086 (add-after 'set-paths 'set-sdl-paths
8087 (lambda* (#:key inputs #:allow-other-keys)
8088 (setenv "CPATH"
8089 (string-append (assoc-ref inputs "sdl")
8090 "/include/SDL:"
8091 (or (getenv "CPATH") "")))
8092 #t))
8093 (add-after 'unpack 'fix-compilation-errors
8094 (lambda _
8095 (substitute* "mrt/base_file.h"
8096 (("#include <string>" m)
8097 (string-append m "\n#include <sys/types.h>")))
8098 (substitute* '("engine/sl08/sl08.h"
8099 "engine/sl08/sl08.py")
8100 (("signal = NULL") "signal = 0")
8101 (("object\\(NULL\\)") "object(0)")
8102 (("func\\(NULL\\)") "func(0)")
8103 ((" connect\\(signal_ref\\)")
8104 " this->connect(signal_ref)"))
8105 (substitute* "math/range_list.h"
8106 ((" lower_bound\\(value\\)")
8107 " this->lower_bound(value)")
8108 ((" erase\\(i\\)")
8109 " this->erase(i)"))
8110 (substitute* "clunk/source.cpp"
8111 (("using namespace clunk" m)
8112 (string-append "# define pow10f(x) exp10f(x)\n" m)))
8113 #t))
8114 (add-after 'unpack 'find-lua
8115 (lambda _
8116 (substitute* "engine/SConscript"
8117 (("lua5.1") "lua-5.1")
8118 (("bt_libs.append\\(lua\\)")
8119 "bt_libs.append(\"lua\")"))
8120 #t)))))
8121 (inputs
8122 `(("expat" ,expat)
8123 ("glu" ,glu)
8124 ("libsmpeg" ,libsmpeg-with-sdl1)
8125 ("libvorbis" ,libvorbis)
8126 ("lua51" ,lua-5.1)
8127 ("sdl" ,(sdl-union (list sdl
8128 sdl-mixer
8129 sdl-image
8130 sdl-ttf)))
8131 ("zlib" ,zlib)))
8132 (native-inputs
8133 `(("pkg-config" ,pkg-config)
8134 ("zip" ,zip)))
8135 (home-page "http://btanks.sourceforge.net")
8136 (synopsis "Multiplayer tank battle game")
8137 (description "Battle Tanks (also known as \"btanks\") is a funny battle
8138 game, where you can choose one of three vehicles and eliminate your enemy
8139 using the whole arsenal of weapons. It has original cartoon-like graphics and
8140 cool music, it’s fun and dynamic, it has several network modes for deathmatch
8141 and cooperative.")
8142 ;; Some parts (e.g. mrt/b64.cpp) are LGPLv2.1+, but the whole package is
8143 ;; released under GPLv2 or later. It comes with extra exceptions for the
8144 ;; developers.
8145 (license (list license:gpl2+ license:lgpl2.1+))))
8146
8147 (define-public slingshot
8148 (package
8149 (name "slingshot")
8150 (version "0.9")
8151 (source
8152 (origin
8153 (method git-fetch)
8154 (uri (git-reference
8155 (url "https://github.com/ryanakca/slingshot")
8156 (commit version)))
8157 (file-name (git-file-name name version))
8158 (sha256
8159 (base32
8160 "19m8b6nsi786bc6gmkp185mwri3r5y249gjmqd5qsc23nnfhgrs1"))))
8161 (build-system python-build-system)
8162 (arguments
8163 `(#:python ,python-2))
8164 (inputs
8165 `(("python-pygame" ,python2-pygame)))
8166 (home-page "https://github.com/ryanakca/slingshot")
8167 (synopsis "Simple 2D shooting strategy game set in space")
8168 (description "Slingshot is a two-dimensional strategy game where two
8169 players attempt to shoot one another through a section of space populated by
8170 planets. The main feature of the game is that the shots, once fired, are
8171 affected by the gravity of the planets.")
8172 (license license:gpl2+)))
8173
8174 (define-public 4dtris
8175 (package
8176 (name "4dtris")
8177 (version "0.4.3")
8178 (source
8179 (origin
8180 (method url-fetch)
8181 (uri (string-append "https://launchpad.net/4dtris/"
8182 (version-major+minor version)
8183 "/" version "/+download/4dtris_"
8184 version ".orig.tar.gz"))
8185 (sha256
8186 (base32
8187 "1nfkhcm0l89jyw8yr65na97g4l385zhjf7whkyg47c3v5sdqq2g7"))))
8188 (build-system gnu-build-system)
8189 (arguments
8190 `(#:phases
8191 (modify-phases %standard-phases
8192 (add-after 'unpack 'fix-install-directories
8193 (lambda* (#:key outputs #:allow-other-keys)
8194 (let ((out (assoc-ref outputs "out")))
8195 (substitute* "Makefile.in"
8196 (("bindir = /usr/games")
8197 (string-append "bindir = " out "/bin"))
8198 (("/usr/share/applications")
8199 (string-append out "/share/applications"))
8200 (("/usr/share/games/4dtris")
8201 (string-append out "/share/4dtris"))))
8202 #t))
8203 (add-after 'set-paths 'set-sdl-paths
8204 (lambda* (#:key inputs #:allow-other-keys)
8205 (setenv "CPATH"
8206 (string-append (assoc-ref inputs "sdl")
8207 "/include/SDL:"
8208 (or (getenv "CPATH") "")))
8209 #t)))))
8210 (inputs
8211 `(("fontconfig" ,fontconfig)
8212 ("freeglut" ,freeglut)
8213 ("sdl" ,(sdl-union (list sdl sdl-ttf)))))
8214 (home-page "https://launchpad.net/4dtris/")
8215 (synopsis "4D Tetris")
8216 (description "4D-TRIS is an alteration of the well-known Tetris game. The
8217 game field is extended to 4D space, which has to filled up by the gamer with
8218 4D hyper cubes.")
8219 (license license:gpl3)))
8220
8221 (define-public arx-libertatis
8222 (package
8223 (name "arx-libertatis")
8224 (version "1.1.2")
8225 (source
8226 (origin
8227 (method url-fetch)
8228 (uri (string-append "http://arx-libertatis.org/files/arx-libertatis-"
8229 version ".tar.xz"))
8230 (sha256
8231 (base32
8232 "0hjfxlsmp8wwqr06snv2dlly2s79ra0d9aw49gkp6rn8m50b9bc2"))))
8233 (build-system cmake-build-system)
8234 (outputs '("out" "installer"))
8235 (arguments
8236 '(#:tests? #f ; No tests.
8237 #:phases
8238 (modify-phases %standard-phases
8239 (add-after 'unpack 'fix-install-helper-paths
8240 (lambda* (#:key inputs #:allow-other-keys)
8241 (let ((p7zip (assoc-ref inputs "p7zip"))
8242 (innoextract (assoc-ref inputs "innoextract"))
8243 (wget (assoc-ref inputs "wget"))
8244 (zenity (assoc-ref inputs "zenity")))
8245 (substitute* "scripts/arx-install-data"
8246 (("have innoextract")
8247 (string-append "have " innoextract "/bin/innoextract"))
8248 (("then innoextract")
8249 (string-append "then " innoextract "/bin/innoextract"))
8250 (("else innoextract")
8251 (string-append "else " innoextract "/bin/innoextract"))
8252 (("for _extract_zip_sz in 7za 7z")
8253 (string-append "for _extract_zip_sz in " p7zip "/bin/7za"))
8254 (("else if have 7z")
8255 (string-append "else if have " p7zip "/bin/7za"))
8256 (("7z x -tiso")
8257 (string-append p7zip "/bin/7z x -tiso"))
8258 (("if have wget")
8259 (string-append "if have " wget "/bin/wget"))
8260 (("wget -O")
8261 (string-append wget "/bin/wget -O"))
8262 (("for backend in \\$preferred zenity")
8263 (string-append "for backend in $preferred " zenity "/bin/zenity"))
8264 (("zenity +--title")
8265 (string-append zenity "/bin/zenity --title"))
8266 (("^zenity\\)")
8267 (string-append zenity "/bin/zenity)"))))
8268 #t))
8269 (add-after 'install 'move-installer
8270 (lambda* (#:key outputs #:allow-other-keys)
8271 (let ((out (assoc-ref outputs "out"))
8272 (installer (assoc-ref outputs "installer")))
8273 (mkdir-p (string-append installer "/bin"))
8274 (rename-file (string-append out "/bin/arx-install-data")
8275 (string-append installer "/bin/arx-install-data"))))))))
8276 (inputs
8277 `(("sdl" ,sdl) ; Switch to sdl2 in >1.1.2.
8278 ("mesa" ,mesa) ; Switch to libepoxy in >1.1.2.
8279 ("glew" ,glew)
8280 ("openal" ,openal)
8281 ("zlib" ,zlib)
8282 ("boost" ,boost)
8283 ("glm" ,glm)
8284 ("freetype" ,freetype)
8285 ;; The following are only needed by the arx-install-data script.
8286 ("p7zip" ,p7zip) ; Install-helper uses it to extract ISO and .cab archives.
8287 ("zenity" ,zenity) ; GUI for install-helper.
8288 ("wget" ,wget) ; Used by the install-helper to download the patch.
8289 ;; The install-helper needs it to extract the patch.
8290 ("innoextract" ,innoextract)))
8291 (home-page "https://arx-libertatis.org/")
8292 (synopsis "Port of Arx Fatalis, a first-person role-playing game")
8293 (description "Arx Libertatis is a cross-platform port of Arx Fatalis, a 2002
8294 first-person role-playing game / dungeon crawler developed by Arkane Studios.
8295 This port however does not include the game data, so you need to obtain a copy
8296 of the original Arx Fatalis or its demo to play Arx Libertatis. Arx Fatalis
8297 features crafting, melee and ranged combat, as well as a unique casting system
8298 where the player draws runes in real time to effect the desired spell.")
8299 (license license:gpl3+)))
8300
8301 (define-public edgar
8302 (package
8303 (name "edgar")
8304 (version "1.33")
8305 (source
8306 (origin
8307 (method url-fetch)
8308 (uri
8309 (string-append "https://github.com/riksweeney/edgar/releases/download/"
8310 version "/edgar-" version "-1.tar.gz"))
8311 (sha256
8312 (base32 "1mbx7dvizdca4g1blcv3bdh6yxd13k47rkya4rdzg0nvvz24m175"))))
8313 (build-system gnu-build-system)
8314 (arguments '(#:tests? #f ; there are no tests
8315 #:make-flags
8316 (list "CC=gcc"
8317 (string-append "PREFIX=" (assoc-ref %outputs "out"))
8318 (string-append "BIN_DIR=" (assoc-ref %outputs "out") "/bin/"))
8319 #:phases
8320 (modify-phases %standard-phases
8321 (delete 'configure)
8322 (add-before 'build 'fix-env
8323 (lambda* (#:key inputs #:allow-other-keys)
8324 (setenv "CPATH"
8325 (string-append (assoc-ref inputs "sdl2-union")
8326 "/include/SDL2:"
8327 (or (getenv "CPATH") "")))
8328 #t)))))
8329 (inputs
8330 `(("sdl2-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
8331 ("zlib" ,zlib)))
8332 (native-inputs
8333 `(("pkg-config" ,pkg-config)
8334 ("autoconf" ,autoconf)
8335 ("automake" ,automake)
8336 ("gnu-gettext" ,gettext-minimal)
8337 ("libtool" ,libtool)
8338 ("which" ,which)))
8339 (synopsis "2d action platformer game")
8340 (description "The Legend of Edgar is a 2D platform game with a persistent world.
8341 When Edgar's father fails to return home after venturing out one dark and stormy night,
8342 Edgar fears the worst: he has been captured by the evil sorcerer who lives in
8343 a fortress beyond the forbidden swamp.")
8344 (home-page "https://www.parallelrealities.co.uk/games/edgar/")
8345 (license license:gpl2+)))
8346
8347 (define-public openclonk
8348 (package
8349 (name "openclonk")
8350 (version "8.1")
8351 (source (origin
8352 (method url-fetch)
8353 (uri (string-append
8354 "https://www.openclonk.org/builds/release/" version "/"
8355 "openclonk-" version "-src.tar.bz2"))
8356 (sha256
8357 (base32
8358 "0imkqjp8lww5p0cnqf4k4mb2v682mnsas63qmiz17rspakr7fxik"))))
8359 (build-system cmake-build-system)
8360 (arguments
8361 `(#:configure-flags '("-DAudio_TK=OpenAL")
8362 #:test-target "tests"
8363 #:phases
8364 (modify-phases %standard-phases
8365 (add-after 'unpack 'prepare-gmock
8366 (lambda* (#:key inputs #:allow-other-keys)
8367 (mkdir "gmock")
8368 (copy-recursively (assoc-ref inputs "googlemock") "gmock")
8369 (substitute* "tests/CMakeLists.txt"
8370 (("/usr/src/gmock")
8371 (string-append (getcwd) "/gmock/googlemock"))
8372 (("/usr/src/gtest")
8373 (string-append (getcwd) "/gmock/googletest"))
8374 (("PATH_SUFFIXES \"src\" \"gtest\"")
8375 "PATH_SUFFIXES \"src\""))
8376 #t))
8377 (add-after 'unpack 'adjust-backward-cpp-includes
8378 (lambda _
8379 ;; XXX: The bundled backward-cpp exports a CMake "interface"
8380 ;; that includes external libraries such as libdl from glibc.
8381 ;; By default, CMake interface includes are treated as "system
8382 ;; headers", and GCC behaves poorly when glibc is passed as a
8383 ;; system header (causing #include_next failures).
8384
8385 ;; Here we prevent targets that consume the Backward::Backward
8386 ;; interface from treating it as "system includes".
8387 (substitute* "CMakeLists.txt"
8388 (("target_link_libraries\\((.+) Backward::Backward\\)" all target)
8389 (string-append "set_property(TARGET " target " PROPERTY "
8390 "NO_SYSTEM_FROM_IMPORTED true)\n"
8391 all)))
8392 #t))
8393 (add-after 'unpack 'add-libiberty
8394 ;; Build fails upon linking executables without this.
8395 (lambda _
8396 (substitute* "thirdparty/backward-cpp/BackwardConfig.cmake"
8397 (("set\\(LIBBFD_LIBRARIES (.*?)\\)" _ libraries)
8398 (string-append "set(LIBBFD_LIBRARIES " libraries " iberty)")))
8399 #t))
8400 (add-after 'add-libiberty 'lax-freealut-requirement
8401 ;; TODO: We provide freealut 1.1.0, but pkg-config somehow detects
8402 ;; it as 1.0.1. Force minimal version.
8403 (lambda _
8404 (substitute* "cmake/FindAudio.cmake"
8405 (("freealut>=1.1.0") "freealut>=1.0.1"))
8406 #t))
8407 (add-after 'lax-freealut-requirement 'fix-directories
8408 ;; Prefer "$out/share/openclonk" over
8409 ;; "$out/share/games/openclonk". Also install "openclonk"
8410 ;; binary in "bin/", not "games/".
8411 (lambda _
8412 (substitute* "CMakeLists.txt"
8413 (("share/games/openclonk") "share/openclonk")
8414 (("TARGETS openclonk DESTINATION games")
8415 "TARGETS openclonk DESTINATION bin"))
8416 #t)))))
8417 (native-inputs
8418 `(("googlemock" ,(package-source googletest))
8419 ("googletest" ,googletest)
8420 ("pkg-config" ,pkg-config)))
8421 (inputs
8422 `(("freealut" ,freealut)
8423 ("freetype" ,freetype)
8424 ("glew" ,glew)
8425 ("libiberty" ,libiberty)
8426 ("libjpeg" ,libjpeg-turbo)
8427 ("libogg" ,libogg)
8428 ("libpng" ,libpng)
8429 ("libvorbis" ,libvorbis)
8430 ("libxrandr" ,libxrandr)
8431 ("mesa" ,mesa)
8432 ("miniupnpc" ,miniupnpc)
8433 ("openal" ,openal)
8434 ("qtbase" ,qtbase)
8435 ("readline" ,readline)
8436 ("sdl" ,sdl2)
8437 ("tinyxml" ,tinyxml)
8438 ("zlib" ,zlib)))
8439 (home-page "https://www.openclonk.org/")
8440 (synopsis
8441 "Multiplayer action game where you control small and nimble humanoids")
8442 (description "OpenClonk is a multiplayer action/tactics/skill game. It is
8443 often referred to as a mixture of The Settlers and Worms. In a simple 2D
8444 antfarm-style landscape, the player controls a crew of Clonks, small but
8445 robust humanoid beings. The game encourages free play but the normal goal is
8446 to either exploit valuable resources from the earth by building a mine or
8447 fight each other on an arena-like map.")
8448 ;; Software as a whole is licensed under ISC, artwork under CC-BY.
8449 (license (list license:isc license:cc-by3.0))))
8450
8451 (define-public flare-engine
8452 (package
8453 (name "flare-engine")
8454 (version "1.11")
8455 (source (origin
8456 (method git-fetch)
8457 (uri (git-reference
8458 (url "https://github.com/flareteam/flare-engine")
8459 (commit (string-append "v" version))))
8460 (file-name (git-file-name name version))
8461 (sha256
8462 (base32
8463 "1mqr1s72p5bdh4kq2a8hg72dk8lwnddicjnd2cdp1sbfa9lmjym8"))))
8464 (build-system cmake-build-system)
8465 (arguments
8466 `(#:tests? #f ;no test
8467 #:configure-flags '("-DBINDIR=bin" "-DDATADIR=share/flare")))
8468 (inputs
8469 `(("hicolor-icon-theme" ,hicolor-icon-theme)
8470 ("python" ,python-wrapper)
8471 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
8472 (home-page "http://www.flarerpg.org/")
8473 (synopsis "Action Roleplaying Engine")
8474 (description "Flare (Free Libre Action Roleplaying Engine) is a simple
8475 game engine built to handle a very specific kind of game: single-player 2D
8476 action RPGs.")
8477 (license license:gpl3+)))
8478
8479 (define-public flare-game
8480 (package
8481 (name "flare-game")
8482 (version "1.11")
8483 (source (origin
8484 (method git-fetch)
8485 (uri (git-reference
8486 (url "https://github.com/flareteam/flare-game")
8487 (commit (string-append "v" version))))
8488 (file-name (git-file-name name version))
8489 (sha256
8490 (base32
8491 "0bd5g7sd89a9176ilr408hdqzdfv4j7wj0idd685c1n6s01c3h6p"))))
8492 (build-system cmake-build-system)
8493 (arguments
8494 `(#:tests? #f ;no test
8495 #:configure-flags '("-DDATADIR=share/flare")
8496 #:phases
8497 (modify-phases %standard-phases
8498 ;; Flare expects the mods to be located in the same folder.
8499 ;; Yet, "default" mod is in the engine, whereas the others
8500 ;; are in the current package. Merge everything here with
8501 ;; a symlink.
8502 (add-after 'install 'add-default-mod
8503 (lambda* (#:key inputs outputs #:allow-other-keys)
8504 (let* ((out (assoc-ref outputs "out"))
8505 (mods (string-append out "/share/flare/mods")))
8506 (with-directory-excursion mods
8507 (symlink (string-append (assoc-ref inputs "flare-engine")
8508 "/share/flare/mods/default")
8509 "default")))
8510 #t))
8511 (add-after 'install 'install-executable
8512 ;; The package only provides assets for the game, the
8513 ;; executable coming from "flare-engine". Since more than
8514 ;; one game may use the engine, we create a new executable,
8515 ;; "flare-game", which launches the engine with appropriate
8516 ;; parameters.
8517 (lambda* (#:key inputs outputs #:allow-other-keys)
8518 (let* ((out (assoc-ref outputs "out"))
8519 (bash (string-append (assoc-ref inputs "bash")
8520 "/bin/bash"))
8521 (flare (string-append (assoc-ref inputs "flare-engine")
8522 "/bin/flare"))
8523 (script (string-append out "/bin/flare-game")))
8524 (mkdir-p (dirname script))
8525 (call-with-output-file script
8526 (lambda (port)
8527 (format port
8528 "#!~a
8529 exec ~a --data-path=~a/share/flare --mods=empyrean_campaign~%"
8530 bash
8531 flare
8532 out)))
8533 (chmod script #o755))
8534 #t)))))
8535 (inputs
8536 `(("flare-engine" ,flare-engine)))
8537 (home-page "http://www.flarerpg.org/")
8538 (synopsis "Fantasy action RPG using the FLARE engine")
8539 (description "Flare is a single-player 2D action RPG with
8540 fast-paced action and a dark fantasy style.")
8541 (license license:cc-by-sa3.0)))
8542
8543 (define-public meritous
8544 (package
8545 (name "meritous")
8546 (version "1.5")
8547 (source (origin
8548 (method git-fetch)
8549 (uri (git-reference
8550 (url "https://gitlab.com/meritous/meritous.git")
8551 (commit (string-append "v" version))))
8552 (file-name (git-file-name name version))
8553 (sha256
8554 (base32
8555 "0n5jm4g0arjllgqmd2crv8h02i6hs3hlh1zyc7ng7yfpg1mbd8p8"))))
8556 (build-system gnu-build-system)
8557 (arguments
8558 `(#:tests? #f ;no test
8559 #:make-flags
8560 (list "CC=gcc"
8561 (string-append "prefix=" (assoc-ref %outputs "out")))
8562 #:phases
8563 (modify-phases %standard-phases
8564 (delete 'configure)
8565 (add-after 'unpack 'fix-sdl-path
8566 ;; XXX: For some reason, `sdl-config' reports stand-alone SDL
8567 ;; directory, not SDL-union provided as an input to the package.
8568 ;; We force the latter with "--prefix=" option.
8569 (lambda* (#:key inputs #:allow-other-keys)
8570 (substitute* "Makefile"
8571 (("sdl-config" command)
8572 (string-append command " --prefix=" (assoc-ref inputs "sdl"))))
8573 #t))
8574 (add-after 'unpack 'fix-crash
8575 ;; XXX: Songs are not present in the repository, due to licensing
8576 ;; issues. Yet, the game tries to load them, and, since it cannot
8577 ;; find them, crashes. Users cannot add them back, the store being
8578 ;; read-only, so we turn off background music altogether.
8579 (lambda _
8580 (substitute* "src/audio.c"
8581 (("PlayBackgroundMusic\\(new_track\\);" all)
8582 (string-append "// " all)))
8583 #t)))))
8584 (native-inputs
8585 `(("intltool" ,intltool)))
8586 (inputs
8587 `(("sdl" ,(sdl-union (list sdl sdl-image sdl-mixer)))
8588 ("zlib" ,zlib)))
8589 (home-page "https://gitlab.com/meritous/meritous")
8590 (synopsis "Action-adventure dungeon crawl game")
8591 (description "Far below the surface of the planet is a place of limitless
8592 power. Those that seek to control such a utopia will soon bring an end to
8593 themselves. Seeking an end to the troubles that plague him, PSI user Merit
8594 journeys into the hallowed Orcus Dome in search of answers.
8595
8596 Meritous is a action-adventure game with simple controls but a challenge to
8597 find a balance of power versus recovery time during real-time battles. Set in
8598 a procedurally generated world, the player can explore thousands of rooms in
8599 search of powerful artifacts, tools to help them, and to eventually free the
8600 Orcus Dome from evil.")
8601 (license license:gpl3+)))
8602
8603 (define-public marble-marcher
8604 (let ((commit "e580460a0c3826f9b28ab404607942a8ecb625d7")
8605 (revision "1"))
8606 (package
8607 (name "marble-marcher")
8608 (version (git-version "0" revision commit))
8609 (source (origin
8610 (method git-fetch)
8611 (uri (git-reference
8612 (url "https://github.com/HackerPoet/MarbleMarcher")
8613 (commit commit)))
8614 (file-name (git-file-name name version))
8615 (sha256
8616 (base32
8617 "0jjv832hl1v170n6gryp2sr3lgqndi9ab841qvgqk68bks8701mx"))))
8618 (build-system cmake-build-system)
8619 (arguments
8620 `(#:tests? #f ; there are none
8621 #:phases
8622 (modify-phases %standard-phases
8623 (add-after 'unpack 'embed-asset-directory
8624 (lambda* (#:key outputs #:allow-other-keys)
8625 (let ((assets (string-append (assoc-ref outputs "out")
8626 "/share/marble-marcher/assets/")))
8627 ;; Some of the files we're patching are
8628 ;; ISO-8859-1-encoded, so choose it as the default
8629 ;; encoding so the byte encoding is preserved.
8630 (with-fluids ((%default-port-encoding #f))
8631 (substitute* "src/Resource.rc"
8632 (("../assets/icon.ico")
8633 (string-append assets "icon.ico")))
8634 (substitute* "src/Res.h"
8635 (("assets/") assets))))
8636 #t))
8637 (replace 'install
8638 (lambda* (#:key outputs #:allow-other-keys)
8639 (let* ((out (assoc-ref outputs "out"))
8640 (assets (string-append out "/share/marble-marcher/assets"))
8641 (bin (string-append out "/bin/")))
8642 (mkdir-p bin)
8643 (mkdir-p assets)
8644 (copy-recursively "../source/assets" assets)
8645 (install-file "MarbleMarcher" bin))
8646 #t)))))
8647 (inputs
8648 `(("eigen" ,eigen)
8649 ("mesa" ,mesa)
8650 ("sfml" ,sfml)))
8651 (native-inputs
8652 `(("pkg-config" ,pkg-config)))
8653 (home-page "https://codeparade.itch.io/marblemarcher")
8654 (synopsis "Guide a marble across fractal landscapes")
8655 (description "Marble Marcher is a video game that uses a fractal physics
8656 engine and fully procedural rendering to produce beautiful and unique
8657 gameplay. The game is played on the surface of evolving fractals. The goal
8658 of the game is to get your marble to the flag as quickly as possible. But be
8659 careful not to fall off the level or get crushed by the fractal! There are 24
8660 levels to unlock.")
8661 ;; Code is under GPLv2+, assets are under CC-BY-SA 3.0 and OFL 1.1.
8662 (license (list license:gpl2+
8663 license:silofl1.1
8664 license:cc-by-sa3.0)))))
8665
8666 ;; This must be updated together with flightgear.
8667 (define simgear
8668 (package
8669 (name "simgear")
8670 (version "2018.3.5")
8671 (source
8672 (origin
8673 (method url-fetch)
8674 (uri (string-append "mirror://sourceforge/flightgear/release-"
8675 (version-major+minor version) "/"
8676 "simgear-" version ".tar.bz2"))
8677 (sha256
8678 (base32 "1vkqm66r1205k3hdjmx5wmx5kvmsb0dgfzrs8n5gqnxj8szs42dl"))))
8679 (build-system cmake-build-system)
8680 (arguments
8681 `(#:phases
8682 (modify-phases %standard-phases
8683 (replace 'check
8684 (lambda _
8685 ;; Skip tests that require internet access.
8686 (invoke "ctest" "-E" "(http|dns)"))))))
8687 (inputs
8688 `(("boost" ,boost-for-mysql) ; fails with 1.69
8689 ("curl" ,curl)
8690 ("expat" ,expat)
8691 ("mesa" ,mesa)
8692 ("openal" ,openal)
8693 ("openscenegraph" ,openscenegraph-3.4)
8694 ("zlib" ,zlib)))
8695 (home-page "https://home.flightgear.org/")
8696 (synopsis "Libraries for 3D simulations and games")
8697 (description "SimGear is a set of libraries designed to be used as
8698 building blocks for quickly assembling 3D simulations, games, and
8699 visualization applications. SimGear is developed by the FlightGear project
8700 and also provides the base for the FlightGear Flight Simulator.")
8701 (license license:lgpl2.0+)))
8702
8703 (define-public flightgear
8704 (package
8705 (name "flightgear")
8706 (version (package-version simgear))
8707 (source
8708 (origin
8709 (method url-fetch)
8710 (uri (string-append "mirror://sourceforge/flightgear/release-"
8711 (version-major+minor version) "/"
8712 "flightgear-" version ".tar.bz2"))
8713 (sha256
8714 (base32 "0ya3vb539kwi1qrifqhsj5j3k4w6s06hrllp2vdzxf6id7cgf0hc"))
8715 (modules '((guix build utils)))
8716 (snippet
8717 '(begin
8718 ;; There are some bundled libraries.
8719 (for-each delete-file-recursively
8720 '("3rdparty/sqlite3/"))
8721 #t))))
8722 (build-system cmake-build-system)
8723 (arguments
8724 `(#:configure-flags
8725 (list "-DSYSTEM_SQLITE=ON"
8726 (string-append "-DFG_DATA_DIR="
8727 (assoc-ref %outputs "out")
8728 "/share/flightgear"))
8729 ;; TODO: test cannot be run because the "run_test_suite" executable
8730 ;; does not seem to be built.
8731 #:tests? #f
8732 #:phases
8733 (modify-phases %standard-phases
8734 (add-after 'install 'wrap-executable
8735 (lambda* (#:key inputs outputs #:allow-other-keys)
8736 (let ((out (assoc-ref outputs "out")))
8737 (wrap-program (string-append out "/bin/fgfs")
8738 `("QT_PLUGIN_PATH" ":" prefix
8739 ,(map (lambda (label)
8740 (string-append (assoc-ref inputs label)
8741 "/lib/qt5/plugins"))
8742 '("qtbase" "qtdeclarative" "qtsvg")))
8743 `("QML2_IMPORT_PATH" ":" prefix
8744 ,(map (lambda (label)
8745 (string-append (assoc-ref inputs label)
8746 "/lib/qt5/qml"))
8747 '("qtdeclarative" "qtsvg"))))
8748 #t)))
8749 (add-after 'install 'install-data
8750 (lambda* (#:key inputs outputs #:allow-other-keys)
8751 (let ((share (string-append (assoc-ref outputs "out") "/share/flightgear")))
8752 (mkdir-p share)
8753 (with-directory-excursion share
8754 (invoke "tar" "xf" (assoc-ref inputs "flightgear-data")
8755 "--strip-components=1")))
8756 #t)))))
8757 (inputs
8758 `(("boost" ,boost-for-mysql) ; same as simgear
8759 ("dbus" ,dbus)
8760 ("eudev" ,eudev)
8761 ("freeglut" ,freeglut)
8762 ("freetype" ,freetype)
8763 ("glew" ,glew)
8764 ("libpng" ,libpng)
8765 ("openal" ,openal)
8766 ("openscenegraph" ,openscenegraph-3.4)
8767 ("plib" ,plib)
8768 ("qtbase" ,qtbase)
8769 ("qtdeclarative" ,qtdeclarative)
8770 ("qtsvg" ,qtsvg)
8771 ("simgear" ,simgear)
8772 ("speexdsp" ,speexdsp)
8773 ("sqlite" ,sqlite)
8774 ("zlib" ,zlib)))
8775 (native-inputs
8776 `(("cppunit" ,cppunit)
8777 ("pkg-config" ,pkg-config)
8778 ("qttools" ,qttools)
8779 ("flightgear-data"
8780 ,(origin
8781 (method url-fetch)
8782 (uri (string-append "mirror://sourceforge/flightgear/release-"
8783 (version-major+minor version) "/"
8784 "FlightGear-" version "-data.tar.bz2"))
8785 (sha256
8786 (base32
8787 "04fv9za5zlyxlyfh6jx78y42l3jazvzl9dq2y6rzxqlcc9g5swhk"))))))
8788 (home-page "https://home.flightgear.org/")
8789 (synopsis "Flight simulator")
8790 (description "The goal of the FlightGear project is to create a
8791 sophisticated flight simulator framework for use in research or academic
8792 environments, pilot training, as an industry engineering tool, for DIY-ers to
8793 pursue their favorite interesting flight simulation idea, and last but
8794 certainly not least as a fun, realistic, and challenging desktop flight
8795 simulator.")
8796 (license license:gpl2+)))
8797
8798 (define-public jumpnbump
8799 (package
8800 (name "jumpnbump")
8801 (version "1.61")
8802 (source (origin
8803 (method git-fetch)
8804 (uri (git-reference
8805 (url "https://gitlab.com/LibreGames/jumpnbump.git")
8806 (commit version)))
8807 (file-name (git-file-name name version))
8808 (sha256
8809 (base32
8810 "12lwl5sl5n009nb83r8l4lakb9286csqdf1ynpmwwydy17giqsdp"))))
8811 (build-system gnu-build-system)
8812 (arguments
8813 `(#:make-flags
8814 (list "CC=gcc"
8815 (string-append "PREFIX=" (assoc-ref %outputs "out")))
8816 #:tests? #f ;no test
8817 #:phases
8818 (modify-phases %standard-phases
8819 (delete 'configure) ;no configure script
8820 (add-after 'unpack 'fix-sdl-path
8821 ;; XXX: For some reason, `sdl2-config' reports stand-alone SDL
8822 ;; directory, not SDL-union provided as an input to the package.
8823 ;; We force the latter with "--prefix=" option.
8824 (lambda* (#:key inputs #:allow-other-keys)
8825 (substitute* "Makefile"
8826 (("sdl2-config" command)
8827 (string-append command " --prefix=" (assoc-ref inputs "sdl"))))
8828 #t)))))
8829 (inputs
8830 `(("bzip2" ,bzip2)
8831 ("sdl" ,(sdl-union (list sdl2 sdl2-mixer sdl2-net)))
8832 ("zlib" ,zlib)))
8833 (native-inputs
8834 `(("gettext" ,gettext-minimal))) ;for msgfmt
8835 (home-page "https://gitlab.com/LibreGames/jumpnbump")
8836 (synopsis "Multiplayer platform game with bunnies")
8837 (description "You, as a bunny, have to jump on your opponents to make them
8838 explode. It is a true multiplayer game; you cannot play this alone. You can
8839 play with up to four players simultaneously. It has network support.")
8840 (license license:gpl2+)))
8841
8842 (define-public hedgewars
8843 (package
8844 (name "hedgewars")
8845 (version "1.0.0")
8846 (source (origin
8847 (method url-fetch)
8848 (uri (string-append "https://www.hedgewars.org/download/releases/"
8849 "hedgewars-src-" version ".tar.bz2"))
8850 (sha256
8851 (base32
8852 "0nqm9w02m0xkndlsj6ys3wr0ik8zc14zgilq7k6fwjrf3zk385i1"))))
8853 (build-system cmake-build-system)
8854 (arguments
8855 ;; XXX: Engine is built as Pascal source code, requiring Free Pascal
8856 ;; Compiler, which we haven't packaged yet. With the flag below, we use
8857 ;; a Pascal to C translator and Clang instead.
8858 `(#:configure-flags (list "-DBUILD_ENGINE_C=ON"
8859 "-Dhaskell_flags=-dynamic;-fPIC")
8860 #:phases
8861 (modify-phases %standard-phases
8862 (replace 'check
8863 (lambda _ (invoke "ctest")))
8864 (add-after 'install 'install-icon
8865 (lambda _
8866 ;; Install icon for the desktop file.
8867 (let* ((out (assoc-ref %outputs "out"))
8868 (icons (string-append out "/share/icons/hicolor/512x512/apps")))
8869 (with-directory-excursion (string-append "../hedgewars-src-" ,version)
8870 (install-file "misc/hedgewars.png" icons)))
8871 #t)))))
8872 (inputs
8873 `(("ffmpeg" ,ffmpeg)
8874 ("freeglut" ,freeglut)
8875 ("ghc-entropy" ,ghc-entropy)
8876 ("ghc-hslogger" ,ghc-hslogger)
8877 ("ghc-network" ,ghc-network)
8878 ("ghc-random" ,ghc-random)
8879 ("ghc-regex-tdfa" ,ghc-regex-tdfa)
8880 ("ghc-sandi" ,ghc-sandi)
8881 ("ghc-sha" ,ghc-sha)
8882 ("ghc-utf8-string" ,ghc-utf8-string)
8883 ("ghc-vector" ,ghc-vector)
8884 ("ghc-zlib" ,ghc-zlib)
8885 ("glew" ,glew)
8886 ("libpng" ,libpng)
8887 ("lua" ,lua-5.1)
8888 ("physfs" ,physfs)
8889 ("qtbase" ,qtbase)
8890 ("sdl" ,(sdl-union
8891 (list sdl2 sdl2-mixer sdl2-net sdl2-ttf sdl2-image)))))
8892 (native-inputs
8893 `(("clang" ,clang)
8894 ("ghc" ,ghc)
8895 ("pkg-config" ,pkg-config)
8896 ("qttools" ,qttools)))
8897 (home-page "https://hedgewars.org/")
8898 (synopsis "Turn-based artillery game featuring fighting hedgehogs")
8899 (description
8900 "Hedgewars is a turn based strategy, artillery, action and comedy game,
8901 featuring the antics of pink hedgehogs with attitude as they battle from the
8902 depths of hell to the depths of space.
8903
8904 As commander, it's your job to assemble your crack team of hedgehog soldiers
8905 and bring the war to your enemy.")
8906 ;; Software as a whole is licensed under GPL-2 terms. Artwork and
8907 ;; scripts are distributed under various terms.
8908 (license (list license:gpl2
8909 license:bsd-2 license:bsd-3 license:cc-by3.0 license:cc0
8910 license:expat license:fdl1.3+ license:public-domain
8911 license:zlib))))
8912
8913 (define-public harmonist
8914 (package
8915 (name "harmonist")
8916 (version "0.3.0")
8917 (source (origin
8918 (method git-fetch)
8919 (uri (git-reference
8920 (url "https://git.tuxfamily.org/harmonist/harmonist.git")
8921 (commit (string-append "v" version))))
8922 (file-name (git-file-name name version))
8923 (sha256
8924 (base32
8925 "146wiyanag0zqj6fhyll2sw6sydnnll8mgxhhqf9sjqsl2rx4s5r"))))
8926 (build-system go-build-system)
8927 (arguments
8928 '(#:import-path "git.tuxfamily.org/harmonist/harmonist"))
8929 (inputs
8930 `(("go-github.com-nsf-termbox-go" ,go-github.com-nsf-termbox-go)))
8931 (home-page "https://harmonist.tuxfamily.org/")
8932 (synopsis "Stealth coffee-break roguelike game")
8933 (description "Harmonist: Dayoriah Clan Infiltration is a stealth
8934 coffee-break roguelike game. The game has a heavy focus on tactical
8935 positioning, light and noise mechanisms, making use of various terrain types
8936 and cones of view for monsters. Aiming for a replayable streamlined experience,
8937 the game avoids complex inventory management and character building, relying
8938 on items and player adaptability for character progression.")
8939 (license license:isc)))
8940
8941 (define-public harmonist-tk
8942 (package
8943 (inherit harmonist)
8944 (name "harmonist-tk")
8945 (arguments
8946 (append
8947 (package-arguments harmonist)
8948 `(#:phases
8949 (modify-phases %standard-phases
8950 (replace 'build
8951 (lambda _
8952 (invoke "go" "install" "-v" "-x" "--tags" "tk"
8953 "git.tuxfamily.org/harmonist/harmonist")))
8954 (replace 'check
8955 (lambda _
8956 (invoke "go" "test" "--tags" "tk"
8957 "git.tuxfamily.org/harmonist/harmonist")))))))
8958 (inputs
8959 `(("go-github.com-nsf-gothic" ,go-github.com-nsf-gothic)))))
8960
8961 (define-public drascula
8962 (package
8963 (name "drascula")
8964 (version "1.0")
8965 (source (origin
8966 (method url-fetch)
8967 (uri (string-append "mirror://sourceforge/scummvm/extras/"
8968 "Drascula_%20The%20Vampire%20Strikes%20Back/"
8969 "drascula-" version ".zip"))
8970 (sha256
8971 (base32
8972 "1pj29rpb754sn6a56f8brfv6f2m1p5qgaqik7d68pfi2bb5zccdp"))))
8973 (build-system trivial-build-system)
8974 (arguments
8975 `(#:modules ((guix build utils))
8976 #:builder
8977 (begin
8978 (use-modules (guix build utils)
8979 (ice-9 match))
8980 (let* ((out (assoc-ref %outputs "out"))
8981 (share (string-append out "/share/drascula"))
8982 (scummvm (assoc-ref %build-inputs "scummvm")))
8983 ;; Install data.
8984 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
8985 "/bin/unzip"))
8986 (doc (string-append out "/share/doc/" ,name "-" ,version)))
8987 (for-each
8988 (lambda (input)
8989 (invoke unzip
8990 "-j"
8991 (assoc-ref %build-inputs input)
8992 "-x" "__MACOSX")
8993 ;; Every input provides "readme.txt", and we want to
8994 ;; preserve them all. Therefore we rename them first.
8995 (match input
8996 ("drascula-int"
8997 (rename-file "readme.txt" "readme-international.txt"))
8998 ("drascula-audio"
8999 (rename-file "readme.txt" "readme-audio.txt"))
9000 (_ #f))
9001 ;; Install documentation.
9002 (for-each (lambda (f) (install-file f doc))
9003 (find-files "." "\\.(txt|doc)$"))
9004 ;; Install data.
9005 (for-each (lambda (f) (install-file f share))
9006 (find-files "." "\\.(ogg|00[0-9])$")))
9007 '("drascula-audio" "drascula-int" "source")))
9008 ;; Create standalone executable.
9009 (let* ((bin (string-append out "/bin"))
9010 (executable (string-append bin "/drascula"))
9011 (bash (string-append (assoc-ref %build-inputs "bash")
9012 "/bin/bash")))
9013 (mkdir-p bin)
9014 (with-output-to-file executable
9015 (lambda ()
9016 (format #t "#!~a~%" bash)
9017 (format #t
9018 "exec ~a/bin/scummvm --path=~a drascula~%"
9019 scummvm share)))
9020 (chmod executable #o755))
9021 ;; Create desktop file. There is no dedicated icon for the
9022 ;; game, so we borrow SCUMMVM's.
9023 (let ((apps (string-append out "/share/applications")))
9024 (mkdir-p apps)
9025 (make-desktop-entry-file
9026 (string-append apps "/drascula.desktop")
9027 #:name "Drascula: The Vampire Strikes Back"
9028 #:generic-name "Drascula"
9029 #:exec (string-append out "/bin/drascula")
9030 #:icon (string-append scummvm "/share/icons/hicolor/scalable/apps/scummvm.svg")
9031 #:categories '("AdventureGame" "Game" "RolePlaying")
9032 #:keywords '("game" "adventure" "roleplaying" "2D" "fantasy")
9033 #:comment '((#f "Classic 2D point and click adventure game")
9034 ("de" "Klassisches 2D-Abenteuerspiel in Zeigen-und-Klicken-Manier")
9035 ("fr" "Jeu classique d'aventure pointer-et-cliquer en 2D")
9036 ("it" "Gioco classico di avventura punta e clicca 2D"))))
9037 #t))))
9038 (native-inputs
9039 `(("bash" ,bash)
9040 ("unzip" ,unzip)))
9041 (inputs
9042 `(("scummvm" ,scummvm)
9043 ("drascula-int"
9044 ,(let ((version "1.1"))
9045 (origin
9046 (method url-fetch)
9047 (uri (string-append "mirror://sourceforge/scummvm/extras/"
9048 "Drascula_%20The%20Vampire%20Strikes%20Back/"
9049 "drascula-int-" version ".zip"))
9050 (sha256
9051 (base32
9052 "12236i7blamal92p1i8dgp3nhp2yicics4whsl63v682bj999n14")))))
9053 ("drascula-audio"
9054 ,(let ((version "2.0"))
9055 (origin
9056 (method url-fetch)
9057 (uri (string-append "mirror://sourceforge/scummvm/extras/"
9058 "Drascula_%20The%20Vampire%20Strikes%20Back/"
9059 "drascula-audio-" version ".zip"))
9060 (sha256
9061 (base32
9062 "00g4izmsqzxb8ry1vhfx6jrygl58lvlij09nw01ds4zddsiznsky")))))))
9063 (home-page "https://www.scummvm.org")
9064 (synopsis "Classic 2D point and click adventure game")
9065 (description "Drascula: The Vampire Strikes Back is a classic humorous 2D
9066 point and click adventure game.
9067
9068 In Drascula you play the role of John Hacker, a British estate agent, that
9069 gets to meet a gorgeous blond girl who is kidnapped by the notorious vampire
9070 Count Drascula and embark on a fun yet dangerous quest to rescue her.
9071 Unfortunately, Hacker is not aware of Drascula's real ambitions: DOMINATING
9072 the World and demonstrating that he is even more evil than his brother Vlad.")
9073 ;; Drascula uses a BSD-like license.
9074 (license (license:non-copyleft "file:///readme.txt"))))
9075
9076 (define (make-lure-package name language hash)
9077 (package
9078 (name name)
9079 (version "1.1")
9080 (source
9081 (origin
9082 (method url-fetch)
9083 (uri (string-append
9084 "mirror://sourceforge/scummvm/extras/"
9085 "Lure%20of%20the%20Temptress/"
9086 name "-" version ".zip"))
9087 (sha256
9088 (base32 hash))))
9089 (build-system trivial-build-system)
9090 (arguments
9091 `(#:modules ((guix build utils))
9092 #:builder
9093 (begin
9094 (use-modules (guix build utils))
9095 (let* ((out (assoc-ref %outputs "out"))
9096 (share (string-append out "/share"))
9097 (data (string-append share "/" ,name "/" ,language))
9098 (apps (string-append share "/applications"))
9099 (bin (string-append out "/bin"))
9100 (executable (string-append bin "/" ,name))
9101 (scummvm (assoc-ref %build-inputs "scummvm")))
9102 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
9103 "/bin/unzip")))
9104 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
9105 (let ((doc (string-append share "/doc/" ,name "-" ,version)))
9106 (for-each (lambda (f) (install-file f doc))
9107 (find-files "." "\\.(txt|PDF|pdf)$")))
9108 (for-each (lambda (f) (install-file f data))
9109 (find-files "." "\\.(vga|VGA)$"))
9110 ;; Build the executable.
9111 (mkdir-p bin)
9112 (let ((bash (assoc-ref %build-inputs "bash")))
9113 (with-output-to-file executable
9114 (lambda ()
9115 (format #t "#!~a/bin/bash~%" bash)
9116 (format #t "exec ~a/bin/scummvm -q ~a -p ~a lure~%"
9117 scummvm ,language data))))
9118 (chmod executable #o755)
9119 ;; Create desktop file. There is no dedicated
9120 ;; icon for the game, so we borrow SCUMMVM's.
9121 (mkdir-p apps)
9122 (with-output-to-file (string-append apps "/" ,name ".desktop")
9123 (lambda _
9124 (format #t
9125 "[Desktop Entry]~@
9126 Name=Lure of the Temptress~@
9127 GenericName=Lure~@
9128 Exec=~a~@
9129 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
9130 Categories=AdventureGame;Game;RolePlaying;~@
9131 Keywords=game;adventure;roleplaying;2D,fantasy;~@
9132 Comment=Classic 2D point and click adventure game~@
9133 Comment[de]=klassisches 2D-Abenteuerspiel in Zeigen-und-Klicken-Manier~@
9134 Comment[fr]=Jeu classique d'aventure pointer-et-cliquer en 2D~@
9135 Comment[it]=Gioco classico di avventura punta e clicca 2D~@
9136 Type=Application~%"
9137 executable scummvm)))
9138 #t))))
9139 (native-inputs
9140 `(("unzip" ,unzip)))
9141 (inputs
9142 `(("bash" ,bash)
9143 ("scummvm" ,scummvm)))
9144 (home-page "https://www.scummvm.org")
9145 (synopsis "2D point and click fantasy adventure game")
9146 (description
9147 "Lure of the Temptress is a classic 2D point and click adventure game.
9148
9149 You are Diermot, an unwilling hero who'd prefer a quiet life, and are, to all
9150 intents and purposes, a good man. After decades of unrest the King has united
9151 the warring factions in his kingdom and all his lands are at peace, except
9152 a remote region around a town called Turnvale. A revolt has recently taken
9153 place in Turnvale, a revolt orchestrated by an apprentice sorceress called
9154 Selena, the titular temptress. The king calls together his finest horsemen
9155 and heads off (with you in tow) to Turnvale just to witness how hellish
9156 mercenary monsters called Skorl are invading the town.
9157
9158 The king's men are defeated, the king is killed and you fall of your horse and
9159 bang your head heavily on the ground. You have been *unconscious for a while
9160 when you realize that you are in a dingy cell guarded by a not so friendly
9161 Skorl. Maybe it would be an idea to try and escape...")
9162 (license (license:non-copyleft "file:///README"))))
9163
9164 (define-public lure
9165 (make-lure-package
9166 "lure" "en" "0201i70qcs1m797kvxjx3ygkhg6kcl5yf49sihba2ga8l52q45zk"))
9167
9168 (define-public lure-de
9169 (make-lure-package
9170 "lure-de" "de" "0sqq7h5llml6rv85x0bfv4bgzwhs4c82p4w4zmfcaab6cjlad0sy"))
9171
9172 (define-public lure-es
9173 (make-lure-package
9174 "lure-es" "es" "1dvv5znvlsakw6w5r16calv9jkgw27aymgybsf4q22lcmpxbj1lk"))
9175
9176 (define-public lure-fr
9177 (make-lure-package
9178 "lure-fr" "fr" "1y51jjb7f8023832g44vd1jsb6ni85586pi2n5hjg9qjk6gi90r9"))
9179
9180 (define-public lure-it
9181 (make-lure-package
9182 "lure-it" "it" "1ks6n39r1cllisrrh6pcr39swsdv7ng3gx5c47vaw71zzfr70hjj"))
9183
9184 (define (make-queen-package name file-prefix release language hash)
9185 (package
9186 (name name)
9187 (version release)
9188 (source
9189 (origin
9190 (method url-fetch)
9191 (uri (string-append "mirror://sourceforge/scummvm/extras/"
9192 "Flight%20of%20the%20Amazon%20Queen/"
9193 file-prefix release ".zip"))
9194 (sha256
9195 (base32 hash))))
9196 (build-system trivial-build-system)
9197 (arguments
9198 `(#:modules ((guix build utils))
9199 #:builder
9200 (begin
9201 (use-modules (guix build utils))
9202 (let* ((out (assoc-ref %outputs "out"))
9203 (share (string-append out "/share"))
9204 (data (string-append share "/" ,name))
9205 (apps (string-append share "/applications"))
9206 (bin (string-append out "/bin"))
9207 (executable (string-append bin "/" ,name))
9208 (scummvm (assoc-ref %build-inputs "scummvm")))
9209 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
9210 "/bin/unzip")))
9211 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
9212 (let ((doc (string-append share "/doc/" ,name "-" ,version)))
9213 (install-file "readme.txt" doc))
9214 (install-file "queen.1c" data)
9215 (mkdir-p bin)
9216 (let ((bash (assoc-ref %build-inputs "bash")))
9217 (with-output-to-file executable
9218 (lambda ()
9219 (format #t "#!~a/bin/bash~%" bash)
9220 (format #t "exec ~a/bin/scummvm -q fr -p ~a queen~%"
9221 scummvm data))))
9222 (chmod executable #o755)
9223 ;; Create desktop file. There is no dedicated
9224 ;; icon for the game, so we borrow SCUMMVM's.
9225 (mkdir-p apps)
9226 (with-output-to-file (string-append apps "/" ,name ".desktop")
9227 (lambda _
9228 (format #t
9229 "[Desktop Entry]~@
9230 Name=Flight of the Amazon Queen~@
9231 GenericName=Queen~@
9232 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~@
9233 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~@
9234 Type=Application~@
9235 Exec=~a~@
9236 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
9237 Categories=AdventureGame;Game;RolePlaying;~@
9238 Keywords=adventure;game;roleplaying;fantasy;~%"
9239 executable scummvm))))
9240 #t)))
9241 (native-inputs
9242 `(("unzip" ,unzip)))
9243 (inputs
9244 `(("bash" ,bash)
9245 ("scummvm" ,scummvm)))
9246 (home-page "https://www.scummvm.org/")
9247 (synopsis "Classic 2D point and click adventure game")
9248 (description "Flight of the Amazon Queen is a 2D point-and-click
9249 adventure game set in the 1940s.
9250
9251 You assume the role of Joe King, a pilot for hire who is given the job
9252 of flying Faye Russell (a famous movie star) into the Amazon jungle
9253 for a photo shoot. Of course, things never go according to plans.
9254 After an unfortunate turn of events they find themselves stranded in
9255 the heart of the Amazon jungle, where Joe will embark on a quest to
9256 rescue a kidnapped princess and in the process, discover the true
9257 sinister intentions of a suspiciously located Lederhosen company. In
9258 a rich 2D environment, Joe will cross paths with a variety of unlikely
9259 jungle inhabitants including, but not limited to, a tribe of Amazon
9260 women and 6-foot-tall pygmies.")
9261 (license (license:non-copyleft "file:///readme.txt"))))
9262
9263 (define-public queen
9264 (make-queen-package
9265 "queen" "FOTAQ_Talkie-" "1.1" "en"
9266 "1a6q71q1dl9vvw2qqsxk5h1sv0gaqy6236zr5905w2is01gdsp52"))
9267
9268 (define-public queen-de
9269 (make-queen-package
9270 "queen-de" "FOTAQ_Ger_talkie-" "1.0" "de"
9271 "13vn43x7214vyprlpqabvv71k890nff3d6fjscflr1ll7acjca3f"))
9272
9273 (define-public queen-fr
9274 (make-queen-package
9275 "queen-fr" "FOTAQ_Fr_Talkie_" "1.0" "fr"
9276 "0hq5g4qrkcwm2kn5i4kv4hijs9hi7bw9xl1vrwd1l69qqn30crwy"))
9277
9278 (define-public queen-it
9279 (make-queen-package
9280 "queen-it" "FOTAQ_It_Talkie_" "1.0" "it"
9281 "1h76y70lrpzfjkm53n4nr364nhyka54vbz9r7sadzyzl7c7ilv4d"))
9282
9283 (define-public sky
9284 (package
9285 (name "sky")
9286 (version "1.2") ;1.3 is floppy version
9287 (source
9288 (origin
9289 (method url-fetch)
9290 (uri (string-append "mirror://sourceforge/scummvm/extras/"
9291 "Beneath%20a%20Steel%20Sky/"
9292 "bass-cd-" version ".zip"))
9293 (sha256
9294 (base32 "14s5jz67kavm8l15gfm5xb7pbpn8azrv460mlxzzvdpa02a9n82k"))))
9295 (build-system trivial-build-system)
9296 (arguments
9297 `(#:modules ((guix build utils))
9298 #:builder
9299 (begin
9300 (use-modules (guix build utils))
9301 (let* ((out (assoc-ref %outputs "out"))
9302 (share (string-append out "/share"))
9303 (data (string-append share "/" ,name))
9304 (apps (string-append share "/applications"))
9305 (bin (string-append out "/bin"))
9306 (executable (string-append bin "/" ,name))
9307 (scummvm (assoc-ref %build-inputs "scummvm")))
9308 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
9309 "/bin/unzip")))
9310 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
9311 (let ((doc (string-append share "/doc/bass-" ,version)))
9312 (install-file "readme.txt" doc))
9313 (for-each (lambda (f) (install-file f data))
9314 (find-files "." "^sky\\."))
9315 ;; Build the executable.
9316 (mkdir-p bin)
9317 (let ((bash (assoc-ref %build-inputs "bash")))
9318 (with-output-to-file executable
9319 (lambda ()
9320 (format #t "#!~a/bin/bash~%" bash)
9321 (format #t "exec ~a/bin/scummvm -p ~a sky~%" scummvm data))))
9322 (chmod executable #o755)
9323 ;; Create desktop file. There is no dedicated
9324 ;; icon for the game, so we borrow SCUMMVM's.
9325 (mkdir-p apps)
9326 (with-output-to-file (string-append apps "/" ,name ".desktop")
9327 (lambda _
9328 (format #t
9329 "[Desktop Entry]~@
9330 Name=Beneath a Steel Sky~@
9331 GenericName=Bass~@
9332 Exec=~a~@
9333 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
9334 Categories=AdventureGame;Game;RolePlaying;~@
9335 Keywords=adventure;game;roleplaying;cyberpunk;~@
9336 Comment=A science-fiction adventure game set in a bleak post-apocalyptic vision of the future~@
9337 Comment[de]=Ein Science-Fiction-Abenteuerspiel \
9338 angesiedelt in einer düsteren, postapokalyptischen Vision der Zukunft~@
9339 Type=Application~%"
9340 executable scummvm)))
9341 #t))))
9342 (native-inputs
9343 `(("unzip" ,unzip)))
9344 (inputs
9345 `(("bash" ,bash)
9346 ("scummvm" ,scummvm)))
9347 (home-page "https://www.scummvm.org/")
9348 (synopsis "Classic 2D point and click science-fiction adventure game")
9349 (description
9350 "Beneath a Steel Sky is a science-fiction thriller set in a bleak
9351 post-apocalyptic vision of the future. It revolves around Union City,
9352 where selfishness, rivalry, and corruption by its citizens seems to be
9353 all too common, those who can afford it live underground, away from
9354 the pollution and social problems which are plaguing the city.
9355
9356 You take on the role of Robert Foster, an outcast of sorts from the
9357 city since a boy who was raised in a remote environment outside of
9358 Union City simply termed ``the gap''. Robert's mother took him away
9359 from Union City as a child on their way to ``Hobart'' but the
9360 helicopter crashed on its way. Unfortunately, Robert's mother died,
9361 but he survived and was left to be raised by a local tribe from the
9362 gap.
9363
9364 Years later, Union City security drops by and abducts Robert, killing
9365 his tribe in the process; upon reaching the city the helicopter taking
9366 him there crashes with him escaping, high upon a tower block in the
9367 middle of the city. He sets out to discover the truth about his past,
9368 and to seek vengeance for the killing of his tribe.")
9369 (license (license:non-copyleft "file:///readme.txt"))))
9370
9371 (define-public gnurobots
9372 (package
9373 (name "gnurobots")
9374 (version "1.2.0")
9375 (source
9376 (origin
9377 (method url-fetch)
9378 (uri (string-append "mirror://gnu/gnurobots/gnurobots-"
9379 version ".tar.gz"))
9380 (sha256
9381 (base32
9382 "07gi3lsmbzzsjambgixj6xy79lh22km84z7bnzgwzxdy806lyvwb"))))
9383 (build-system gnu-build-system)
9384 (inputs
9385 `(("glib" ,glib)
9386 ("gtk+" ,gtk+-2)
9387 ("vte" ,vte/gtk+-2)
9388 ("readline" ,readline)
9389 ("guile" ,guile-1.8)))
9390 (native-inputs
9391 `(("pkg-config" ,pkg-config)))
9392 (arguments
9393 `(#:make-flags
9394 (list
9395 ;; Do not abort build on "deprecated-declarations" warnings.
9396 "CFLAGS=-Wno-error=deprecated-declarations"
9397 ;; Find readline headers in sub-directory.
9398 (string-append "READLINE_CFLAGS=-I"
9399 (assoc-ref %build-inputs "readline")
9400 "/include/readline/"))
9401 #:phases
9402 (modify-phases %standard-phases
9403 (add-after 'install 'install-doc
9404 (lambda* (#:key outputs #:allow-other-keys)
9405 (install-file "doc/Robots-HOWTO"
9406 (string-append (assoc-ref outputs "out")
9407 "/share/doc/gnurobots-"
9408 ,version))
9409 #t)))))
9410 (home-page "https://www.gnu.org/software/gnurobots/")
9411 (synopsis "Program a little robot and watch it explore a world")
9412 (description
9413 "GNU Robots is a game in which you program a robot to explore a world
9414 full of enemies that can hurt it, obstacles and food to be eaten. The goal of
9415 the game is to stay alive and collect prizes. The robot program conveniently
9416 may be written in a plain text file in the Scheme programming language.")
9417 (license license:gpl3+)))
9418
9419 (define-public ri-li
9420 (package
9421 (name "ri-li")
9422 (version "2.0.1")
9423 (source (origin
9424 (method url-fetch)
9425 (uri (string-append "mirror://sourceforge/ri-li/"
9426 "Ri-li%20Linux_Unix/Ri-li%20V" version "/"
9427 "Ri-li-" version ".tar.bz2"))
9428 (sha256
9429 (base32
9430 "1gcdsgnnbbn1mb1hkpwniv3fhkaj1nn8gq33v5c16q3wqchcq77p"))
9431 ;; Taken from
9432 ;; <https://github.com/NixOS/nixpkgs/blob/master/pkgs/games/rili/moderinze_cpp.patch>.
9433 ;; It doesn't build otherwise.
9434 (patches (search-patches "ri-li-modernize_cpp.patch"))))
9435 (build-system gnu-build-system)
9436 (arguments
9437 `(#:phases
9438 (modify-phases %standard-phases
9439 ;; Remove "gentoo" subdirectory from Makefile, as it is
9440 ;; missing a make file and generates a build failure.
9441 (add-after 'configure 'fix-build
9442 (lambda _
9443 (substitute* "Makefile"
9444 ((" gentoo") ""))
9445 #t))
9446 (add-after 'install 'install-desktop-file
9447 (lambda* (#:key outputs #:allow-other-keys)
9448 (let* ((out (assoc-ref outputs "out"))
9449 (apps (string-append out "/share/applications"))
9450 (pixmaps (string-append out "/share/pixmaps")))
9451 (for-each (lambda (f) (install-file f pixmaps))
9452 (find-files "data" "\\.(png|ico)$"))
9453 (mkdir-p apps)
9454 (with-output-to-file (string-append apps "/ri-li.desktop")
9455 (lambda _
9456 (format #t
9457 "[Desktop Entry]~@
9458 Name=Ri-li~@
9459 Exec=~a/bin/Ri_li~@
9460 Icon=~a/Ri-li-icon-32x32.png~@
9461 Categories=Game;ArcadeGame;~@
9462 Keywords=toy;train;wooden;snake-like;engine;~@
9463 Comment=a toy simulator game~@
9464 Comment[de]=Ein Spiel mit einem kleinen Zug~@
9465 Comment[fr]=un jeu de petit train~@
9466 Comment[ro_RO]=un joc cu un tren de jucărie~@
9467 Terminal=false~@
9468 Type=Application~%"
9469 out pixmaps))))
9470 #t))
9471 (add-after 'install-desktop-file 'remove-spurious-files
9472 ;; Delete redundant files already installed somewhere else.
9473 (lambda* (#:key outputs #:allow-other-keys)
9474 (let ((out (assoc-ref outputs "out")))
9475 (for-each delete-file
9476 (find-files (string-append out "/share/Ri-li")
9477 "\\.(png|ico)|COPYING"))
9478 #t))))))
9479 (inputs
9480 `(("sdl" ,(sdl-union (list sdl sdl-mixer)))))
9481 (home-page "http://www.ri-li.org")
9482 (synopsis "Toy train simulation game")
9483 (description "Ri-li is a game in which you drive a wooden toy
9484 steam locomotive across many levels and collect all the coaches to
9485 win.")
9486 ;; The project is dual-licensed GPL2+ and GPL3+.
9487 (license (list license:gpl2+ license:gpl3+))))
9488
9489 (define-public freeorion
9490 (package
9491 (name "freeorion")
9492 (version "0.4.10")
9493 (source
9494 (origin
9495 (method url-fetch)
9496 (uri (string-append "https://github.com/freeorion/freeorion/releases/"
9497 "download/v" version "/FreeOrion_v" version
9498 "_2020-07-10.f3d403e_Source.tar.gz"))
9499 (sha256
9500 (base32 "12xspixrkx6mmmsdqjha0hg02r4y73pk229l0wjq9s0yp8nb8ap7"))
9501 (modules '((guix build utils)))
9502 (snippet
9503 '(begin
9504 ;; There are some bundled fonts.
9505 (for-each delete-file-recursively '("default/data/fonts"))
9506 #t))))
9507 (build-system cmake-build-system)
9508 (arguments
9509 '(#:tests? #f ;no test
9510 #:phases
9511 (modify-phases %standard-phases
9512 (add-after 'unpack 'unbundle-fonts
9513 (lambda* (#:key inputs #:allow-other-keys)
9514 (let ((roboto-dir (string-append (assoc-ref inputs "font-roboto")
9515 "/share/fonts/truetype/")))
9516 (substitute* "UI/ClientUI.cpp"
9517 (("\\(GetRootDataDir.*?Roboto-(Bold|Regular)\\.ttf\"\\)\\.string\\(\\)\\);"
9518 all type)
9519 (string-append "\"" roboto-dir "Roboto-" type ".ttf\");")))
9520 #t))))))
9521 (inputs
9522 `(("boost" ,boost)
9523 ("boost_signals" ,boost-signals2)
9524 ("font-dejavu" ,font-dejavu)
9525 ("font-roboto" ,font-google-roboto)
9526 ("freetype2" ,freetype)
9527 ("glew" ,glew)
9528 ("glu" ,glu)
9529 ("libogg" ,libogg)
9530 ("libpng" ,libpng)
9531 ("libvorbis" ,libvorbis)
9532 ("openal" ,openal)
9533 ("python" ,python)
9534 ("sdl2" ,sdl2)
9535 ("zlib" ,zlib)))
9536 (home-page "https://www.freeorion.org/index.php/Main_Page")
9537 (synopsis "Turn-based space empire and galactic conquest computer game")
9538 (description
9539 "FreeOrion is a turn-based space empire and galactic conquest (4X)
9540 computer game being designed and built by the FreeOrion project. Control an
9541 empire with the goal of exploring the galaxy, expanding your territory,
9542 exploiting the resources, and exterminating rival alien empires. FreeOrion is
9543 inspired by the tradition of the Master of Orion games, but is not a clone or
9544 remake of that series or any other game.")
9545 ;; Source code is released under gpl2. Artwork, music and sounds, and
9546 ;; in-game text are released under cc-by-sa3.0. Game content scripts are
9547 ;; released under both gpl2 and cc-by-sa3.0. Bundled Gigi library is
9548 ;; released under lgpl2.1+.
9549 (license (list license:gpl2 license:cc-by-sa3.0 license:lgpl2.1+))))
9550
9551 (define-public leela-zero
9552 (package
9553 (name "leela-zero")
9554 (version "0.17")
9555 (source
9556 (origin
9557 (method git-fetch)
9558 (uri (git-reference
9559 (url "https://github.com/leela-zero/leela-zero")
9560 (commit (string-append "v" version))))
9561 (file-name (git-file-name name version))
9562 (sha256
9563 (base32
9564 "17px5iny8mql5c01bymcli7zfssswkzvb2i8gnsmjcck6i2n8srl"))
9565 (patches (search-patches "leela-zero-gtest.patch"))))
9566 (build-system cmake-build-system)
9567 (native-inputs
9568 `(("googletest" ,googletest)))
9569 (inputs
9570 `(("boost" ,boost)
9571 ("ocl-icd" ,ocl-icd)
9572 ("openblas" ,openblas)
9573 ("opencl-headers" ,opencl-headers)
9574 ("qtbase" ,qtbase)
9575 ("zlib" ,zlib)))
9576 (arguments
9577 '(#:configure-flags '("-DUSE_BLAS=YES")
9578 #:phases (modify-phases %standard-phases
9579 (add-before 'configure 'fix-tests
9580 (lambda* (#:key outputs #:allow-other-keys)
9581 (let ((home (getcwd)))
9582 (setenv "HOME" home)
9583 (substitute* "src/tests/gtests.cpp"
9584 (("\\.\\./src/tests/0k\\.txt")
9585 (string-append home "/src/tests/0k.txt"))
9586 (("cfg_gtp_mode = true;")
9587 "cfg_gtp_mode = true; cfg_cpu_only = true;")))
9588 #t))
9589 (replace 'check
9590 (lambda _
9591 (invoke "./tests"))))))
9592 (home-page "https://github.com/leela-zero/leela-zero")
9593 (synopsis "Program playing the game of Go")
9594 (description
9595 "Leela-zero is a Go engine with no human-provided knowledge, modeled after
9596 the AlphaGo Zero paper. The current best network weights file for the engine
9597 can be downloaded from @url{https://zero.sjeng.org/best-network}.")
9598 (license license:gpl3+)))
9599
9600 (define-public q5go
9601 (package
9602 (name "q5go")
9603 (version "1.0")
9604 (source (origin
9605 (method git-fetch)
9606 (uri (git-reference
9607 (url "https://github.com/bernds/q5Go")
9608 (commit (string-append "q5go-" version))))
9609 (file-name (git-file-name name version))
9610 (sha256
9611 (base32
9612 "1gdlfqcqkqv7vph3qwq78d0qz6dhmdsranxq9bmixiisbzkqby31"))))
9613 (build-system gnu-build-system)
9614 (native-inputs
9615 `(("pkg-config" ,pkg-config)))
9616 (inputs
9617 `(("qtbase" ,qtbase)
9618 ("qtmultimedia" ,qtmultimedia)
9619 ("qtsvg" ,qtsvg)))
9620 (arguments
9621 '(#:phases
9622 (modify-phases %standard-phases
9623 (add-after 'unpack 'fix-configure-script
9624 (lambda _
9625 ;; Bypass the unavailable qtchooser program.
9626 (substitute* "configure"
9627 (("test -z \"QTCHOOSER\"")
9628 "false")
9629 (("qtchooser -run-tool=(.*) -qt=qt5" _ command)
9630 command))
9631 #t))
9632 (add-after 'unpack 'fix-paths
9633 (lambda _
9634 (substitute* '("src/pics/Makefile.in"
9635 "src/translations/Makefile.in")
9636 (("\\$\\(datadir\\)/qGo/")
9637 "$(datadir)/q5go/"))
9638 #t))
9639 (add-after 'install 'install-desktop-file
9640 (lambda* (#:key outputs #:allow-other-keys)
9641 (let* ((out (assoc-ref outputs "out"))
9642 (apps (string-append out "/share/applications"))
9643 (pics (string-append out "/share/q5go/pics")))
9644 (delete-file-recursively (string-append out "/share/applnk"))
9645 (delete-file-recursively (string-append out "/share/mimelnk"))
9646 (install-file "../source/src/pics/Bowl.ico" pics)
9647 (mkdir-p apps)
9648 (with-output-to-file (string-append apps "/q5go.desktop")
9649 (lambda _
9650 (format #t
9651 "[Desktop Entry]~@
9652 Name=q5go~@
9653 Exec=~a/bin/q5go~@
9654 Icon=~a/Bowl.ico~@
9655 Categories=Game;~@
9656 Comment=Game of Go~@
9657 Comment[de]=Spiel des Go~@
9658 Comment[eo]=Goo~@
9659 Comment[es]=Juego de Go~@
9660 Comment[fr]=Jeu de Go~@
9661 Comment[ja]=囲碁~@
9662 Comment[ko]=바둑~@
9663 Comment[zh]=围棋~@
9664 Terminal=false~@
9665 Type=Application~%"
9666 out pics))))
9667 #t)))))
9668 (synopsis "Qt GUI to play the game of Go")
9669 (description
9670 "This a tool for Go players which performs the following functions:
9671 @itemize
9672 @item SGF editor,
9673 @item Analysis frontend for Leela Zero (or compatible engines),
9674 @item GTP interface (to play against an engine),
9675 @item IGS client (to play on the internet),
9676 @item Export games to a variety of formats.
9677 @end itemize")
9678 (home-page "https://github.com/bernds/q5Go")
9679 (license license:gpl2+)))
9680
9681 (define-public ktuberling
9682 (package
9683 (name "ktuberling")
9684 (version "19.08.3")
9685 (source
9686 (origin
9687 (method url-fetch)
9688 (uri (string-append "mirror://kde/stable/applications/" version
9689 "/src/ktuberling-" version ".tar.xz"))
9690 (sha256
9691 (base32 "1qdf4q6wjh1lnlqw5c8z4rpj9w5vbyjfri1dah6yjm3mwppbc12j"))))
9692 (build-system qt-build-system)
9693 (native-inputs
9694 `(("extra-cmake-modules" ,extra-cmake-modules)
9695 ("perl" ,perl)))
9696 (inputs
9697 `(("kcompletion" ,kcompletion)
9698 ("kconfigwidgets" ,kconfigwidgets)
9699 ("kcoreaddons" ,kcoreaddons)
9700 ("kcrash" ,kcrash)
9701 ("kdbusaddons" ,kdbusaddons)
9702 ("kdelibs4support" ,kdelibs4support)
9703 ("ki18n" ,ki18n)
9704 ("kwidgetsaddons" ,kwidgetsaddons)
9705 ("kxmlgui" ,kxmlgui)
9706 ("libkdegames" ,libkdegames)
9707 ("qtbase" ,qtbase)
9708 ("qtmultimedia" ,qtmultimedia)
9709 ("qtdeclarative" ,qtdeclarative)
9710 ("qtsvg" ,qtsvg)))
9711 (home-page "https://games.kde.org/")
9712 (synopsis "Stamp drawing toy")
9713 (description "KTuberling is a drawing toy intended for small children and
9714 adults who remain young at heart. The game has no winner; the only purpose is
9715 to make the funniest faces you can. Several activities are possible, e.g.:
9716
9717 @itemize
9718 @item Give the potato a funny face, clothes, and other goodies
9719 @item Build a small town, complete with school, zoo, and fire department
9720 @item Create a fantastic moonscape with spaceships and aliens
9721 @item Top a pizza
9722 @end itemize
9723
9724 KTuberling can speak the name of each the object in several languages,
9725 to assist in learning basic vocabulary.
9726
9727 This package is part of the KDE games module.")
9728 (license (list license:gpl2+ license:fdl1.2+))))
9729
9730 (define-public picmi
9731 (package
9732 (name "picmi")
9733 (version "19.08.3")
9734 (source
9735 (origin
9736 (method url-fetch)
9737 (uri (string-append "mirror://kde/stable/applications/" version
9738 "/src/picmi-" version ".tar.xz"))
9739 (sha256
9740 (base32 "0z9mpmv49w914gqdx274brdzl6d1bz9j9nkvbwgmr3iq1ba49m3f"))))
9741 (build-system qt-build-system)
9742 (native-inputs
9743 `(("extra-cmake-modules" ,extra-cmake-modules)
9744 ("kdoctools" ,kdoctools)))
9745 (inputs
9746 `(("kcoreaddons" ,kcoreaddons)
9747 ("kcrash" ,kcrash)
9748 ("kdbusaddons" ,kdbusaddons)
9749 ("kdeclarative" ,kdeclarative)
9750 ("ki18n" ,ki18n)
9751 ("kio" ,kio)
9752 ("knewstuff" ,knewstuff)
9753 ("kxmlgui" ,kxmlgui)
9754 ("libkdegames" ,libkdegames)
9755 ("qtbase" ,qtbase)
9756 ("qtdeclarative" ,qtdeclarative)
9757 ("qtsvg" ,qtsvg)))
9758 (home-page "https://games.kde.org/")
9759 (synopsis "Number logic game")
9760 (description "Picmi is a number logic game in which cells in a grid have
9761 to be colored or left blank according to numbers given at the side of the
9762 grid. The aim is to reveal a hidden picture.
9763
9764 This package is part of the KDE games module.")
9765 (license (list license:gpl2+ license:fdl1.2+))))
9766
9767 (define-public kolf
9768 (package
9769 (name "kolf")
9770 (version "19.08.3")
9771 (source
9772 (origin
9773 (method url-fetch)
9774 (uri (string-append "mirror://kde/stable/applications/" version
9775 "/src/kolf-" version ".tar.xz"))
9776 (sha256
9777 (base32 "06sfd0llr5cc3zf1vrpcxgw9bm009ky7y8822kynic9ipcd4z1hw"))))
9778 (build-system qt-build-system)
9779 (native-inputs
9780 `(("extra-cmake-modules" ,extra-cmake-modules)
9781 ("kdoctools" ,kdoctools)))
9782 (inputs
9783 `(("kcompletion" ,kcompletion)
9784 ("kconfigwidgets" ,kconfigwidgets)
9785 ("kcoreaddons" ,kcoreaddons)
9786 ("kcrash" ,kcrash)
9787 ("kdbusaddons" ,kdbusaddons)
9788 ("ki18n" ,ki18n)
9789 ("kio" ,kio)
9790 ("kwidgetsaddons" ,kwidgetsaddons)
9791 ("kxmlgui" ,kxmlgui)
9792 ("ktextwidgets" ,ktextwidgets)
9793 ("libkdegames" ,libkdegames)
9794 ("qtbase" ,qtbase)
9795 ("qtdeclarative" ,qtdeclarative)))
9796 (home-page "https://games.kde.org/")
9797 (synopsis "Miniature golf game")
9798 (description "Kolf is a miniature golf game for one to ten players. The
9799 game is played from an overhead view, with a short bar representing the golf
9800 club. Kolf features many different types of objects, such as water hazards,
9801 slopes, sand traps, and black holes (warps), among others.
9802
9803 Features are:
9804 @itemize
9805 @item Single and Multi-player (up to ten players) modes
9806 @item High scores table
9807 @item Dynamic courses
9808 @item Third-party courses
9809 @item Course editor
9810 @end itemize
9811
9812 This package is part of the KDE games module.")
9813 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
9814
9815 (define-public libkmahjongg
9816 (package
9817 (name "libkmahjongg")
9818 (version "19.08.3")
9819 (source
9820 (origin
9821 (method url-fetch)
9822 (uri (string-append "mirror://kde/stable/applications/"
9823 version "/src/libkmahjongg-" version ".tar.xz"))
9824 (sha256
9825 (base32 "0rdimk11hrc8qrmiv26z0ddjzi1k6806c0rfskx4cwmildmh6zgx"))))
9826 (build-system qt-build-system)
9827 (native-inputs
9828 `(("extra-cmake-modules" ,extra-cmake-modules)))
9829 (inputs
9830 `(("kauth" ,kauth)
9831 ("kcompletion" ,kcompletion)
9832 ;("kconfig" ,kconfig)
9833 ("kcodecs" ,kcodecs)
9834 ("kconfigwidgets" ,kconfigwidgets)
9835 ("kcoreaddons" ,kcoreaddons)
9836 ("ki18n" ,ki18n)
9837 ("kwidgetsaddons" ,kwidgetsaddons)
9838 ("qtbase" ,qtbase)
9839 ("qtsvg" ,qtsvg)))
9840 (home-page "https://games.kde.org/")
9841 (synopsis "Shared library for kmahjongg and kshisen")
9842 (description "Shared library and common files for kmahjongg, kshisen and
9843 other Mah Jongg like games.")
9844 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
9845
9846 (define-public kmahjongg
9847 (package
9848 (name "kmahjongg")
9849 (version "19.08.3")
9850 (source
9851 (origin
9852 (method url-fetch)
9853 (uri (string-append "mirror://kde/stable/applications/"
9854 version "/src/kmahjongg-" version ".tar.xz"))
9855 (sha256
9856 (base32 "08na845h0nhmfrszdmvfq5y1dy7kgbrlzjp0f5snvbbf7w44ci6p"))))
9857 (build-system qt-build-system)
9858 (native-inputs
9859 `(("extra-cmake-modules" ,extra-cmake-modules)
9860 ("kdoctools" ,kdoctools)))
9861 (inputs
9862 `(("kcompletion" ,kcompletion)
9863 ("kcrash" ,kcrash)
9864 ("kdbusaddons" ,kdbusaddons)
9865 ("kdeclarative" ,kdeclarative)
9866 ("ki18n" ,ki18n)
9867 ("knewstuff" ,knewstuff)
9868 ("kxmlgui" ,kxmlgui)
9869 ("libkdegames" ,libkdegames)
9870 ("libkmahjongg" ,libkmahjongg)
9871 ("qtbase" ,qtbase)
9872 ("qtdeclarative" ,qtdeclarative)
9873 ("qtsvg" ,qtsvg)))
9874 (home-page "https://games.kde.org/")
9875 (synopsis "Tile laying patience")
9876 (description "In KMahjongg the tiles are scrambled and staked on top of
9877 each other to resemble a certain shape. The player is then expected to remove
9878 all the tiles off the game board by locating each tile's matching pair.
9879
9880 A variety of tile layouts are included, as well as an editor to create new
9881 layouts.
9882
9883 This package is part of the KDE games module.")
9884 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
9885
9886 (define-public kshisen
9887 (package
9888 (name "kshisen")
9889 (version "19.08.3")
9890 (source
9891 (origin
9892 (method url-fetch)
9893 (uri (string-append "mirror://kde/stable/applications/"
9894 version "/src/kshisen-" version ".tar.xz"))
9895 (sha256
9896 (base32 "1bq5m48af4h5apfp3bfsp76nlpv6h5sc0gd544zv7cgpfznz1sds"))))
9897 (build-system qt-build-system)
9898 (native-inputs
9899 `(("extra-cmake-modules" ,extra-cmake-modules)
9900 ;("perl" ,perl)
9901 ;("pkg-config" ,pkg-config)
9902 ("kdoctools" ,kdoctools)))
9903 (inputs
9904 `(("kauth" ,kauth)
9905 ("kcompletion" ,kcompletion)
9906 ("kconfigwidgets" ,kconfigwidgets)
9907 ("kcoreaddons" ,kcoreaddons)
9908 ("kcrash" ,kcrash)
9909 ("kdbusaddons" ,kdbusaddons)
9910 ("ki18n" ,ki18n)
9911 ("kxmlgui" ,kxmlgui)
9912 ("libkdegames" ,libkdegames)
9913 ("libkmahjongg" ,libkmahjongg)
9914 ("qtbase" ,qtbase)
9915 ("qtdeclarative" ,qtdeclarative)))
9916 (home-page "https://games.kde.org/")
9917 (synopsis "Shisen-Sho solitaire game")
9918 (description "KShisen is a solitaire-like game played using the standard
9919 set of Mahjong tiles. Unlike Mahjong however, KShisen has only one layer of
9920 scrambled tiles
9921
9922 This package is part of the KDE games module.")
9923 (license license:gpl2+)))
9924
9925 (define-public kajongg
9926 (package
9927 (name "kajongg")
9928 (version "19.08.3")
9929 (source
9930 (origin
9931 (method url-fetch)
9932 (uri (string-append "mirror://kde/stable/applications/"
9933 version "/src/kajongg-" version ".tar.xz"))
9934 (sha256
9935 (base32 "0ql6p5zifdpdf65r7ki9ml123azpwwk9x3x8r9ij6xhjnf7p7x6w"))))
9936 (build-system qt-build-system)
9937 (native-inputs
9938 `(("extra-cmake-modules" ,extra-cmake-modules)
9939 ;("perl" ,perl)
9940 ("kdoctools" ,kdoctools)))
9941 (inputs
9942 `(("kconfig" ,kconfig)
9943 ("kconfigwidgets" ,kconfigwidgets)
9944 ("kcoreaddons" ,kcoreaddons)
9945 ("ki18n" ,ki18n)
9946 ("libkmahjongg" ,libkmahjongg)
9947 ("python" ,python)
9948 ("qtbase" ,qtbase)
9949 ("qtsvg" ,qtsvg)))
9950 (propagated-inputs
9951 `(("python-twisted" ,python-twisted)
9952 ("python-pyqt" ,python-pyqt)))
9953 ;; FIXME: Need to wrap PYTHONPATH
9954 (home-page "https://games.kde.org/")
9955 (synopsis "Classical Mah Jongg game for 4 players")
9956 (description "Kajongg is the ancient Chinese board game for 4 players.
9957
9958 If you are looking for the Mah Jongg solitaire please use the application
9959 kmahjongg.
9960
9961 Kajongg can be used in two different ways: Scoring a manual game where you
9962 play as always and use Kajongg for the computation of scores and for
9963 bookkeeping. Or you can use Kajongg to play against any combination of other
9964 human players or computer players.
9965
9966 This package is part of the KDE games module.")
9967 (license (list license:gpl2+ license:fdl1.2+))))
9968
9969 (define-public kbreakout
9970 (package
9971 (name "kbreakout")
9972 (version "19.08.3")
9973 (source
9974 (origin
9975 (method url-fetch)
9976 (uri (string-append "mirror://kde/stable/applications/" version
9977 "/src/kbreakout-" version ".tar.xz"))
9978 (sha256
9979 (base32 "0gwzx1z9mxrjlcjzglg8cxkyd6900whcar3b5j9laxxarc6xhj8w"))))
9980 (build-system qt-build-system)
9981 (native-inputs
9982 `(("extra-cmake-modules" ,extra-cmake-modules)
9983 ("kdoctools" ,kdoctools)))
9984 (inputs
9985 `(("kcompletion" ,kcompletion)
9986 ("kconfig" ,kconfig)
9987 ("kconfigwidgets" ,kconfigwidgets)
9988 ("kcoreaddons" ,kcoreaddons)
9989 ("kcrash" ,kcrash)
9990 ("kdbusaddons" ,kdbusaddons)
9991 ("ki18n" ,ki18n)
9992 ("kwidgetsaddons" ,kwidgetsaddons)
9993 ("kxmlgui" ,kxmlgui)
9994 ("libkdegames" ,libkdegames)
9995 ("qtbase" ,qtbase)
9996 ("qtdeclarative" ,qtdeclarative)))
9997 (home-page "https://games.kde.org/")
9998 (synopsis "Breakout like game")
9999 (description "KBreakout is similar to the classics breakout and xboing,
10000 featuring a number of added graphical enhancements and effects. You control a
10001 paddle at the bottom of the playing-field, and must destroy bricks at the top
10002 by bouncing balls against them.
10003
10004 This package is part of the KDE games module.")
10005 (license (list license:gpl2+ license:fdl1.2+))))
10006
10007 (define-public kmines
10008 (package
10009 (name "kmines")
10010 (version "19.08.3")
10011 (source
10012 (origin
10013 (method url-fetch)
10014 (uri (string-append "mirror://kde/stable/applications/" version
10015 "/src/kmines-" version ".tar.xz"))
10016 (sha256
10017 (base32 "0ac3za36lh8hpx6mqfic9amwmzhzhzplm9hg3pw12gxl5a9mvfsf"))))
10018 (build-system qt-build-system)
10019 (native-inputs
10020 `(("extra-cmake-modules" ,extra-cmake-modules)
10021 ("kdoctools" ,kdoctools)))
10022 (inputs
10023 `(("kcompletion" ,kcompletion)
10024 ("kconfig" ,kconfig)
10025 ("kconfigwidgets" ,kconfigwidgets)
10026 ("kcoreaddons" ,kcoreaddons)
10027 ("kcrash" ,kcrash)
10028 ("kdbusaddons" ,kdbusaddons)
10029 ("ki18n" ,ki18n)
10030 ("ktextwidgets" ,ktextwidgets)
10031 ("kwidgetsaddons" ,kwidgetsaddons)
10032 ("kxmlgui" ,kxmlgui)
10033 ("libkdegames" ,libkdegames)
10034 ("qtbase" ,qtbase)
10035 ("qtdeclarative" ,qtdeclarative)))
10036 (home-page "https://games.kde.org/")
10037 (synopsis "Classical mine sweeper game")
10038 (description "KMines is a classic Minesweeper game. The idea is to
10039 uncover all the squares without blowing up any mines. When a mine is blown
10040 up, the game is over.
10041
10042 This package is part of the KDE games module.")
10043 (license (list license:gpl2+ license:fdl1.2+))))
10044
10045 (define-public konquest
10046 (package
10047 (name "konquest")
10048 (version "19.08.3")
10049 (source
10050 (origin
10051 (method url-fetch)
10052 (uri (string-append "mirror://kde/stable/applications/"
10053 version "/src/konquest-" version ".tar.xz"))
10054 (sha256
10055 (base32 "02gjxskhi10a1sqh3skcild8zria7wncz1a4sbz7ax1p851q76k1"))))
10056 (build-system qt-build-system)
10057 (native-inputs
10058 `(("extra-cmake-modules" ,extra-cmake-modules)
10059 ("kdoctools" ,kdoctools)))
10060 (inputs
10061 `(("kcompletion" ,kcompletion)
10062 ("kconfig" ,kconfig)
10063 ("kcoreaddons" ,kcoreaddons)
10064 ("kcrash" ,kcrash)
10065 ("kdbusaddons" ,kdbusaddons)
10066 ("kguiaddons" ,kguiaddons)
10067 ("ki18n" ,ki18n)
10068 ("kwidgetsaddons" ,kwidgetsaddons)
10069 ("kxmlgui" ,kxmlgui)
10070 ("libkdegames" ,libkdegames)
10071 ("qtbase" ,qtbase)
10072 ("qtdeclarative" ,qtdeclarative)
10073 ("qtsvg" ,qtsvg)))
10074 (home-page "https://games.kde.org/")
10075 (synopsis "Simple turn-based strategy game")
10076 (description "Konquest is the KDE version of Gnu-Lactic Konquest. Players
10077 conquer other planets by sending ships to them. The goal is to build an
10078 interstellar empire and ultimately conquer all other player's planets. The
10079 game can be played with up to nine empires, commanded either by the computer
10080 or by puny earthlings.
10081
10082 This package is part of the KDE games module.")
10083 (license (list license:gpl2+ license:fdl1.2+))))
10084
10085 (define-public kbounce
10086 (package
10087 (name "kbounce")
10088 (version "19.08.3")
10089 (source
10090 (origin
10091 (method url-fetch)
10092 (uri (string-append "mirror://kde/stable/applications/"
10093 version "/src/kbounce-" version ".tar.xz"))
10094 (sha256
10095 (base32 "02rfv0qzz5cmyfx8f56a45hbm9gsp6m3dcy8ajwx88rw5wpbrr11"))))
10096 (build-system qt-build-system)
10097 (native-inputs
10098 `(("extra-cmake-modules" ,extra-cmake-modules)
10099 ("kdoctools" ,kdoctools)))
10100 (inputs
10101 `(("kcompletion" ,kcompletion)
10102 ("kconfigwidgets" ,kconfigwidgets)
10103 ("kcoreaddons" ,kcoreaddons)
10104 ("kcrash" ,kcrash)
10105 ("kdbusaddons" ,kdbusaddons)
10106 ("ki18n" ,ki18n)
10107 ("kio" ,kio)
10108 ("kwidgetsaddons" ,kwidgetsaddons)
10109 ("kxmlgui" ,kxmlgui)
10110 ("libkdegames" ,libkdegames)
10111 ("qtbase" ,qtbase)
10112 ("qtdeclarative" ,qtdeclarative)
10113 ("qtsvg" ,qtsvg)))
10114 (home-page "https://games.kde.org/")
10115 (synopsis "Jezzball arcade game")
10116 (description "KBounce is a single player arcade game with the elements of
10117 puzzle. It is played on a field, surrounded by wall, with two or more balls
10118 bouncing around within the walls. The object of the game is to build new
10119 walls to decrease the size of the active field.
10120
10121 This package is part of the KDE games module.")
10122 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
10123
10124 (define-public kblocks
10125 (package
10126 (name "kblocks")
10127 (version "19.08.3")
10128 (source
10129 (origin
10130 (method url-fetch)
10131 (uri (string-append "mirror://kde/stable/applications/"
10132 version "/src/kblocks-" version ".tar.xz"))
10133 (sha256
10134 (base32 "0qrm0dihzhkxsq9l49ndzms802x6jn92vvabb2zf2q9z593m69cx"))))
10135 (build-system qt-build-system)
10136 (native-inputs
10137 `(("extra-cmake-modules" ,extra-cmake-modules)
10138 ("kdoctools" ,kdoctools)))
10139 (inputs
10140 `(("kcompletion" ,kcompletion)
10141 ("kconfig" ,kconfig)
10142 ("kconfigwidgets" ,kconfigwidgets)
10143 ("kcoreaddons" ,kcoreaddons)
10144 ("kcrash" ,kcrash)
10145 ("kdbusaddons" ,kdbusaddons)
10146 ("ki18n" ,ki18n)
10147 ("kwidgetsaddons" ,kwidgetsaddons)
10148 ("kxmlgui" ,kxmlgui)
10149 ("libkdegames" ,libkdegames)
10150 ("qtbase" ,qtbase)
10151 ("qtdeclarative" ,qtdeclarative)
10152 ("qtsvg" ,qtsvg)))
10153 (home-page "https://games.kde.org/")
10154 (synopsis "Single player falling blocks puzzle game")
10155 (description "KBlocks is the classic Tetris-like falling blocks game.
10156
10157 The idea is to stack the falling blocks to create horizontal lines without any
10158 gaps. When a line is completed it is removed, and more space is available in
10159 the play area. When there is not enough space for blocks to fall, the game is
10160 over.
10161
10162 This package is part of the KDE games module.")
10163 (license (list license:gpl2+ license:fdl1.2+))))
10164
10165 (define-public ksudoku
10166 (package
10167 (name "ksudoku")
10168 (version "19.08.3")
10169 (source
10170 (origin
10171 (method url-fetch)
10172 (uri (string-append "mirror://kde/stable/applications/"
10173 version "/src/ksudoku-" version ".tar.xz"))
10174 (sha256
10175 (base32 "0rcscz91hilm7l3am5w02n0n8l7xhi4l0n4sskznh68kblw0ggw2"))))
10176 (build-system qt-build-system)
10177 (native-inputs
10178 `(("extra-cmake-modules" ,extra-cmake-modules)
10179 ("kdoctools" ,kdoctools)))
10180 (inputs
10181 `(("karchive" ,karchive)
10182 ("kconfig" ,kconfig)
10183 ("kconfigwidgets" ,kconfigwidgets)
10184 ("kcoreaddons" ,kcoreaddons)
10185 ("kcrash" ,kcrash)
10186 ("kguiaddons" ,kguiaddons)
10187 ("ki18n" ,ki18n)
10188 ("kiconthemes" ,kiconthemes)
10189 ("kio" ,kio)
10190 ("kwidgetsaddons" ,kwidgetsaddons)
10191 ("kxmlgui" ,kxmlgui)
10192 ("libkdegames" ,libkdegames)
10193 ("glu" ,glu)
10194 ("qtbase" ,qtbase)
10195 ("qtdeclarative" ,qtdeclarative)
10196 ("qtsvg" ,qtsvg)))
10197 (home-page "https://games.kde.org/")
10198 (synopsis "Sudoku puzzle game and solver")
10199 (description "KSudoku is a Sudoku game and solver, supporting a range of
10200 2D and 3D Sudoku variants. In addition to playing Sudoku, it can print Sudoku
10201 puzzle sheets and find the solution to any Sudoku puzzle.
10202
10203 The word Sudoku means \"single number in an allotted place\" in Japanese.
10204 These are the basic rules: Every Sudoku is a square divided into 3x3
10205 subsquares with 3x3 cells each.
10206
10207 Some cells are filled with a number at the beginning. The remaining ones are
10208 to be filled by the player using numbers from 1 to 9, without repeating a
10209 number twice on each column, row or subsquare (each of them must contain only
10210 one 1, one 2, one 3, and so on). The game requires logic and patience.
10211 Solving takes usually 10 to 30 minutes, depending on puzzle level, your skill
10212 and experience.
10213
10214 The numerals in Sudoku puzzles are used for convenience (for example in 16x16
10215 board we use letters): arithmetic relationships between numbers are
10216 irrelevant.
10217
10218 This program supports also 16x16 games with numbers from 1 to 16 and 256
10219 cells with 16 cols, rows and subsquares!
10220
10221 More information at http://en.wikipedia.org/wiki/Sudoku
10222
10223 This package is part of the KDE games module.")
10224 (license (list license:gpl2+ license:fdl1.2+))))
10225
10226 (define-public klines
10227 (package
10228 (name "klines")
10229 (version "19.08.3")
10230 (source
10231 (origin
10232 (method url-fetch)
10233 (uri (string-append "mirror://kde/stable/applications/" version
10234 "/src/klines-" version ".tar.xz"))
10235 (sha256
10236 (base32 "1g1f46jp0rb8gpqkgcf915ydpsscn1sxk3gjvm8bcqgx9ddq59xa"))))
10237 (build-system qt-build-system)
10238 (native-inputs
10239 `(("extra-cmake-modules" ,extra-cmake-modules)
10240 ("kdoctools" ,kdoctools)))
10241 (inputs
10242 `(("kcompletion" ,kcompletion)
10243 ("kconfigwidgets" ,kconfigwidgets)
10244 ("kcoreaddons" ,kcoreaddons)
10245 ("kcrash" ,kcrash)
10246 ("kdbusaddons" ,kdbusaddons)
10247 ("ki18n" ,ki18n)
10248 ("kwidgetsaddons" ,kwidgetsaddons)
10249 ("kxmlgui" ,kxmlgui)
10250 ("libkdegames" ,libkdegames)
10251 ("qtbase" ,qtbase)
10252 ("qtdeclarative" ,qtdeclarative)))
10253 (home-page "https://games.kde.org/")
10254 (synopsis "Place 5 equal pieces together, but wait, there are 3 new ones")
10255 (description "KLines is a simple but highly addictive one player game.
10256
10257 The player has to move the colored balls around the game board, gathering them
10258 into the lines of the same color by five. Once the line is complete it is
10259 removed from the board, therefore freeing precious space. In the same time
10260 the new balls keep arriving by three after each move, filling up the game
10261 board.
10262
10263 KLines is a single-player game where the player removes colored balls from the
10264 board by arranging them into lines of five or more. However, every time the
10265 player moves a ball, three more balls are added to the board.
10266
10267 This package is part of the KDE games module.")
10268 (license (list license:gpl2+ license:fdl1.2+))))
10269
10270 (define-public kgoldrunner
10271 (package
10272 (name "kgoldrunner")
10273 (version "19.08.3")
10274 (source
10275 (origin
10276 (method url-fetch)
10277 (uri (string-append "mirror://kde/stable/applications/" version "/src/kgoldrunner-"
10278 version ".tar.xz"))
10279 (sha256
10280 (base32 "16rcvq796r3asz4v4ap75xvwnxd3dd2nsq5r9vxvzl6rrf1w9bj4"))))
10281 (build-system qt-build-system)
10282 (native-inputs
10283 `(("extra-cmake-modules" ,extra-cmake-modules)
10284 ("kdoctools" ,kdoctools)))
10285 (inputs
10286 `(("kcompletion" ,kcompletion)
10287 ("kcoreaddons" ,kcoreaddons)
10288 ("kcrash" ,kcrash)
10289 ("kdbusaddons" ,kdbusaddons)
10290 ("ki18n" ,ki18n)
10291 ("kio" ,kio)
10292 ("kwidgetsaddons" ,kwidgetsaddons)
10293 ("kxmlgui" ,kxmlgui)
10294 ("libkdegames" ,libkdegames)
10295 ("qtbase" ,qtbase)
10296 ("qtdeclarative" ,qtdeclarative)))
10297 (home-page "https://games.kde.org/")
10298 (synopsis "Action and puzzle solving game")
10299 (description "KGoldrunner is an action game where the hero runs through a
10300 maze, climbs stairs, dig holes and dodges enemies in order to collect all the
10301 gold nuggets and escape to the next level. Your enemies are also after the
10302 gold. Worse still, they are after you!.
10303
10304 KGoldrunner is a fast-paced platform game where the player must navigate a
10305 maze while collecting gold nuggets and avoiding enemies. A variety of level
10306 packs are included, as well as an editor to create new levels.
10307
10308 This package is part of the KDE games module.")
10309 (license (list license:gpl2+ license:fdl1.2+))))
10310
10311 (define-public kdiamond
10312 (package
10313 (name "kdiamond")
10314 (version "19.08.3")
10315 (source
10316 (origin
10317 (method url-fetch)
10318 (uri (string-append "mirror://kde/stable/applications/" version
10319 "/src/kdiamond-" version ".tar.xz"))
10320 (sha256
10321 (base32 "1v5yb9hb26lk277zhw8d37ks829yfqr5anzx1qhms44gca5kqhva"))))
10322 (build-system qt-build-system)
10323 (native-inputs
10324 `(("extra-cmake-modules" ,extra-cmake-modules)
10325 ("kdoctools" ,kdoctools)))
10326 (inputs
10327 `(("kcompletion" ,kcompletion)
10328 ("kconfig" ,kconfig)
10329 ("kconfigwidgets" ,kconfigwidgets)
10330 ("kcoreaddons" ,kcoreaddons)
10331 ("kcrash" ,kcrash)
10332 ("kdbusaddons" ,kdbusaddons)
10333 ("ki18n" ,ki18n)
10334 ("knotifications" ,knotifications)
10335 ("knotifyconfig" ,knotifyconfig)
10336 ("kwidgetsaddons" ,kwidgetsaddons)
10337 ("kxmlgui" ,kxmlgui)
10338 ("libkdegames" ,libkdegames)
10339 ("qtbase" ,qtbase)
10340 ("qtdeclarative" ,qtdeclarative)))
10341 (home-page "https://games.kde.org/")
10342 (synopsis "Three-in-a-row game")
10343 (description "KDiamond is a three-in-a-row game like Bejeweled. It
10344 features unlimited fun with randomly generated games and five difficulty
10345 levels with varying number of diamond colors and board sizes.
10346
10347 This package is part of the KDE games module.")
10348 (license (list license:gpl2+ license:fdl1.2+))))
10349
10350 (define-public kfourinline
10351 (package
10352 (name "kfourinline")
10353 (version "19.08.3")
10354 (source
10355 (origin
10356 (method url-fetch)
10357 (uri (string-append "mirror://kde/stable/applications/" version
10358 "/src/kfourinline-" version ".tar.xz"))
10359 (sha256
10360 (base32 "1vprs6dc1ccn3g6k594i9s94xy4b91vzlqjysyc6fqcq2fs54ny3"))))
10361 (build-system qt-build-system)
10362 (native-inputs
10363 `(("extra-cmake-modules" ,extra-cmake-modules)
10364 ("kdoctools" ,kdoctools)))
10365 (inputs
10366 `(("kcompletion" ,kcompletion)
10367 ("kconfig" ,kconfig)
10368 ("kconfigwidgets" ,kconfigwidgets)
10369 ("kcoreaddons" ,kcoreaddons)
10370 ("kcrash" ,kcrash)
10371 ("kdelibs4support" ,kdelibs4support)
10372 ("kdnssd" ,kdnssd)
10373 ("ki18n" ,ki18n)
10374 ("kxmlgui" ,kxmlgui)
10375 ("libkdegames" ,libkdegames)
10376 ("qtbase" ,qtbase)
10377 ("qtdeclarative" ,qtdeclarative)
10378 ("qtsvg" ,qtsvg)))
10379 (home-page "https://games.kde.org/")
10380 (synopsis "Place 4 pieces in a row")
10381 (description "KFourInLine is a board game for two players based on the
10382 Connect-Four game.
10383
10384 KFourInLine is a game where two players take turns dropping pieces into a
10385 grid, the winner being the first to place four pieces in a line.
10386
10387 This package is part of the KDE games module.")
10388 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
10389
10390 (define-public kblackbox
10391 (package
10392 (name "kblackbox")
10393 (version "19.08.3")
10394 (source
10395 (origin
10396 (method url-fetch)
10397 (uri (string-append "mirror://kde/stable/applications/" version
10398 "/src/kblackbox-" version ".tar.xz"))
10399 (sha256
10400 (base32 "1x42sfpf75c6mavwkc7g7dm11y9s5dpj8igphly5kvm0pajqby0n"))))
10401 (build-system qt-build-system)
10402 (native-inputs
10403 `(("extra-cmake-modules" ,extra-cmake-modules)
10404 ("kdoctools" ,kdoctools)))
10405 (inputs
10406 `(("karchive" ,karchive)
10407 ("kcompletion" ,kcompletion)
10408 ("kconfig" ,kconfig)
10409 ("kcoreaddons" ,kcoreaddons)
10410 ("kcrash" ,kcrash)
10411 ("kdbusaddons" ,kdbusaddons)
10412 ("ki18n" ,ki18n)
10413 ("ktextwidgets" ,ktextwidgets)
10414 ("kxmlgui" ,kxmlgui)
10415 ("libkdegames" ,libkdegames)
10416 ("qtbase" ,qtbase)
10417 ("qtdeclarative" ,qtdeclarative)
10418 ("qtsvg" ,qtsvg)))
10419 (home-page "https://games.kde.org/")
10420 (synopsis "Find atoms in a grid by shooting electrons")
10421 (description "KBlackbox is a game of hide and seek played on a grid of
10422 boxes where the computer has hidden several balls. The position of the hidden
10423 balls can be deduced by shooting beams into the box
10424
10425 KBlackBox is a game of hide and seek played on an grid of boxes, where the
10426 player shoots rays into the grid to deduce the positions of hidden objects.
10427
10428 This package is part of the KDE games module.")
10429 (license (list license:gpl2+ license:fdl1.2+))))
10430
10431 (define-public knetwalk
10432 (package
10433 (name "knetwalk")
10434 (version "19.08.3")
10435 (source
10436 (origin
10437 (method url-fetch)
10438 (uri (string-append "mirror://kde/stable/applications/" version
10439 "/src/knetwalk-" version ".tar.xz"))
10440 (sha256
10441 (base32 "1i340salzgqdw8y33wrrydmpgx3pvwf5wrbljlh67cjf6s4csx7d"))))
10442 (build-system qt-build-system)
10443 (native-inputs
10444 `(("extra-cmake-modules" ,extra-cmake-modules)
10445 ("kdoctools" ,kdoctools)))
10446 (inputs
10447 `(("kcompletion" ,kcompletion)
10448 ("kconfig" ,kconfig)
10449 ("kconfigwidgets" ,kconfigwidgets)
10450 ("kcoreaddons" ,kcoreaddons)
10451 ("kcrash" ,kcrash)
10452 ("kdbusaddons" ,kdbusaddons)
10453 ("ki18n" ,ki18n)
10454 ("ktextwidgets" ,ktextwidgets)
10455 ("kwidgetsaddons" ,kwidgetsaddons)
10456 ("kxmlgui" ,kxmlgui)
10457 ("libkdegames" ,libkdegames)
10458 ("qtbase" ,qtbase)
10459 ("qtdeclarative" ,qtdeclarative)))
10460 (home-page "https://games.kde.org/")
10461 (synopsis "Turn the board pieces to get all computers connected")
10462 (description "KNetWalk is a small game where you have to build up a
10463 computer network by rotating the wires to connect the terminals to the server.
10464 When the network is build, a highscore-list comes up where competitions can be
10465 fought out.
10466
10467 KNetwalk is a puzzle game where the player arranges sections of wire to
10468 connect all the computers on the board.
10469
10470 This package is part of the KDE games module.")
10471 (license (list license:gpl2+ license:fdl1.2+))))
10472
10473 (define-public bomber
10474 (package
10475 (name "bomber")
10476 (version "19.08.3")
10477 (source
10478 (origin
10479 (method url-fetch)
10480 (uri (string-append "mirror://kde/stable/applications/" version
10481 "/src/bomber-" version ".tar.xz"))
10482 (sha256
10483 (base32 "1lvzd0mzgq25akvwvkm57l3plm65k731v2i1ahakn985bb5gc3is"))))
10484 (build-system qt-build-system)
10485 (native-inputs
10486 `(("extra-cmake-modules" ,extra-cmake-modules)
10487 ("kdoctools" ,kdoctools)))
10488 (inputs
10489 `(("kcompletiom" ,kcompletion)
10490 ("kconfig" ,kconfig)
10491 ("kcoreaddons" ,kcoreaddons)
10492 ("kcrash" ,kcrash)
10493 ("kdbusaddons" ,kdbusaddons)
10494 ("ki18n" ,ki18n)
10495 ("kxmlgui" ,kxmlgui)
10496 ("libkdegames" ,libkdegames)
10497 ("qtbase" ,qtbase)
10498 ("qtdeclarative" ,qtdeclarative)))
10499 (home-page "https://games.kde.org/")
10500 (synopsis "Arcade bombing game")
10501 (description "Bomber is a single player arcade game.
10502
10503 The player is invading various cities in a plane that is decreasing in height.
10504 The goal of the game is to destroy all the buildings and advance to the next
10505 level. Each level gets a bit harder by increasing the speed of the plane and
10506 the height of the buildings.
10507
10508 Bomber is a game where you fly a spaceship and attempt to bomb the buildings
10509 below you. Each pass the spaceship makes, it gets lower and lower. If you've
10510 not destroyed a building in your path, you will crash into it.
10511
10512 This package is part of the KDE games module.")
10513 (license (list license:gpl2+ license:fdl1.2+))))
10514
10515 (define-public granatier
10516 (package
10517 (name "granatier")
10518 (version "19.08.3")
10519 (source
10520 (origin
10521 (method url-fetch)
10522 (uri (string-append "mirror://kde/stable/applications/" version
10523 "/src/granatier-" version ".tar.xz"))
10524 (sha256
10525 (base32 "141qmdinz7ikbbrs8dq6cap3nl22sl7pw62r80pf3xxwn2q4phpa"))))
10526 (build-system qt-build-system)
10527 (native-inputs
10528 `(("extra-cmake-modules" ,extra-cmake-modules)
10529 ("kdoctools" ,kdoctools)))
10530 (inputs
10531 `(("kcompletion" ,kcompletion)
10532 ("kconfig" ,kconfig)
10533 ("kconfigwidgets" ,kconfigwidgets)
10534 ("kcoreaddons" ,kcoreaddons)
10535 ("kcrash" ,kcrash)
10536 ("kdbusaddons" ,kdbusaddons)
10537 ("ki18n" ,ki18n)
10538 ("knewstuff" ,knewstuff)
10539 ("kwidgetsaddons" ,kwidgetsaddons)
10540 ("kxmlgui" ,kxmlgui)
10541 ("libkdegames" ,libkdegames)
10542 ("qtbase" ,qtbase)
10543 ("qtdeclarative" ,qtdeclarative)
10544 ("qtsvg" ,qtsvg)))
10545 (home-page "https://games.kde.org/")
10546 (synopsis "Bomberman clone")
10547 (description "Granatier is a clone of the classic Bomberman game,
10548 inspired by the work of the Clanbomber clone.
10549
10550 This package is part of the KDE games module.")
10551 (license (list license:gpl2+ license:fdl1.2+))))
10552
10553 (define-public ksirk
10554 (package
10555 (name "ksirk")
10556 (version "19.08.3")
10557 (source
10558 (origin
10559 (method url-fetch)
10560 (uri (string-append "mirror://kde/stable/applications/" version
10561 "/src/ksirk-" version ".tar.xz"))
10562 (sha256
10563 (base32 "1b1wixs2hp5qnvdygfwa3kvy0kn94ysa4ifmx90q6r3yfr2lpfca"))))
10564 (build-system qt-build-system)
10565 (native-inputs
10566 `(("extra-cmake-modules" ,extra-cmake-modules)
10567 ("kdoctools" ,kdoctools)))
10568 (inputs
10569 `(("kcrash" ,kcrash)
10570 ("ki18n" ,ki18n)
10571 ("kiconthemes" ,kiconthemes)
10572 ("kio" ,kio)
10573 ("knewstuff" ,knewstuff)
10574 ("kwallet" ,kwallet)
10575 ("kxmlgui" ,kxmlgui)
10576 ("libkdegames" ,libkdegames)
10577 ("phonon" ,phonon)
10578 ("qca" ,qca)
10579 ("qtbase" ,qtbase)
10580 ("qtdeclarative" ,qtdeclarative)
10581 ("qtsvg" ,qtsvg)
10582 ("zlib" ,zlib)))
10583 (home-page "https://games.kde.org/")
10584 (synopsis "Computerized version of the well known strategy board game
10585 'Risk'")
10586 (description "KsirK is a multi-player network-enabled game. The goal of
10587 the game is simply to conquer the world by attacking your neighbors with your
10588 armies.
10589
10590 At the beginning of the game, countries are distributed to all the players.
10591 Each country contains one army represented by an infantryman. Each player has
10592 some armies to distribute to his countries. On each turn, each player can
10593 attack his neighbours, eventually conquering one or more countries. At the
10594 end of each turn, some bonus armies are distributed to the players in function
10595 of the number of countries they own. The winner is the player that conquered
10596 all the world.
10597
10598 Features:
10599 @itemize
10600 @item Support for 1-6 human or computer players
10601 @item Multi-player gaming over a network
10602 @item You can easily create new skins with SVG graphics and the skin editor
10603 @item Hot New Stuff support. You can easily download and install new skins
10604 @end itemize
10605
10606 This package is part of the KDE games module.")
10607 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
10608
10609 (define-public palapeli
10610 (package
10611 (name "palapeli")
10612 (version "19.08.3")
10613 (source
10614 (origin
10615 (method url-fetch)
10616 (uri (string-append "mirror://kde/stable/applications/" version
10617 "/src/palapeli-" version ".tar.xz"))
10618 (sha256
10619 (base32 "1g91ydbc0x2y2gn3lcb5w03mn7k78l5bq4cb1s59kx6yjbflv3pw"))))
10620 (build-system qt-build-system)
10621 (native-inputs
10622 `(("extra-cmake-modules" ,extra-cmake-modules)
10623 ("kdoctools" ,kdoctools)))
10624 (inputs
10625 `(("karchive" ,karchive)
10626 ("kcompletion" ,kcompletion)
10627 ("kconfig" ,kconfig)
10628 ("kconfigwidgets" ,kconfigwidgets)
10629 ("kcoreaddons" ,kcoreaddons)
10630 ("kcrash" ,kcrash)
10631 ("kcrash" ,kcrash)
10632 ("ki18n" ,ki18n)
10633 ("ki18n" ,ki18n)
10634 ("kio" ,kio)
10635 ("kitemviews" ,kitemviews)
10636 ("knotifications" ,knotifications)
10637 ("kservice" ,kservice)
10638 ("kwidgetsaddons" ,kwidgetsaddons)
10639 ("kxmlgui" ,kxmlgui)
10640 ("libkdegames" ,libkdegames)
10641 ("qtbase" ,qtbase)
10642 ("qtdeclarative" ,qtdeclarative)
10643 ("qtsvg" ,qtsvg)
10644 ("shared-mime-info" ,shared-mime-info)))
10645 (home-page "https://games.kde.org/")
10646 (synopsis "Jigsaw puzzle game")
10647 (description "Palapeli is a jigsaw puzzle game. Unlike other games in
10648 that genre, you are not limited to aligning pieces on imaginary grids. The
10649 pieces are freely moveable. Also, Palapeli features real persistency, i.e.
10650 everything you do is saved on your disk immediately.
10651
10652 Palapeli is the Finnish word for jigsaw puzzle.
10653
10654 This package is part of the KDE games module.")
10655 (license license:gpl2+)))
10656
10657 (define-public kiriki
10658 (package
10659 (name "kiriki")
10660 (version "19.08.3")
10661 (source
10662 (origin
10663 (method url-fetch)
10664 (uri (string-append "mirror://kde/stable/applications/" version
10665 "/src/kiriki-" version ".tar.xz"))
10666 (sha256
10667 (base32 "1xg25dj95g81dc5l7k47am4j52abrwwfx4h73lvsbn4lc8lfmshw"))))
10668 (build-system qt-build-system)
10669 (native-inputs
10670 `(("extra-cmake-modules" ,extra-cmake-modules)
10671 ("kdoctools" ,kdoctools)))
10672 (inputs
10673 `(("kcompletion" ,kcompletion)
10674 ("kconfig" ,kconfig)
10675 ("kconfigwidgets" ,kconfigwidgets)
10676 ("kcoreaddons" ,kcoreaddons)
10677 ("kcrash" ,kcrash)
10678 ("kdbusaddons" ,kdbusaddons)
10679 ("ki18n" ,ki18n)
10680 ("kiconthemes" ,kiconthemes)
10681 ("kxmlgui" ,kxmlgui)
10682 ("libkdegames" ,libkdegames)
10683 ("qtbase" ,qtbase)
10684 ("qtdeclarative" ,qtdeclarative)))
10685 (home-page "https://games.kde.org/")
10686 (synopsis "Yahtzee dice game")
10687 (description "Kiriki is an addictive and fun dice game, designed to be
10688 played by as many as six players.
10689
10690 Participants have to collect points by rolling five dice for up to three times
10691 per single turn to make combinations with the highest score.
10692
10693 This package is part of the KDE games module.")
10694 (license (list license:gpl2+ license:fdl1.2+))))
10695
10696 (define-public kigo
10697 (package
10698 (name "kigo")
10699 (version "19.08.3")
10700 (source
10701 (origin
10702 (method url-fetch)
10703 (uri (string-append "mirror://kde/stable/applications/" version
10704 "/src/kigo-" version ".tar.xz"))
10705 (sha256
10706 (base32 "00l5gcbi8xyj9c1lngkrddka3a4m4cd78prfplrpq32ma9xq681f"))))
10707 (build-system qt-build-system)
10708 (native-inputs
10709 `(("extra-cmake-modules" ,extra-cmake-modules)
10710 ("kdoctools" ,kdoctools)))
10711 (inputs
10712 `(("kconfig" ,kconfig)
10713 ("kconfigwidgets" ,kconfigwidgets)
10714 ("kcoreaddons" ,kcoreaddons)
10715 ("kcrash" ,kcrash)
10716 ("kdbusaddons" ,kdbusaddons)
10717 ("ki18n" ,ki18n)
10718 ("kio" ,kio)
10719 ("knewstuff" ,knewstuff)
10720 ("ktextwidgets" ,ktextwidgets)
10721 ("kxmlgui" ,kxmlgui)
10722 ("libkdegames" ,libkdegames)
10723 ("qtbase" ,qtbase)
10724 ("qtdeclarative" ,qtdeclarative)
10725 ("qtsvg" ,qtsvg)))
10726 (home-page "https://games.kde.org/")
10727 (synopsis "Go board game")
10728 (description "Kigo is an open-source implementation of the popular Go
10729 game.
10730
10731 Go is a strategic board game for two players. It is also known as
10732 igo (Japanese), weiqi or wei ch'i (Chinese) or baduk (Korean). Go is noted
10733 for being rich in strategic complexity despite its simple rules. The game is
10734 played by two players who alternately place black and white stones (playing
10735 pieces, now usually made of glass or plastic) on the vacant intersections of a
10736 grid of 19x19 lines (9x9 or 13x13 for easier games).
10737
10738 You also need to install a go engine, e.g. @code{gnugo}.
10739
10740 This package is part of the KDE games module.")
10741 (license license:gpl3+)))
10742
10743 (define-public kubrick
10744 (package
10745 (name "kubrick")
10746 (version "19.08.3")
10747 (source
10748 (origin
10749 (method url-fetch)
10750 (uri (string-append "mirror://kde/stable/applications/" version
10751 "/src/kubrick-" version ".tar.xz"))
10752 (sha256
10753 (base32 "0ma8wja4rqlsmsr8cyicfpkwlgqva4450ls4c0ql53p0kabf04gx"))))
10754 (build-system qt-build-system)
10755 (native-inputs
10756 `(("extra-cmake-modules" ,extra-cmake-modules)
10757 ("kdoctools" ,kdoctools)))
10758 (inputs
10759 `(("glu" ,glu)
10760 ("kconfig" ,kconfig)
10761 ("kconfigwidgets" ,kconfigwidgets)
10762 ("kcoreaddons" ,kcoreaddons)
10763 ("kcrash" ,kcrash)
10764 ("ki18n" ,ki18n)
10765 ("kio" ,kio)
10766 ("kwidgetsaddons" ,kwidgetsaddons)
10767 ("kxmlgui" ,kxmlgui)
10768 ("libkdegames" ,libkdegames)
10769 ("qtbase" ,qtbase)
10770 ("qtdeclarative" ,qtdeclarative)
10771 ("qtsvg" ,qtsvg)))
10772 (home-page "https://games.kde.org/")
10773 (synopsis "Game based on Rubik's Cube")
10774 (description "Kubrick is a game based on the Rubik's Cube puzzle.
10775
10776 The cube sizes range from 2x2x2 up to 6x6x6, or you can play with irregular
10777 \"bricks\" such as 5x3x2 or \"mats\" such as 6x4x1 or 2x2x1. The game has a
10778 selection of puzzles at several levels of difficulty, as well as demos of
10779 pretty patterns and solution moves, or you can make up your own puzzles. The
10780 game has unlimited undo, redo, save and reload capabilities.
10781
10782 This package is part of the KDE games module.")
10783 (license (list license:gpl2+ license:fdl1.2+))))
10784
10785 (define-public lskat
10786 (package
10787 (name "lskat")
10788 (version "19.08.3")
10789 (source
10790 (origin
10791 (method url-fetch)
10792 (uri (string-append "mirror://kde/stable/applications/" version
10793 "/src/lskat-" version ".tar.xz"))
10794 (sha256
10795 (base32 "1qk5hd27zb42pbcxq5wyzz62nj5f0qdmgy54r9rnk92pzzzk94s9"))))
10796 (build-system qt-build-system)
10797 (native-inputs
10798 `(("extra-cmake-modules" ,extra-cmake-modules)
10799 ("kdoctools" ,kdoctools)))
10800 (inputs
10801 `(("kcompletion" ,kcompletion)
10802 ("kconfig" ,kconfig)
10803 ("kcoreaddons" ,kcoreaddons)
10804 ("kcrash" ,kcrash)
10805 ("kguiaddons" ,kguiaddons)
10806 ("ki18n" ,ki18n)
10807 ("kwidgetsaddons" ,kwidgetsaddons)
10808 ("kxmlgui" ,kxmlgui)
10809 ("libkdegames" ,libkdegames)
10810 ("qtbase" ,qtbase)
10811 ("qtdeclarative" ,qtdeclarative)
10812 ("qtsvg" ,qtsvg)))
10813 (home-page "https://games.kde.org/")
10814 (synopsis "Lieutnant Skat card game")
10815 (description "Lieutnant Skat (from German \"Offiziersskat\") is a fun and
10816 engaging card game for two players, where the second player is either live
10817 opponent, or a built in artificial intelligence.
10818
10819 Lieutnant Skat is a simplified variant of the Skat card game for two players.
10820
10821 This package is part of the KDE games module.")
10822 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
10823
10824 (define-public kapman
10825 (package
10826 (name "kapman")
10827 (version "19.08.3")
10828 (source
10829 (origin
10830 (method url-fetch)
10831 (uri (string-append "mirror://kde/stable/applications/" version
10832 "/src/kapman-" version ".tar.xz"))
10833 (sha256
10834 (base32 "03pq38caam30q4bw14c045kayw2d87xq1yaa3s2jkrylylfq3p0f"))))
10835 (build-system qt-build-system)
10836 (native-inputs
10837 `(("extra-cmake-modules" ,extra-cmake-modules)
10838 ("kdoctools" ,kdoctools)))
10839 (inputs
10840 `(("kcompletion" ,kcompletion)
10841 ("kconfig" ,kconfig)
10842 ("kconfigwidgets" ,kconfigwidgets)
10843 ("kcoreaddons" ,kcoreaddons)
10844 ("kcrash" ,kcrash)
10845 ("kdbusaddons" ,kdbusaddons)
10846 ("ki18n" ,ki18n)
10847 ("kxmlgui" ,kxmlgui)
10848 ("libkdegames" ,libkdegames)
10849 ("qtbase" ,qtbase)
10850 ("qtdeclarative" ,qtdeclarative)
10851 ("qtsvg" ,qtsvg)))
10852 (home-page "https://games.kde.org/")
10853 (synopsis "Pac-Man clone")
10854 (description "Kapman is a clone of the well known game Pac-Man.
10855
10856 You must run through the maze to eat all pills without being captured by a
10857 ghost. By eating an energizer, Kapman gets the ability to eat ghosts for a
10858 few seconds. When a stage is cleared of pills and energizer the player is
10859 taken to the next stage with slightly increased game speed
10860
10861 This package is part of the KDE games module.")
10862 (license (list license:gpl2+ license:fdl1.2+))))
10863
10864 (define-public kspaceduel
10865 (package
10866 (name "kspaceduel")
10867 (version "19.08.3")
10868 (source
10869 (origin
10870 (method url-fetch)
10871 (uri (string-append "mirror://kde/stable/applications/" version
10872 "/src/kspaceduel-" version ".tar.xz"))
10873 (sha256
10874 (base32 "1hppni0ihs7psc0dly5rxyy2a38nzhlig9yfyhi3lkh36z05pql8"))))
10875 (build-system qt-build-system)
10876 (native-inputs
10877 `(("extra-cmake-modules" ,extra-cmake-modules)
10878 ("kdoctools" ,kdoctools)))
10879 (inputs
10880 `(("kcompletion" ,kcompletion)
10881 ("kconfig" ,kconfig)
10882 ("kconfigwidgets" ,kconfigwidgets)
10883 ("kcoreaddons" ,kcoreaddons)
10884 ("kcrash" ,kcrash)
10885 ("kdbusaddons" ,kdbusaddons)
10886 ("ki18n" ,ki18n)
10887 ("kxmlgui" ,kxmlgui)
10888 ("libkdegames" ,libkdegames)
10889 ("qtbase" ,qtbase)
10890 ("qtdeclarative" ,qtdeclarative)
10891 ("qtsvg" ,qtsvg)))
10892 (home-page "https://games.kde.org/")
10893 (synopsis "Two player game with shooting spaceships flying around a sun")
10894 (description "KSpaceduel is a space battle game for one or two players,
10895 where two ships fly around a star in a struggle to be the only survivor.
10896
10897 This package is part of the KDE games module.")
10898 (license (list license:gpl2+ license:fdl1.2+))))
10899
10900 (define-public bovo
10901 (package
10902 (name "bovo")
10903 (version "19.08.3")
10904 (source
10905 (origin
10906 (method url-fetch)
10907 (uri (string-append "mirror://kde/stable/applications/" version
10908 "/src/bovo-" version ".tar.xz"))
10909 (sha256
10910 (base32 "0dbpng0w52nahmx7brsll66zw23ql1g6pcvn2k4g2lnvxch0i59g"))))
10911 (build-system qt-build-system)
10912 (native-inputs
10913 `(("extra-cmake-modules" ,extra-cmake-modules)
10914 ("kdoctools" ,kdoctools)))
10915 (inputs
10916 `(("kcompletion" ,kcompletion)
10917 ("kcoreaddons" ,kcoreaddons)
10918 ("kcrash" ,kcrash)
10919 ("kdbusaddons" ,kdbusaddons)
10920 ("ki18n" ,ki18n)
10921 ("kxmlgui" ,kxmlgui)
10922 ("libkdegames" ,libkdegames)
10923 ("qtbase" ,qtbase)
10924 ("qtdeclarative" ,qtdeclarative)
10925 ("qtsvg" ,qtsvg)))
10926 (home-page "https://games.kde.org/")
10927 (synopsis "Classic pen and paper game: five in a line")
10928 (description "Bovo is a Gomoku (from Japanese 五目並べ - lit. \"five
10929 points\") like game for two players, where the opponents alternate in placing
10930 their respective pictogram on the game board. The winner is the first to
10931 complete a line of five markers. (Also known as: Connect Five, Five in a row,
10932 X and O, Naughts and Crosses)
10933
10934 This package is part of the KDE games module.")
10935 (license (list license:gpl2+ license:fdl1.2+))))
10936
10937 (define-public killbots
10938 (package
10939 (name "killbots")
10940 (version "19.08.3")
10941 (source
10942 (origin
10943 (method url-fetch)
10944 (uri (string-append "mirror://kde/stable/applications/" version
10945 "/src/killbots-" version ".tar.xz"))
10946 (sha256
10947 (base32 "1qi86q7diw7glkp9v33yim9nhz2da4balbxa1hjrdgjdv8zdbxbm"))))
10948 (build-system qt-build-system)
10949 (native-inputs
10950 `(("extra-cmake-modules" ,extra-cmake-modules)
10951 ("kdoctools" ,kdoctools)))
10952 (inputs
10953 `(("kcompletion" ,kcompletion)
10954 ("kconfig" ,kconfig)
10955 ("kconfigwidgets" ,kconfigwidgets)
10956 ("kcoreaddons" ,kcoreaddons)
10957 ("kcrash" ,kcrash)
10958 ("kdbusaddons" ,kdbusaddons)
10959 ("ki18n" ,ki18n)
10960 ("kwidgetsaddons" ,kwidgetsaddons)
10961 ("kxmlgui" ,kxmlgui)
10962 ("libkdegames" ,libkdegames)
10963 ("qtbase" ,qtbase)
10964 ("qtdeclarative" ,qtdeclarative)))
10965 (home-page "https://games.kde.org/")
10966 (synopsis "Port of the classic BSD console game robots")
10967 (description "Killbots is a simple game of evading killer robots.
10968
10969 Who created the robots and why they have been programmed to destroy, no one
10970 knows. All that is known is that the robots are numerous and their sole
10971 objective is to destroy you. Fortunately for you, their creator has focused
10972 on quantity rather than quality and as a result the robots are severely
10973 lacking in intelligence. Your superior wit and a fancy teleportation device
10974 are your only weapons against the never-ending stream of mindless automatons.
10975
10976 This package is part of the KDE games module.")
10977 (license (list license:gpl2+ license:fdl1.2+))))
10978
10979 (define-public ksnakeduel
10980 (package
10981 (name "ksnakeduel")
10982 (version "19.08.3")
10983 (source
10984 (origin
10985 (method url-fetch)
10986 (uri (string-append "mirror://kde/stable/applications/" version
10987 "/src/ksnakeduel-" version ".tar.xz"))
10988 (sha256
10989 (base32 "0mprrnpax8pv7ab36zwhvdfj8id52w8g6x76nnj8qvkdlkjiqdnn"))))
10990 (build-system qt-build-system)
10991 (native-inputs
10992 `(("extra-cmake-modules" ,extra-cmake-modules)
10993 ("kdoctools" ,kdoctools)))
10994 (inputs
10995 `(("kcompletion" ,kcompletion)
10996 ("kconfig" ,kconfig)
10997 ("kconfigwidgets" ,kconfigwidgets)
10998 ("kcoreaddons" ,kcoreaddons)
10999 ("kcrash" ,kcrash)
11000 ("kdbusaddons" ,kdbusaddons)
11001 ("kguiaddons" ,kguiaddons)
11002 ("ki18n" ,ki18n)
11003 ("kxmlgui" ,kxmlgui)
11004 ("libkdegames" ,libkdegames)
11005 ("qtbase" ,qtbase)
11006 ("qtdeclarative" ,qtdeclarative)
11007 ("qtsvg" ,qtsvg)))
11008 (home-page "https://games.kde.org/")
11009 (synopsis "Snake race played against the computer")
11010 (description "KSnakeDuel is a fast action game where you steer a snake
11011 which has to eat food. While eating the snake grows. But once a player
11012 collides with the other snake or the wall the game is lost. This becomes of
11013 course more and more difficult the longer the snakes grow.
11014
11015 This package is part of the KDE games module.")
11016 (license (list license:gpl2+ license:fdl1.2+))))
11017
11018 (define-public kollision
11019 (package
11020 (name "kollision")
11021 (version "19.08.3")
11022 (source
11023 (origin
11024 (method url-fetch)
11025 (uri (string-append "mirror://kde/stable/applications/" version
11026 "/src/kollision-" version ".tar.xz"))
11027 (sha256
11028 (base32 "1p7qrn3d0ybpvc9k6k5wzj54dsrp1rqh39844maz0ay2fhvmch12"))))
11029 (build-system qt-build-system)
11030 (native-inputs
11031 `(("extra-cmake-modules" ,extra-cmake-modules)
11032 ("kdoctools" ,kdoctools)))
11033 (inputs
11034 `(("kcompletion" ,kcompletion)
11035 ("kconfig" ,kconfig)
11036 ("kcoreaddons" ,kcoreaddons)
11037 ("kcrash" ,kcrash)
11038 ("kdbusaddons" ,kdbusaddons)
11039 ("ki18n" ,ki18n)
11040 ("kwidgetsaddons" ,kwidgetsaddons)
11041 ("kxmlgui" ,kxmlgui)
11042 ("libkdegames" ,libkdegames)
11043 ("qtbase" ,qtbase)
11044 ("qtdeclarative" ,qtdeclarative)))
11045 (home-page "https://games.kde.org/")
11046 (synopsis "Simple ball dodging game")
11047 (description "In Kollision you use mouse to control a small blue ball in a
11048 closed space environment filled with small red balls, which move about
11049 chaotically. Your goal is to avoid touching any of those red balls with your
11050 blue one, because the moment you do the game will be over. The longer you can
11051 stay in game the higher will your score be.
11052
11053 This package is part of the KDE games module.")
11054 (license (list license:gpl2+ license:fdl1.2+))))
11055
11056 (define-public knavalbattle
11057 (package
11058 (name "knavalbattle")
11059 (version "19.08.3")
11060 (source
11061 (origin
11062 (method url-fetch)
11063 (uri (string-append "mirror://kde/stable/applications/" version
11064 "/src/knavalbattle-" version ".tar.xz"))
11065 (sha256
11066 (base32 "0sdfjplqkb30x2mvh66pkzay6vn5px87779sh2s8lpl6fcw0v9g4"))))
11067 (build-system qt-build-system)
11068 (native-inputs
11069 `(("extra-cmake-modules" ,extra-cmake-modules)
11070 ("kdoctools" ,kdoctools)))
11071 (inputs
11072 `(("kauth" ,kauth)
11073 ("kcompletion" ,kcompletion)
11074 ("kconfig" ,kconfig)
11075 ("kconfigwidgets" ,kconfigwidgets)
11076 ("kcoreaddons" ,kcoreaddons)
11077 ("kcrash" ,kcrash)
11078 ("kdbusaddons" ,kdbusaddons)
11079 ("kdnssd" ,kdnssd)
11080 ("ki18n" ,ki18n)
11081 ("ktextwidgets" ,ktextwidgets)
11082 ("kxmlgui" ,kxmlgui)
11083 ("libkdegames" ,libkdegames)
11084 ("qtbase" ,qtbase)
11085 ("qtdeclarative" ,qtdeclarative)))
11086 (home-page "https://games.kde.org/")
11087 (synopsis "Battleship board game with built-in game server")
11088 (description "KBattleship is a Battle Ship game for KDE.
11089
11090 Ships are placed on a board which represents the sea. Players try to hit each
11091 others ships in turns without knowing where they are placed. The first player
11092 to destroy all ships wins the game.
11093
11094 This package is part of the KDE games module.")
11095 (license (list license:gpl2+ license:fdl1.2+))))
11096
11097 (define-public kreversi
11098 (package
11099 (name "kreversi")
11100 (version "19.08.3")
11101 (source
11102 (origin
11103 (method url-fetch)
11104 (uri (string-append "mirror://kde/stable/applications/" version
11105 "/src/kreversi-" version ".tar.xz"))
11106 (sha256
11107 (base32 "0b6q8df2bawgnrswhq59z37axad0q3zpvvzxdds7sz1lw505xw9h"))))
11108 (build-system qt-build-system)
11109 (native-inputs
11110 `(("extra-cmake-modules" ,extra-cmake-modules)
11111 ("kdoctools" ,kdoctools)))
11112 (inputs
11113 `(("kconfig" ,kconfig)
11114 ("kconfigwidgets" ,kconfigwidgets)
11115 ("kcoreaddons" ,kcoreaddons)
11116 ("kcrash" ,kcrash)
11117 ("kdbusaddons" ,kdbusaddons)
11118 ("kdeclarative" ,kdeclarative)
11119 ("ki18n" ,ki18n)
11120 ("kiconthemes" ,kiconthemes)
11121 ("kio" ,kio)
11122 ("kxmlgui" ,kxmlgui)
11123 ("libkdegames" ,libkdegames)
11124 ("qtbase" ,qtbase)
11125 ("qtdeclarative" ,qtdeclarative)
11126 ("qtsvg" ,qtsvg)))
11127 (home-page "https://games.kde.org/")
11128 (synopsis "Old reversi board game, also known as othello")
11129 (description "KReversi is a simple one player strategy game played
11130 against the computer.
11131
11132 If a player's piece is captured by an opposing player, that piece is turned
11133 over to reveal the color of that player. A winner is declared when one player
11134 has more pieces of his own color on the board and there are no more possible
11135 moves.
11136
11137 This package is part of the KDE games module.")
11138 (license (list license:gpl2+ license:fdl1.2+))))
11139
11140 (define-public ksquares
11141 (package
11142 (name "ksquares")
11143 (version "19.08.3")
11144 (source
11145 (origin
11146 (method url-fetch)
11147 (uri (string-append "mirror://kde/stable/applications/" version
11148 "/src/ksquares-" version ".tar.xz"))
11149 (sha256
11150 (base32 "0hv8hls5s627lys08nnw72rfzsafj3dmp49mh2afzmh6lgk9h5vy"))))
11151 (build-system qt-build-system)
11152 (native-inputs
11153 `(("extra-cmake-modules" ,extra-cmake-modules)
11154 ("kdoctools" ,kdoctools)))
11155 (inputs
11156 `(("kcompletion" ,kcompletion)
11157 ("kconfig" ,kconfig)
11158 ("kconfigwidgets" ,kconfigwidgets)
11159 ("kcoreaddons" ,kcoreaddons)
11160 ("kcrash" ,kcrash)
11161 ("kdbusaddons" ,kdbusaddons)
11162 ("ki18n" ,ki18n)
11163 ("kwidgetsaddons" ,kwidgetsaddons)
11164 ("kxmlgui" ,kxmlgui)
11165 ("libkdegames" ,libkdegames)
11166 ("qtbase" ,qtbase)
11167 ("qtdeclarative" ,qtdeclarative)))
11168 (home-page "https://games.kde.org/")
11169 (synopsis "Dots and Boxes game")
11170 (description "KSquares is an implementation of the popular paper based
11171 game Squares. Two players take turns connecting dots on a grid to complete
11172 squares, the player with the most squares wins.
11173
11174 This package is part of the KDE games module.")
11175 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
11176
11177 (define-public kjumpingcube
11178 (package
11179 (name "kjumpingcube")
11180 (version "19.08.3")
11181 (source
11182 (origin
11183 (method url-fetch)
11184 (uri (string-append "mirror://kde/stable/applications/" version
11185 "/src/kjumpingcube-" version ".tar.xz"))
11186 (sha256
11187 (base32 "0d67zqkf2xffjkj671gl2n6nj6jajyn6rgqqj5i6gm500mqi9rm1"))))
11188 (build-system qt-build-system)
11189 (native-inputs
11190 `(("extra-cmake-modules" ,extra-cmake-modules)
11191 ("kdoctools" ,kdoctools)))
11192 (inputs
11193 `(("kconfig" ,kconfig)
11194 ("kconfigwidgets" ,kconfigwidgets)
11195 ("kcoreaddons" ,kcoreaddons)
11196 ("kcrash" ,kcrash)
11197 ("kdbusaddons" ,kdbusaddons)
11198 ("ki18n" ,ki18n)
11199 ("kio" ,kio)
11200 ("kwidgetsaddons" ,kwidgetsaddons)
11201 ("kxmlgui" ,kxmlgui)
11202 ("libkdegames" ,libkdegames)
11203 ("qtbase" ,qtbase)
11204 ("qtdeclarative" ,qtdeclarative)
11205 ("qtsvg" ,qtsvg)))
11206 (home-page "https://games.kde.org/")
11207 (synopsis "Simple tactical game for number-crunchers")
11208 (description "KJumpingcube is a simple tactical game for one or two
11209 players, played on a grid of numbered squares. Each turn, players compete for
11210 control of the board by capturing or adding to one square.
11211
11212 This package is part of the KDE games module.")
11213 (license (list license:gpl2+ license:fdl1.2+))))
11214
11215 (define-public xmoto
11216 (package
11217 (name "xmoto")
11218 (version "0.6.1")
11219 (source
11220 (origin
11221 (method git-fetch)
11222 (uri (git-reference
11223 (url "https://github.com/xmoto/xmoto")
11224 (commit version)))
11225 (file-name (git-file-name name version))
11226 (sha256
11227 (base32 "00f5ha79lfa2iiaz66wl0hl5dapa1l15qdr7m7knzi0ll7j6z66n"))
11228 (modules '((guix build utils)
11229 (ice-9 ftw)
11230 (srfi srfi-1)))
11231 ;; XXX: Remove some bundled libraries. Guix provides Chipmunk, but
11232 ;; it appears to be incompatible with the (older) one bundled.
11233 (snippet
11234 `(begin
11235 (let ((keep '("chipmunk" "glad" "md5sum")))
11236 (with-directory-excursion "vendor"
11237 (for-each delete-file-recursively
11238 (lset-difference string=?
11239 (scandir ".")
11240 (cons* "." ".." keep))))
11241 (substitute* "src/CMakeLists.txt"
11242 (("add_subdirectory\\(.*?/vendor/(.+?)\".*" line library)
11243 (if (member library keep) line ""))))
11244 #t))))
11245 (build-system cmake-build-system)
11246 (arguments
11247 `(#:tests? #f ;no test
11248 #:phases
11249 (modify-phases %standard-phases
11250 (add-after 'unpack 'fix-hard-coded-directory
11251 (lambda* (#:key outputs #:allow-other-keys)
11252 (substitute* "src/common/VFileIO.cpp"
11253 (("/usr/share")
11254 (string-append (assoc-ref outputs "out") "/share")))
11255 #t))
11256 (add-before 'build 'set-SDL
11257 ;; Set correct environment for SDL.
11258 (lambda* (#:key inputs #:allow-other-keys)
11259 (setenv "CPATH"
11260 (string-append
11261 (assoc-ref inputs "sdl") "/include/SDL:"
11262 (or (getenv "CPATH") "")))
11263 #t))
11264 (add-after 'install 'unbundle-fonts
11265 ;; Unbundle DejaVuSans TTF files.
11266 (lambda* (#:key outputs inputs #:allow-other-keys)
11267 (let ((font-dir (string-append (assoc-ref inputs "font-dejavu")
11268 "/share/fonts/truetype/"))
11269 (target-dir (string-append (assoc-ref outputs "out")
11270 "/share/xmoto/Textures/Fonts/")))
11271 (for-each (lambda (f)
11272 (let ((font (string-append font-dir f))
11273 (target (string-append target-dir f)))
11274 (delete-file target)
11275 (symlink font target)))
11276 '("DejaVuSans.ttf" "DejaVuSansMono.ttf"))
11277 #t))))))
11278 (native-inputs
11279 `(("gettext" ,gettext-minimal)
11280 ("pkg-config" ,pkg-config)))
11281 (inputs
11282 `(("bzip2" ,bzip2)
11283 ("curl" ,curl)
11284 ("font-dejavu" ,font-dejavu)
11285 ("glu" ,glu)
11286 ("libjpeg" ,libjpeg-turbo)
11287 ("libpng" ,libpng)
11288 ("libxdg-basedir" ,libxdg-basedir)
11289 ("libxml2" ,libxml2)
11290 ("lua" ,lua-5.1)
11291 ("ode" ,ode)
11292 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-net sdl-ttf)))
11293 ("sqlite" ,sqlite)
11294 ("zlib" ,zlib)))
11295 (home-page "https://xmoto.tuxfamily.org/")
11296 (synopsis "2D motocross platform game")
11297 (description
11298 "X-Moto is a challenging 2D motocross platform game, where
11299 physics play an all important role in the gameplay. You need to
11300 control your bike to its limit, if you want to have a chance finishing
11301 the more difficult challenges.")
11302 (license (list license:gpl2+ ;whole project
11303 license:bsd-3 ;vendor/md5sum
11304 license:lgpl2.1+
11305 license:expat))))
11306
11307 (define-public eboard
11308 (package
11309 (name "eboard")
11310 (version "1.1.3")
11311 (source
11312 (origin
11313 (method git-fetch)
11314 (uri (git-reference
11315 (url "https://github.com/fbergo/eboard")
11316 (commit (string-append "v" version))))
11317 (file-name (git-file-name name version))
11318 (sha256
11319 (base32 "1z4pwpqyvxhlda99h6arh2rjk90fbms9q29fqizjblrdn01dlxn1"))))
11320 (build-system gnu-build-system)
11321 (native-inputs
11322 `(("perl" ,perl)
11323 ("pkg-config" ,pkg-config)))
11324 (inputs
11325 `(("gtk+" ,gtk+-2)
11326 ("libpng" ,libpng)
11327 ("gstreamer" ,gstreamer)))
11328 (arguments
11329 `(#:tests? #f
11330 #:phases
11331 (modify-phases %standard-phases
11332 (replace 'configure
11333 (lambda* (#:key outputs #:allow-other-keys)
11334 (make-file-writable "eboard-config")
11335 (setenv "CC" "gcc")
11336 (invoke "./configure"
11337 (string-append "--prefix=" (assoc-ref outputs "out")))
11338 #t))
11339 (add-before 'install 'make-required-directories
11340 (lambda* (#:key outputs #:allow-other-keys)
11341 (mkdir-p (string-append (assoc-ref outputs "out")
11342 "/share/eboard"))
11343 #t)))))
11344 (synopsis "Graphical user interface to play chess")
11345 (description
11346 "Eboard is a chess board interface for ICS (Internet Chess Servers)
11347 and chess engines.")
11348 (home-page "https://www.bergo.eng.br/eboard/")
11349 (license license:gpl2+)))
11350
11351 (define-public chessx
11352 (package
11353 (name "chessx")
11354 (version "1.5.4")
11355 (source
11356 (origin
11357 (method url-fetch)
11358 (uri (string-append "mirror://sourceforge/chessx/chessx/"
11359 version "/chessx-" version ".tgz"))
11360 (sha256
11361 (base32 "1a3541vl5hp6jllgx998w9kjh9kp3wrl80yfwkxmq1bc5bzsrnz2"))))
11362 (build-system qt-build-system)
11363 (native-inputs
11364 `(("qttools" ,qttools)))
11365 (inputs
11366 `(("qtbase" ,qtbase)
11367 ("qtmultimedia" ,qtmultimedia)
11368 ("qtspeech" ,qtspeech)
11369 ("qtsvg" ,qtsvg)
11370 ("zlib" ,zlib)))
11371 (arguments
11372 `(#:tests? #f
11373 #:phases
11374 (modify-phases %standard-phases
11375 (add-after 'unpack 'fix-paths
11376 (lambda* (#:key inputs #:allow-other-keys)
11377 (substitute* "chessx.pro"
11378 (("\\$\\$\\[QT_INSTALL_BINS\\]/lrelease")
11379 (string-append (assoc-ref inputs "qttools") "/bin/lrelease"))
11380 ;; Fix missing translations.
11381 (("TRANSLATIONS = i18n/chessx_de.ts")
11382 "TRANSLATIONS = i18n/chessx_de.ts i18n/chessx_da.ts \\
11383 i18n/chessx_fr.ts i18n/chessx_it.ts i18n/chessx_cz.ts i18n/chessx_ru.ts \\
11384 i18n/chessx_es.ts"))
11385 #t))
11386 (add-after 'fix-paths 'make-qt-deterministic
11387 (lambda _
11388 (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1")
11389 #t))
11390 (replace 'configure
11391 (lambda _
11392 (invoke "qmake")
11393 #t))
11394 (replace 'install
11395 (lambda* (#:key outputs #:allow-other-keys)
11396 (let ((out (assoc-ref outputs "out")))
11397 (install-file "release/chessx" (string-append out "/bin"))
11398 (install-file "unix/chessx.desktop"
11399 (string-append out "/share/applications")))
11400 #t)))))
11401 (synopsis "Chess game database")
11402 (description
11403 "ChessX is a chess database. With ChessX you can operate on your
11404 collection of chess games in many ways: browse, edit, add, organize, analyze,
11405 etc. You can also play games on FICS or against an engine.")
11406 (home-page "http://chessx.sourceforge.net/")
11407 (license license:gpl2+)))
11408
11409 (define-public stockfish
11410 (package
11411 (name "stockfish")
11412 (version "12")
11413 (source
11414 (origin
11415 (method git-fetch)
11416 (uri (git-reference
11417 (url "https://github.com/official-stockfish/Stockfish")
11418 (commit (string-append "sf_" version))))
11419 (file-name (git-file-name name version))
11420 (sha256
11421 (base32 "0vcymbwp5nf114pp3ax40s21ki5dckda15vmhr77d1mnq3fn0l32"))))
11422 (build-system gnu-build-system)
11423 (inputs
11424 `(("neural-network"
11425 ,(origin
11426 (method url-fetch)
11427 (uri "https://tests.stockfishchess.org/api/nn/nn-82215d0fd0df.nnue")
11428 (sha256
11429 (base32 "1r4yqrh4di05syyhl84hqcz84djpbd605b27zhbxwg6zs07ms8c2"))))))
11430 (arguments
11431 `(#:tests? #f
11432 #:make-flags (list "-C" "src"
11433 "build"
11434 (string-append "PREFIX="
11435 (assoc-ref %outputs "out"))
11436 (string-append "ARCH="
11437 ,(match (%current-system)
11438 ("x86_64-linux" "x86-64")
11439 ("i686-linux" "x86-32")
11440 ("aarch64-linux" "general-64")
11441 ("armhf-linux" "armv7")
11442 ("mips64el-linux" "general-64")
11443 (_ "general-32"))))
11444 #:phases (modify-phases %standard-phases
11445 (delete 'configure)
11446 ;; The official neural network file is needed for building
11447 ;; and is embedded in the resulting binary.
11448 (add-after 'unpack 'copy-net
11449 (lambda* (#:key inputs #:allow-other-keys)
11450 (copy-file (assoc-ref inputs "neural-network")
11451 "src/nn-82215d0fd0df.nnue")
11452 #t)))))
11453 (synopsis "Strong chess engine")
11454 (description
11455 "Stockfish is a very strong chess engine. It is much stronger than the
11456 best human chess grandmasters. It can be used with UCI-compatible GUIs like
11457 ChessX.")
11458 (home-page "https://stockfishchess.org/")
11459 (license license:gpl3+)))
11460
11461 (define-public barrage
11462 (package
11463 (name "barrage")
11464 (version "1.0.5")
11465 (source
11466 (origin
11467 (method url-fetch)
11468 (uri (string-append "mirror://sourceforge/lgames/barrage/"
11469 "barrage-" version ".tar.gz"))
11470 (sha256
11471 (base32 "0139wxyrir10cbkvkjn548xgmp84wax8mfwk80yxbxlcdamrg257"))))
11472 (build-system gnu-build-system)
11473 (inputs
11474 `(("hicolor-icon-theme" ,hicolor-icon-theme)
11475 ("sdl" ,sdl)
11476 ("sdl-mixer" ,sdl-mixer)))
11477 (arguments
11478 `(#:configure-flags
11479 (list
11480 (string-append "CFLAGS="
11481 "-I" (assoc-ref %build-inputs "sdl-mixer")
11482 "/include/SDL"))))
11483 (home-page "http://lgames.sourceforge.net/Barrage/")
11484 (synopsis "Violent point-and-click shooting game with nice effects")
11485 (description
11486 "Barrage is a rather destructive action game that puts you on a shooting
11487 range with the objective to hit as many dummy targets as possible within
11488 3 minutes. You control a gun that may either fire small or large grenades at
11489 soldiers, jeeps and tanks. The gameplay is simple but it is not that easy to
11490 get high scores.")
11491 (license license:gpl2+)))
11492
11493 (define-public burgerspace
11494 (package
11495 (name "burgerspace")
11496 (version "1.9.3")
11497 (source
11498 (origin
11499 (method url-fetch)
11500 (uri (string-append "http://perso.b2b2c.ca/~sarrazip/dev/"
11501 "burgerspace-" version ".tar.gz"))
11502 (sha256
11503 (base32 "1005a04rbn4lzjrpfg0m394k2mfaji63fm2qhdqdsxila8a6kjbv"))))
11504 (build-system gnu-build-system)
11505 (native-inputs
11506 `(("pkg-config" ,pkg-config)))
11507 (inputs
11508 `(("flatzebra" ,flatzebra)))
11509 (home-page "http://perso.b2b2c.ca/~sarrazip/dev/burgerspace.html")
11510 (synopsis "Avoid evil foodstuffs and make burgers")
11511 (description
11512 "This is a clone of the classic game BurgerTime. In it, you play
11513 the part of a chef who must create burgers by stepping repeatedly on
11514 the ingredients until they fall into place. And to make things more
11515 complicated, you also must avoid evil animate food items while
11516 performing this task, with nothing but your trusty pepper shaker to
11517 protect you.")
11518 (license license:gpl2+)))
11519
11520 (define-public 7kaa
11521 (package
11522 (name "7kaa")
11523 (version "2.15.4p1")
11524 (source
11525 (origin
11526 (method url-fetch)
11527 (uri (string-append "https://github.com/the3dfxdude/7kaa/"
11528 "releases/download/v" version "/"
11529 "7kaa-" version ".tar.xz"))
11530 (sha256
11531 (base32 "1y7v0jhp3apb619p7asikqr1dnwb2yxbh40wbx1ppmr5f03mq9ph"))))
11532 (build-system gnu-build-system)
11533 (native-inputs
11534 `(("gettext" ,gettext-minimal)
11535 ("pkg-config" ,pkg-config)))
11536 (inputs
11537 `(("curl" ,curl)
11538 ("enet" ,enet)
11539 ("openal" ,openal)
11540 ("sdl2" ,sdl2)))
11541 (home-page "https://7kfans.com/")
11542 (synopsis "Seven Kingdoms Ancient Adversaries: real-time strategy game")
11543 (description
11544 "Seven Kingdoms, designed by Trevor Chan, brings a blend of Real-Time
11545 Strategy with the addition of trade, diplomacy, and espionage. The game
11546 enables players to compete against up to six other kingdoms allowing players
11547 to conquer opponents by defeating them in war (with troops or machines),
11548 capturing their buildings with spies, or offering opponents money for their
11549 kingdom.")
11550 (license license:gpl2+)))
11551
11552 (define-public neverball
11553 ;; Git version is 6-years younger than latest release.
11554 (let ((commit "760a25d32a5fb0661b99426d4ddcb9ac9f3d1644")
11555 (revision "1"))
11556 (package
11557 (name "neverball")
11558 (version (git-version "1.6.0" revision commit))
11559 (source
11560 (origin
11561 (method git-fetch)
11562 (uri (git-reference
11563 (url "https://github.com/Neverball/neverball")
11564 (commit commit)))
11565 (sha256
11566 (base32
11567 "0bwh67df3lyf33bv710y25l3frjdd34j9b7gsjadwxviz6r1vpj5"))
11568 (file-name (git-file-name name version))
11569 (modules '((guix build utils)))
11570 (snippet
11571 '(begin
11572 ;; Octocat seems to be non-free. Oddly, Debian doesn't strip it.
11573 (delete-file-recursively "data/ball/octocat")
11574 #t))))
11575 (build-system copy-build-system)
11576 (arguments
11577 `(#:install-plan
11578 '(("neverball" "bin/")
11579 ("neverputt" "bin/")
11580 ("mapc" "bin/")
11581 ("data" "share/games/neverball/")
11582 ("locale" "share/")
11583 ("dist/" "share/games/neverball" #:include ("neverball_replay.png"
11584 "neverlogos.svg"
11585 "svg readme.txt"))
11586 ("dist/" "share/applications" #:include ("neverball.desktop"
11587 "neverputt.desktop"))
11588 ("dist/neverball_16.png"
11589 "/share/icons/hicolor/16x16/apps/neverball.png")
11590 ("dist/neverball_24.png"
11591 "/share/icons/hicolor/24x24/apps/neverball.png")
11592 ("dist/neverball_32.png"
11593 "/share/icons/hicolor/32x32/apps/neverball.png")
11594 ("dist/neverball_48.png"
11595 "/share/icons/hicolor/48x48/apps/neverball.png")
11596 ("dist/neverball_64.png"
11597 "/share/icons/hicolor/64x64/apps/neverball.png")
11598 ("dist/neverball_128.png"
11599 "/share/icons/hicolor/128x128/apps/neverball.png")
11600 ("dist/neverball_256.png"
11601 "/share/icons/hicolor/256x256/apps/neverball.png")
11602 ("dist/neverball_512.png"
11603 "/share/icons/hicolor/512x512/apps/neverball.png")
11604 ("dist/neverputt_16.png"
11605 "/share/icons/hicolor/16x16/apps/neverputt.png")
11606 ("dist/neverputt_24.png"
11607 "/share/icons/hicolor/24x24/apps/neverputt.png")
11608 ("dist/neverputt_32.png"
11609 "/share/icons/hicolor/32x32/apps/neverputt.png")
11610 ("dist/neverputt_48.png"
11611 "/share/icons/hicolor/48x48/apps/neverputt.png")
11612 ("dist/neverputt_64.png"
11613 "/share/icons/hicolor/64x64/apps/neverputt.png")
11614 ("dist/neverputt_128.png"
11615 "/share/icons/hicolor/128x128/apps/neverputt.png")
11616 ("dist/neverputt_256.png"
11617 "/share/icons/hicolor/256x256/apps/neverputt.png")
11618 ("dist/neverputt_512.png"
11619 "/share/icons/hicolor/512x512/apps/neverputt.png")
11620 ("dist/" "share/man/man1" #:include ("mapc.1"))
11621 ("dist/" "share/man/man6" #:include ("neverball.6" "neverputt.6"))
11622 ("doc/" "share/doc/neverball")
11623 ("README.md" "share/doc/neverball/"))
11624 #:phases
11625 (modify-phases %standard-phases
11626 (add-before 'install 'build
11627 (lambda* (#:key inputs outputs #:allow-other-keys)
11628 (let* ((out (assoc-ref outputs "out"))
11629 (sdl (assoc-ref inputs "sdl")))
11630 (invoke "make" "-j" (number->string (parallel-job-count))
11631 "--environment-overrides"
11632 "CC=gcc" "BUILD=release"
11633 (string-append "DATADIR="
11634 out
11635 "/share/games/neverball/data")
11636 (string-append "LOCALEDIR=" out "/share/locale")
11637 (string-append "SDL_CPPFLAGS=-I"
11638 sdl
11639 "/include/SDL2/")))
11640 #t))
11641 (add-after 'install 'fix-some-broken-fonts
11642 (lambda* (#:key outputs #:allow-other-keys)
11643 (let* ((out (assoc-ref outputs "out")))
11644 (wrap-program (string-append out "/bin/neverball")
11645 `("LANG" = ("en_US.utf8")))
11646 (wrap-program (string-append out "/bin/neverputt")
11647 `("LANG" = ("en_US.utf8"))))
11648 #t)))))
11649 (native-inputs
11650 `(("gettext" ,gettext-minimal))) ;for msgfmt
11651 (inputs
11652 `(("libjpeg" ,libjpeg-turbo)
11653 ("libpng" ,libpng)
11654 ("libvorbis" ,libvorbis)
11655 ("physfs" ,physfs)
11656 ("sdl" ,(sdl-union (list sdl2 sdl2-ttf)))))
11657 (home-page "https://neverball.org/")
11658 (synopsis "3D floor-tilting game")
11659 (description
11660 "In the grand tradition of Marble Madness and Super Monkey Ball,
11661 Neverball has you guide a rolling ball through dangerous territory. Balance
11662 on narrow bridges, navigate mazes, ride moving platforms, and dodge pushers
11663 and shovers to get to the goal. Race against the clock to collect coins to
11664 earn extra balls. Also included is Neverputt, which is a 3D miniature golf
11665 game.") ;thanks to Debian for description
11666 (license license:gpl2+))))
11667
11668 (define-public pokerth
11669 (package
11670 (name "pokerth")
11671 (version "1.1.2")
11672 (source
11673 (origin
11674 (method url-fetch)
11675 (uri (string-append "mirror://sourceforge/pokerth/pokerth/"
11676 version "/pokerth-" version ".tar.gz"))
11677 (sha256
11678 (base32 "0yi9bj3k8yc1gkwmaf14zbbvvn13n54n1dli8k6j1pkph3p3vjq2"))
11679 (modules '((guix build utils)))
11680 (snippet
11681 '(begin
11682 ;; Remove bundled websocketpp.
11683 (delete-file-recursively "src/third_party/websocketpp")
11684 (substitute* "pokerth_lib.pro"
11685 (("src/third_party/websocketpp")
11686 ""))
11687 #t))))
11688 (build-system qt-build-system)
11689 (inputs
11690 `(("boost" ,boost)
11691 ("curl" ,curl)
11692 ("gsasl" ,gsasl)
11693 ("libgcrypt" ,libgcrypt)
11694 ("libircclient" ,libircclient)
11695 ("protobuf" ,protobuf-2) ; remove package when no longer needed
11696 ("qtbase" ,qtbase)
11697 ("sdl" ,(sdl-union (list sdl sdl-mixer)))
11698 ("sqlite" ,sqlite)
11699 ("tinyxml" ,tinyxml)
11700 ("websocketpp" ,websocketpp)
11701 ("zlib" ,zlib)))
11702 (arguments
11703 `(#:tests? #f ; No test suite
11704 #:phases
11705 (modify-phases %standard-phases
11706 (add-after 'unpack 'fix-paths
11707 (lambda* (#:key inputs #:allow-other-keys)
11708 (substitute* (find-files "." "\\.pro$")
11709 (("/opt/gsasl")
11710 (assoc-ref inputs "gsasl"))
11711 (("\\$\\$\\{PREFIX\\}/include/libircclient")
11712 (string-append (assoc-ref inputs "libircclient")
11713 "/include/libircclient"))
11714 (("LIB_DIRS =")
11715 (string-append "LIB_DIRS = "
11716 (assoc-ref inputs "boost") "/lib")))
11717 #t))
11718 (add-after 'unpack 'fix-build
11719 (lambda _
11720 ;; Fixes for Boost versions >= 1.66.
11721 (substitute* '("src/net/common/clientthread.cpp"
11722 "src/net/serveraccepthelper.h")
11723 (("boost::asio::socket_base::non_blocking_io command\\(true\\);")
11724 "")
11725 (("newSock->io_control\\(command\\);")
11726 "newSock->non_blocking(true);")
11727 (("acceptedSocket->io_control\\(command\\);")
11728 "acceptedSocket->non_blocking(true);"))
11729 #t))
11730 (replace 'configure
11731 (lambda* (#:key outputs #:allow-other-keys)
11732 (invoke "qmake" "pokerth.pro" "CONFIG+=client"
11733 (string-append "PREFIX=" (assoc-ref outputs "out"))))))))
11734 (home-page "https://www.pokerth.net")
11735 (synopsis "Texas holdem poker game")
11736 (description
11737 "With PokerTH you can play the Texas holdem poker game, either against
11738 computer opponents or against real players online.")
11739 (license license:agpl3+)))
11740
11741 (define-public azimuth
11742 (package
11743 (name "azimuth")
11744 ;; Not marked as latest release, but it fixes a compiling issue
11745 ;; and adds the install target.
11746 (version "1.0.3")
11747 (source
11748 (origin
11749 (method git-fetch)
11750 (uri (git-reference
11751 (url "https://github.com/mdsteele/azimuth")
11752 (commit (string-append "v" version))))
11753 (file-name (git-file-name name version))
11754 (sha256
11755 (base32
11756 "1znfvpmqiixd977jv748glk5zc4cmhw5813zp81waj07r9b0828r"))))
11757 (build-system gnu-build-system)
11758 (arguments
11759 `(#:test-target "test"
11760 #:phases
11761 (modify-phases %standard-phases
11762 (delete 'configure) ; no configure script
11763 ;; Build release version instead of debug version.
11764 (add-after 'unpack 'set-release
11765 (lambda _
11766 (setenv "BUILDTYPE" "release") #t))
11767 (add-after 'unpack 'fix-install ; set install directory
11768 (lambda* (#:key outputs #:allow-other-keys)
11769 (substitute* "Makefile" (("/usr") (assoc-ref outputs "out"))) #t)))))
11770 (inputs `(("sdl" ,sdl)))
11771 (home-page "https://mdsteele.games/azimuth/")
11772 (synopsis "Metroidvania game with vector graphics")
11773 (description
11774 "Pilot your ship inside a planet to find and rescue the colonists trapped
11775 inside the Zenith Colony.")
11776 (license license:gpl3+)))
11777
11778 (define-public paperview
11779 (let ((commit "9f8538eb6734c76877b878b8f1e52587f2ae19e6")
11780 (revision "1"))
11781 (package
11782 (name "paperview")
11783 (version (git-version "0.0.1" revision commit)) ;no upstream release
11784 (source (origin
11785 (method git-fetch)
11786 (uri (git-reference
11787 (url "https://github.com/glouw/paperview")
11788 (commit commit)))
11789 (file-name (git-file-name name version))
11790 (sha256
11791 (base32
11792 "09sb9sg44fvkgfdyycrm1ndpx7cnkrglxhci41y8f3gpagnvi7jk"))))
11793 (build-system gnu-build-system)
11794 (inputs
11795 `(("sdl2" ,sdl2)))
11796 (arguments
11797 '(#:tests? #f ;no tests
11798 #:make-flags
11799 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
11800 #:phases
11801 (modify-phases %standard-phases
11802 (delete 'configure))))
11803 (home-page "https://github.com/glouw/paperview/")
11804 (synopsis "High performance X11 animated wallpaper setter")
11805 (description "High performance animated desktop background setter for
11806 X11 that won't set your CPU on fire, drain your laptop battery, or lower video
11807 game FPS.")
11808 (license license:unlicense))))