gnu: emacs-sly: Update to 20200228.
[jackhill/guix/guix.git] / gnu / packages / games.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2013 John Darrington <jmd@gnu.org>
3 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
4 ;;; Copyright © 2014, 2016 David Thompson <dthompson2@worcester.edu>
5 ;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020 Eric Bavier <bavier@posteo.net>
6 ;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com>
7 ;;; Copyright © 2014 Sylvain Beucler <beuc@beuc.net>
8 ;;; Copyright © 2014, 2015, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
9 ;;; Copyright © 2014, 2015, 2016 Sou Bunnbu <iyzsong@gmail.com>
10 ;;; Copyright © 2014, 2015, 2019 Mark H Weaver <mhw@netris.org>
11 ;;; Copyright © 2015, 2016 Andreas Enge <andreas@enge.fr>
12 ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
13 ;;; Copyright © 2015, 2017, 2018 Christopher Lemmer Webber <cwebber@dustycloud.org>
14 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
15 ;;; Copyright © 2015, 2016, 2017 Alex Kost <alezost@gmail.com>
16 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
17 ;;; Copyright © 2016, 2017 Rodger Fox <thylakoid@openmailbox.org>
18 ;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is>
19 ;;; Copyright © 2016 Albin Söderqvist <albin@fripost.org>
20 ;;; Copyright © 2016, 2017, 2018, 2019 Kei Kebreau <kkebreau@posteo.net>
21 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
22 ;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
23 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
24 ;;; Copyright © 2016 Steve Webber <webber.sl@gmail.com>
25 ;;; Copyright © 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@hyperbola.info>
26 ;;; Copyright © 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
27 ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
28 ;;; Copyright © 2017, 2019 nee <nee-git@hidamari.blue>
29 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
30 ;;; Copyright © 2017, 2019 Marius Bakke <mbakke@fastmail.com>
31 ;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
32 ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
33 ;;; Copyright © 2017, 2018, 2019, 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
34 ;;; Copyright © 2018 okapi <okapi@firemail.cc>
35 ;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
36 ;;; Copyright © 2018 Madalin Ionel-Patrascu <madalinionel.patrascu@mdc-berlin.de>
37 ;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net>
38 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
39 ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
40 ;;; Copyright © 2019, 2020 Oleg Pykhalov <go.wigust@gmail.com>
41 ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
42 ;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
43 ;;; Copyright © 2019 Jesse Gibbons <jgibbons2357+guix@gmail.com>
44 ;;; Copyright © 2019 Dan Frumin <dfrumin@cs.ru.nl>
45 ;;; Copyright © 2019, 2020 Guillaume Le Vaillant <glv@posteo.net>
46 ;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar@araneo.si>
47 ;;; Copyright © 2019 Josh Holland <josh@inv.alid.pw>
48 ;;; Copyright © 2017, 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
49 ;;;
50 ;;; This file is part of GNU Guix.
51 ;;;
52 ;;; GNU Guix is free software; you can redistribute it and/or modify it
53 ;;; under the terms of the GNU General Public License as published by
54 ;;; the Free Software Foundation; either version 3 of the License, or (at
55 ;;; your option) any later version.
56 ;;;
57 ;;; GNU Guix is distributed in the hope that it will be useful, but
58 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
59 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
60 ;;; GNU General Public License for more details.
61 ;;;
62 ;;; You should have received a copy of the GNU General Public License
63 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
64
65 (define-module (gnu packages games)
66 #:use-module (ice-9 match)
67 #:use-module ((guix licenses) #:prefix license:)
68 #:use-module (guix utils)
69 #:use-module (guix packages)
70 #:use-module (guix download)
71 #:use-module (guix git-download)
72 #:use-module (guix svn-download)
73 #:use-module (guix gexp)
74 #:use-module (gnu packages)
75 #:use-module (gnu packages algebra)
76 #:use-module (gnu packages autotools)
77 #:use-module (gnu packages backup)
78 #:use-module (gnu packages base)
79 #:use-module (gnu packages build-tools)
80 #:use-module (gnu packages admin)
81 #:use-module (gnu packages audio)
82 #:use-module (gnu packages avahi)
83 #:use-module (gnu packages assembly)
84 #:use-module (gnu packages bash)
85 #:use-module (gnu packages bison)
86 #:use-module (gnu packages boost)
87 #:use-module (gnu packages check)
88 #:use-module (gnu packages cmake)
89 #:use-module (gnu packages compression)
90 #:use-module (gnu packages curl)
91 #:use-module (gnu packages crypto)
92 #:use-module (gnu packages cyrus-sasl)
93 #:use-module (gnu packages documentation)
94 #:use-module (gnu packages docbook)
95 #:use-module (gnu packages emulators)
96 #:use-module (gnu packages flex)
97 #:use-module (gnu packages fltk)
98 #:use-module (gnu packages fonts)
99 #:use-module (gnu packages fontutils)
100 #:use-module (gnu packages freedesktop)
101 #:use-module (gnu packages fribidi)
102 #:use-module (gnu packages game-development)
103 #:use-module (gnu packages gcc)
104 #:use-module (gnu packages gettext)
105 #:use-module (gnu packages ghostscript)
106 #:use-module (gnu packages gimp)
107 #:use-module (gnu packages gl)
108 #:use-module (gnu packages glib)
109 #:use-module (gnu packages gnome)
110 #:use-module (gnu packages gnuzilla)
111 #:use-module (gnu packages gperf)
112 #:use-module (gnu packages graphics)
113 #:use-module (gnu packages gstreamer)
114 #:use-module (gnu packages gtk)
115 #:use-module (gnu packages guile)
116 #:use-module (gnu packages haskell)
117 #:use-module (gnu packages haskell-crypto)
118 #:use-module (gnu packages haskell-xyz)
119 #:use-module (gnu packages icu4c)
120 #:use-module (gnu packages image)
121 #:use-module (gnu packages imagemagick)
122 #:use-module (gnu packages kde)
123 #:use-module (gnu packages kde-frameworks)
124 #:use-module (gnu packages less)
125 #:use-module (gnu packages libcanberra)
126 #:use-module (gnu packages libedit)
127 #:use-module (gnu packages libunwind)
128 #:use-module (gnu packages linux)
129 #:use-module (gnu packages llvm)
130 #:use-module (gnu packages lua)
131 #:use-module (gnu packages man)
132 #:use-module (gnu packages maths)
133 #:use-module (gnu packages mp3)
134 #:use-module (gnu packages music)
135 #:use-module (gnu packages multiprecision)
136 #:use-module (gnu packages ncurses)
137 #:use-module (gnu packages netpbm)
138 #:use-module (gnu packages networking)
139 #:use-module (gnu packages ocaml)
140 #:use-module (gnu packages opencl)
141 #:use-module (gnu packages pcre)
142 #:use-module (gnu packages perl)
143 #:use-module (gnu packages perl-check)
144 #:use-module (gnu packages pkg-config)
145 #:use-module (gnu packages pulseaudio)
146 #:use-module (gnu packages python)
147 #:use-module (gnu packages python-xyz)
148 #:use-module (gnu packages qt)
149 #:use-module (gnu packages readline)
150 #:use-module (gnu packages shells)
151 #:use-module (gnu packages sdl)
152 #:use-module (gnu packages serialization)
153 #:use-module (gnu packages sqlite)
154 #:use-module (gnu packages squirrel)
155 #:use-module (gnu packages swig)
156 #:use-module (gnu packages tcl)
157 #:use-module (gnu packages terminals)
158 #:use-module (gnu packages texinfo)
159 #:use-module (gnu packages textutils)
160 #:use-module (gnu packages tls)
161 #:use-module (gnu packages upnp)
162 #:use-module (gnu packages video)
163 #:use-module (gnu packages vulkan)
164 #:use-module (gnu packages web)
165 #:use-module (gnu packages wget)
166 #:use-module (gnu packages wxwidgets)
167 #:use-module (gnu packages xdisorg)
168 #:use-module (gnu packages xorg)
169 #:use-module (gnu packages xiph)
170 #:use-module (gnu packages xml)
171 #:use-module (gnu packages messaging)
172 #:use-module (gnu packages networking)
173 #:use-module (guix build-system glib-or-gtk)
174 #:use-module (guix build-system gnu)
175 #:use-module (guix build-system go)
176 #:use-module (guix build-system meson)
177 #:use-module (guix build-system scons)
178 #:use-module (guix build-system python)
179 #:use-module (guix build-system cmake)
180 #:use-module (guix build-system qt)
181 #:use-module (guix build-system trivial)
182 #:use-module ((srfi srfi-1) #:hide (zip))
183 #:use-module (srfi srfi-26))
184
185 ;; Data package for adanaxisgpl.
186 (define adanaxis-mush
187 (let ((version "1.1.0"))
188 (origin
189 (method url-fetch)
190 (uri (string-append "http://www.mushware.com/files/adanaxis-mush-"
191 version ".tar.gz"))
192 (sha256
193 (base32 "0mk9ibis5nkdcalcg1lkgnsdxxbw4g5w2i3icjzy667hqirsng03")))))
194
195 (define-public adanaxisgpl
196 (package
197 (name "adanaxisgpl")
198 (version "1.2.5")
199 (source
200 (origin
201 (method url-fetch)
202 (uri (string-append "http://www.mushware.com/files/adanaxisgpl-"
203 version ".tar.gz"))
204 (sha256
205 (base32 "0jkn637jaabvlhd6hpvzb57vvjph94l6fbf7qxbjlw9zpr19dw1f"))
206 (modules '((guix build utils)))
207 (snippet
208 '(begin
209 ;; Necessary for building with gcc >=4.7.
210 (substitute* "src/Mushcore/MushcoreSingleton.h"
211 (("SingletonPtrSet\\(new SingletonType\\);")
212 "MushcoreSingleton::SingletonPtrSet(new SingletonType);"))
213 ;; Avoid an "invalid conversion from const char* to char*" error.
214 (substitute* "src/Platform/X11/PlatformMiscUtils.cpp"
215 (("char \\*end, \\*result;")
216 (string-append "const char *end;"
217 "\n"
218 "char *result;")))
219 #t))))
220 (build-system gnu-build-system)
221 (arguments
222 `(#:tests? #f ; no check target
223 #:phases
224 (modify-phases %standard-phases
225 (add-after 'install 'install-data
226 (lambda* (#:key inputs outputs #:allow-other-keys)
227 (let ((data (assoc-ref inputs "adanaxis-mush"))
228 (share (string-append (assoc-ref outputs "out")
229 "/share/" ,name "-" ,version)))
230 (mkdir-p share)
231 (invoke "tar" "xvf" data "-C" share)))))))
232 (native-inputs
233 `(("adanaxis-mush" ,adanaxis-mush))) ; game data
234 (inputs
235 `(("expat" ,expat)
236 ("freeglut" ,freeglut)
237 ("glu" ,glu)
238 ("libjpeg" ,libjpeg)
239 ("libogg" ,libogg)
240 ("libtiff" ,libtiff)
241 ("libvorbis" ,libvorbis)
242 ("libx11" ,libx11)
243 ("libxext" ,libxext)
244 ("pcre" ,pcre)
245 ("sdl" ,sdl)
246 ("sdl-mixer" ,sdl-mixer)))
247 (home-page "https://www.mushware.com")
248 (synopsis "Action game in four spatial dimensions")
249 (description
250 "Adanaxis is a fast-moving first person shooter set in deep space, where
251 the fundamentals of space itself are changed. By adding another dimension to
252 space this game provides an environment with movement in four directions and
253 six planes of rotation. Initially the game explains the 4D control system via
254 a graphical sequence, before moving on to 30 levels of gameplay with numerous
255 enemy, ally, weapon and mission types. Features include simulated 4D texturing,
256 mouse and joystick control, and original music.")
257 (license license:gpl2)))
258
259 (define-public alex4
260 (package
261 (name "alex4")
262 (version "1.2.1")
263 (source
264 (origin
265 (method git-fetch)
266 (uri (git-reference
267 (url "https://github.com/carstene1ns/alex4.git")
268 (commit version)))
269 (file-name (git-file-name name version))
270 (sha256
271 (base32 "098wy72mh4lsvq3gm0rhamjssf9l1hp6hhkpzrv7klpb97cwwc3h"))))
272 (build-system gnu-build-system)
273 (arguments
274 `(#:tests? #f ; no check target
275 #:make-flags
276 (list "CC=gcc"
277 "CFLAGS=-D_FILE_OFFSET_BITS=64"
278 (string-append "PREFIX=" (assoc-ref %outputs "out")))
279 #:phases
280 (modify-phases %standard-phases
281 (delete 'configure) ; no configure script
282 (add-after 'install 'install-data
283 (lambda* (#:key outputs #:allow-other-keys)
284 (let ((share (string-append (assoc-ref outputs "out")
285 "/share/" ,name)))
286 (install-file "alex4.ini" share)
287 #t))))))
288 (inputs
289 `(("allegro" ,allegro-4)
290 ("dumb" ,dumb-allegro4)))
291 (home-page "http://allegator.sourceforge.net/")
292 (synopsis "Retro platform game")
293 (description
294 "Guide Alex the Allegator through the jungle in order to save his
295 girlfriend Lola from evil humans who want to make a pair of shoes out of her.
296 Plenty of classic platforming in four nice colors guaranteed!
297
298 The game includes a built-in editor so you can design and share your own maps.")
299 (license license:gpl2+)))
300
301 (define-public armagetronad
302 (package
303 (name "armagetronad")
304 (version "0.2.8.3.4")
305 (source (origin
306 (method url-fetch)
307 (uri (string-append "mirror://sourceforge/armagetronad/stable/"
308 version "/armagetronad-" version ".src.tar.gz"))
309 (sha256
310 (base32
311 "1pgy0r80z702qdv94aw3ywdn4ynnr4cdi86ml558pljfc5ygasj4"))))
312 (build-system gnu-build-system)
313 (inputs
314 `(("libxml2" ,libxml2)
315 ("sdl" ,sdl)
316 ("sdl-image" ,sdl-image)
317 ("freeglut" ,freeglut)
318 ("libpng" ,libpng)
319 ("libjpeg-turbo" ,libjpeg-turbo)))
320 (home-page "http://www.armagetronad.org")
321 (synopsis "Tron clone in 3D")
322 (description "Armagetron Advanced is a multiplayer game in 3d that
323 attempts to emulate and expand on the lightcycle sequence from the movie Tron.
324 It's an old school arcade game slung into the 21st century. Highlights
325 include a customizable playing arena, HUD, unique graphics, and AI bots. For
326 the more advanced player there are new game modes and a wide variety of
327 physics settings to tweak as well.")
328 (license license:gpl2+)))
329
330 (define-public armagetron-advanced
331 (deprecated-package "armagetron-advanced" armagetronad))
332
333 (define-public bastet
334 (package
335 (name "bastet")
336 (version "0.43.2")
337 (source
338 (origin
339 (method git-fetch)
340 (uri (git-reference
341 (url "https://github.com/fph/bastet.git")
342 (commit version)))
343 (file-name (git-file-name name version))
344 (sha256
345 (base32 "09kamxapm9jw9przpsgjfg33n9k94bccv65w95dakj0br33a75wn"))
346 (patches
347 (search-patches "bastet-change-source-of-unordered_set.patch"))))
348 (build-system gnu-build-system)
349 (arguments
350 `(#:make-flags
351 (list (string-append "CXXFLAGS=-I"
352 (assoc-ref %build-inputs "boost") "/include"))
353 #:phases
354 (modify-phases %standard-phases
355 (delete 'configure) ; no configure script
356 (replace 'check
357 ;; The 'Test' target builds the tests, but doesn't actually run them.
358 (lambda* (#:key make-flags #:allow-other-keys)
359 (apply invoke "make" "Test" make-flags)
360 (setenv "HOME" ".")
361 (invoke "./Test")))
362 (replace 'install
363 (lambda* (#:key outputs #:allow-other-keys)
364 (let* ((out (assoc-ref outputs "out"))
365 (share (string-append out "/share"))
366 (hicolor (string-append share "/icons/hicolor")))
367 (install-file "bastet"
368 (string-append out "/bin"))
369
370 (install-file "bastet.desktop"
371 (string-append share "/applications"))
372 (install-file "bastet.svg"
373 (string-append hicolor "/scalable/apps"))
374
375 (install-file "bastet.appdata.xml"
376 (string-append share "/appdata"))
377
378 (install-file "bastet.6"
379 (string-append out "/share/man/man6"))
380 #t))))))
381 (native-inputs
382 `(("hicolor-icon-theme" ,hicolor-icon-theme)))
383 (inputs
384 `(("boost" ,boost)
385 ("ncurses" ,ncurses)))
386 (home-page "http://fph.altervista.org/prog/bastet.html")
387 (synopsis "Antagonistic Tetris-style falling brick game for text terminals")
388 (description
389 "Bastet (short for Bastard Tetris) is a simple ncurses-based falling brick
390 game. Unlike normal Tetris, Bastet does not choose the next brick at random.
391 Instead, it uses a special algorithm to choose the worst brick possible.
392
393 Playing bastet can be a painful experience, especially if you usually make
394 canyons and wait for the long I-shaped block to clear four rows at a time.")
395 (license license:gpl3+)))
396
397 (define-public cataclysm-dda
398 (let ((commit "9c732a5de48928691ab863d3ab275ca7b0e522fc"))
399 (package
400 (name "cataclysm-dda")
401 (version "0.D")
402 (source (origin
403 (method git-fetch)
404 (uri (git-reference
405 (url "https://github.com/CleverRaven/Cataclysm-DDA.git")
406 (commit commit)))
407 (sha256
408 (base32
409 "00zzhx1mh1qjq668cga5nbrxp2qk6b82j5ak65skhgnlr6ii4ysc"))
410 (file-name (git-file-name name version))))
411 (build-system gnu-build-system)
412 (arguments
413 '(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
414 "USE_HOME_DIR=1" "DYNAMIC_LINKING=1" "RELEASE=1"
415 "LOCALIZE=1" "LANGUAGES=all")
416 #:phases
417 (modify-phases %standard-phases
418 (delete 'configure)
419 (add-after 'build 'build-tiles
420 (lambda* (#:key make-flags outputs #:allow-other-keys)
421 ;; Change prefix directory and enable tile graphics and sound.
422 (apply invoke "make" "TILES=1" "SOUND=1"
423 (string-append "PREFIX="
424 (assoc-ref outputs "tiles"))
425 (cdr make-flags))))
426 (add-after 'install 'install-tiles
427 (lambda* (#:key make-flags outputs #:allow-other-keys)
428 (apply invoke "make" "install" "TILES=1" "SOUND=1"
429 (string-append "PREFIX="
430 (assoc-ref outputs "tiles"))
431 (cdr make-flags)))))
432 ;; TODO: Add libtap++ from https://github.com/cbab/libtappp as a native
433 ;; input in order to support tests.
434 #:tests? #f))
435 (outputs '("out"
436 "tiles")) ; For tile graphics and sound support.
437 (native-inputs
438 `(("gettext" ,gettext-minimal)
439 ("pkg-config" ,pkg-config)))
440 (inputs
441 `(("freetype" ,freetype)
442 ("libogg" ,libogg)
443 ("libvorbis" ,libvorbis)
444 ("ncurses" ,ncurses)
445 ("sdl2" ,sdl2)
446 ("sdl2-image" ,sdl2-image)
447 ("sdl2-ttf" ,sdl2-ttf)
448 ("sdl2-mixer" ,sdl2-mixer)))
449 (home-page "https://cataclysmdda.org/")
450 (synopsis "Survival horror roguelike video game")
451 (description
452 "Cataclysm: Dark Days Ahead (or \"DDA\" for short) is a roguelike set
453 in a post-apocalyptic world. Struggle to survive in a harsh, persistent,
454 procedurally generated world. Scavenge the remnants of a dead civilization
455 for food, equipment, or, if you are lucky, a vehicle with a full tank of gas
456 to get you out of Dodge. Fight to defeat or escape from a wide variety of
457 powerful monstrosities, from zombies to giant insects to killer robots and
458 things far stranger and deadlier, and against the others like yourself, that
459 want what you have.")
460 (license license:cc-by-sa3.0))))
461
462 (define-public cataclysm-dark-days-ahead
463 (deprecated-package "cataclysm-dark-days-ahead" cataclysm-dda))
464
465 (define-public corsix-th
466 (package
467 (name "corsix-th")
468 (version "0.63")
469 (source
470 (origin
471 (method git-fetch)
472 (uri (git-reference
473 (url "https://github.com/CorsixTH/CorsixTH.git")
474 (commit (string-append "v" version))))
475 (file-name (git-file-name name version))
476 (sha256
477 (base32 "1rkyk8g55xny276s0hr5k8mq6f4nzz56d3k2mp09dzfymrqb8hgi"))))
478 (build-system cmake-build-system)
479 (arguments
480 `(#:phases
481 (modify-phases %standard-phases
482 (add-after 'install 'wrap-binary
483 (lambda _
484 ;; Set Lua module paths and default MIDI soundfont on startup.
485 (let* ((out (assoc-ref %outputs "out"))
486 (fluid (assoc-ref %build-inputs "fluid-3"))
487 (lua-version ,(version-major+minor (package-version lua)))
488 (lua-cpath
489 (map (lambda (lib)
490 (string-append
491 (assoc-ref %build-inputs (string-append "lua-" lib))
492 "/lib/lua/" lua-version "/?.so"))
493 '("filesystem" "lpeg"))))
494 (wrap-program (string-append out "/bin/corsix-th")
495 `("LUA_CPATH" ";" = ,lua-cpath)
496 `("SDL_SOUNDFONTS" ":" suffix
497 (,(string-append fluid "/share/soundfonts/FluidR3Mono_GM.sf3")))))
498 #t)))
499 #:tests? #f)) ; TODO need busted package to run tests
500 ;; Omit Lua-Socket dependency to disable automatic updates.
501 (inputs
502 `(("ffmpeg" ,ffmpeg)
503 ("fluid-3" ,fluid-3)
504 ("freetype" ,freetype)
505 ("lua" ,lua)
506 ("lua-filesystem" ,lua-filesystem)
507 ("lua-lpeg" ,lua-lpeg)
508 ("sdl2" ,sdl2)
509 ("sdl2-mixer" ,sdl2-mixer)))
510 (home-page "https://corsixth.com")
511 (synopsis "Implementation of the @i{Theme Hospital} game engine")
512 (description
513 "This package provides a reimplementation of the 1997 Bullfrog business
514 simulation game @i{Theme Hospital}. As well as faithfully recreating the
515 original engine, CorsixTH adds support for high resolutions, custom levels and
516 more. This package does @emph{not} provide the game assets.")
517 (license (list
518 license:expat ; main license
519 license:bsd-3)))) ; CorsixTH/Src/random.c
520
521 (define-public cowsay
522 (package
523 (name "cowsay")
524 (version "3.04")
525 (source (origin
526 (method git-fetch)
527 (uri (git-reference
528 (url "https://github.com/tnalpgge/rank-amateur-cowsay.git")
529 (commit (string-append name "-" version))))
530 (file-name (git-file-name name version))
531 (sha256
532 (base32
533 "06455kq37hvq1xb7adyiwrx0djs50arsxvjgixyxks16lm1rlc7n"))))
534 (build-system gnu-build-system)
535 (arguments
536 `(#:phases
537 (modify-phases %standard-phases
538 (delete 'configure) ; no configure script
539 (delete 'build) ; nothing to be built
540 (replace 'install
541 (lambda* (#:key outputs #:allow-other-keys)
542 (invoke "sh" "install.sh"
543 (assoc-ref outputs "out"))))
544 (delete 'check)
545 (add-after 'install 'check
546 (lambda* (#:key outputs #:allow-other-keys)
547 (invoke (string-append (assoc-ref outputs "out")
548 "/bin/cowsay")
549 "We're done!"))))))
550 (inputs
551 `(("perl" ,perl)))
552 (home-page (string-append "https://web.archive.org/web/20071026043648/"
553 "http://www.nog.net:80/~tony/warez/cowsay.shtml"))
554 (synopsis "Speaking cow text filter")
555 (description "Cowsay is basically a text filter. Send some text into it,
556 and you get a cow saying your text. If you think a talking cow isn't enough,
557 cows can think too: all you have to do is run @command{cowthink}. If you're
558 tired of cows, a variety of other ASCII-art messengers are available.")
559 (license license:gpl3+)))
560
561 (define-public lolcat
562 (let ((commit "35dca3d0a381496d7195cd78f5b24aa7b62f2154")
563 (revision "0"))
564 (package
565 (name "lolcat")
566 (version (git-version "1.0" revision commit))
567 (source
568 (origin
569 (method git-fetch)
570 (uri (git-reference
571 (url "https://github.com/jaseg/lolcat.git")
572 (commit commit)))
573 (sha256
574 (base32
575 "0jjbkqcc2ikjxd1xgdyv4rb0vsw218181h89f2ywg29ffs3ypd8g"))
576 (file-name (git-file-name name version))))
577 (build-system gnu-build-system)
578 (arguments
579 `(#:tests? #f ;; no check target
580 #:make-flags (list "CC=gcc")
581 #:phases
582 (modify-phases %standard-phases
583 (delete 'bootstrap)
584 (delete 'configure)
585 (replace 'install
586 (lambda* (#:key outputs #:allow-other-keys)
587 (let* ((out (assoc-ref outputs "out"))
588 (dest (string-append out "/bin")))
589 (mkdir-p dest)
590 (install-file "lolcat" dest)
591 (install-file "censor" dest)
592 #t))))))
593 (home-page "https://github.com/jaseg/lolcat")
594 (synopsis "Rainbow coloring effect for text console display")
595 (description "@command{lolcat} concatenates files and streams like
596 regular @command{cat}, but it also adds terminal escape codes between
597 characters and lines resulting in a rainbow effect.")
598 (license license:wtfpl2))))
599
600 (define-public freedoom
601 (package
602 (name "freedoom")
603 (version "0.12.1")
604 (source
605 (origin
606 (method git-fetch)
607 (uri (git-reference
608 (url "https://github.com/freedoom/freedoom.git")
609 (commit (string-append "v" version))))
610 (file-name (git-file-name name version))
611 (sha256
612 (base32 "1mq60lfwaaxmch7hsz8403pwafnlsmsd5z2df2j77ppwndwcrypb"))))
613 (build-system gnu-build-system)
614 (arguments
615 '(#:make-flags
616 (list (string-append "prefix=" (assoc-ref %outputs "out")))
617 #:tests? #f ; no check target
618 #:phases
619 (modify-phases %standard-phases
620 (delete 'bootstrap)
621 (replace 'configure
622 (lambda* (#:key inputs outputs #:allow-other-keys)
623 (let* ((freedoom (assoc-ref outputs "out"))
624 (wad-dir (string-append freedoom "/share/games/doom")))
625 ;; Make sure that the install scripts know where to find
626 ;; the appropriate WAD files.
627 (substitute* "dist/freedoom"
628 (("IWAD=freedm.wad")
629 (string-append "IWAD=" wad-dir "/freedm.wad"))
630 (("IWAD=freedoom1.wad")
631 (string-append "IWAD=" wad-dir "/freedoom1.wad"))
632 (("IWAD=freedoom2.wad")
633 (string-append "IWAD=" wad-dir "/freedoom2.wad")))
634 #t))))))
635 (native-inputs
636 `(("asciidoc" ,asciidoc)
637 ("deutex" ,deutex)
638 ("python" ,python)
639 ("python-pillow" ,python-pillow)))
640 (home-page "https://freedoom.github.io/")
641 (synopsis "Free content game based on the Doom engine")
642 (native-search-paths
643 (list (search-path-specification
644 (variable "DOOMWADDIR")
645 (files '("share/games/doom")))
646 (search-path-specification
647 (variable "DOOMWADPATH")
648 (files '("share/games/doom")))))
649 (description
650 "The Freedoom project aims to create a complete free content first person
651 shooter game. Freedoom by itself is just the raw material for a game: it must
652 be paired with a compatible game engine (such as @code{prboom-plus}) to be
653 played. Freedoom complements the Doom engine with free levels, artwork, sound
654 effects and music to make a completely free game.")
655 (license license:bsd-3)))
656
657 (define-public freedroidrpg
658 (package
659 (name "freedroidrpg")
660 (version "0.16.1")
661 (source
662 (origin
663 (method url-fetch)
664 (uri (string-append "http://ftp.osuosl.org/pub/freedroid/"
665 "freedroidRPG-" (version-major+minor version) "/"
666 "freedroidRPG-" version ".tar.gz"))
667 (sha256
668 (base32 "0n4kn38ncmcy3lrxmq8fjry6c1z50z4q1zcqfig0j4jb0dsz2va2"))))
669 (build-system gnu-build-system)
670 (arguments
671 `(#:configure-flags
672 (list
673 (string-append "CFLAGS="
674 "-I" (assoc-ref %build-inputs "sdl-gfx") "/include/SDL "
675 "-I" (assoc-ref %build-inputs "sdl-image") "/include/SDL "
676 "-I" (assoc-ref %build-inputs "sdl-mixer") "/include/SDL")
677 "--enable-opengl")
678 ;; FIXME: the test suite fails with the following error output:
679 ;; 4586 Segmentation fault env SDL_VIDEODRIVER=dummy \
680 ;; SDL_AUDIODRIVER=dummy ./src/freedroidRPG -nb text
681 #:tests? #f))
682 (native-inputs
683 `(("pkg-config" ,pkg-config)))
684 (inputs
685 `(("glu" ,glu)
686 ("libjpeg" ,libjpeg)
687 ("libogg" ,libogg)
688 ("libpng" ,libpng)
689 ("libvorbis" ,libvorbis)
690 ("mesa" ,mesa)
691 ("python" ,python-wrapper)
692 ("sdl" ,sdl)
693 ("sdl-gfx" ,sdl-gfx)
694 ("sdl-image" ,sdl-image)
695 ("sdl-mixer" ,sdl-mixer)
696 ("zlib" ,zlib)))
697 (home-page "http://www.freedroid.org/")
698 (synopsis "Isometric role-playing game against killer robots")
699 (description
700 "Freedroid RPG is an @dfn{RPG} (Role-Playing Game) with isometric graphics.
701 The game tells the story of a world destroyed by a conflict between robots and
702 their human masters. To restore peace to humankind, the player must complete
703 numerous quests while fighting off rebelling robots---either by taking control
704 of them, or by simply blasting them to pieces with melee and ranged weapons in
705 real-time combat.")
706 (license (list license:expat ; lua/
707 license:gpl3 ; src/gen_savestruct.py
708 license:gpl2+)))) ; the rest
709
710 (define-public golly
711 (package
712 (name "golly")
713 (version "3.3")
714 (source (origin
715 (method url-fetch)
716 (uri (string-append "mirror://sourceforge/golly/golly/golly-"
717 version "/golly-" version
718 "-src.tar.gz"))
719 (sha256
720 (base32
721 "1j3ksnar4rdam4xiyspgyrs1pifbvxfxkrn65brkwxpx39mpgzc8"))))
722 (build-system gnu-build-system)
723 (arguments
724 '(#:make-flags (list "CC=gcc"
725 (string-append "GOLLYDIR="
726 (assoc-ref %outputs "out")
727 "/share/golly"))
728 #:tests? #f ; no check target
729 #:phases
730 (modify-phases %standard-phases
731 (replace 'configure
732 (lambda* (#:key inputs #:allow-other-keys)
733 ;; For some reason, setting the PYTHON_SHLIB make flag doesn't
734 ;; properly set the path to the Python shared library. This
735 ;; substitution acheives the same end by different means.
736 (substitute* "gui-wx/wxprefs.cpp"
737 (("pythonlib = wxT\\(STRINGIFY\\(PYTHON_SHLIB\\)\\)")
738 (string-append "pythonlib = \""
739 (assoc-ref inputs "python")
740 "/lib/libpython-2.7.so\"")))
741 #t))
742 (replace 'build
743 (lambda* (#:key make-flags outputs #:allow-other-keys)
744 (with-directory-excursion "gui-wx"
745 (apply invoke `("make" ,@make-flags "-f" "makefile-gtk")))))
746 (replace 'install
747 (lambda* (#:key outputs #:allow-other-keys)
748 (let* ((out (assoc-ref outputs "out"))
749 (bin (string-append out "/bin"))
750 (doc (string-append out "/share/doc/golly"))
751 (pixmaps (string-append out "/share/pixmaps"))
752 (share (string-append out "/share/golly")))
753 (for-each (lambda (binary)
754 (install-file binary bin))
755 '("bgolly" "golly"))
756 (for-each (lambda (document)
757 (install-file
758 (string-append "docs/" document ".html")
759 doc))
760 '("License" "ReadMe" "ToDo"))
761 (install-file "gui-wx/icons/appicon.xpm" pixmaps)
762 (for-each (lambda (folder)
763 (copy-recursively
764 folder
765 (string-append share "/" folder)))
766 '("Help" "Patterns" "Rules" "Scripts")))
767 #t)))))
768 (native-inputs
769 `(("lua" ,lua)))
770 (inputs
771 `(("glu" ,glu)
772 ("mesa" ,mesa)
773 ("python" ,python-2)
774 ("wxwidgets" ,wxwidgets-gtk2)
775 ("zlib" ,zlib)))
776 (home-page "http://golly.sourceforge.net/")
777 (synopsis "Software for exploring cellular automata")
778 (description
779 "Golly simulates Conway's Game of Life and many other types of cellular
780 automata. The following features are available:
781 @enumerate
782 @item Support for bounded and unbounded universes, with cells of up to 256
783 states.
784 @item Support for multiple algorithms, including Bill Gosper's Hashlife
785 algorithm.
786 @item Loading patterns from BMP, PNG, GIF and TIFF image files.
787 @item Reading RLE, macrocell, Life 1.05/1.06, dblife and MCell files.
788 @item Scriptable via Lua or Python.
789 @item Extracting patterns, rules and scripts from zip files.
790 @item Downloading patterns, rules and scripts from online archives.
791 @item Pasting patterns from the clipboard.
792 @item Unlimited undo/redo.
793 @item Configurable keyboard shortcuts.
794 @item Auto fit option to keep patterns within the view.
795 @end enumerate")
796 (license license:gpl2+)))
797
798 (define-public julius
799 (package
800 (name "julius")
801 (version "1.3.0")
802 (source
803 (origin
804 (method git-fetch)
805 (uri (git-reference
806 (url "https://github.com/bvschaik/julius.git")
807 (commit (string-append "v" version))))
808 (file-name (git-file-name name version))
809 (sha256
810 (base32 "1ws5lmwdhla73676fj0w26v859n47s0wyxa0mgd0dmkx0x91qriy"))))
811 (build-system cmake-build-system)
812 (inputs
813 `(("sdl2" ,sdl2)
814 ("sdl2-mixer" ,sdl2-mixer)))
815 (home-page "https://github.com/bvschaik/julius")
816 (synopsis "Re-implementation of Caesar III game engine")
817 (description
818 "Engine for Caesar III, a city-building real-time strategy game.
819 Julius includes some UI enhancements while preserving the logic (including
820 bugs) of the original game, so that saved games are compatible. This package
821 does not include game data.")
822 (license (list license:agpl3
823 license:expat ; ext/dirent
824 license:zlib)))) ; ext/tinyfiledialogs
825
826 (define-public meandmyshadow
827 (package
828 (name "meandmyshadow")
829 (version "0.5a")
830 (source (origin
831 (method url-fetch)
832 (uri (string-append "mirror://sourceforge/meandmyshadow/"
833 version "/meandmyshadow-" version
834 "-src.tar.gz"))
835 (sha256
836 (base32
837 "0i98v6cgmpsxy7mbb0s2y6f6qq6mkwzk2nrv1nz39ncf948aky2h"))))
838 (build-system cmake-build-system)
839 (arguments
840 `(#:tests? #f)) ; there are no tests
841 (native-inputs
842 `(("pkg-config" ,pkg-config)))
843 (inputs
844 `(("curl" ,curl)
845 ("libarchive" ,libarchive)
846 ("lua" ,lua)
847 ("sdl" ,(sdl-union (list sdl2
848 sdl2-image
849 sdl2-mixer
850 sdl2-ttf)))))
851 (home-page "https://acmepjz.github.io/meandmyshadow/")
852 (synopsis "Puzzle/platform game")
853 (description "Me and My Shadow is a puzzle/platform game in which you try
854 to reach the exit by solving puzzles. Spikes, moving blocks, fragile blocks
855 and much more stand between you and the exit. Record your moves and let your
856 shadow mimic them to reach blocks you couldn't reach alone.")
857 (license license:gpl3+)))
858
859 (define-public opensurge
860 (package
861 (name "opensurge")
862 (version "0.5.1.2")
863 (source
864 (origin
865 (method git-fetch)
866 (uri (git-reference
867 (url "https://github.com/alemart/opensurge.git")
868 (commit (string-append "v" version))))
869 (file-name (git-file-name name version))
870 (sha256
871 (base32 "0ih7hlqjnp9rv0m4lqf7c0s1ai532way5i4pk45jq1gqm8325dbv"))))
872 (build-system cmake-build-system)
873 (arguments
874 `(#:tests? #f ;there are no tests
875 #:configure-flags
876 (let* ((out (assoc-ref %outputs "out"))
877 (share (string-append out "/share")))
878 (list (string-append "-DCMAKE_INSTALL_PREFIX=" out "/bin")
879 (string-append "-DGAME_DATADIR=" share "/" ,name)
880 (string-append "-DDESKTOP_ENTRY_PATH=" share "/applications")
881 (string-append "-DDESKTOP_ICON_PATH=" share "/pixmaps")
882 (string-append "-DDESKTOP_METAINFO_PATH=" share "/metainfo")))
883 #:phases
884 (modify-phases %standard-phases
885 (add-after 'unpack 'fix-xdg-open-path
886 (lambda* (#:key inputs #:allow-other-keys)
887 ;; Look for xdg-open in the store.
888 (substitute* "src/core/web.c"
889 (("/usr(/bin/xdg-open)" _ bin)
890 (string-append (assoc-ref inputs "xdg-utils") bin)))
891 #t))
892 (add-after 'unpack 'unbundle-fonts
893 (lambda* (#:key inputs #:allow-other-keys)
894 ;; Replace bundled Roboto fonts with links to the store.
895 (with-directory-excursion "fonts"
896 (let ((roboto-dir (string-append
897 (assoc-ref inputs "font-google-roboto")
898 "/share/fonts/truetype/")))
899 (for-each
900 (lambda (font)
901 (delete-file font)
902 (symlink (string-append roboto-dir font) font))
903 '("Roboto-Black.ttf" "Roboto-Bold.ttf" "Roboto-Medium.ttf")))
904 #t))))))
905 (inputs
906 `(("allegro" ,allegro)
907 ("font-google-roboto" ,font-google-roboto)
908 ("surgescript" ,surgescript)
909 ("xdg-utils" ,xdg-utils)))
910 (home-page "https://opensurge2d.org")
911 (synopsis "2D retro side-scrolling game")
912 (description "@code{Open Surge} is a 2D retro side-scrolling platformer
913 inspired by the Sonic games. The player runs at high speeds through each
914 level while collecting items and avoiding obstacles. The game includes a
915 built-in level editor.")
916 (license
917 ;; Code is under GPL 3+, assets are under various licenses.
918 ;; See src/misc/credits.c for details.
919 (list license:gpl3+
920 license:cc0
921 license:cc-by3.0
922 license:cc-by-sa3.0
923 license:expat
924 license:public-domain
925 license:silofl1.1))))
926
927 (define-public knights
928 (package
929 (name "knights")
930 (version "025")
931 (source (origin
932 (method url-fetch)
933 (uri (string-append "http://www.knightsgame.org.uk/files/knights_"
934 version "_src.tar.gz"))
935 (sha256
936 (base32
937 "18vp2ygvn0s0jz8rm585jqf6hjqkam1ximq81k0r9hpmfj7wb88f"))))
938 (build-system gnu-build-system)
939 (arguments
940 '(#:make-flags
941 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
942 #:phases
943 (modify-phases %standard-phases
944 ;; No configure script.
945 (delete 'configure))
946 #:tests? #f)) ;; No check target.
947 (inputs
948 `(("boost" ,boost)
949 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
950 ("freetype" ,freetype)
951 ("fontconfig" ,fontconfig)
952 ("curl" ,curl)))
953 (native-inputs
954 `(("pkg-config" ,pkg-config)))
955 (home-page "http://www.knightsgame.org.uk/")
956 (synopsis "Multiplayer dungeon game involving knights and quests")
957 (description "Knights is a multiplayer game involving several knights who
958 must run around a dungeon and complete various quests. Each game revolves
959 around a quest – for example, you might have to find some items and carry them
960 back to your starting point. This may sound easy, but as there are only
961 enough items in the dungeon for one player to win, you may end up having to
962 kill your opponents to get their stuff! Other quests involve escaping from
963 the dungeon, fighting a duel to the death against the enemy knights, or
964 destroying an ancient book using a special wand.")
965 ;; This package includes modified sources of lua (X11), enet (Expat), and
966 ;; guichan (BSD-3). The "Coercri" library is released under the Boost
967 ;; license. The whole package is released under GPLv3+.
968 (license license:gpl3+)))
969
970 (define-public gnubg
971 (package
972 (name "gnubg")
973 (version "1.06.002")
974 (source
975 (origin
976 (method url-fetch)
977 (uri (string-append "mirror://gnu/gnubg/gnubg-release-"
978 version "-sources.tar.gz"))
979 (sha256
980 (base32
981 "11xwhcli1h12k6rnhhyq4jphzrhfik7i8ah3k32pqw803460n6yf"))))
982 (build-system gnu-build-system)
983 (inputs `(("glib" ,glib)
984 ("readline" ,readline)
985 ("gtk+" ,gtk+-2)
986 ("mesa" ,mesa)
987 ("glu" ,glu)
988 ("gtkglext" ,gtkglext)
989 ("sqlite" ,sqlite)
990 ("libcanberra" ,libcanberra)))
991 (native-inputs `(("python-2" ,python-2)
992 ("pkg-config" ,pkg-config)))
993 (arguments
994 `(#:phases
995 (modify-phases %standard-phases
996 (add-after 'install 'install-desktop-file
997 (lambda* (#:key outputs #:allow-other-keys)
998 (let* ((out (assoc-ref outputs "out"))
999 (apps (string-append out "/share/applications")))
1000 (mkdir-p apps)
1001 (with-output-to-file (string-append apps "/gnubg.desktop")
1002 (lambda _
1003 (format #t
1004 "[Desktop Entry]~@
1005 Name=GNU Backgammon~@
1006 Exec=~a/bin/gnubg -w~@
1007 Icon=gnubg~@
1008 Categories=Game;~@
1009 Terminal=false~@
1010 Type=Application~%"
1011 out))))
1012 #t)))))
1013 (home-page "https://www.gnu.org/software/gnubg/")
1014 (synopsis "Backgammon game")
1015 (description "The GNU backgammon application (also known as \"gnubg\") can
1016 be used for playing, analyzing and teaching the game. It has an advanced
1017 evaluation engine based on artificial neural networks suitable for both
1018 beginners and advanced players. In addition to a command-line interface, it
1019 also features an attractive, 3D representation of the playing board.")
1020 (license license:gpl3+)))
1021
1022 (define-public gnubackgammon
1023 (deprecated-package "gnubackgammon" gnubg))
1024
1025 (define-public gnubik
1026 (package
1027 (name "gnubik")
1028 (version "2.4.3")
1029 (source
1030 (origin
1031 (method url-fetch)
1032 (uri (string-append "mirror://gnu/gnubik/gnubik-"
1033 version ".tar.gz"))
1034 (sha256
1035 (base32
1036 "1vlf924mq8hg93bsjj0rzvs0crc6psmlxyc6zn0fr7msnmpx6gib"))))
1037 (build-system gnu-build-system)
1038 (inputs `(("gtk+" ,gtk+-2)
1039 ("mesa" ,mesa)
1040 ("glu" ,glu)
1041 ("libx11" ,libx11)
1042 ("guile" ,guile-2.0)
1043 ("gtkglext" ,gtkglext)))
1044 (native-inputs `(("gettext" ,gettext-minimal)
1045 ("pkg-config" ,pkg-config)))
1046 (home-page "https://www.gnu.org/software/gnubik/")
1047 (synopsis "3d Rubik's cube game")
1048 (description
1049 "GNUbik is a puzzle game in which you must manipulate a cube to make
1050 each of its faces have a uniform color. The game is customizable, allowing
1051 you to set the size of the cube (the default is 3x3) or to change the colors.
1052 You may even apply photos to the faces instead of colors. The game is
1053 scriptable with Guile.")
1054 (license license:gpl3+)))
1055
1056 (define-public gnushogi
1057 (package
1058 (name "gnushogi")
1059 (version "1.4.2")
1060 (source
1061 (origin
1062 (method url-fetch)
1063 (uri (string-append "mirror://gnu/gnushogi/gnushogi-"
1064 version ".tar.gz"))
1065 (sha256
1066 (base32
1067 "0a9bsl2nbnb138lq0h14jfc5xvz7hpb2bcsj4mjn6g1hcsl4ik0y"))))
1068 (arguments `(#:tests? #f)) ;; No check target.
1069 (build-system gnu-build-system)
1070 (home-page "https://www.gnu.org/software/gnushogi/")
1071 (synopsis "The game of Shogi (Japanese chess)")
1072 (description "GNU Shogi is a program that plays the game Shogi (Japanese
1073 Chess). It is similar to standard chess but this variant is far more complicated.")
1074 (license license:gpl3+)))
1075
1076 (define-public ltris
1077 (package
1078 (name "ltris")
1079 (version "1.0.19")
1080 (source
1081 (origin
1082 (method url-fetch)
1083 (uri (string-append "http://prdownloads.sourceforge.net/lgames/"
1084 "ltris-" version ".tar.gz"))
1085 (sha256
1086 (base32
1087 "1895wv1fqklrj4apkz47rnkcfhfav7zjknskw6p0886j35vrwslg"))))
1088 (build-system gnu-build-system)
1089 (arguments
1090 '(;; The code in LTris uses traditional GNU semantics for inline functions
1091 #:configure-flags '("CFLAGS=-fgnu89-inline")
1092 #:phases
1093 (modify-phases %standard-phases
1094 (add-after 'set-paths 'set-sdl-paths
1095 (lambda* (#:key inputs #:allow-other-keys)
1096 (setenv "CPATH"
1097 (string-append (assoc-ref inputs "sdl-union")
1098 "/include/SDL:"
1099 (or (getenv "CPATH") "")))
1100 #t)))))
1101 (inputs
1102 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))))
1103 (home-page "http://lgames.sourceforge.net/LTris/")
1104 (synopsis "Tetris clone based on the SDL library")
1105 (description
1106 "LTris is a tetris clone: differently shaped blocks are falling down the
1107 rectangular playing field and can be moved sideways or rotated by 90 degree
1108 units with the aim of building lines without gaps which then disappear (causing
1109 any block above the deleted line to fall down). LTris has three game modes: In
1110 Classic you play until the stack of blocks reaches the top of the playing field
1111 and no new blocks can enter. In Figures the playing field is reset to a new
1112 figure each level and later on tiles and lines suddenly appear. In Multiplayer
1113 up to three players (either human or CPU) compete with each other sending
1114 removed lines to all opponents. There is also a Demo mode in which you can
1115 watch your CPU playing while enjoying a cup of tea!")
1116 (license license:gpl2+)))
1117
1118 (define-public nethack
1119 (package
1120 (name "nethack")
1121 (version "3.6.5")
1122 (source
1123 (origin
1124 (method url-fetch)
1125 (uri
1126 (string-append "https://www.nethack.org/download/" version "/nethack-"
1127 (string-join (string-split version #\.) "") "-src.tgz"))
1128 (sha256
1129 (base32 "0xifs8pqfffnmkbpmrcd1xf14yakcj06nl2bbhy4dyacg8myysmv"))))
1130 (inputs
1131 `(("ncurses" ,ncurses)
1132 ("bison" ,bison)
1133 ("flex" ,flex)
1134 ("less" ,less)))
1135 (build-system gnu-build-system)
1136 (arguments
1137 '(#:make-flags
1138 `(,(string-append "PREFIX=" (assoc-ref %outputs "out")))
1139 #:phases
1140 (modify-phases %standard-phases
1141 (add-before 'configure 'patch-paths
1142 (lambda _
1143 (substitute* "sys/unix/nethack.sh"
1144 (("^ *cd .*$") ""))
1145 (substitute* "sys/unix/Makefile.utl"
1146 (("^YACC *=.*$") "YACC = bison -y\n")
1147 (("^LEX *=.*$") "LEX = flex\n")
1148 (("^# CC = gcc") "CC = gcc"))
1149 (substitute* "sys/unix/hints/linux"
1150 (("/bin/gzip") (string-append
1151 (assoc-ref %build-inputs "gzip")
1152 "/bin/gzip"))
1153 (("^WINTTYLIB=.*") "WINTTYLIB=-lncurses"))
1154 (substitute* "include/config.h"
1155 (("^.*define CHDIR.*$") "")
1156 (("^/\\* *#*define *REPRODUCIBLE_BUILD *\\*/")
1157 ;; Honor SOURCE_DATE_EPOCH.
1158 "#define REPRODUCIBLE_BUILD"))
1159
1160 ;; Note: 'makedefs' rejects and ignores dates that are too old
1161 ;; or too new, so we must choose something reasonable here.
1162 (setenv "SOURCE_DATE_EPOCH" "1531865062")
1163
1164 (substitute* "sys/unix/Makefile.src"
1165 (("^# CC = gcc") "CC = gcc"))
1166 #t))
1167 (replace 'configure
1168 (lambda _
1169 (let ((bash (string-append
1170 (assoc-ref %build-inputs "bash")
1171 "/bin/bash")))
1172 (with-directory-excursion "sys/unix"
1173 (substitute* "setup.sh" (("/bin/sh") bash))
1174 (invoke bash "setup.sh" "hints/linux"))
1175 #t)))
1176 (add-after 'install 'fixup-paths
1177 (lambda _
1178 (let* ((output (assoc-ref %outputs "out"))
1179 (nethack-script (string-append output "/bin/nethack")))
1180 (mkdir-p (string-append output "/games/lib/nethackuserdir"))
1181 (for-each
1182 (lambda (file)
1183 (rename-file
1184 (string-append output "/games/lib/nethackdir/" file)
1185 (string-append output "/games/lib/nethackuserdir/"
1186 file)))
1187 '("xlogfile" "logfile" "perm" "record" "save"))
1188 (mkdir-p (string-append output "/bin"))
1189 (call-with-output-file nethack-script
1190 (lambda (port)
1191 (format port "#!~a/bin/sh
1192 PATH=~a:$PATH
1193 if [ ! -d ~~/.config/nethack ]; then
1194 mkdir -p ~~/.config/nethack
1195 cp -r ~a/games/lib/nethackuserdir/* ~~/.config/nethack
1196 chmod -R +w ~~/.config/nethack
1197 fi
1198
1199 RUNDIR=$(mktemp -d)
1200
1201 cleanup() {
1202 rm -rf $RUNDIR
1203 }
1204 trap cleanup EXIT
1205
1206 cd $RUNDIR
1207 for i in ~~/.config/nethack/*; do
1208 ln -s $i $(basename $i)
1209 done
1210 for i in ~a/games/lib/nethackdir/*; do
1211 ln -s $i $(basename $i)
1212 done
1213 ~a/games/nethack"
1214 (assoc-ref %build-inputs "bash")
1215 (list->search-path-as-string
1216 (list
1217 (string-append
1218 (assoc-ref %build-inputs "coreutils") "/bin")
1219 (string-append
1220 (assoc-ref %build-inputs "less") "/bin"))
1221 ":")
1222 output
1223 output
1224 output)))
1225 (chmod nethack-script #o555)
1226 #t)))
1227 (delete 'check))))
1228 (home-page "https://nethack.org")
1229 (synopsis "Classic dungeon crawl game")
1230 (description "NetHack is a single player dungeon exploration game that runs
1231 on a wide variety of computer systems, with a variety of graphical and text
1232 interfaces all using the same game engine. Unlike many other Dungeons &
1233 Dragons-inspired games, the emphasis in NetHack is on discovering the detail of
1234 the dungeon and not simply killing everything in sight - in fact, killing
1235 everything in sight is a good way to die quickly. Each game presents a
1236 different landscape - the random number generator provides an essentially
1237 unlimited number of variations of the dungeon and its denizens to be discovered
1238 by the player in one of a number of characters: you can pick your race, your
1239 role, and your gender.")
1240 (license
1241 (license:fsdg-compatible
1242 "https://nethack.org/common/license.html"))))
1243
1244 (define-public pipewalker
1245 (package
1246 (name "pipewalker")
1247 (version "0.9.4")
1248 (source
1249 (origin
1250 (method url-fetch)
1251 (uri (string-append "http://downloads.sourceforge.net/pipewalker/"
1252 "pipewalker-" version ".tar.gz"))
1253 (sha256
1254 (base32 "1x46wgk0s55562pd96cxagxkn6wpgglq779f9b64ff1k3xzp3myn"))))
1255 (build-system gnu-build-system)
1256 (arguments
1257 `(#:configure-flags
1258 (list (string-append "--docdir=" (assoc-ref %outputs "out")
1259 "/share/doc/" ,name "-" ,version))
1260 #:phases
1261 (modify-phases %standard-phases
1262 (add-after 'configure 'patch-docdir
1263 ;; Makefile.in ignores configure's ‘--docdir=...’ option. Fix that.
1264 (lambda _
1265 (substitute* "Makefile"
1266 (("(pkgdocdatadir = ).*" _ assignment)
1267 (string-append assignment "$(docdir)\n")))
1268 #t)))))
1269 (inputs
1270 `(("libpng" ,libpng)
1271 ("mesa" ,mesa)
1272 ("sdl" ,sdl)))
1273 (home-page "http://pipewalker.sourceforge.net/")
1274 (synopsis "Logical tile puzzle")
1275 (description
1276 "PipeWalker is a simple puzzle game with many diffent themes: connect all
1277 computers to one network server, bring water from a source to the taps, etc.
1278 The underlying mechanism is always the same: you must turn each tile in the
1279 grid in the right direction to combine all components into a single circuit.
1280 Every puzzle has a complete solution, although there may be more than one.")
1281 (license license:gpl3+)))
1282
1283 (define-public prboom-plus
1284 (package
1285 (name "prboom-plus")
1286 (version "2.5.1.4")
1287 (source (origin
1288 (method url-fetch)
1289 (uri (string-append "mirror://sourceforge/prboom-plus/prboom-plus/"
1290 version "/prboom-plus-" version ".tar.gz"))
1291 (sha256
1292 (base32 "151v6nign86m1a2vqz27krsccpc9m4d1jax4y43v2fa82wfj9qp0"))
1293 (modules '((guix build utils)))
1294 (snippet
1295 '(begin
1296 (substitute* "src/version.c"
1297 (("__DATE__") "")
1298 (("__TIME__") ""))
1299 #t))))
1300 (build-system gnu-build-system)
1301 (arguments
1302 '(#:configure-flags '("--disable-cpu-opt")
1303 #:make-flags `(,(string-append "gamesdir="
1304 (assoc-ref %outputs "out") "/bin"))
1305 #:phases
1306 (modify-phases %standard-phases
1307 (add-after 'set-paths 'set-sdl'paths
1308 (lambda* (#:key inputs #:allow-other-keys)
1309 (setenv "CPATH"
1310 (string-append (assoc-ref inputs "sdl-union")
1311 "/include/SDL:"
1312 (or (getenv "CPATH") "")))
1313 #t)))))
1314 (inputs
1315 `(("fluidsynth" ,fluidsynth)
1316 ("glu" ,glu)
1317 ("libmad" ,libmad)
1318 ("libpng" ,libpng)
1319 ("libvorbis" ,libvorbis)
1320 ("pcre" ,pcre)
1321 ("portmidi" ,portmidi)
1322 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-net)))))
1323 (home-page "http://prboom-plus.sourceforge.net/")
1324 (synopsis "Version of the classic 3D shoot'em'up game Doom")
1325 (description
1326 "PrBoom+ is a Doom source port developed from the original PrBoom project.")
1327 (license license:gpl2+)))
1328
1329 (define-public retux
1330 (package
1331 (name "retux")
1332 (version "1.3.6")
1333 (source (origin
1334 (method url-fetch)
1335 (uri (string-append "mirror://savannah/retux/"
1336 (version-major+minor version) "/retux-"
1337 version "-src.tar.gz"))
1338 (sha256
1339 (base32
1340 "01bidh4zisjp3nc436x0g85v60dvwb3ig37i7y01sa71j8fm4fmb"))))
1341 (build-system python-build-system)
1342 (arguments
1343 `(#:tests? #f ; no check target
1344 #:phases
1345 (modify-phases %standard-phases
1346 ;; no setup.py script
1347 (delete 'build)
1348 (replace 'install
1349 (lambda* (#:key outputs #:allow-other-keys)
1350 (let* ((out (assoc-ref outputs "out"))
1351 (bin (string-append out "/bin"))
1352 (data (string-append out "/share/retux"))
1353 (doc (string-append out "/share/doc/retux")))
1354 (mkdir-p bin)
1355
1356 (substitute* "retux.py"
1357 ;; Use the correct data directory.
1358 (("os\\.path\\.join\\(os\\.path\\.dirname\\(__file__\\), \"data\"\\),")
1359 (string-append "\"" data "\","))
1360 ;; Use Python 3 so the patch-shebangs phase works properly.
1361 ((".*python2.*") "#!/usr/bin/python3"))
1362
1363 (copy-file "retux.py" (string-append bin "/retux"))
1364
1365 (copy-recursively "data" data)
1366
1367 (install-file "COPYING" doc)
1368 #t))))))
1369 (inputs
1370 `(("python-sge-pygame" ,python-sge-pygame)
1371 ("python-six" ,python-six)
1372 ("python-xsge" ,python-xsge)))
1373 (home-page "http://retux.nongnu.org")
1374 (synopsis "Action platformer game")
1375 (description
1376 "ReTux is an action platformer loosely inspired by the Mario games,
1377 utilizing the art assets from the @code{SuperTux} project.")
1378 ;; GPL version 3 or later is the license for the code and some art.
1379 ;; The rest of the licenses are for the art exclusively, as listed in
1380 ;; data/LICENSES.
1381 (license (list license:cc0
1382 license:cc-by3.0
1383 license:cc-by-sa3.0
1384 license:cc-by-sa4.0
1385 license:gpl2+
1386 license:gpl3+))))
1387
1388 (define-public roguebox-adventures
1389 (package
1390 (name "roguebox-adventures")
1391 (version "3.0.1")
1392 (source
1393 (origin
1394 (method url-fetch)
1395 (uri (string-append
1396 "http://download.tuxfamily.org/rba/RogueBoxAdventures_v"
1397 (string-join (string-split version #\.) "_") "_Source.zip"))
1398 (file-name (string-append name "-" version ".zip"))
1399 (sha256
1400 (base32
1401 "05zd03s5w9kcpklfgcggbaa6rwf59nm0q9vcj6gh9v2lh402k067"))))
1402 (build-system python-build-system)
1403 (arguments
1404 `(#:tests? #f ; no check target
1405 #:phases
1406 (modify-phases %standard-phases
1407 (replace 'unpack
1408 (lambda* (#:key source #:allow-other-keys)
1409 (and (invoke "unzip" source)
1410 ;; The actual source is buried a few directories deep.
1411 (chdir (string-append "RogueBoxAdventures_v"
1412 (string-join
1413 (string-split ,version #\.) "_")
1414 "_Source")))))
1415 ;; no setup.py script
1416 (replace 'build
1417 (lambda* (#:key outputs #:allow-other-keys)
1418 (let* ((out (assoc-ref outputs "out"))
1419 (data (string-append
1420 out "/share/games/roguebox-adventures")))
1421 ;; Use the correct data directory.
1422 (substitute* '("main.py" "LIB/getch.py" "LIB/getch_gcwz.py")
1423 (("basic_path + os\\.sep + 'DATA'")
1424 (string-append "'" data "'"))
1425 (("^basic_path.*$")
1426 (string-append "basic_path ='" data "'\n")))
1427 (substitute* "LIB/dialog.py"
1428 (("d_path = os\\.path\\.dirname\\(.*\\)\\)")
1429 (string-append "d_path = '" data "'")))
1430 (substitute* "LIB/gra_files.py"
1431 (("basic_path = b_path\\.replace\\('/LIB',''\\)")
1432 (string-append "basic_path ='" data "'\n")))
1433
1434 ;; The game must save in the user's home directory because
1435 ;; the store is read-only.
1436 (substitute* "main.py"
1437 (("home_save = False") "home_save = True")
1438 (("'icon_small.png'")
1439 (string-append "'" data "/icon_small.png'"))))
1440 #t))
1441 (replace 'install
1442 (lambda* (#:key outputs #:allow-other-keys)
1443 (let* ((out (assoc-ref outputs "out"))
1444 (bin (string-append out "/bin"))
1445 (roguebox-adventures
1446 (string-append bin "/roguebox-adventures"))
1447 (data (string-append
1448 out "/share/games/roguebox-adventures"))
1449 (lib (string-append data "/LIB"))
1450 (doc (string-append
1451 out "/share/doc/roguebox-adventures")))
1452 (mkdir-p bin)
1453 (mkdir-p doc)
1454
1455 (for-each (lambda (file)
1456 (copy-recursively file
1457 (string-append data "/" file)))
1458 '("AUDIO" "FONT" "GRAPHIC" "LIB" "LICENSE"
1459 "icon_big.png" "icon_small.png"))
1460 (for-each (lambda (file)
1461 (chmod file #o555)
1462 (install-file file lib))
1463 '("main.py" "run.py"))
1464
1465 (copy-recursively "DOC" doc)
1466
1467 (call-with-output-file
1468 roguebox-adventures
1469 (lambda (p)
1470 (format p "\
1471 #!~a
1472 export PYTHONPATH=~a/LIB:~a
1473 exec -a \"~a\" ~a \"$@\"\n"
1474 (which "bash") data (getenv "PYTHONPATH")
1475 (which "python3")
1476 (string-append lib "/main.py"))))
1477 (chmod roguebox-adventures #o555))
1478 #t)))))
1479 (native-inputs
1480 `(("unzip" ,unzip)))
1481 (inputs
1482 `(("python-pygame" ,python-pygame)
1483 ("python-tmx" ,python-tmx)))
1484 (home-page "https://rogueboxadventures.tuxfamily.org")
1485 (synopsis "A classical roguelike/sandbox game")
1486 (description
1487 "RogueBox Adventures is a graphical roguelike with strong influences
1488 from sandbox games like Minecraft or Terraria. The main idea of RogueBox
1489 Adventures is to offer the player a kind of roguelike toy-world. This world
1490 can be explored and changed freely.")
1491 ;; The GPL3+ is for code, the rest are for art.
1492 (license (list license:cc0
1493 license:cc-by3.0
1494 license:gpl3+
1495 license:silofl1.1))))
1496
1497 (define-public xshogi
1498 (package
1499 (name "xshogi")
1500 (version "1.4.2")
1501 (source
1502 (origin
1503 (method url-fetch)
1504 (uri (string-append "mirror://gnu/gnushogi/xshogi-"
1505 version ".tar.gz"))
1506 (sha256
1507 (base32
1508 "1dns0nhymak44by18sv48m4xb2skiwbi2i3nb9hl6w9iwd2i2brf"))))
1509 (build-system gnu-build-system)
1510 (inputs
1511 `(("libxaw" ,libxaw)
1512 ("libxt" ,libxt)))
1513 (home-page "https://www.gnu.org/software/gnushogi/")
1514 (synopsis "User interface for gnushogi")
1515 (description "A graphical user interface for the package @code{gnushogi}.")
1516 ;; Contains a copy of GPLv3 but the licence notices simply
1517 ;; state "GNU General Public Licence" without specifying a version.
1518 (license license:gpl1+)))
1519
1520 (define-public abbaye
1521 (package
1522 (name "abbaye")
1523 (version "2.0.1")
1524 (source
1525 (origin
1526 (method git-fetch)
1527 (uri (git-reference
1528 (url "https://github.com/nevat/abbayedesmorts-gpl.git")
1529 (commit (string-append "v" version))))
1530 (file-name (git-file-name name version))
1531 (sha256
1532 (base32 "1pwqf7r9bqb2p3xrw9i7y8pgr1401fy3mnnqpb1qkhmdl3gqi9hb"))
1533 (modules '((guix build utils)))
1534 (snippet
1535 ;; Unbundle fonts.
1536 '(begin
1537 (delete-file-recursively "fonts")
1538 #t))))
1539 (build-system gnu-build-system)
1540 (arguments
1541 '(#:make-flags '("CC=gcc")
1542 #:phases (modify-phases %standard-phases
1543 (add-after 'set-paths 'set-sdl-paths
1544 (lambda* (#:key inputs #:allow-other-keys)
1545 (setenv "CPATH"
1546 (string-append (assoc-ref inputs "sdl-union")
1547 "/include/SDL:"
1548 (or (getenv "CPATH") "")))))
1549 (add-after 'patch-source-shebangs 'patch-makefile
1550 (lambda* (#:key outputs #:allow-other-keys)
1551 ;; Replace /usr with package output directory.
1552 (substitute* "Makefile"
1553 (("/usr") (assoc-ref outputs "out")))))
1554 (add-before 'install 'make-install-dirs
1555 (lambda* (#:key outputs #:allow-other-keys)
1556 (let ((prefix (assoc-ref outputs "out")))
1557 ;; Create directories that the makefile assumes exist.
1558 (mkdir-p (string-append prefix "/bin"))
1559 (mkdir-p (string-append prefix "/share/applications"))
1560 (mkdir-p (string-append prefix "/share/pixmaps")))))
1561 ;; No configure script.
1562 (delete 'configure))
1563 #:tests? #f)) ;; No check target.
1564 (native-inputs `(("pkg-config" ,pkg-config)))
1565 (inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer)))))
1566 (home-page "https://github.com/nevat/abbayedesmorts-gpl")
1567 (synopsis "GNU/Linux port of the indie game \"l'Abbaye des Morts\"")
1568 (description "L'Abbaye des Morts is a 2D platform game set in 13th century
1569 France. The Cathars, who preach about good Christian beliefs, were being
1570 expelled by the Catholic Church out of the Languedoc region in France. One of
1571 them, called Jean Raymond, found an old church in which to hide, not knowing
1572 that beneath its ruins lay buried an ancient evil.")
1573 (license license:gpl3)))
1574
1575 (define-public l-abbaye-des-morts
1576 (deprecated-package "l-abbaye-des-morts" abbaye))
1577
1578 (define-public angband
1579 (package
1580 (name "angband")
1581 (version "4.2.0")
1582 (source
1583 (origin
1584 (method url-fetch)
1585 (uri (string-append "http://rephial.org/downloads/"
1586 (version-major+minor version)
1587 "/angband-" version ".tar.gz"))
1588 (sha256
1589 (base32
1590 "0vdm1ymm28wawp94nl1p5q3lhc0k7cnn2kkvvrkfx962gif4kqfk"))
1591 (modules '((guix build utils)))
1592 (snippet
1593 ;; So, some of the sounds/graphics/tilesets are under different
1594 ;; licenses... some of them even nonfree! This is a console-only
1595 ;; version of this package so we just remove them.
1596 ;; In the future, if someone tries to make a graphical variant of
1597 ;; this package, they can deal with that mess themselves. :)
1598 '(begin
1599 (for-each (lambda (subdir)
1600 (let ((lib-subdir (string-append "lib/" subdir)))
1601 (delete-file-recursively lib-subdir)))
1602 '("fonts" "icons" "sounds" "tiles"))
1603 (substitute* "lib/Makefile"
1604 ;; And don't try to invoke makefiles in the directories we removed.
1605 (("gamedata customize help screens fonts tiles sounds icons user")
1606 "gamedata customize help screens user"))
1607 #t))))
1608 (build-system gnu-build-system)
1609 (arguments
1610 `(#:tests? #f ; no check target
1611 #:configure-flags (list (string-append "--bindir=" %output "/bin"))
1612 #:phases
1613 (modify-phases %standard-phases
1614 (replace 'bootstrap
1615 (lambda _
1616 (substitute* "acinclude.m4"
1617 (("ncursesw5-config") "ncursesw6-config"))
1618 (invoke "sh" "autogen.sh"))))))
1619 (native-inputs
1620 `(("autoconf" ,autoconf)
1621 ("automake" ,automake)))
1622 (inputs `(("ncurses" ,ncurses)))
1623 (home-page "http://rephial.org/")
1624 (synopsis "Dungeon exploration roguelike")
1625 (description "Angband is a Classic dungeon exploration roguelike. Explore
1626 the depths below Angband, seeking riches, fighting monsters, and preparing to
1627 fight Morgoth, the Lord of Darkness.")
1628 (license license:gpl2)))
1629
1630 (define-public pingus
1631 (package
1632 (name "pingus")
1633 (version "0.7.6")
1634 (source
1635 (origin
1636 (method git-fetch)
1637 (uri (git-reference
1638 (url "https://gitlab.com/pingus/pingus.git")
1639 (commit (string-append "v" version))))
1640 (file-name (git-file-name name version))
1641 (sha256
1642 (base32
1643 "0wp06kcmknsnxz7bjnsndb8x062z7r23fb3yrnbfnj68qhz18y74"))
1644 (patches (search-patches "pingus-boost-headers.patch"
1645 "pingus-sdl-libs-config.patch"))
1646 (modules '((guix build utils)))
1647 (snippet
1648 '(begin
1649 (substitute* "src/pingus/screens/demo_session.cpp"
1650 (("#include <iostream>")
1651 ;; std::function moved to <functional> with C++ 11.
1652 ;; Remove this for versions newer than 0.7.6.
1653 "#include <iostream>\n#include <functional>"))
1654 #t))))
1655 (build-system gnu-build-system)
1656 (native-inputs `(("pkg-config" ,pkg-config)
1657 ("scons-python2" ,scons-python2)))
1658 (inputs `(("sdl" ,sdl)
1659 ("sdl-image" ,sdl-image)
1660 ("sdl-mixer" ,sdl-mixer)
1661 ("mesa" ,mesa)
1662 ("glu" ,glu)
1663 ("libpng" ,libpng)
1664 ("boost" ,boost)))
1665 (arguments
1666 '(#:make-flags (list (string-append "PREFIX=" %output))
1667 #:tests? #f ; no check target
1668 #:phases
1669 (modify-phases %standard-phases
1670 (delete 'configure)))) ; no configure script
1671 (home-page "https://pingus.seul.org/")
1672 (synopsis "Lemmings clone")
1673 (description
1674 "Pingus is a free Lemmings-like puzzle game in which the player takes
1675 command of a bunch of small animals and has to guide them through levels.
1676 Since the animals walk on their own, the player can only influence them by
1677 giving them commands, like build a bridge, dig a hole, or redirect all animals
1678 in the other direction. Multiple such commands are necessary to reach the
1679 level's exit. The game is presented in a 2D side view.")
1680 ;; Some source files are under bsd-3 and gpl2+ licenses.
1681 (license license:gpl3+)))
1682
1683 (define-public talkfilters
1684 (package
1685 (name "talkfilters")
1686 (version "2.3.8")
1687 (source
1688 (origin
1689 (method url-fetch)
1690 (uri (string-append "http://www.hyperrealm.com/" name "/"
1691 name "-" version ".tar.gz"))
1692 (sha256
1693 (base32 "19nc5vq4bnkjvhk8srqddzhcs93jyvpm9r6lzjzwc1mgf08yg0a6"))))
1694 (build-system gnu-build-system)
1695 (home-page "https://www.gnu.org/software/talkfilters/")
1696 (synopsis "Convert English text to humorous dialects")
1697 (description "The GNU Talk Filters are programs that convert English text
1698 into stereotyped or otherwise humorous dialects. The filters are provided as
1699 a C library, so they can easily be integrated into other programs.")
1700 (license license:gpl2+)))
1701
1702 (define-public cmatrix
1703 (package
1704 (name "cmatrix")
1705 (version "2.0")
1706 (source
1707 (origin
1708 (method git-fetch)
1709 (uri (git-reference
1710 (url "https://github.com/abishekvashok/cmatrix.git")
1711 (commit (string-append "v" version))))
1712 (file-name (git-file-name name version))
1713 (sha256
1714 (base32
1715 "1h9jz4m4s5l8c3figaq46ja0km1gimrkfxm4dg7mf4s84icmasbm"))))
1716 (build-system gnu-build-system)
1717 (native-inputs
1718 `(("autoconf" ,autoconf)
1719 ("automake" ,automake)))
1720 (arguments
1721 '(#:phases
1722 (modify-phases %standard-phases
1723 (replace 'configure
1724 (lambda* (#:key outputs #:allow-other-keys)
1725 ;; This old ‘configure’ script doesn't support
1726 ;; variables passed as arguments.
1727 (let ((out (assoc-ref outputs "out")))
1728 (setenv "CONFIG_SHELL" (which "bash"))
1729 (invoke "./configure"
1730 (string-append "--prefix=" out))))))))
1731 (inputs `(("ncurses" ,ncurses)))
1732 (home-page "http://www.asty.org/cmatrix")
1733 (synopsis "Simulate the display from \"The Matrix\"")
1734 (description "CMatrix simulates the display from \"The Matrix\" and is
1735 based on the screensaver from the movie's website. It works with terminal
1736 settings up to 132x300 and can scroll lines all at the same rate or
1737 asynchronously and at a user-defined speed.")
1738 (license license:gpl2+)))
1739
1740 (define-public chess
1741 (package
1742 (name "chess")
1743 (version "6.2.5")
1744 (source
1745 (origin
1746 (method url-fetch)
1747 (uri (string-append "mirror://gnu/chess/gnuchess-" version
1748 ".tar.gz"))
1749 (sha256
1750 (base32
1751 "00j8s0npgfdi41a0mr5w9qbdxagdk2v41lcr42rwl1jp6miyk6cs"))))
1752 (build-system gnu-build-system)
1753 (home-page "https://www.gnu.org/software/chess/")
1754 (synopsis "Full chess implementation")
1755 (description "GNU Chess is a chess engine. It allows you to compete
1756 against the computer in a game of chess, either through the default terminal
1757 interface or via an external visual interface such as GNU XBoard.")
1758 (license license:gpl3+)))
1759
1760 (define freedink-engine
1761 (package
1762 (name "freedink-engine")
1763 (version "109.6")
1764 (source (origin
1765 (method url-fetch)
1766 (uri (string-append "mirror://gnu/freedink/freedink-" version
1767 ".tar.gz"))
1768 (sha256
1769 (base32
1770 "00hhk1bjdrc1np2qz44sa5n1mb62qzwxbvsnws3vpms6iyn3a2sy"))))
1771 (build-system gnu-build-system)
1772 (arguments
1773 `(#:configure-flags '("--disable-embedded-resources")
1774 #:phases
1775 (modify-phases %standard-phases
1776 (add-after 'unpack 'disable-graphical-tests
1777 (lambda _
1778 ;; These tests require a graphical interface.
1779 (substitute* "src/Makefile.am"
1780 (("test_gfx_fonts TestIOGfxDisplay") ""))
1781 #t)))))
1782 (native-inputs `(("autoconf" ,autoconf)
1783 ("automake" ,automake)
1784 ("cxxtest" ,cxxtest)
1785 ("gettext" ,gettext-minimal)
1786 ("help2man" ,help2man)
1787 ("pkg-config" ,pkg-config)))
1788 (inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer
1789 sdl2-ttf sdl2-gfx)))
1790 ("fontconfig" ,fontconfig)
1791 ("glm" ,glm)))
1792 (properties '((ftp-directory . "/freedink")
1793 (upstream-name . "freedink")))
1794 (home-page "https://www.gnu.org/software/freedink/")
1795 (synopsis "Twisted adventures of young pig farmer Dink Smallwood")
1796 (description
1797 "GNU FreeDink is a free and portable re-implementation of the engine
1798 for the role-playing game Dink Smallwood. It supports not only the original
1799 game data files but it also supports user-produced game mods or \"D-Mods\".
1800 To that extent, it also includes a front-end for managing all of your D-Mods.")
1801 (license license:gpl3+)))
1802
1803 (define freedink-data
1804 (package
1805 (name "freedink-data")
1806 (version "1.08.20190120")
1807 (source (origin
1808 (method url-fetch)
1809 (uri (string-append "mirror://gnu/freedink/freedink-data-"
1810 version ".tar.gz"))
1811 (sha256
1812 (base32
1813 "17gvryadlxk172mblbsil7hina1z5wahwaxnr6g3mdq57dvl8pvi"))))
1814 (build-system gnu-build-system)
1815 (arguments
1816 `(#:phases
1817 (modify-phases %standard-phases
1818 (delete 'configure) ; no configure script
1819 (delete 'check)) ; no tests
1820 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))))
1821 (properties '((ftp-directory . "/freedink")))
1822 (home-page "https://www.gnu.org/software/freedink/")
1823 (synopsis "Game data for GNU Freedink")
1824 (description
1825 "This package contains the game data of GNU Freedink.")
1826 (license license:gpl3+)))
1827
1828 (define-public freedink-dfarc
1829 (package
1830 (name "freedink-dfarc")
1831 (version "3.14")
1832 (source (origin
1833 (method url-fetch)
1834 (uri (string-append "mirror://gnu/freedink/dfarc-"
1835 version ".tar.gz"))
1836 (sha256
1837 (base32
1838 "1yp8n3w426xnlp10xk06vfi2y3k9xrcfyck7s7qs1v0ys7n284d5"))))
1839 (build-system gnu-build-system)
1840 (native-inputs
1841 `(("intltool" ,intltool)))
1842 (inputs
1843 `(("bzip2" ,bzip2)
1844 ("wxwidgets" ,wxwidgets)))
1845 (properties '((ftp-directory . "/freedink")
1846 (upstream-name . "dfarc")))
1847 (home-page "https://www.gnu.org/software/freedink/")
1848 (synopsis "Front-end for managing and playing Dink Modules")
1849 (description "DFArc makes it easy to play and manage the GNU FreeDink game
1850 and its numerous D-Mods.")
1851 (license license:gpl3+)))
1852
1853 (define-public freedink
1854 ;; This is a wrapper that tells the engine where to find the data.
1855 (package (inherit freedink-engine)
1856 (name "freedink")
1857 (build-system trivial-build-system)
1858 (arguments
1859 '(#:builder (begin
1860 (use-modules (guix build utils))
1861
1862 (let* ((output (assoc-ref %outputs "out"))
1863 (bin (string-append output "/bin"))
1864 (executable (string-append bin "/freedink")))
1865 (mkdir-p bin)
1866 (call-with-output-file executable
1867 (lambda (port)
1868 (format port "#!~a/bin/sh
1869 exec ~a/bin/freedink -refdir ~a/share/dink\n"
1870 (assoc-ref %build-inputs "bash")
1871 (assoc-ref %build-inputs "engine")
1872 (assoc-ref %build-inputs "data"))
1873 (chmod port #o777)))
1874 #t))
1875 #:modules ((guix build utils))))
1876 (inputs `(("engine" ,freedink-engine)
1877 ("data" ,freedink-data)
1878 ("bash" ,bash)))
1879 (native-inputs '())))
1880
1881 (define-public xboard
1882 (package
1883 (name "xboard")
1884 (version "4.9.1")
1885 (source
1886 (origin
1887 (method url-fetch)
1888 (uri (string-append "mirror://gnu/xboard/xboard-" version
1889 ".tar.gz"))
1890 (sha256
1891 (base32
1892 "1mkh36xnnacnz9r00b5f9ld9309k32jv6mcavklbdnca8bl56bib"))))
1893 (build-system gnu-build-system)
1894 (inputs
1895 `(("gtk+" ,gtk+-2)
1896 ("librsvg" ,librsvg)))
1897 (native-inputs
1898 `(("texinfo" ,texinfo)
1899 ("pkg-config" ,pkg-config)))
1900 (home-page "https://www.gnu.org/software/xboard/")
1901 (synopsis "Graphical user interface for chess programs")
1902 (description "GNU XBoard is a graphical board for all varieties of chess,
1903 including international chess, xiangqi (Chinese chess), shogi (Japanese chess)
1904 and Makruk. Several lesser-known variants are also supported. It presents a
1905 fully interactive graphical interface and it can load and save games in the
1906 Portable Game Notation.")
1907 (license license:gpl3+)))
1908
1909 (define-public gtypist
1910 (package
1911 (name "gtypist")
1912 (version "2.9.5")
1913 (source (origin
1914 (method url-fetch)
1915 (uri (string-append "mirror://gnu/gtypist/gtypist-"
1916 version ".tar.xz"))
1917 (sha256
1918 (base32
1919 "0xzrkkmj0b1dw3yr0m9hml2y634cc4h61im6zwcq57s7285z8fn1"))
1920 (modules '((guix build utils)))
1921 (snippet
1922 ;; We do not provide `ncurses.h' within an `ncursesw'
1923 ;; sub-directory, so patch the source accordingly. See
1924 ;; <http://bugs.gnu.org/19018>.
1925 '(begin
1926 (for-each (lambda (file)
1927 (substitute* file
1928 (("ncursesw/ncurses.h")
1929 "ncurses.h")))
1930 (find-files "." "configure$|\\.c$"))
1931 #t))))
1932 (build-system gnu-build-system)
1933 (inputs `(("ncurses" ,ncurses)
1934 ("perl" ,perl)))
1935 (home-page "https://www.gnu.org/software/gtypist/")
1936 (synopsis "Typing tutor")
1937 (description
1938 "GNU Typist is a universal typing tutor. It can be used to learn and
1939 practice touch-typing. Several tutorials are included; in addition to
1940 tutorials for the standard QWERTY layout, there are also tutorials for the
1941 alternative layouts Dvorak and Colemak, as well as for the numpad. Tutorials
1942 are primarily in English, however some in other languages are provided.")
1943 (license license:gpl3+)))
1944
1945 (define-public irrlicht
1946 (package
1947 (name "irrlicht")
1948 (version "1.8.4")
1949 (source (origin
1950 (method url-fetch)
1951 (uri (string-append
1952 "mirror://sourceforge/irrlicht/Irrlicht%20SDK/"
1953 (version-major+minor version)
1954 "/" version "/irrlicht-" version ".zip"))
1955 (sha256
1956 (base32
1957 "0cz4z4dwrv5ypl19ll67wl6jjpy5k6ly4vr042w4br88qq5jhazl"))
1958 (patches (search-patches "irrlicht-use-system-libs.patch"))
1959 (modules '((guix build utils)))
1960 (snippet
1961 '(begin
1962 (for-each delete-file-recursively
1963 '("bin" ; bundled compiled Windows binaries"
1964 "source/Irrlicht/MacOSX"
1965 "source/Irrlicht/bzip2"
1966 "source/Irrlicht/jpeglib"
1967 "source/Irrlicht/libpng"
1968 "source/Irrlicht/lzma"
1969 "source/Irrlicht/zlib"))
1970 (delete-file "source/Irrlicht/glext.h")
1971 (delete-file "source/Irrlicht/glxext.h")
1972 (delete-file "source/Irrlicht/wglext.h")
1973 #t))))
1974 (build-system gnu-build-system)
1975 (arguments
1976 `(#:phases
1977 (modify-phases %standard-phases
1978 (add-after 'unpack 'chdir-to-source
1979 (lambda _
1980 ;; The actual source is buried a few directories deep.
1981 (chdir "source/Irrlicht/")
1982 #t))
1983 (add-after 'chdir-to-source 'fix-build-env
1984 (lambda* (#:key outputs #:allow-other-keys)
1985 (let ((out (assoc-ref outputs "out")))
1986 (substitute* "Makefile"
1987 (("INSTALL_DIR = /usr/local/lib")
1988 (string-append "INSTALL_DIR = " out "/lib"))
1989 ;; Add '-fpermissive' to the CXXFLAGS
1990 (("-Wall") "-Wall -fpermissive")) ; CImageLoaderJPG.cpp
1991 ;; The Makefile assumes these directories exist.
1992 (mkdir-p (string-append out "/lib"))
1993 (mkdir-p (string-append out "/include")))))
1994 (delete 'configure)) ; no configure script
1995 #:tests? #f ; no check target
1996 #:make-flags '("CC=gcc" "sharedlib")))
1997 (inputs
1998 `(("bzip2" ,bzip2)
1999 ("libjpeg" ,libjpeg)
2000 ("libpng" ,libpng)
2001 ("libx11" ,libx11)
2002 ("libxxf86vm" ,libxxf86vm)
2003 ("mesa" ,mesa)))
2004 (synopsis "3D game engine written in C++")
2005 (description
2006 "The Irrlicht Engine is a high performance realtime 3D engine written in
2007 C++. Features include an OpenGL renderer, extensible materials, scene graph
2008 management, character animation, particle and other special effects, support
2009 for common mesh file formats, and collision detection.")
2010 (home-page "http://irrlicht.sourceforge.net/")
2011 (license license:zlib)))
2012
2013 (define-public mars
2014 ;; The latest release on SourceForge relies on an unreleased version of SFML
2015 ;; with a different API, so we take the latest version from the official
2016 ;; repository on Github.
2017 (let ((commit "c855d044094a1d92317e38935d81ba938946132e")
2018 (revision "1"))
2019 (package
2020 (name "mars")
2021 (version (string-append "0.7.5." revision "." (string-take commit 7) ))
2022 (source (origin
2023 (method git-fetch)
2024 (uri (git-reference
2025 (url "https://github.com/thelaui/M.A.R.S..git")
2026 (commit commit)))
2027 (file-name (git-file-name name version))
2028 (sha256
2029 (base32
2030 "1r4c5gap1z2zsv4yjd34qriqkxaq4lb4rykapyzkkdf4g36lc3nh"))
2031 (patches (search-patches "mars-sfml-2.3.patch"
2032 "mars-install.patch"))))
2033 (build-system cmake-build-system)
2034 (arguments
2035 `(#:tests? #f ; There are no tests
2036 #:phases
2037 (modify-phases %standard-phases
2038 (add-after 'unpack 'fix-install-path
2039 (lambda _
2040 (substitute* "src/CMakeLists.txt"
2041 (("\\$\\{CMAKE_INSTALL_PREFIX\\}/games")
2042 "${CMAKE_INSTALL_PREFIX}/bin"))
2043 #t))
2044 (add-after 'unpack 'fix-data-path
2045 (lambda* (#:key outputs #:allow-other-keys)
2046 (substitute* "src/System/settings.cpp"
2047 (("C_dataPath = \"./data/\";")
2048 (string-append "C_dataPath = \""
2049 (assoc-ref outputs "out")
2050 "/share/games/marsshooter/\";")))
2051 #t)))))
2052 (inputs
2053 `(("mesa" ,mesa)
2054 ("fribidi" ,fribidi)
2055 ("taglib" ,taglib)
2056 ("sfml" ,sfml)))
2057 (home-page "http://marsshooter.org")
2058 (synopsis "2D space shooter")
2059 (description
2060 "M.A.R.S. is a 2D space shooter with pretty visual effects and
2061 attractive physics. Players can battle each other or computer controlled
2062 enemies in different game modes such as space ball, death match, team death
2063 match, cannon keep, and grave-itation pit.")
2064 (license license:gpl3+))))
2065
2066 (define minetest-data
2067 (package
2068 (name "minetest-data")
2069 (version "5.1.1")
2070 (source (origin
2071 (method git-fetch)
2072 (uri (git-reference
2073 (url "https://github.com/minetest/minetest_game")
2074 (commit version)))
2075 (file-name (git-file-name name version))
2076 (sha256
2077 (base32
2078 "1r9fxz2j24q74a9injvbxbf2xk67fzabv616i676zw2cvgv9hn39"))))
2079 (build-system trivial-build-system)
2080 (native-inputs
2081 `(("source" ,source)))
2082 (arguments
2083 `(#:modules ((guix build utils))
2084 #:builder (begin
2085 (use-modules (guix build utils))
2086 (let ((install-dir (string-append
2087 %output
2088 "/share/minetest/games/minetest_game")))
2089 (mkdir-p install-dir)
2090 (copy-recursively
2091 (assoc-ref %build-inputs "source")
2092 install-dir)
2093 #t))))
2094 (synopsis "Main game data for the Minetest game engine")
2095 (description
2096 "Game data for the Minetest infinite-world block sandbox game.")
2097 (home-page "https://www.minetest.net/")
2098 (license license:lgpl2.1+)))
2099
2100 (define-public minetest
2101 (package
2102 (name "minetest")
2103 (version "5.1.1")
2104 (source (origin
2105 (method git-fetch)
2106 (uri (git-reference
2107 (url "https://github.com/minetest/minetest")
2108 (commit version)))
2109 (file-name (git-file-name name version))
2110 (sha256
2111 (base32
2112 "0cjj63333b7j4ydfq0h9yc6d2jvmyjd7n7zbd08yrf0rcibrj2k0"))
2113 (modules '((guix build utils)))
2114 (snippet
2115 '(begin
2116 ;; Delete bundled libraries.
2117 (delete-file-recursively "lib")
2118 #t))))
2119 (build-system cmake-build-system)
2120 (arguments
2121 '(#:configure-flags
2122 (list "-DRUN_IN_PLACE=0"
2123 "-DENABLE_FREETYPE=1"
2124 "-DENABLE_GETTEXT=1"
2125 "-DENABLE_SYSTEM_JSONCPP=TRUE"
2126 (string-append "-DIRRLICHT_INCLUDE_DIR="
2127 (assoc-ref %build-inputs "irrlicht")
2128 "/include/irrlicht")
2129 (string-append "-DCURL_INCLUDE_DIR="
2130 (assoc-ref %build-inputs "curl")
2131 "/include/curl"))
2132 #:tests? #f)) ;no check target
2133 (native-search-paths
2134 (list (search-path-specification
2135 (variable "MINETEST_SUBGAME_PATH")
2136 (files '("share/minetest/games")))))
2137 (native-inputs
2138 `(("pkg-config" ,pkg-config)))
2139 (inputs
2140 `(("curl" ,curl)
2141 ("freetype" ,freetype)
2142 ("gettext" ,gettext-minimal)
2143 ("gmp" ,gmp)
2144 ("irrlicht" ,irrlicht)
2145 ("jsoncpp" ,jsoncpp)
2146 ("libjpeg" ,libjpeg)
2147 ("libpng" ,libpng)
2148 ("libogg" ,libogg)
2149 ("libvorbis" ,libvorbis)
2150 ("libxxf86vm" ,libxxf86vm)
2151 ("luajit" ,luajit)
2152 ("mesa" ,mesa)
2153 ("ncurses" ,ncurses)
2154 ("openal" ,openal)
2155 ("sqlite" ,sqlite)))
2156 (propagated-inputs
2157 `(("minetest-data" ,minetest-data)))
2158 (synopsis "Infinite-world block sandbox game")
2159 (description
2160 "Minetest is a sandbox construction game. Players can create and destroy
2161 various types of blocks in a three-dimensional open world. This allows
2162 forming structures in every possible creation, on multiplayer servers or as a
2163 single player. Mods and texture packs allow players to personalize the game
2164 in different ways.")
2165 (home-page "https://www.minetest.net/")
2166 (license license:lgpl2.1+)))
2167
2168 (define glkterm
2169 (package
2170 (name "glkterm")
2171 (version "1.0.4")
2172 (source
2173 (origin
2174 (method url-fetch)
2175 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
2176 "glk/implementations/glkterm-104.tar.gz"))
2177 (sha256
2178 (base32
2179 "0zlj9nlnkdlvgbiliczinirqygiq8ikg5hzh5vgcmnpg9pvnwga7"))))
2180 (build-system gnu-build-system)
2181 (propagated-inputs `(("ncurses" ,ncurses))) ; required by Make.glkterm
2182 (arguments
2183 '(#:tests? #f ; no check target
2184 #:phases
2185 (modify-phases %standard-phases
2186 (replace 'install
2187 (lambda* (#:key outputs #:allow-other-keys)
2188 (let* ((out (assoc-ref outputs "out"))
2189 (inc (string-append out "/include"))
2190 (lib (string-append out "/lib")))
2191 (for-each
2192 (lambda (file)
2193 (install-file file inc))
2194 '("glk.h" "glkstart.h" "gi_blorb.h" "gi_dispa.h" "Make.glkterm"))
2195 (install-file "libglkterm.a" lib))
2196 #t))
2197 (delete 'configure)))) ; no configure script
2198 (home-page "http://www.eblong.com/zarf/glk/")
2199 (synopsis "Curses Implementation of the Glk API")
2200 (description
2201 "Glk defines a portable API for applications with text UIs. It was
2202 primarily designed for interactive fiction, but it should be suitable for many
2203 interactive text utilities, particularly those based on a command line.
2204 This is an implementation of the Glk library which runs in a terminal window,
2205 using the @code{curses.h} library for screen control.")
2206 (license (license:fsf-free "file://README"))))
2207
2208 (define-public glulxe
2209 (package
2210 (name "glulxe")
2211 (version "0.5.4")
2212 (source
2213 (origin
2214 (method url-fetch)
2215 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
2216 "glulx/interpreters/glulxe/glulxe-054.tar.gz"))
2217 (sha256
2218 (base32
2219 "0vipydg6ra90yf9b3ipgppwxyb2xdhcxwvirgjy0v20wlf56zhhz"))))
2220 (build-system gnu-build-system)
2221 (inputs `(("glk" ,glkterm)))
2222 (arguments
2223 '(#:tests? #f ; no check target
2224 #:make-flags
2225 (let* ((glk (assoc-ref %build-inputs "glk")))
2226 (list (string-append "GLKINCLUDEDIR=" glk "/include")
2227 (string-append "GLKLIBDIR=" glk "/lib")
2228 (string-append "GLKMAKEFILE=" "Make.glkterm")))
2229 #:phases
2230 (modify-phases %standard-phases
2231 (replace 'install
2232 (lambda* (#:key outputs #:allow-other-keys)
2233 (let* ((out (assoc-ref outputs "out"))
2234 (bin (string-append out "/bin")))
2235 (install-file "glulxe" bin))
2236 #t))
2237 (delete 'configure)))) ; no configure script
2238 (home-page "https://www.eblong.com/zarf/glulx/")
2239 (synopsis "Interpreter for Glulx VM")
2240 (description
2241 "Glulx is a 32-bit portable virtual machine intended for writing and
2242 playing interactive fiction. It was designed by Andrew Plotkin to relieve
2243 some of the restrictions in the venerable Z-machine format. This is the
2244 reference interpreter, using the Glk API.")
2245 (license license:expat)))
2246
2247 (define-public fifechan
2248 (package
2249 (name "fifechan")
2250 (version "0.1.5")
2251 (source (origin
2252 (method url-fetch)
2253 (uri (string-append "https://codeload.github.com/fifengine/"
2254 "fifechan/tar.gz/" version))
2255 (file-name (string-append name "-" version ".tar.gz"))
2256 (sha256
2257 (base32
2258 "0wxs9vz5x9y8chghd8vp7vfk089lfb0qnzggi17zrqkrngs5zgi9"))))
2259 (build-system cmake-build-system)
2260 (inputs
2261 `(("sdl2" ,sdl2)
2262 ("sdl2-image" ,sdl2-image)
2263 ("mesa" ,mesa)))
2264 (arguments
2265 '(#:tests? #f)) ; No included tests
2266 (home-page "https://fifengine.github.io/fifechan/")
2267 (synopsis "Cross platform GUI library specifically for games")
2268 (description
2269 "Fifechan is a lightweight cross platform GUI library written in C++
2270 specifically designed for games. It has a built in set of extendable GUI
2271 Widgets, and allows users to create more.")
2272 (license license:lgpl2.1+)))
2273
2274 (define-public fifengine
2275 (package
2276 (name "fifengine")
2277 (version "0.4.2")
2278 (source (origin
2279 (method url-fetch)
2280 (uri (string-append "https://codeload.github.com/fifengine/"
2281 "fifengine/tar.gz/" version))
2282 (file-name (string-append name "-" version ".tar.gz"))
2283 (sha256
2284 (base32
2285 "1y4grw25cq5iqlg05rnbyxw1njl11ypidnlsm3qy4sm3xxdvb0p8"))))
2286 (build-system cmake-build-system)
2287 (arguments
2288 `(#:tests? #f ; TODO The test running fails to run some tests.
2289 #:modules ((srfi srfi-1)
2290 (guix build cmake-build-system)
2291 (guix build utils))
2292 #:configure-flags
2293 (list
2294 (string-append "-DOPENALSOFT_INCLUDE_DIR="
2295 (assoc-ref %build-inputs "openal")
2296 "/include/AL")
2297 (string-append "-DPYTHON_SITE_PACKAGES="
2298 (assoc-ref %outputs "out")
2299 "/lib/python3.7/site-packages"))
2300 #:phases
2301 (modify-phases %standard-phases
2302 (add-after 'unpack 'patch-run_tests.py
2303 (lambda _
2304 ;; Patch the test runner to exit with a status of 1 if any test
2305 ;; fails, to allow detecting failures.
2306 (substitute* "run_tests.py"
2307 (("ERROR\\. One or more tests failed!'\\)")
2308 "ERROR. One or more tests failed!')
2309 \t\texit(1)"))
2310 #t))
2311 ;; Run tests after installation so that we can make use of the built
2312 ;; python modules.
2313 (delete 'check)
2314 (add-after 'install 'check
2315 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
2316 (define python-version
2317 (let* ((version (last (string-split
2318 (assoc-ref inputs "python")
2319 #\-)))
2320 (components (string-split version #\.))
2321 (major+minor (take components 2)))
2322 (string-join major+minor ".")))
2323
2324 (when tests?
2325 ;; Set PYTHONPATH so that python finds the installed modules.
2326 (setenv "PYTHONPATH"
2327 (string-append (getenv "PYTHONPATH") ":"
2328 (assoc-ref outputs "out")
2329 "/lib/python"
2330 python-version
2331 "/site-packages"))
2332 ;; The tests require an X server.
2333 (system "Xvfb :1 &")
2334 (setenv "DISPLAY" ":1")
2335 (setenv "XDG_RUNTIME_DIR" "/tmp")
2336 ;; Run tests
2337 (chdir ,(string-append "../" name "-" version))
2338 (invoke "python3" "run_tests.py" "-a"))
2339 #t)))))
2340 (inputs
2341 `(("sdl2" ,sdl2)
2342 ("sdl2-image" ,sdl2-image)
2343 ("sdl2-ttf" ,sdl2-ttf)
2344 ("tinyxml" ,tinyxml)
2345 ("openal" ,openal)
2346 ("libogg" ,libogg)
2347 ("glew" ,glew)
2348 ("libvorbis" ,libvorbis)
2349 ("boost" ,boost)
2350 ("fifechan" ,fifechan)
2351 ("swig" ,swig)
2352 ("python" ,python)))
2353 (native-inputs
2354 `(("python" ,python)
2355 ("swig" ,swig)
2356 ("xvfb" ,xorg-server)))
2357 (propagated-inputs
2358 `(("python-future" ,python-future)))
2359 (home-page "https://www.fifengine.net/")
2360 (synopsis "FIFE is a multi-platform isometric game engine written in C++")
2361 (description
2362 "@acronym{FIFE, Flexible Isometric Free Engine} is a multi-platform
2363 isometric game engine. Python bindings are included allowing users to create
2364 games using Python as well as C++.")
2365 (license license:lgpl2.1+)))
2366
2367 (define-public fizmo
2368 (package
2369 (name "fizmo")
2370 (version "0.8.5")
2371 (source (origin
2372 (method url-fetch)
2373 (uri (string-append "https://fizmo.spellbreaker.org/source/"
2374 "fizmo-" version ".tar.gz"))
2375 (sha256
2376 (base32
2377 "1amyc4n41jf08kxmdgkk30bzzx54miaxa97w28f417qwn8lrl98w"))))
2378 (build-system gnu-build-system)
2379 (arguments
2380 '(#:configure-flags
2381 (let ((libjpeg (assoc-ref %build-inputs "libjpeg"))
2382 (ncurses (assoc-ref %build-inputs "ncurses")))
2383 (list (string-append "--with-jpeg-includedir=" libjpeg "/include")))))
2384 (native-inputs
2385 `(("pkg-config" ,pkg-config)))
2386 (inputs
2387 `(("freetype" ,freetype)
2388 ("libjpeg" ,libjpeg)
2389 ("libpng" ,libpng)
2390 ("libsndfile" ,libsndfile)
2391 ("libxml2" ,libxml2)
2392 ("ncurses" ,ncurses)
2393 ("sdl2" ,sdl2)))
2394 (home-page "https://fizmo.spellbreaker.org/")
2395 (synopsis "Z-machine interpreter")
2396 (description
2397 "Fizmo is a console-based Z-machine interpreter. It is used to play
2398 interactive fiction, also known as text adventures, which were implemented
2399 either by Infocom or created using the Inform compiler.")
2400 (license license:bsd-3)))
2401
2402 (define-public gnugo
2403 (package
2404 (name "gnugo")
2405 (version "3.8")
2406 (source (origin
2407 (method url-fetch)
2408 (uri (string-append "mirror://gnu/gnugo/gnugo-" version
2409 ".tar.gz"))
2410 (sha256
2411 (base32
2412 "0wkahvqpzq6lzl5r49a4sd4p52frdmphnqsfdv7gdp24bykdfs6s"))))
2413 (build-system gnu-build-system)
2414 (inputs `(("readline" ,readline)))
2415 (synopsis "Play the game of Go")
2416 (description
2417 "GNU Go is a program that plays the game of Go, in which players
2418 place stones on a grid to form territory or capture other stones. While
2419 it can be played directly from the terminal, rendered in ASCII characters,
2420 it is also possible to play GNU Go with 3rd party graphical interfaces or
2421 even in Emacs. It supports the standard game storage format (SGF, Smart
2422 Game Format) and inter-process communication format (GMP, Go Modem
2423 Protocol).")
2424 (home-page "https://www.gnu.org/software/gnugo/")
2425 (license license:gpl3+)))
2426
2427 (define-public extremetuxracer
2428 (package
2429 (name "extremetuxracer")
2430 (version "0.7.5")
2431 (source (origin
2432 (method url-fetch)
2433 (uri (string-append
2434 "mirror://sourceforge/extremetuxracer/releases/"
2435 version "/etr-" version ".tar.xz"))
2436 (sha256
2437 (base32
2438 "1ly63316c07i0gyqqmyzsyvygsvygn0fpk3bnbg25fi6li99rlsg"))))
2439 (build-system gnu-build-system)
2440 (native-inputs
2441 `(("pkg-config" ,pkg-config)))
2442 (inputs
2443 `(("glu" ,glu)
2444 ("sfml" ,sfml)))
2445 (synopsis "High-speed arctic racing game based on Tux Racer")
2446 ;; Snarfed straight from Debian.
2447 (description "Extreme Tux Racer, or etracer as it is called for short, is
2448 a simple OpenGL racing game featuring Tux, the Linux mascot. The goal of the
2449 game is to slide down a snow- and ice-covered mountain as quickly as possible,
2450 avoiding the trees and rocks that will slow you down.
2451
2452 Collect herrings and other goodies while sliding down the hill, but avoid fish
2453 bones.
2454
2455 This game is based on the GPL version of the famous game TuxRacer.")
2456 (home-page "https://sourceforge.net/projects/extremetuxracer/")
2457 (license license:gpl2+)))
2458
2459 (define-public supertuxkart
2460 (package
2461 (name "supertuxkart")
2462 (version "1.1")
2463 (source
2464 (origin
2465 (method url-fetch)
2466 (uri (string-append "mirror://sourceforge/supertuxkart/SuperTuxKart/"
2467 version "/supertuxkart-" version "-src.tar.xz"))
2468 (sha256
2469 (base32
2470 "1s0ai07g3sswck9mr0142989mrgzzq1njc1qxk5als5b245jpc79"))
2471 (modules '((guix build utils)))
2472 (snippet
2473 ;; Delete bundled library sources
2474 '(begin
2475 ;; Supertuxkart uses modified versions of the Irrlicht engine
2476 ;; and the bullet library. The developers gave an explanation
2477 ;; here: http://forum.freegamedev.net/viewtopic.php?f=17&t=3906
2478 ;; FIXME: try to unbundle angelscript and libraqm
2479 (for-each delete-file-recursively
2480 '("lib/zlib"
2481 "lib/libpng"
2482 "lib/jpeglib"
2483 "lib/glew"
2484 "lib/wiiuse"
2485 "lib/enet"))
2486 #t))))
2487 (build-system cmake-build-system)
2488 (arguments
2489 `(#:tests? #f ; no check target
2490 #:configure-flags
2491 (list "-DUSE_WIIUSE=0"
2492 ;; Do not use the bundled zlib, glew and enet.
2493 "-DNO_IRR_COMPILE_WITH_ZLIB_=TRUE"
2494 "-DUSE_SYSTEM_GLEW=TRUE"
2495 "-DUSE_SYSTEM_ENET=TRUE"
2496 ;; In order to use the system ENet library, IPv6 support (added in
2497 ;; SuperTuxKart version 1.1) must be disabled.
2498 "-DUSE_IPV6=FALSE"
2499 ;; FIXME: needs libopenglrecorder
2500 "-DBUILD_RECORDER=0"
2501 ;; Irrlicht returns an integer instead of a boolean
2502 "-DCMAKE_C_FLAGS=-fpermissive")))
2503 (inputs
2504 `(("glew" ,glew)
2505 ("zlib" ,zlib)
2506 ("openal" ,openal)
2507 ("libvorbis" ,libvorbis)
2508 ("freetype" ,freetype)
2509 ("fribidi" ,fribidi)
2510 ("harfbuzz" ,harfbuzz)
2511 ("mesa" ,mesa)
2512 ("libx11" ,libx11)
2513 ("libxrandr" ,libxrandr)
2514 ("curl" ,curl)
2515 ;; The following input is needed to build the bundled and modified
2516 ;; version of irrlicht.
2517 ("libjpeg" ,libjpeg)
2518 ("openssl" ,openssl)
2519 ("enet" ,enet)))
2520 (native-inputs
2521 `(("pkg-config" ,pkg-config)))
2522 (home-page "https://supertuxkart.net/Main_Page")
2523 (synopsis "3D kart racing game")
2524 (description "SuperTuxKart is a 3D kart racing game, with a focus on
2525 having fun over realism. You can play with up to 4 friends on one PC, racing
2526 against each other or just trying to beat the computer; single-player mode is
2527 also available.")
2528 (license license:gpl3+)))
2529
2530 (define-public unknown-horizons
2531 (package
2532 (name "unknown-horizons")
2533 (version "2019.1")
2534 (source (origin
2535 (method url-fetch)
2536 (uri (string-append "https://codeload.github.com/unknown-horizons/"
2537 "unknown-horizons/tar.gz/" version))
2538 (file-name (string-append name "-" version ".tar.gz"))
2539 (sha256
2540 (base32
2541 "1n747p7h0qp48szgp262swg0xh8kxy1bw8ag1qczs4i26hyzs5x4"))))
2542 (build-system python-build-system)
2543 (arguments
2544 '(#:phases
2545 (modify-phases %standard-phases
2546 (add-before 'build 'set-HOME
2547 (lambda _
2548 (setenv "HOME" "/tmp")))
2549 (add-after 'build 'build-extra
2550 (lambda _
2551 (invoke "python3" "./setup.py" "build_i18n")
2552 (invoke "python3" "horizons/engine/generate_atlases.py" "2048")
2553 #t))
2554 (add-after 'install 'patch
2555 (lambda* (#:key outputs #:allow-other-keys)
2556 (let ((out (assoc-ref outputs "out")))
2557 (substitute* (string-append out "/bin/unknown-horizons")
2558 (("os\\.chdir\\(get\\_content\\_dir\\_parent_path\\(\\)\\)")
2559 (string-append "os.chdir(\""
2560 (assoc-ref outputs "out")
2561 "/share/unknown-horizons\")"))))
2562 #t))
2563 ;; TODO: Run GUI tests as well
2564 (replace 'check
2565 (lambda _
2566 (substitute* "horizons/constants.py"
2567 (("IS_DEV_VERSION = False")
2568 "IS_DEV_VERSION = True"))
2569 (invoke "pytest" "tests")
2570 (substitute* "horizons/constants.py"
2571 (("IS_DEV_VERSION = True")
2572 "IS_DEV_VERSION = False"))
2573 #t)))))
2574 (inputs
2575 `(("fifengine" ,fifengine)
2576 ("python:tk" ,python "tk")
2577 ("python-pillow" ,python-pillow)
2578 ("python-pyyaml" ,python-pyyaml)))
2579 (native-inputs
2580 `(("intltool" ,intltool)
2581
2582 ;; Required for tests
2583 ("python-greenlet" ,python-greenlet)
2584 ("python-polib" ,python-polib)
2585 ("python-pytest" ,python-pytest)
2586 ("python-pytest-mock" ,python-pytest-mock)))
2587 (home-page "http://unknown-horizons.org/")
2588 (synopsis "Isometric realtime strategy, economy and city building simulation")
2589 (description
2590 "Unknown Horizons is a 2D realtime strategy simulation with an emphasis
2591 on economy and city building. Expand your small settlement to a strong and
2592 wealthy colony, collect taxes and supply your inhabitants with valuable
2593 goods. Increase your power with a well balanced economy and with strategic
2594 trade and diplomacy.")
2595 (license (list
2596 license:gpl2+ ; Covers code
2597 license:expat ; tests/dummy.py, ext/polib.py
2598 license:cc-by-sa3.0 ; Covers some media content
2599 license:cc-by3.0 ; Covers some media content
2600 license:bsd-3)))) ; horizons/ext/speaklater.py
2601
2602 (define-public gnujump
2603 (package
2604 (name "gnujump")
2605 (version "1.0.8")
2606 (source (origin
2607 (method url-fetch)
2608 (uri (string-append "mirror://gnu/gnujump/gnujump-"
2609 version ".tar.gz"))
2610 (sha256
2611 (base32
2612 "05syy9mzbyqcfnm0hrswlmhwlwx54f0l6zhcaq8c1c0f8dgzxhqk"))))
2613 (build-system gnu-build-system)
2614 (arguments
2615 '(#:phases
2616 (modify-phases %standard-phases
2617 (add-before
2618 'configure 'link-libm
2619 (lambda _ (setenv "LIBS" "-lm")))
2620 (add-after 'install 'create-desktop-entry
2621 (lambda* (#:key outputs #:allow-other-keys)
2622 (let* ((out (assoc-ref outputs "out"))
2623 (apps (string-append out "/share/applications")))
2624 (mkdir-p apps)
2625 (with-output-to-file
2626 (string-append apps "/gnujump.desktop")
2627 (lambda _
2628 (format #t
2629 "[Desktop Entry]~@
2630 Name=GNUjump~@
2631 Comment=Jump up the tower to survive~@
2632 Exec=~a/bin/gnujump~@
2633 Terminal=false~@
2634 Type=Application~@
2635 Categories=Game;ArcadeGame~%"
2636 out)))))))))
2637 (inputs
2638 `(("glu" ,glu)
2639 ("mesa" ,mesa)
2640 ("sdl" ,sdl)
2641 ("sdl-image" ,sdl-image)
2642 ("sdl-mixer" ,sdl-mixer)))
2643 (home-page "http://gnujump.es.gnu.org/")
2644 (synopsis
2645 "Game of jumping to the next floor, trying not to fall")
2646 (description
2647 "GNUjump is a simple, yet addictive game in which you must jump from
2648 platform to platform to avoid falling, while the platforms drop at faster rates
2649 the higher you go. The game features multiplayer, unlimited FPS, smooth floor
2650 falling, themeable graphics and sounds, and replays.")
2651 (license license:gpl3+)))
2652
2653 (define-public wesnoth
2654 (package
2655 (name "wesnoth")
2656 (version "1.14.11")
2657 (source (origin
2658 (method url-fetch)
2659 (uri (string-append "mirror://sourceforge/wesnoth/wesnoth-"
2660 (version-major+minor version)
2661 "/wesnoth-" version "/"
2662 "wesnoth-" version ".tar.bz2"))
2663 (sha256
2664 (base32
2665 "1i8mz6gw3qar09bscczhki0g4scj8pl58v85rp0g55r4bcq41l5v"))))
2666 (build-system cmake-build-system)
2667 (arguments
2668 `(#:tests? #f ;no check target
2669 #:phases (modify-phases %standard-phases
2670 (add-before 'configure 'treat-boost-as-system-header
2671 (lambda* (#:key inputs #:allow-other-keys)
2672 (let ((boost (assoc-ref inputs "boost")))
2673 ;; Ensure Boost is treated as "system headers" to
2674 ;; pacify compiler warnings induced by Boost headers.
2675 (for-each (lambda (variable)
2676 (setenv variable
2677 (string-append boost "/include:"
2678 (or (getenv variable)
2679 ""))))
2680 '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"))
2681 #t))))))
2682 (native-inputs
2683 `(("gettext" ,gettext-minimal)
2684 ("pkg-config" ,pkg-config)))
2685 (inputs
2686 `(("boost" ,boost)
2687 ("dbus" ,dbus)
2688 ("fribidi" ,fribidi)
2689 ("libvorbis" ,libvorbis)
2690 ("openssl" ,openssl)
2691 ("pango" ,pango)
2692 ("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
2693 (home-page "https://www.wesnoth.org/")
2694 (synopsis "Turn-based strategy game")
2695 (description
2696 "The Battle for Wesnoth is a fantasy, turn based tactical strategy game,
2697 with several single player campaigns, and multiplayer games (both networked and
2698 local).
2699
2700 Battle for control on a range of maps, using variety of units which have
2701 advantages and disadvantages against different types of attacks. Units gain
2702 experience and advance levels, and are carried over from one scenario to the
2703 next campaign.")
2704 (license license:gpl2+)))
2705
2706 (define-public the-battle-for-wesnoth
2707 (deprecated-package "the-battle-for-wesnoth" wesnoth))
2708
2709 (define-public wesnoth-server
2710 (package
2711 (inherit wesnoth)
2712 (name "wesnoth-server")
2713 (inputs
2714 `(("boost" ,boost)
2715 ("icu4c" ,icu4c)
2716 ("openssl" ,openssl)
2717 ("sdl2" ,sdl2)))
2718 (arguments
2719 `(#:configure-flags '("-DENABLE_GAME=OFF")
2720 ,@(package-arguments wesnoth)))
2721 (synopsis "Dedicated @emph{Battle for Wesnoth} server")
2722 (description "This package contains a dedicated server for @emph{The
2723 Battle for Wesnoth}.")))
2724
2725 (define-public the-battle-for-wesnoth-server
2726 (deprecated-package "the-battle-for-wesnoth-server" wesnoth-server))
2727
2728 (define-public gamine
2729 (package
2730 (name "gamine")
2731 (version "1.6")
2732 (source (origin
2733 (method url-fetch)
2734 (uri (string-append "mirror://sourceforge/gamine-game/"
2735 "gamine-" version ".tar.gz"))
2736 (sha256
2737 (base32
2738 "1sc6f4445ciigd6yw0ri92746k4hk6ps0bvj9fm1gbp3c3fslk5n"))))
2739 (build-system gnu-build-system)
2740 (native-inputs
2741 `(("pkg-config" ,pkg-config)
2742 ("intltool" ,intltool)))
2743 (inputs
2744 `(("gstreamer" ,gstreamer)
2745 ("gst-plugins-base" ,gst-plugins-base) ; playbin plugin
2746 ("gst-plugins-good" ,gst-plugins-good) ; for wav playback
2747 ("gtk+" ,gtk+)))
2748 (arguments
2749 `(#:tests? #f
2750 #:make-flags
2751 (let ((out (assoc-ref %outputs "out")))
2752 (list (string-append "PREFIX=" out)
2753 (string-append "SYSCONFDIR=" out "/etc")))
2754 #:phases
2755 (modify-phases %standard-phases
2756 (delete 'configure)
2757 (add-after
2758 'install 'wrap-gamine
2759 (lambda* (#:key outputs #:allow-other-keys)
2760 (let ((out (assoc-ref outputs "out"))
2761 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
2762 (wrap-program (string-append out "/bin/gamine")
2763 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))))
2764 #t)))))
2765 (home-page "http://gamine-game.sourceforge.net/")
2766 (synopsis "Mouse and keyboard discovery for children")
2767 (description
2768 "Gamine is a game designed for young children who are learning to use the
2769 mouse and keyboard. The child uses the mouse to draw colored dots and lines
2770 on the screen and keyboard to display letters.")
2771 ;; Most files under gpl2+ or gpl3+, but eat.wav under gpl3
2772 (license license:gpl3)))
2773
2774 (define-public manaplus
2775 (package
2776 (name "manaplus")
2777 (version "1.9.3.23")
2778 (source (origin
2779 (method url-fetch)
2780 (uri (string-append
2781 "https://repo.manaplus.org/manaplus/download/"
2782 version "/manaplus-" version ".tar.xz"))
2783 (sha256
2784 (base32
2785 "1ky182p4svwdqm6cf7jbns85hidkhkhq4s17cs2p381f0klapfjz"))))
2786 (build-system gnu-build-system)
2787 (arguments
2788 '(#:configure-flags
2789 (list (string-append "CPPFLAGS=-I"
2790 (assoc-ref %build-inputs "sdl-union")
2791 "/include/SDL"))))
2792 (native-inputs
2793 `(("pkg-config" ,pkg-config)))
2794 (inputs
2795 `(("glu" ,glu)
2796 ("curl" ,curl)
2797 ("libxml2" ,libxml2)
2798 ("mesa" ,mesa)
2799 ("sdl-union" ,(sdl-union))))
2800 (home-page "https://manaplus.org")
2801 (synopsis "Client for 'The Mana World' and similar games")
2802 (description
2803 "ManaPlus is a 2D MMORPG client for game servers. It is the only
2804 fully supported client for @uref{http://www.themanaworld.org, The mana
2805 world}, @uref{http://evolonline.org, Evol Online} and
2806 @uref{http://landoffire.org, Land of fire}.")
2807 ;; "src/debug/*" and "src/sdl2gfx/*" are under Zlib.
2808 ;; "data/themes/{golden-delicious,jewelry}/*" are under CC-BY-SA.
2809 ;; The rest is under GPL2+.
2810 (license (list license:gpl2+ license:zlib license:cc-by-sa4.0))))
2811
2812 (define openttd-engine
2813 (package
2814 (name "openttd-engine")
2815 (version "1.9.3")
2816 (source
2817 (origin (method url-fetch)
2818 (uri (string-append "https://proxy.binaries.openttd.org/openttd-releases/"
2819 version "/openttd-" version "-source.tar.xz"))
2820 (sha256
2821 (base32
2822 "0ijq72kgx997ggw40i5f4a3nf7y2g72z37l47i18yjvgbdzy320r"))
2823 (modules '((guix build utils)))
2824 (snippet
2825 ;; The DOS port contains proprietary software.
2826 '(begin
2827 (delete-file-recursively "os/dos")
2828 #t))))
2829 (build-system gnu-build-system)
2830 (arguments
2831 `(#:tests? #f ; no "check" target
2832 #:phases
2833 (modify-phases %standard-phases
2834 ;; The build process fails if the configure script is passed the
2835 ;; option "--enable-fast-install".
2836 (replace 'configure
2837 (lambda* (#:key inputs outputs (configure-flags '())
2838 #:allow-other-keys)
2839 (let ((out (assoc-ref outputs "out"))
2840 (lzo (assoc-ref inputs "lzo")))
2841 (apply invoke "./configure"
2842 (string-append "--prefix=" out)
2843 ;; Provide the "lzo" path.
2844 (string-append "--with-liblzo2="
2845 lzo "/lib/liblzo2.a")
2846 ;; Put the binary in 'bin' instead of 'games'.
2847 "--binary-dir=bin"
2848 configure-flags)))))))
2849 (native-inputs `(("pkg-config" ,pkg-config)))
2850 (inputs
2851 `(("allegro" ,allegro)
2852 ("fontconfig" ,fontconfig)
2853 ("freetype" ,freetype)
2854 ("icu4c" ,icu4c)
2855 ("libpng" ,libpng)
2856 ("lzo" ,lzo)
2857 ("sdl" ,sdl)
2858 ("xz" ,xz)
2859 ("zlib" ,zlib)))
2860 (synopsis "Transportation economics simulator game")
2861 (description "OpenTTD is a game in which you transport goods and
2862 passengers by land, water and air. It is a re-implementation of Transport
2863 Tycoon Deluxe with many enhancements including multiplayer mode,
2864 internationalization support, conditional orders and the ability to clone,
2865 autoreplace and autoupdate vehicles. This package only includes the game
2866 engine. When you start it you will be prompted to download a graphics set.")
2867 (home-page "https://www.openttd.org/")
2868 ;; This package is GPLv2, except for a few files located in
2869 ;; "src/3rdparty/" which are under the 3-clause BSD, LGPLv2.1+ and Zlib
2870 ;; licenses. In addition, this software contains an in-game downloader
2871 ;; from which the user may find non-functional data licensed under
2872 ;; different terms.
2873 (license (list license:bsd-3 license:gpl2 license:lgpl2.1+ license:zlib))))
2874
2875 (define openttd-opengfx
2876 (package
2877 (name "openttd-opengfx")
2878 (version "0.5.5")
2879 (source
2880 (origin
2881 (method url-fetch)
2882 (uri (string-append "http://binaries.openttd.org/extra/opengfx/"
2883 version "/opengfx-" version "-source.tar.xz"))
2884 (sha256
2885 (base32
2886 "009fa1bdin1bk0ynzhzc30hzkmmwzmwkk6j591ax3f6w75l28n49"))))
2887 (build-system gnu-build-system)
2888 (arguments
2889 '(#:make-flags (list "CC=gcc"
2890 (string-append "INSTALL_DIR="
2891 (assoc-ref %outputs "out")
2892 "/share/games/openttd/baseset/opengfx"))
2893 #:phases
2894 (modify-phases %standard-phases
2895 (replace 'configure
2896 (lambda _
2897 ;; Make sure HOME is writable for GIMP.
2898 (setenv "HOME" (getcwd))
2899
2900 ;; Redirect stdout, not stderr, to /dev/null. This prevents
2901 ;; dos2unix from receiving its version information as a flag.
2902 (substitute* "Makefile"
2903 (("\\$\\(UNIX2DOS\\) -q --version 2>/dev/null")
2904 "$(UNIX2DOS) -q --version 1>/dev/null")))))
2905 ;; The check phase for this package only checks the md5sums of the built
2906 ;; GRF files against the md5sums of the release versions. Because we use
2907 ;; different software versions than upstream does, some of the md5sums
2908 ;; are different. However, the package is still reproducible, it's safe
2909 ;; to disable this test.
2910 #:tests? #f
2911 #:parallel-build? #f))
2912 (native-inputs `(("dos2unix" ,dos2unix)
2913 ("gimp" ,gimp)
2914 ("grfcodec" ,grfcodec)
2915 ("nml" ,nml)
2916 ("python" ,python-2)))
2917 (home-page "http://dev.openttdcoop.org/projects/opengfx")
2918 (synopsis "Base graphics set for OpenTTD")
2919 (description
2920 "The OpenGFX projects is an implementation of the OpenTTD base grahics
2921 set that aims to ensure the best possible out-of-the-box experience.
2922
2923 OpenGFX provides you with...
2924 @enumerate
2925 @item All graphics you need to enjoy OpenTTD.
2926 @item Uniquely drawn rail vehicles for every climate.
2927 @item Completely snow-aware rivers.
2928 @item Different river and sea water.
2929 @item Snow-aware buoys.
2930 @end enumerate")
2931 (license license:gpl2)))
2932
2933 (define openttd-opensfx
2934 (package
2935 (name "openttd-opensfx")
2936 (version "0.2.3")
2937 (source
2938 (origin
2939 (method url-fetch)
2940 (uri (string-append
2941 "https://binaries.openttd.org/extra/opensfx/"
2942 version "/opensfx-" version "-source.tar.gz"))
2943 (sha256
2944 (base32
2945 "03jxgp02ks31hmsdh4xh0xcpkb70ds8jakc9pfc1y9vdrdavh4p5"))))
2946 (build-system gnu-build-system)
2947 (native-inputs
2948 `(("catcodec" ,catcodec)
2949 ("python" ,python-2)))
2950 (arguments
2951 `(#:make-flags
2952 (list (string-append "INSTALL_DIR=" %output
2953 "/share/games/openttd/baseset/opensfx"))
2954 #:phases
2955 (modify-phases %standard-phases
2956 (add-after 'unpack 'make-reproducible
2957 (lambda _
2958 ;; Remove the time dependency of the installed tarball by setting
2959 ;; the modification times if its members to 0.
2960 (substitute* "scripts/Makefile.def"
2961 (("-cf") " --mtime=@0 -cf"))
2962 #t))
2963 (delete 'configure))))
2964 (home-page "http://dev.openttdcoop.org/projects/opensfx")
2965 (synopsis "Base sounds for OpenTTD")
2966 (description "OpenSFX is a set of free base sounds for OpenTTD which make
2967 it possible to play OpenTTD without requiring the proprietary sound files from
2968 the original Transport Tycoon Deluxe.")
2969 (license license:cc-sampling-plus-1.0)))
2970
2971 (define openttd-openmsx
2972 (package
2973 (name "openttd-openmsx")
2974 (version "0.3.1")
2975 (source
2976 (origin
2977 (method url-fetch)
2978 (uri (string-append
2979 "https://binaries.openttd.org/extra/openmsx/"
2980 version "/openmsx-" version "-source.tar.gz"))
2981 (sha256
2982 (base32
2983 "0nskq97a6fsv1v6d62zf3yb8whzhqnlh3lap3va3nzvj7csjgf7c"))))
2984 (build-system gnu-build-system)
2985 (native-inputs
2986 `(("python" ,python-2)))
2987 (arguments
2988 `(#:make-flags
2989 (list (string-append "INSTALL_DIR=" %output
2990 "/share/games/openttd/baseset"))
2991 #:phases
2992 (modify-phases %standard-phases
2993 (delete 'configure)
2994 (add-after 'install 'post-install
2995 ;; Rename openmsx-version to openmsx
2996 (lambda* (#:key outputs #:allow-other-keys)
2997 (let ((install-directory (string-append (assoc-ref outputs "out")
2998 "/share/games/openttd/baseset")))
2999 (rename-file (string-append install-directory "/openmsx-" ,version)
3000 (string-append install-directory "/openmsx"))
3001 #t))))))
3002 (home-page "http://dev.openttdcoop.org/projects/openmsx")
3003 (synopsis "Music set for OpenTTD")
3004 (description "OpenMSX is a music set for OpenTTD which makes it possible
3005 to play OpenTTD without requiring the proprietary music from the original
3006 Transport Tycoon Deluxe.")
3007 (license license:gpl2)))
3008
3009 (define-public openttd
3010 (package
3011 (inherit openttd-engine)
3012 (name "openttd")
3013 (arguments
3014 `(#:configure-flags
3015 (list (string-append "--with-midi=" (assoc-ref %build-inputs "timidity++")
3016 "/bin/timidity"))
3017 ,@(substitute-keyword-arguments (package-arguments openttd-engine)
3018 ((#:phases phases)
3019 `(modify-phases ,phases
3020 (add-after 'install 'install-data
3021 (lambda* (#:key inputs outputs #:allow-other-keys)
3022 (for-each
3023 (lambda (input)
3024 (copy-recursively (assoc-ref inputs input)
3025 (assoc-ref outputs "out")))
3026 (list "opengfx" "openmsx" "opensfx"))
3027 #t)))))))
3028 (inputs
3029 `(("timidity++" ,timidity++)
3030 ,@(package-inputs openttd-engine)))
3031 (native-inputs
3032 `(("opengfx" ,openttd-opengfx)
3033 ("openmsx" ,openttd-openmsx)
3034 ("opensfx" ,openttd-opensfx)
3035 ,@(package-native-inputs openttd-engine)))))
3036
3037 (define openrct2-title-sequences
3038 (package
3039 (name "openrct2-title-sequences")
3040 (version "0.1.2")
3041 (source
3042 (origin
3043 (method url-fetch)
3044 (uri (string-append "https://github.com/OpenRCT2/title-sequences/releases/download/v"
3045 version "/title-sequence-v" version ".zip"))
3046 (file-name (string-append name "-" version ".zip"))
3047 (sha256
3048 (base32
3049 "0qbyxrsw8hlgaq0r5d7lx7an3idy4qbfv7yiw9byhldk763n9cfw"))))
3050 (build-system trivial-build-system)
3051 (native-inputs
3052 `(("bash" ,bash)
3053 ("coreutils" ,coreutils)
3054 ("unzip" ,unzip)))
3055 (arguments
3056 `(#:modules ((guix build utils))
3057 #:builder
3058 (begin
3059 (use-modules (guix build utils))
3060 (let* ((out (assoc-ref %outputs "out"))
3061 (openrct2-title-sequences (string-append out
3062 "/share/openrct2/title-sequences"))
3063 (source (assoc-ref %build-inputs "source"))
3064 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
3065 (copy-file source (string-append ,name "-" ,version ".zip"))
3066 (invoke unzip (string-append ,name "-" ,version ".zip"))
3067 (delete-file (string-append ,name "-" ,version ".zip"))
3068 (mkdir-p openrct2-title-sequences)
3069 (copy-recursively "."
3070 openrct2-title-sequences)
3071 #t))))
3072 (home-page "https://github.com/OpenRCT2/OpenRCT2")
3073 (synopsis "Title sequences for OpenRCT2")
3074 (description
3075 "openrct2-title-sequences is a set of title sequences for OpenRCT2.")
3076 (license license:gpl3+)))
3077
3078 (define openrct2-objects
3079 (package
3080 (name "openrct2-objects")
3081 (version "1.0.9")
3082 (source
3083 (origin
3084 (method url-fetch)
3085 (uri (string-append "https://github.com/OpenRCT2/objects/releases/download/v"
3086 version "/objects.zip"))
3087 (file-name (string-append name "-" version ".zip"))
3088 (sha256
3089 (base32 "02apb8h553m7d6jvysgb1zahvxc1yzyygfca2iclb21b3fhpsas4"))))
3090 (build-system trivial-build-system)
3091 (native-inputs
3092 `(("bash" ,bash)
3093 ("coreutils" ,coreutils)
3094 ("unzip" ,unzip)))
3095 (arguments
3096 `(#:modules ((guix build utils))
3097 #:builder
3098 (begin
3099 (use-modules (guix build utils))
3100 (let* ((out (assoc-ref %outputs "out"))
3101 (openrct2-objects (string-append out
3102 "/share/openrct2/objects"))
3103 (source (assoc-ref %build-inputs "source"))
3104 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
3105 (copy-file source (string-append ,name "-" ,version ".zip"))
3106 (invoke unzip (string-append ,name "-" ,version ".zip"))
3107 (delete-file (string-append ,name "-" ,version ".zip"))
3108 (mkdir-p openrct2-objects)
3109 (copy-recursively "."
3110 openrct2-objects)
3111 #t))))
3112 (home-page "https://github.com/OpenRCT2/OpenRCT2")
3113 (synopsis "Objects for OpenRCT2")
3114 (description
3115 "openrct2-objects is a set of objects for OpenRCT2.")
3116 (license license:gpl3+)))
3117
3118 (define-public openrct2
3119 (package
3120 (name "openrct2")
3121 (version "0.2.4")
3122 (source
3123 (origin
3124 (method git-fetch)
3125 (uri (git-reference
3126 (url "https://github.com/OpenRCT2/OpenRCT2.git")
3127 (commit (string-append "v" version))))
3128 (file-name (git-file-name name version))
3129 (sha256
3130 (base32 "1rlw3w20llg36sj3bk50g661qw766ng8ma3p42sdkj8br9dw800h"))))
3131 (build-system cmake-build-system)
3132 (arguments
3133 `(#:configure-flags (list "-DDOWNLOAD_OBJECTS=OFF"
3134 "-DDOWNLOAD_TITLE_SEQUENCES=OFF")
3135 #:tests? #f ; tests require network access
3136 #:phases
3137 (modify-phases %standard-phases
3138 (add-after 'unpack 'fix-usr-share-paths&add-data
3139 (lambda* (#:key inputs outputs #:allow-other-keys)
3140 (let ((titles (assoc-ref inputs "openrct2-title-sequences"))
3141 (objects (assoc-ref inputs "openrct2-objects")))
3142 ;; Fix some references to /usr/share.
3143 (substitute* "src/openrct2/platform/Platform.Linux.cpp"
3144 (("/usr/share")
3145 (string-append (assoc-ref %outputs "out") "/share")))
3146 (copy-recursively
3147 (string-append titles "/share/openrct2/title-sequences")
3148 "data/title")
3149 (copy-recursively
3150 (string-append objects "/share/openrct2/objects")
3151 "data/object"))))
3152 (add-before 'configure 'get-rid-of-errors
3153 (lambda _
3154 ;; Don't treat warnings as errors.
3155 (substitute* "CMakeLists.txt"
3156 (("-Werror") ""))
3157 #t)))))
3158 (inputs `(("curl" ,curl)
3159 ("fontconfig" ,fontconfig)
3160 ("freetype" ,freetype)
3161 ("icu4c" ,icu4c)
3162 ("jansson" ,jansson)
3163 ("libpng" ,libpng)
3164 ("libzip" ,libzip)
3165 ("mesa" ,mesa)
3166 ("openrct2-objects" ,openrct2-objects)
3167 ("openrct2-title-sequences" ,openrct2-title-sequences)
3168 ("openssl" ,openssl)
3169 ("sdl2" ,sdl2)
3170 ("speexdsp" ,speexdsp)
3171 ("zlib" ,zlib)))
3172 (native-inputs
3173 `(("pkg-config" ,pkg-config)))
3174 (home-page "https://github.com/OpenRCT2/OpenRCT2")
3175 (synopsis "Free software re-implementation of RollerCoaster Tycoon 2")
3176 (description "OpenRCT2 is a free software re-implementation of
3177 RollerCoaster Tycoon 2 (RCT2). The gameplay revolves around building and
3178 maintaining an amusement park containing attractions, shops and facilities.
3179
3180 Note that this package does @emph{not} provide the game assets (sounds,
3181 images, etc.)")
3182 ;; See <https://github.com/OpenRCT2/OpenRCT2/wiki/Required-RCT2-files>
3183 ;; regarding assets.
3184 (license license:gpl3+)))
3185
3186 (define-public pinball
3187 (package
3188 (name "pinball")
3189 (version "0.3.1")
3190 (source
3191 (origin (method url-fetch)
3192 (uri (string-append "mirror://sourceforge/pinball/pinball/"
3193 "pinball-" version "/"
3194 "pinball-" version ".tar.gz"))
3195 (sha256
3196 (base32
3197 "1f2whlrfidwfh8lvr8cspcyirc6840r5d1ajm7x99qmngygrhixs"))
3198 (patches (search-patches "pinball-const-fix.patch"
3199 "pinball-cstddef.patch"
3200 "pinball-missing-separators.patch"
3201 "pinball-src-deps.patch"
3202 "pinball-system-ltdl.patch"))))
3203 (build-system gnu-build-system)
3204 (inputs
3205 `(("glu" ,glu)
3206 ("mesa" ,mesa)
3207 ("sdl" ,sdl)
3208 ("sdl-image" ,sdl-image)
3209 ("sdl-mixer" ,sdl-mixer)))
3210 (arguments
3211 '(#:configure-flags
3212 (list (string-append "CPPFLAGS=-I"
3213 (assoc-ref %build-inputs "sdl-image")
3214 "/include/SDL -I"
3215 (assoc-ref %build-inputs "sdl-mixer")
3216 "/include/SDL"))))
3217 (home-page "http://pinball.sourceforge.net")
3218 (synopsis "Pinball simulator")
3219 (description "The Emilia Pinball Project is a pinball simulator. There
3220 are only two levels to play with, but they are very addictive.")
3221 (license license:gpl2)))
3222
3223 (define-public pioneers
3224 (package
3225 (name "pioneers")
3226 (version "15.5")
3227 (source (origin
3228 (method url-fetch)
3229 (uri (string-append "http://downloads.sourceforge.net/pio/"
3230 "pioneers-" version ".tar.gz"))
3231 (sha256
3232 (base32
3233 "037gdiiw690jw3wd1s9lxmkqx0caxyk0b4drpm7i9p28gig43q9y"))))
3234 (build-system gnu-build-system)
3235 (inputs `(("avahi" ,avahi)
3236 ("gtk+" ,gtk+)
3237 ("librsvg" ,librsvg)))
3238 (native-inputs `(("intltool" ,intltool)
3239 ("itstool" ,itstool)
3240 ("libxml2" ,libxml2)
3241 ("pkg-config" ,pkg-config)))
3242 (synopsis "Board game inspired by The Settlers of Catan")
3243 (description "Pioneers is an emulation of the board game The Settlers of
3244 Catan. It can be played on a local network, on the internet, and with AI
3245 players.")
3246 (home-page "http://pio.sourceforge.net/")
3247 (license license:gpl2+)))
3248
3249 (define-public einstein
3250 (package
3251 (name "einstein")
3252 (version "2.0")
3253 (source (origin
3254 (method url-fetch)
3255 (uri (string-append "mirror://debian/pool/main/e/"
3256 "einstein/einstein_2.0.dfsg.2.orig.tar.gz"))
3257 (sha256
3258 (base32
3259 "1hxrlv6n8py48j487i6wbb4n4vd55w0na69r7ccmmr9vmrsw5mlk"))
3260 (patches (search-patches "einstein-build.patch"))))
3261 (build-system gnu-build-system)
3262 (inputs
3263 `(("freetype" ,freetype)
3264 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf)))
3265 ("zlib" ,zlib)))
3266 (native-inputs
3267 `(("font-dejavu" ,font-dejavu)))
3268 (arguments
3269 `(#:tests? #f ; no check target
3270 #:phases
3271 (modify-phases %standard-phases
3272 (replace 'configure
3273 (lambda* (#:key outputs inputs #:allow-other-keys)
3274 (let ((out (assoc-ref outputs "out"))
3275 (dejavu (string-append (assoc-ref inputs "font-dejavu")
3276 "/share/fonts/truetype/DejaVuSans.ttf")))
3277 (substitute* "Makefile"
3278 (("PREFIX=/usr/local") (string-append "PREFIX=" out)))
3279 ;; The patch above registers a free font for use by the binary,
3280 ;; but the font is copied during the compile phase into a
3281 ;; resources file, so we need to make the ttf file available.
3282 (symlink dejavu "res/DejaVuSans.ttf")
3283 #t))))))
3284 (synopsis "Logic puzzle game")
3285 (description "The goal of this logic game is to open all cards in a 6x6
3286 grid, using a number of hints as to their relative position. The game idea
3287 is attributed to Albert Einstein.")
3288 ;; The original home page has disappeared.
3289 (home-page (string-append "http://web.archive.org/web/20120521062745/"
3290 "http://games.flowix.com/en/index.html"))
3291 ;; License according to
3292 ;; http://web.archive.org/web/20150222180355/http://www.babichev.info/en/projects/index.html
3293 ;; The source code is a DFSG-sanitized tarball and does not contain any
3294 ;; license information.
3295 (license license:gpl3+)))
3296
3297 (define-public powwow
3298 (package
3299 (name "powwow")
3300 (version "1.2.19")
3301 (source (origin
3302 (method url-fetch)
3303 (uri (string-append
3304 "https://www.hoopajoo.net/static/projects/powwow-"
3305 version ".tar.gz"))
3306 (sha256
3307 (base32
3308 "10rjl63hmf62qslyhzqrbw3i2zf09dgxv65avhj0iiz0m4pbc9wy"))))
3309 (inputs
3310 `(("ncurses" ,ncurses)))
3311 (build-system gnu-build-system)
3312 (home-page "https://www.hoopajoo.net/projects/powwow.html")
3313 (synopsis "MUD and telnet client")
3314 (description
3315 "POWWOW is a client software which can be used for telnet as well as for
3316 @dfn{Multi-User Dungeon} (MUD). Additionally it can serve as a nice client for
3317 the chat server psyced with the specific config located at
3318 http://lavachat.symlynx.com/unix/")
3319 (license license:gpl2+)))
3320
3321 (define-public red-eclipse
3322 (let ((release "2.0.0")
3323 (revision 0))
3324 (package
3325 (name "red-eclipse")
3326 (version (if (zero? revision)
3327 release
3328 (string-append release "-"
3329 (number->string revision))))
3330 (source
3331 (origin
3332 (method git-fetch)
3333 (uri (git-reference
3334 (url "https://github.com/redeclipse/base.git")
3335 (commit (string-append "v" release))
3336 (recursive? #t))) ; for game data
3337 (file-name (git-file-name name version))
3338 (sha256
3339 (base32 "0sz0mqhwx8r9n4mk3qrxw420nlsm3y0n48gd0lazgd64lfqjh3ab"))
3340 (modules '((guix build utils)))
3341 (snippet
3342 ;; Remove proprietary libraries and other pre-compiled binaries.
3343 '(begin
3344 (delete-file-recursively "bin")
3345 #t))))
3346 (build-system gnu-build-system)
3347 (arguments
3348 `(#:tests? #f ; no check target
3349 #:make-flags (list "CC=gcc" "-Csrc"
3350 (string-append "INSTDIR="
3351 (assoc-ref %outputs "out") "/bin")
3352 (string-append "prefix="
3353 (assoc-ref %outputs "out")))
3354 #:phases
3355 (modify-phases %standard-phases
3356 (add-after 'unpack 'add-store-data-package-path-as-default
3357 (lambda* (#:key outputs #:allow-other-keys)
3358 (substitute* "src/engine/server.cpp"
3359 (("data = \"data\"")
3360 (string-append "data = \""
3361 (assoc-ref outputs "out")
3362 "/share/redeclipse/data\"")))
3363 #t))
3364 (delete 'configure) ; no configure script
3365 (add-after 'set-paths 'set-sdl-paths
3366 (lambda* (#:key inputs #:allow-other-keys)
3367 (setenv "CPATH"
3368 (string-append (assoc-ref inputs "sdl-union")
3369 "/include/SDL2:"
3370 (or (getenv "CPATH") "")))
3371 #t))
3372 (add-after 'install 'copy-data
3373 (lambda* (#:key outputs #:allow-other-keys)
3374 (let ((out (assoc-ref outputs "out")))
3375 (copy-recursively "config"
3376 (string-append out "/config"))
3377 (copy-file "doc/examples/servinit.cfg"
3378 (string-append out "/config/servinit.cfg"))
3379 (copy-recursively "data"
3380 (string-append out "/share/redeclipse/data"))
3381 (mkdir-p (string-append out "/lib/redeclipse"))
3382 (symlink (string-append out "/share/redeclipse/data")
3383 (string-append out "/lib/redeclipse/data")))
3384 #t))
3385 (add-after 'copy-data 'wrap-program
3386 (lambda* (#:key inputs outputs #:allow-other-keys)
3387 (let* ((out (assoc-ref outputs "out"))
3388 (bin (string-append out "/bin")))
3389 (with-directory-excursion bin
3390 (rename-file "redeclipse_linux"
3391 ".redeclipse_linux-real")
3392 (rename-file "redeclipse_server_linux"
3393 ".redeclipse_server_linux-real")
3394 (call-with-output-file "redeclipse_linux"
3395 (lambda (port)
3396 (format port "#!~a/bin/sh
3397 # Run the thing from its home, otherwise it just bails out.
3398 cd \"~a\"
3399 exec -a \"$0\" ~a/.redeclipse_linux-real~%"
3400 (assoc-ref inputs "bash") ;implicit input
3401 (string-append out)
3402 (string-append bin))))
3403 (call-with-output-file "redeclipse_server_linux"
3404 (lambda (port)
3405 (format port "#!~a/bin/sh
3406 # Run the thing from its home, otherwise it just bails out.
3407 cd \"~a\"
3408 exec -a \"$0\" ~a/.redeclipse_server_linux-real~%"
3409 (assoc-ref inputs "bash") ;implicit input
3410 (string-append out)
3411 (string-append bin))))
3412 (chmod "redeclipse_linux" #o555)
3413 (chmod "redeclipse_server_linux" #o555)))
3414 #t)))))
3415 (native-inputs
3416 `(("pkg-config" ,pkg-config)))
3417 (inputs
3418 `(("curl" ,curl)
3419 ("freetype" ,freetype)
3420 ("glu" ,glu)
3421 ("sdl-union" ,(sdl-union (list sdl2
3422 sdl2-image
3423 sdl2-mixer)))))
3424 (home-page "https://redeclipse.net/")
3425 (synopsis "Arena shooter derived from the Cube 2 engine")
3426 (description
3427 "Red Eclipse is an arena shooter, created from the Cube2 engine.
3428 Offering an innovative parkour system and distinct but all potent weapons,
3429 Red Eclipse provides fast paced and accessible gameplay.")
3430 ;; The engine is under Zlib; data files are covered by the other
3431 ;; licenses. More details at file:///doc/all-licenses.txt.
3432 (license (list license:expat
3433 license:zlib
3434 license:cc-by-sa4.0
3435 license:cc-by-sa3.0
3436 license:cc-by3.0
3437 license:cc0
3438 license:public-domain
3439 license:silofl1.1)))))
3440
3441 (define-public grue-hunter
3442 (package
3443 (name "grue-hunter")
3444 (version "1.0")
3445 (source (origin
3446 (method url-fetch)
3447 (uri (string-append "https://jxself.org/grue-hunter.tar.gz"))
3448 (sha256
3449 (base32
3450 "1hjcpy5439qs3v2zykis7hsi0i17zjs62gks3zd8mnfw9ni4i2h3"))))
3451 (build-system trivial-build-system) ; no Makefile.PL
3452 (arguments `(#:modules ((guix build utils))
3453 #:builder
3454 (begin
3455 (use-modules (guix build utils))
3456 (use-modules (srfi srfi-1))
3457
3458 (let* ((tarball (assoc-ref %build-inputs "tarball"))
3459 (perl (string-append (assoc-ref %build-inputs
3460 "perl")
3461 "/bin"))
3462 (gzip (string-append (assoc-ref %build-inputs
3463 "gzip")
3464 "/bin/gzip"))
3465 (tar (string-append (assoc-ref %build-inputs
3466 "tar")
3467 "/bin/tar"))
3468 (out (assoc-ref %outputs "out"))
3469 (bin (string-append out "/bin"))
3470 (doc (string-append out
3471 "/share/doc/grue-hunter")))
3472 (copy-file tarball "grue-hunter.tar.gz")
3473 (invoke gzip "-d" "grue-hunter.tar.gz")
3474 (invoke tar "xvf" "grue-hunter.tar")
3475
3476 (mkdir-p bin)
3477 (copy-file "grue-hunter/gh.pl"
3478 (string-append bin "/grue-hunter"))
3479 (patch-shebang (string-append bin "/grue-hunter")
3480 (list perl))
3481
3482 (install-file "grue-hunter/AGPLv3.txt" doc)
3483
3484 #t))))
3485 (inputs `(("perl" ,perl)
3486 ("tar" ,tar)
3487 ("gzip" ,gzip)
3488 ("tarball" ,source)))
3489 (home-page "http://jxself.org/grue-hunter.shtml")
3490 (synopsis "Text adventure game")
3491 (description
3492 "Grue Hunter is a text adventure game written in Perl. You must make
3493 your way through an underground cave system in search of the Grue. Can you
3494 capture it and get out alive?")
3495 (license license:agpl3+)))
3496
3497 (define-public lierolibre
3498 (package
3499 (name "lierolibre")
3500 (version "0.5")
3501 (source (origin
3502 (method url-fetch)
3503 (uri (string-append "https://launchpad.net/lierolibre/trunk/"
3504 version "/+download/lierolibre-"
3505 version ".tar.xz"))
3506 (sha256
3507 (base32
3508 "1cf1gvsn4qq190lrf9k5bpjnqwlcfw7pajvdnh7z5r4jqw0rsbl9"))
3509 (patches
3510 (search-patches "lierolibre-check-unaligned-access.patch"
3511 "lierolibre-try-building-other-arch.patch"
3512 "lierolibre-remove-arch-warning.patch"
3513 "lierolibre-newer-libconfig.patch"
3514 "lierolibre-is-free-software.patch"))
3515 (modules '((guix build utils)))
3516 (snippet
3517 '(begin
3518 ;; Delete pre-compiled files.
3519 (delete-file "data/LIERO.CHR")
3520 (delete-file "data/LIERO.SND")
3521 #t))))
3522 (build-system gnu-build-system)
3523 (native-inputs
3524 `(("imagemagick" ,imagemagick)
3525 ("pkg-config" ,pkg-config)
3526 ("util-linux" ,util-linux)
3527 ("sox" ,sox)))
3528 (inputs
3529 `(("boost" ,boost)
3530 ("libconfig" ,libconfig)
3531 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
3532 ("zlib" ,zlib)))
3533 (home-page "https://gitlab.com/lierolibre/lierolibre")
3534 (synopsis "Old-school earthworm action game")
3535 (description
3536 "lierolibre is an earthworm action game where you fight another player
3537 (or the computer) underground using a wide array of weapons.
3538
3539 Features:
3540 @itemize
3541 @item 2 worms, 40 weapons, great playability, two game modes: Kill'em All
3542 and Game of Tag, plus AI-players without true intelligence!
3543 @item Dat nostalgia.
3544 @item Extensions via a hidden F1 menu:
3545 @itemize
3546 @item Replays
3547 @item Game controller support
3548 @item Powerlevel palettes
3549 @end itemize
3550 @item Ability to write game variables to plain text files.
3551 @item Ability to load game variables from both EXE and plain text files.
3552 @item Scripts to extract and repack graphics, sounds and levels.
3553 @end itemize
3554
3555 To switch between different window sizes, use F6, F7 and F8, to switch to
3556 fullscreen, use F5 or Alt+Enter.")
3557 ;; Code mainly BSD-2, some parts under Boost 1.0. All assets are WTFPL2.
3558 (license (list license:bsd-2 license:boost1.0 license:wtfpl2))))
3559
3560 (define-public warzone2100
3561 (package
3562 (name "warzone2100")
3563 (version "3.2.3")
3564 (source
3565 (origin
3566 (method url-fetch)
3567 (uri (string-append "mirror://sourceforge/warzone2100/archives/"
3568 "unsupported/Warzone2100-"
3569 (version-major+minor version) "/" version
3570 "/warzone2100-" version ".tar.xz"))
3571 (sha256
3572 (base32 "10kmpr4cby95zwqsl1zwx95d9achli6khq7flv6xmrq30a39xazw"))))
3573 (build-system gnu-build-system)
3574 (arguments
3575 `(#:configure-flags '("--with-distributor=Guix")
3576 #:phases
3577 (modify-phases %standard-phases
3578 (add-after 'unpack 'link-tests-with-qt
3579 (lambda _
3580 (substitute* "tests/Makefile.in"
3581 (("(framework_linktest_LDADD|maptest_LDADD) = " prefix)
3582 (string-append prefix "$(QT5_LIBS) ")))
3583 #t))
3584 (add-after 'unpack 'fix-ivis-linktest
3585 (lambda _
3586 (substitute* "tests/ivis_linktest.cpp"
3587 (("iV_DrawTextRotated.*;")
3588 (string-append "iV_DrawTextRotated(\"Press ESC to exit.\", "
3589 "100, 100, 0.0f, font_regular);")))
3590 #t)))))
3591 (native-inputs `(("gettext" ,gettext-minimal)
3592 ("pkg-config" ,pkg-config)
3593 ("unzip" ,unzip)
3594 ("zip" ,zip)))
3595 (inputs `(("fontconfig" ,fontconfig)
3596 ("freetype" ,freetype)
3597 ("fribidi" ,fribidi)
3598 ("glew" ,glew)
3599 ("harfbuzz" ,harfbuzz)
3600 ("libtheora" ,libtheora)
3601 ("libvorbis" ,libvorbis)
3602 ("libxrandr" ,libxrandr)
3603 ("openal" ,openal)
3604 ("physfs" ,physfs)
3605 ("qtbase" ,qtbase)
3606 ("qtscript" ,qtscript)
3607 ("openssl" ,openssl)
3608 ("sdl2" ,sdl2)))
3609 (home-page "https://wz2100.net")
3610 (synopsis "3D Real-time strategy and real-time tactics game")
3611 (description
3612 "Warzone 2100 offers campaign, multi-player, and single-player skirmish
3613 modes. An extensive tech tree with over 400 different technologies, combined
3614 with the unit design system, allows for a wide variety of possible units and
3615 tactics.")
3616 ; Everything is GPLv2+ unless otherwise specified in COPYING.NONGPL
3617 (license (list license:bsd-3
3618 license:cc0
3619 license:cc-by-sa3.0
3620 license:expat
3621 license:gpl2+
3622 license:lgpl2.1+))))
3623
3624 (define-public starfighter
3625 (package
3626 (name "starfighter")
3627 (version "2.0.0.3")
3628 (source (origin
3629 (method url-fetch)
3630 (uri (string-append
3631 "https://github.com/pr-starfighter/starfighter/releases"
3632 "/download/v" version "/starfighter-"
3633 (version-major+minor version) "-src.tar.gz"))
3634 (sha256
3635 (base32
3636 "13vi5kh9ahws4f52421cbyw0jn7pmbnld358lqfmr6flql7ilj3b"))))
3637 (build-system gnu-build-system)
3638 (native-inputs
3639 `(("pkg-config" ,pkg-config)))
3640 (inputs
3641 `(("pango" ,pango)
3642 ("sdl2" ,sdl2)
3643 ("sdl2-image" ,sdl2-image)
3644 ("sdl2-mixer" ,sdl2-mixer)
3645 ("sdl2-ttf" ,sdl2-ttf)))
3646 (home-page "https://pr-starfighter.github.io/")
3647 (synopsis "2D scrolling shooter game")
3648 (description
3649 "In the year 2579, the intergalactic weapons corporation, WEAPCO, has
3650 dominated the galaxy. Guide Chris Bainfield and his friend Sid Wilson on
3651 their quest to liberate the galaxy from the clutches of WEAPCO. Along the
3652 way, you will encounter new foes, make new allies, and assist local rebels
3653 in strikes against the evil corporation.")
3654 ;; gfx and music are under CC-BY 3.0, CC-BY-SA 3.0, CC0 or Public Domain.
3655 (license (list license:gpl3+
3656 license:cc-by3.0
3657 license:cc-by-sa3.0
3658 license:cc0
3659 license:public-domain))))
3660
3661 (define-public project-starfighter
3662 (deprecated-package "project-starfighter" starfighter))
3663
3664 (define-public chromium-bsu
3665 (package
3666 (name "chromium-bsu")
3667 (version "0.9.16.1")
3668 (source (origin
3669 (method url-fetch)
3670 (uri (string-append "mirror://sourceforge/chromium-bsu"
3671 "/Chromium B.S.U. source code/"
3672 "chromium-bsu-" version ".tar.gz"))
3673 (sha256
3674 (base32
3675 "0jk2w5b6s6nkzri585bbz16cif2fhqcnl5l1mq3rd98r9nil3hd1"))))
3676 (build-system gnu-build-system)
3677 (native-inputs `(("pkg-config" ,pkg-config)))
3678 (inputs `(("gettext" ,gettext-minimal)
3679 ("glu" ,glu)
3680 ("quesoglc" ,quesoglc)
3681 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))))
3682 (home-page "http://chromium-bsu.sourceforge.net/")
3683 (synopsis "Fast-paced, arcade-style, top-scrolling space shooter")
3684 (description
3685 "In this game you are the captain of the cargo ship Chromium B.S.U. and
3686 are responsible for delivering supplies to the troops on the front line. Your
3687 ship has a small fleet of robotic fighters which you control from the relative
3688 safety of the Chromium vessel.")
3689 ;; Clarified Artistic License for everything but sound, which is covered
3690 ;; by the Expat License.
3691 (license (list license:clarified-artistic license:expat))))
3692
3693 (define-public tuxpaint
3694 (package
3695 (name "tuxpaint")
3696 (version "0.9.23") ;keep VER_DATE below in sync
3697 (source
3698 (origin
3699 (method url-fetch)
3700 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint/"
3701 version "/tuxpaint-" version ".tar.gz"))
3702 (sha256
3703 (base32
3704 "09k9pxi88r3dx6dyjwf9h85d4qpva4i29qz63dc558hg9v21k69l"))
3705 (modules '((guix build utils)))
3706 (snippet
3707 '(begin
3708 ;; Remove win32 directory which contains binary dll's and the
3709 ;; deprecated visualc directory.
3710 (for-each delete-file-recursively '("win32" "visualc"))
3711 (substitute* "Makefile"
3712 ;; Do not rely on $(GPERF) being an absolute file name
3713 (("\\[ -x \\$\\(GPERF\\) \\]")
3714 "$(GPERF) --version >/dev/null 2>&1"))
3715 #t))
3716 (patches (search-patches "tuxpaint-stamps-path.patch"))))
3717 (build-system gnu-build-system)
3718 (native-inputs
3719 `(("gperf" ,gperf)
3720 ("pkg-config" ,pkg-config)))
3721 (inputs
3722 `(("cairo" ,cairo)
3723 ("fribidi" ,fribidi)
3724 ("gettext" ,gettext-minimal)
3725 ("libpng" ,libpng)
3726 ("librsvg" ,librsvg)
3727 ("libpaper" ,libpaper)
3728 ("netpbm" ,netpbm)
3729 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf sdl-image)))))
3730 ;; TODO: Use system fonts rather than those in data/fonts
3731 (arguments
3732 `(#:make-flags `("VER_DATE=2018-09-02"
3733 "GPERF=gperf" "CC=gcc"
3734 "SDL_PCNAME=sdl SDL_image SDL_mixer SDL_ttf"
3735 ,(string-append "PREFIX=" %output)
3736 "KDE_PREFIX=$(PREFIX)/share/applications"
3737 "KDE_ICON_PREFIX=$(PREFIX)/share/icons/"
3738 "COMPLETIONDIR=$(PREFIX)/etc/bash_completion.d")
3739 #:parallel-build? #f ;fails on some systems
3740 #:tests? #f ;No tests
3741 #:phases (modify-phases %standard-phases
3742 (delete 'configure) ;no configure phase
3743 (add-before 'install 'no-sys-cache
3744 (lambda _ ;do not rebuild system conf cache
3745 (substitute* "Makefile"
3746 (("kbuildsycoca4") ""))
3747 #t))
3748 (add-after 'install 'fix-import
3749 (lambda* (#:key inputs outputs #:allow-other-keys)
3750 (let* ((out (assoc-ref outputs "out"))
3751 (net (assoc-ref inputs "netpbm"))
3752 (tpi (string-append out "/bin/tuxpaint-import")))
3753 (substitute* tpi
3754 ;; Point to installation prefix so that the default
3755 ;; configure file is found.
3756 (("/usr/local") out))
3757 ;; tuxpaint-import uses a bunch of programs from
3758 ;; netpbm, so make sure it knows where those are
3759 (wrap-program tpi
3760 `("PATH" ":" prefix
3761 (,(string-append net "/bin"))))))))))
3762 (native-search-paths
3763 (list (search-path-specification
3764 (variable "TUXPAINT_STAMPS_PATH")
3765 (files '("share/tuxpaint/stamps")))))
3766 (home-page "http://www.tuxpaint.org")
3767 (synopsis "Drawing software for children")
3768 (description
3769 "Tux Paint is a free drawing program designed for young children (kids
3770 ages 3 and up). It has a simple, easy-to-use interface; fun sound effects;
3771 and an encouraging cartoon mascot who helps guide children as they use the
3772 program. It provides a blank canvas and a variety of drawing tools to help
3773 your child be creative.")
3774 (license license:gpl2+)))
3775
3776 (define-public tuxpaint-stamps
3777 (package
3778 (name "tuxpaint-stamps")
3779 (version "2018.09.01")
3780 (source
3781 (origin
3782 (method url-fetch)
3783 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-stamps/"
3784 (string-map (λ (x) (if (eq? x #\.) #\- x)) version)
3785 "/tuxpaint-stamps-" version ".tar.gz"))
3786 (sha256
3787 (base32
3788 "1skr23k27yj3vgwfazpzxp90lb2a278gxrkr3bxw7az6zpkmb3yp"))))
3789 (build-system trivial-build-system)
3790 (native-inputs
3791 `(("tar" ,tar)
3792 ("gzip" ,gzip)))
3793 (arguments
3794 `(#:modules ((guix build utils))
3795 #:builder (begin
3796 (use-modules (guix build utils))
3797 (setenv "PATH"
3798 (string-append
3799 (assoc-ref %build-inputs "tar") "/bin" ":"
3800 (assoc-ref %build-inputs "gzip") "/bin"))
3801 (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
3802 (chdir (string-append ,name "-" ,version))
3803 (let ((dir (string-append %output "/share/tuxpaint/stamps")))
3804 (mkdir-p dir)
3805 (copy-recursively "stamps" dir))
3806 #t)))
3807 (home-page (package-home-page tuxpaint))
3808 (synopsis "Stamp images for Tux Paint")
3809 (description
3810 "This package contains a set of \"Rubber Stamp\" images which can be used
3811 with the \"Stamp\" tool within Tux Paint.")
3812 (license license:gpl2+)))
3813
3814 (define-public tuxpaint-config
3815 (package
3816 (name "tuxpaint-config")
3817 (version "0.0.14") ;keep VER_DATE below in sync
3818 (source
3819 (origin
3820 (method url-fetch)
3821 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-config/"
3822 version "/tuxpaint-config-" version ".tar.gz"))
3823 (sha256
3824 (base32
3825 "0zkgxk436nqcp43zghkfmh397c7dvh5bwn2as7gwvv208bzyij6g"))))
3826 (build-system gnu-build-system)
3827 (native-inputs
3828 `(("gettext" ,gettext-minimal)))
3829 (inputs
3830 `(("fltk" ,fltk)
3831 ("libpaper" ,libpaper)
3832 ;; TODO: Should the following be propagated by fltk?
3833 ("libx11" ,libx11)
3834 ("libxft" ,libxft)
3835 ("mesa" ,mesa)))
3836 (arguments
3837 `(#:make-flags `("VER_DATE=2018-09-01"
3838 "CONFDIR=/etc/tuxpaint" ;don't write to store
3839 ,(string-append "PREFIX=" %output)
3840 "GNOME_PREFIX=$(PREFIX)")
3841 #:parallel-build? #f ;race conditions
3842 #:tests? #f ;no tests
3843 #:phases (modify-phases %standard-phases
3844 (delete 'configure) ;no configure phase
3845 (add-before 'install 'gzip-no-name
3846 (lambda* _
3847 (substitute* "Makefile"
3848 ;; tuxpaint-config compresses its own documentation;
3849 ;; make sure it uses flags for reproducibility.
3850 (("gzip") "gzip --no-name"))))
3851 (add-before 'install 'make-install-dirs
3852 (lambda* (#:key outputs #:allow-other-keys)
3853 (let ((out (assoc-ref outputs "out")))
3854 (mkdir-p (string-append out "/bin"))
3855 #t))))))
3856 (home-page (package-home-page tuxpaint))
3857 (synopsis "Configure Tux Paint")
3858 (description
3859 "Tux Paint Config is a graphical configuration editor for Tux Paint.")
3860 (license license:gpl2))) ;no "or later" present
3861
3862 (define-public supertux
3863 (package
3864 (name "supertux")
3865 (version "0.6.1")
3866 (source (origin
3867 (method url-fetch)
3868 (uri (string-append "https://github.com/SuperTux/supertux/"
3869 "releases/download/v" version "/SuperTux-v"
3870 version "-Source.tar.gz"))
3871 (file-name (string-append name "-" version ".tar.gz"))
3872 (sha256
3873 (base32
3874 "0lqch5gcq6ccnspy93z9r13bp8w2j1vrd8jhvk5kp4qhrd1f069s"))
3875 (patches
3876 (search-patches "supertux-unbundle-squirrel.patch"))))
3877 (arguments
3878 '(#:tests? #f
3879 #:configure-flags '("-DINSTALL_SUBDIR_BIN=bin"
3880 "-DUSE_SYSTEM_PHYSFS=ON")
3881 #:phases
3882 (modify-phases %standard-phases
3883 (add-after 'unpack 'patch-squirrel-path
3884 (lambda* (#:key inputs #:allow-other-keys)
3885 (let ((squirrel (assoc-ref inputs "squirrel")))
3886 (substitute* "CMakeLists.txt"
3887 (("set\\(SQUIRREL_PREFIX.*")
3888 (string-append "set(SQUIRREL_PREFIX " squirrel ")"))
3889 (("add_dependencies\\(supertux2_lib squirrel\\)") "")
3890 (("\\$\\{SQUIRREL_PREFIX\\}/include")
3891 (string-append "${SQUIRREL_PREFIX}/include/squirrel"))))
3892 #t)))))
3893 (build-system cmake-build-system)
3894 (inputs `(("sdl2" ,sdl2)
3895 ("sdl2-image" ,sdl2-image)
3896 ("sdl2-mixer" ,sdl2-mixer)
3897 ("openal" ,openal)
3898 ("mesa" ,mesa)
3899 ("glew" ,glew)
3900 ("libvorbis" ,libvorbis)
3901 ("libogg" ,libogg)
3902 ("physfs" ,physfs)
3903 ("curl" ,curl)
3904 ("boost" ,boost)
3905 ("freetype" ,freetype)
3906 ("squirrel" ,squirrel)))
3907 (native-inputs
3908 `(("pkg-config" ,pkg-config)))
3909 (synopsis "2D platformer game")
3910 (description "SuperTux is a classic 2D jump'n run sidescroller game in
3911 a style similar to the original Super Mario games.")
3912 (home-page "https://supertux.org/")
3913 (license license:gpl3+)))
3914
3915 (define-public tintin++
3916 (package
3917 (name "tintin++")
3918 (version "2.02.00")
3919 (source
3920 (origin
3921 (method url-fetch)
3922 (uri (string-append "mirror://sourceforge/tintin/TinTin++ Source Code/"
3923 (string-drop-right version 1)
3924 "/tintin-" version ".tar.gz"))
3925 (sha256
3926 (base32
3927 "02qmbhzhh2sdy5b37v54gihs9k4bxmlz3j96gyx7icvx2grkbg5i"))))
3928 (inputs
3929 `(("gnutls" ,gnutls)
3930 ("pcre" ,pcre)
3931 ("readline" ,readline)
3932 ("zlib" ,zlib)))
3933 (arguments
3934 '(#:tests? #f ; no test suite
3935 #:phases
3936 (modify-phases %standard-phases
3937 ;; The source is in tt/src.
3938 (add-before 'configure 'chdir
3939 (lambda _
3940 (chdir "src")
3941 #t)))))
3942 (build-system gnu-build-system)
3943 (home-page "https://tintin.mudhalla.net/")
3944 (synopsis "MUD client")
3945 (description
3946 "TinTin++ is a MUD client which supports MCCP (Mud Client Compression
3947 Protocol), MMCP (Mud Master Chat Protocol), xterm 256 colors, most TELNET
3948 options used by MUDs, as well as those required to login via telnet on
3949 Linux / Mac OS X servers, and an auto mapper with a VT100 map display.")
3950 (license license:gpl3+)))
3951
3952 (define-public laby
3953 (package
3954 (name "laby")
3955 (version "0.6.4")
3956 (source
3957 (origin (method git-fetch)
3958 (uri (git-reference
3959 (url "https://github.com/sgimenez/laby.git")
3960 (commit (string-append name "-" version))))
3961 (file-name (git-file-name name version))
3962 (sha256
3963 (base32
3964 "12fq9hhrxpzgfinmj9ra9ckss9yficwdlrmgjvvsq7agvh3sgyl1"))
3965 (patches (search-patches "laby-make-install.patch"))))
3966 (build-system gnu-build-system)
3967 (inputs
3968 `(("lablgtk" ,lablgtk)
3969 ("ocaml" ,ocaml)
3970 ("ocaml-findlib" ,ocaml-findlib)
3971 ("ocamlbuild" ,ocamlbuild)))
3972 (arguments
3973 '(#:phases
3974 (modify-phases %standard-phases
3975 (delete 'configure)
3976 (add-before 'build 'allow-unsafe-strings
3977 ;; Fix a build failure with ocaml >=4.06.0.
3978 ;; See <https://github.com/sgimenez/laby/issues/53>.
3979 (lambda _
3980 (setenv "OCAMLPARAM" "safe-string=0,_")
3981 #t))
3982 (add-before 'build 'set-library-path
3983 (lambda* (#:key inputs #:allow-other-keys)
3984 (let ((lablgtk (assoc-ref inputs "lablgtk")))
3985 (setenv "LD_LIBRARY_PATH"
3986 (string-append lablgtk "/lib/ocaml/stublibs"))))))
3987 #:tests? #f ; no 'check' target
3988 #:make-flags
3989 (list (string-append "PREFIX=" (assoc-ref %outputs "out")) "all")))
3990 (home-page "https://sgimenez.github.io/laby/")
3991 (synopsis "Programming game")
3992 (description "Learn programming, playing with ants and spider webs ;-)
3993 Your robot ant can be programmed in many languages: OCaml, Python, C, C++,
3994 Java, Ruby, Lua, JavaScript, Pascal, Perl, Scheme, Vala, Prolog. Experienced
3995 programmers may also add their own favorite language.")
3996 (license license:gpl3+)))
3997
3998 (define-public bambam
3999 (package
4000 (name "bambam")
4001 (version "1.0.0")
4002 (source
4003 (origin
4004 (method git-fetch)
4005 (uri (git-reference
4006 (url "https://github.com/porridge/bambam")
4007 (commit (string-append "v" version))))
4008 (file-name (git-file-name name version))
4009 (sha256
4010 (base32 "18cwd1wpyyx8y61cags9bkdhx9x858xicc4y1c9c2s0xjmgzhl3i"))))
4011 (build-system python-build-system)
4012 (arguments
4013 `(#:tests? #f ; no tests
4014 #:phases
4015 (modify-phases %standard-phases
4016 (delete 'build) ; nothing to build
4017 (replace 'install
4018 (lambda* (#:key outputs #:allow-other-keys)
4019 (let* ((out (assoc-ref outputs "out"))
4020 (bin (string-append out "/bin"))
4021 (share (string-append out "/share")))
4022 (mkdir-p bin)
4023 (copy-file "bambam.py" (string-append bin "/bambam"))
4024 (install-file "bambam.6" (string-append share "/man/man6"))
4025 (copy-recursively "data" (string-append share "/bambam/data")))
4026 #t)))))
4027 (inputs
4028 `(("python-pygame" ,python-pygame)))
4029 (home-page "https://github.com/porridge/bambam")
4030 (synopsis "Keyboard mashing and doodling game for babies")
4031 (description "Bambam is a simple baby keyboard (and gamepad) masher
4032 application that locks the keyboard and mouse and instead displays bright
4033 colors, pictures, and sounds.")
4034 (license license:gpl3+)))
4035
4036 (define-public mrrescue
4037 (package
4038 (name "mrrescue")
4039 (version "1.02e")
4040 (source (origin
4041 (method url-fetch)
4042 (uri (string-append
4043 "https://github.com/SimonLarsen/mrrescue/releases/"
4044 "download/" version "/mrrescue" version ".love"))
4045 (file-name (string-append name "-" version ".love"))
4046 (sha256
4047 (base32
4048 "0jwzbwkgp1l5ia6c7s760gmdirbsncp6nfqp7vqdqsfb63la9gl2"))))
4049 (build-system trivial-build-system)
4050 (arguments
4051 `(#:modules ((guix build utils))
4052 #:builder
4053 (begin
4054 (use-modules (guix build utils))
4055 (let* ((out (assoc-ref %outputs "out"))
4056 (script (string-append out "/bin/" ,name))
4057 (data (string-append out "/share/" ,name))
4058 (source (assoc-ref %build-inputs "source"))
4059 (unzip (string-append (assoc-ref %build-inputs "unzip")
4060 "/bin/unzip"))
4061 (patch (string-append (assoc-ref %build-inputs "patch")
4062 "/bin/patch"))
4063 (bash (string-append (assoc-ref %build-inputs "bash")
4064 "/bin/bash"))
4065 (love (string-append (assoc-ref %build-inputs "love")
4066 "/bin/love")))
4067
4068 (mkdir-p (dirname script))
4069 (with-output-to-file script
4070 (lambda ()
4071 (format #t "#!~a~%" bash)
4072 (format #t "exec -a ~a \"~a\" \"~a\"~%" ,name love data)))
4073 (chmod script #o755)
4074
4075 ;; The better way to package this game would be to install *only* the
4076 ;; script above, pointing to the unextracted .love file in the store.
4077 ;; However, mrrescue 1.02e needs to be patched to work with Love 11.
4078 ;; Instead of extracting the .love file, patching it, and re-zipping
4079 ;; it to the store, simply point the script to the extracted patched
4080 ;; data directory directly.
4081 (mkdir-p data)
4082 (with-directory-excursion data
4083 (invoke unzip source)
4084 (invoke patch "-p1" "-i"
4085 (assoc-ref %build-inputs "love-11.patch")))
4086 #t))))
4087 (native-inputs
4088 `(("unzip" ,unzip)
4089 ("patch" ,patch)
4090 ("love-11.patch" ,(search-patch "mrrescue-support-love-11.patch"))))
4091 (inputs
4092 `(("bash" ,bash)
4093 ("love" ,love)))
4094 (home-page "https://tangramgames.dk/games/mrrescue")
4095 (synopsis "Arcade-style fire fighting game")
4096 (description
4097 "Mr. Rescue is an arcade styled 2d action game centered around evacuating
4098 civilians from burning buildings. The game features fast-paced fire
4099 extinguishing action, intense boss battles, a catchy soundtrack, and lots of
4100 throwing people around in pseudo-randomly generated buildings.")
4101 (license (list license:zlib ; for source code
4102 license:cc-by-sa3.0)))) ; for graphics and music assets
4103
4104 (define-public hyperrogue
4105 (package
4106 (name "hyperrogue")
4107 (version "11.2q")
4108 ;; When updating this package, be sure to update the "hyperrogue-data"
4109 ;; origin in native-inputs.
4110 (source (origin
4111 (method url-fetch)
4112 (uri (string-append
4113 "https://www.roguetemple.com/z/hyper/hyperrogue"
4114 (string-join (string-split version #\.) "")
4115 "-src.tgz"))
4116 (sha256
4117 (base32
4118 "1w4khi2limxhgiq7xnz0rc9nzbk86bhbyzrcd5hdghnhsviaiggq"))))
4119 (build-system gnu-build-system)
4120 (arguments
4121 `(#:tests? #f ; no check target
4122 #:make-flags '("HYPERROGUE_USE_GLEW=1"
4123 "HYPERROGUE_USE_PNG=1")
4124 #:phases
4125 (modify-phases %standard-phases
4126 (add-after 'set-paths 'set-sdl-paths
4127 (lambda* (#:key inputs #:allow-other-keys)
4128 (setenv "CPATH"
4129 (string-append (getenv "CPATH") ":"
4130 (assoc-ref inputs "sdl-union")
4131 "/include/SDL"))))
4132 (replace 'configure
4133 (lambda* (#:key inputs outputs #:allow-other-keys)
4134 (let* ((out (assoc-ref outputs "out"))
4135 (share-dir (string-append out "/share/hyperrogue"))
4136 (dejavu-dir (string-append
4137 (assoc-ref inputs "font-dejavu")
4138 "/share/fonts/truetype"))
4139 (dejavu-font "DejaVuSans-Bold.ttf")
4140 (music-file "hyperrogue-music.txt"))
4141 ;; Fix font and music paths.
4142 (substitute* "basegraph.cpp"
4143 ((dejavu-font)
4144 (string-append dejavu-dir "/" dejavu-font)))
4145 (substitute* music-file
4146 (("\\*/")
4147 (string-append share-dir "/sounds/")))
4148 (substitute* "sound.cpp"
4149 (("musicfile = \"\"")
4150 (string-append "musicfile = \""
4151 share-dir "/" music-file "\"")))
4152 ;; Disable build machine CPU optimizations and warnings treated
4153 ;; as errors.
4154 (substitute* "Makefile"
4155 (("-march=native") "")
4156 (("-Werror") "")))
4157 #t))
4158 (replace 'install
4159 (lambda* (#:key inputs outputs #:allow-other-keys)
4160 (let* ((out (assoc-ref outputs "out"))
4161 (bin (string-append out "/bin"))
4162 (share-dir (string-append out "/share/hyperrogue")))
4163 (mkdir-p bin)
4164 (install-file "hyperrogue" bin)
4165 (install-file "hyperrogue-music.txt" share-dir))
4166 #t))
4167 (add-after 'install 'install-data
4168 (lambda* (#:key inputs outputs #:allow-other-keys)
4169 (let* ((data (assoc-ref inputs "hyperrogue-data"))
4170 (out (assoc-ref outputs "out"))
4171 (sounds (string-append out "/share/hyperrogue/sounds"))
4172 (unzip (string-append (assoc-ref inputs "unzip") "/bin/unzip")))
4173 ;; Extract media license information into sounds directory.
4174 (invoke unzip "-j" data
4175 (string-append
4176 "hyperrogue"
4177 (string-join (string-split ,version #\.) "")
4178 "/sounds/credits.txt") "-d" sounds)
4179 ;; Extract sounds and music into sounds directory.
4180 (invoke "unzip" "-j" data
4181 (string-append
4182 "hyperrogue"
4183 (string-join (string-split ,version #\.) "")
4184 "/*.ogg") "-d" sounds)))))))
4185 (native-inputs
4186 `(("hyperrogue-data"
4187 ,(origin
4188 (method url-fetch)
4189 (uri
4190 (string-append
4191 "https://www.roguetemple.com/z/hyper/hyperrogue"
4192 (string-join (string-split version #\.) "")
4193 "-win.zip"))
4194 (sha256
4195 (base32
4196 "1k81zrbq5gmrccjac1i5c6v8j2iilfg2vwrnm8snjmmcnh5z1fgj"))))
4197 ("unzip" ,unzip)))
4198 (inputs
4199 `(("font-dejavu" ,font-dejavu)
4200 ("glew" ,glew)
4201 ("libpng" ,libpng)
4202 ("sdl-union" ,(sdl-union (list sdl
4203 sdl-gfx
4204 sdl-mixer
4205 sdl-ttf)))))
4206 (home-page "https://www.roguetemple.com/z/hyper/")
4207 (synopsis "Non-euclidean graphical rogue-like game")
4208 (description
4209 "HyperRogue is a game in which the player collects treasures and fights
4210 monsters -- rogue-like but for the fact that it is played on the hyperbolic
4211 plane and not in euclidean space.
4212
4213 In HyperRogue, the player can move through different parts of the world, which
4214 are home to particular creatures and may be subject to their own rules of
4215 \"physics\".
4216
4217 While the game can use ASCII characters to display the the classical rogue
4218 symbols, it still needs graphics to render the non-euclidean world.")
4219 (license (list license:bsd-3 ; glew.c, mtrand.*
4220 license:cc-by-sa3.0 ; music
4221 license:cc-by-sa4.0 ; sounds
4222 license:cc0
4223 license:public-domain ; direntx.*, some sounds
4224 license:zlib ; savepng.*
4225 license:gpl2+)))) ; remaining files
4226
4227 (define-public kobodeluxe
4228 (package
4229 (name "kobodeluxe")
4230 (version "0.5.1")
4231 (source (origin
4232 (method url-fetch)
4233 (uri (string-append "http://olofson.net/kobodl/download/KoboDeluxe-"
4234 version ".tar.bz2"))
4235 (sha256
4236 (base32
4237 "0b2wvdpnmaibsy419c16dfwj5kvd3pccby2aaqvm964x74592yqg"))
4238 (patches (search-patches
4239 "kobodeluxe-const-charp-conversion.patch"
4240 "kobodeluxe-enemies-pipe-decl.patch"
4241 "kobodeluxe-graphics-window-signed-char.patch"
4242 "kobodeluxe-manpage-minus-not-hyphen.patch"
4243 "kobodeluxe-midicon-segmentation-fault.patch"
4244 "kobodeluxe-paths.patch"))))
4245 (build-system gnu-build-system)
4246 (arguments
4247 '(#:configure-flags
4248 (list (string-append "CPPFLAGS=-I"
4249 (assoc-ref %build-inputs "sdl-union")
4250 "/include/SDL"))))
4251 (inputs
4252 `(("glu" ,glu)
4253 ("sdl-union" ,(sdl-union (list sdl sdl-image)))))
4254 (synopsis "Shooter with space station destruction")
4255 (description
4256 "Kobo Deluxe is an enhanced version of Akira Higuchi's XKobo graphical game
4257 for Un*x systems with X11.")
4258 (home-page "http://olofson.net/kobodl/")
4259 (license license:gpl2+)))
4260
4261 (define-public freeciv
4262 (package
4263 (name "freeciv")
4264 (version "2.6.2")
4265 (source
4266 (origin
4267 (method url-fetch)
4268 (uri (list (string-append
4269 "http://files.freeciv.org/stable/freeciv-"
4270 version ".tar.bz2")
4271 (string-append
4272 "mirror://sourceforge/freeciv/Freeciv%20"
4273 (version-major+minor version) "/" version
4274 "/freeciv-" version ".tar.bz2")))
4275 (sha256
4276 (base32 "13vc2xg1cf19rhbnr7k38b56b2hdapqymq5vma1l69kn7hyyz0b1"))))
4277 (build-system gnu-build-system)
4278 (inputs
4279 `(("curl" ,curl)
4280 ("cyrus-sasl" ,cyrus-sasl)
4281 ("gtk+" ,gtk+)
4282 ("sdl-mixer" ,sdl-mixer)
4283 ("zlib" ,zlib)))
4284 (native-inputs
4285 `(("pkg-config" ,pkg-config)))
4286 (home-page "http://www.freeciv.org/")
4287 (synopsis "Turn-based empire building strategy game")
4288 (description "Freeciv is a turn-based empire building strategy game
4289 inspired by the history of human civilization. The game commences in
4290 prehistory and your mission is to lead your tribe from the Stone Age
4291 into the Space Age.")
4292 (license license:gpl2+)))
4293
4294 (define-public no-more-secrets
4295 (package
4296 (name "no-more-secrets")
4297 (version "0.3.3")
4298 (source
4299 (origin
4300 (method git-fetch)
4301 (uri (git-reference
4302 (url "https://github.com/bartobri/no-more-secrets.git")
4303 (commit (string-append "v" version))))
4304 (file-name (git-file-name name version))
4305 (sha256
4306 (base32 "1zfv4qabikf8w9winsr4brxrdvs3f0d7xvydksyx8bydadsm2v2h"))))
4307 (build-system gnu-build-system)
4308 (arguments
4309 `(#:tests? #f
4310 #:make-flags (list "CC=gcc" "all-ncurses"
4311 (string-append "prefix="
4312 (assoc-ref %outputs "out")))
4313 #:phases
4314 (modify-phases %standard-phases
4315 (delete 'configure))))
4316 (inputs
4317 `(("ncurses" ,ncurses)))
4318 (home-page "https://github.com/bartobri/no-more-secrets")
4319 (synopsis "Recreation of data decryption effect in \"Sneakers\"")
4320 (description
4321 "@code{No More Secrets} provides a command line tool called \"nms\"
4322 that recreates the famous data decryption effect seen on screen in the 1992
4323 movie \"Sneakers\".
4324
4325 This command works on piped data. Pipe any ASCII or UTF-8 text to nms, and
4326 it will apply the hollywood effect, initially showing encrypted data, then
4327 starting a decryption sequence to reveal the original plaintext characters.")
4328 (license license:expat)))
4329
4330 (define-public megaglest-data
4331 (package
4332 (name "megaglest-data")
4333 (version "3.13.0")
4334 (source
4335 (origin
4336 (method url-fetch)
4337 (uri (string-append
4338 "https://github.com/MegaGlest/megaglest-data"
4339 "/releases/download/" version "/megaglest-data-"
4340 version ".tar.xz"))
4341 (sha256
4342 (base32
4343 "0ipgza33z89fw3si32iafm981f3fvm0zldvbxj29whghd2k3rpj3"))))
4344 (build-system cmake-build-system)
4345 (arguments
4346 `(#:tests? #f))
4347 (home-page "https://megaglest.org/")
4348 (synopsis "Data files for MegaGlest")
4349 (description "This package contains the data files required for MegaGlest.")
4350 (license license:cc-by-sa3.0)))
4351
4352 (define-public megaglest
4353 (package
4354 (name "megaglest")
4355 (version "3.13.0")
4356 (source
4357 (origin
4358 (method url-fetch)
4359 (uri (string-append
4360 "https://github.com/MegaGlest/megaglest-source"
4361 "/releases/download/" version "/megaglest-source-"
4362 version ".tar.xz"))
4363 (sha256
4364 (base32
4365 "1ffck3ii1wp5k3nn5p0ga06jgp7pzk4zw0xln3xim2w7qrxzdzh9"))))
4366 (build-system cmake-build-system)
4367 (inputs
4368 `(("curl" ,curl)
4369 ("fontconfig" ,fontconfig)
4370 ("ftgl" ,ftgl)
4371 ("glew" ,glew)
4372 ("libjpeg-turbo" ,libjpeg-turbo)
4373 ("megaglest-data" ,megaglest-data)
4374 ("mesa" ,mesa)
4375 ("miniupnpc" ,miniupnpc)
4376 ("openal" ,openal)
4377 ("libircclient" ,libircclient)
4378 ("libpng" ,libpng)
4379 ("libvorbis" ,libvorbis)
4380 ("lua" ,lua)
4381 ("sdl2" ,sdl2)
4382 ("wxwidgets" ,wxwidgets)))
4383 (native-inputs
4384 `(("cppunit" ,cppunit)
4385 ("pkg-config" ,pkg-config)))
4386 (arguments
4387 `(#:configure-flags
4388 (list (string-append "-DCUSTOM_DATA_INSTALL_PATH="
4389 (assoc-ref %build-inputs "megaglest-data")
4390 "/share/megaglest")
4391 "-DBUILD_MEGAGLEST_TESTS=ON")
4392 #:phases
4393 (modify-phases %standard-phases
4394 (add-after 'unpack 'fix-ini-search-path
4395 (lambda* (#:key outputs #:allow-other-keys)
4396 (substitute* "source/glest_game/global/config.cpp"
4397 (("/usr/share/megaglest/")
4398 (string-append (assoc-ref outputs "out")
4399 "/share/megaglest/"))))))
4400 #:test-target "megaglest_tests"))
4401 (home-page "https://megaglest.org/")
4402 (synopsis "3D real-time strategy (RTS) game")
4403 (description "MegaGlest is a cross-platform 3D real-time strategy (RTS)
4404 game, where you control the armies of one of seven different factions: Tech,
4405 Magic, Egypt, Indians, Norsemen, Persian or Romans.")
4406 (license license:gpl2+)))
4407
4408 (define-public freegish
4409 (let ((commit "8795cd7adc95957883f2d3465eb9036a774667a7")
4410 (revision "1"))
4411 (package
4412 (name "freegish")
4413 (version (string-append "0-" revision "." (string-take commit 9)))
4414 (source (origin
4415 (method git-fetch)
4416 (uri (git-reference
4417 (url "https://github.com/freegish/freegish.git")
4418 (commit commit)))
4419 (file-name (git-file-name name version))
4420 (sha256
4421 (base32
4422 "1p1zf5qqagmcpi1db2bs02cnalpy3qiymp6yzan7k1bhmv859gsx"))
4423 (modules '((guix build utils)))
4424 ;; The audio files in the "music" directory are licensed under
4425 ;; CC-BY-NC, so we delete them.
4426 (snippet
4427 '(begin
4428 (delete-file-recursively "music")
4429 #t))))
4430 (build-system cmake-build-system)
4431 (arguments
4432 `(#:tests? #f ; no tests included
4433 #:configure-flags
4434 (list "-DCMAKE_INSTALL_FHS=ON")
4435 #:phases
4436 (modify-phases %standard-phases
4437 (add-after 'unpack 'set-DATAPATH
4438 (lambda* (#:key outputs #:allow-other-keys)
4439 (substitute* "CMakeLists.txt"
4440 (("^option\\(INSTALL_FHS" line)
4441 (string-append "add_definitions(-DDATAPATH=\""
4442 (assoc-ref outputs "out") "/share/freegish\")\n"
4443 line)))
4444 #t)))))
4445 (inputs
4446 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))
4447 ("openal" ,openal)
4448 ("libvorbis" ,libvorbis)
4449 ("libogg" ,libogg)
4450 ("mesa" ,mesa)
4451 ("libpng" ,libpng)
4452 ("zlib" ,zlib)))
4453 (home-page "https://github.com/freegish/freegish")
4454 (synopsis "Side-scrolling physics platformer with a ball of tar")
4455 (description "In FreeGish you control Gish, a ball of tar who lives
4456 happily with his girlfriend Brea, until one day a mysterious dark creature
4457 emerges from a sewer hole and pulls her below ground.")
4458 ;; The textures are available under the Expat license. All other assets
4459 ;; (including levels) are covered under CC-BY-SA or public domain. The
4460 ;; source code is under GPLv2+.
4461 (license (list license:gpl2+
4462 license:expat
4463 license:public-domain
4464 license:cc-by-sa3.0)))))
4465
4466 (define-public cdogs-sdl
4467 (package
4468 (name "cdogs-sdl")
4469 (version "0.6.9")
4470 (source (origin
4471 (method git-fetch)
4472 (uri (git-reference
4473 (url "https://github.com/cxong/cdogs-sdl.git")
4474 (commit version)))
4475 (file-name (git-file-name name version))
4476 (sha256
4477 (base32
4478 "13gyv2hzk43za1n3lsjnd5v64xlzfzq7n10scd1rcbsnk1n007zr"))))
4479 (build-system cmake-build-system)
4480 (arguments
4481 `(#:configure-flags
4482 (list (string-append "-DCDOGS_DATA_DIR="
4483 (assoc-ref %outputs "out")
4484 "/share/cdogs-sdl/"))))
4485 (inputs
4486 `(("mesa" ,mesa)
4487 ("sdl2" ,sdl2)
4488 ("sdl2-image" ,sdl2-image)
4489 ("sdl2-mixer" ,sdl2-mixer)))
4490 (home-page "https://cxong.github.io/cdogs-sdl/")
4491 (synopsis "Classic overhead run-and-gun game")
4492 (description "C-Dogs SDL is a classic overhead run-and-gun game,
4493 supporting up to 4 players in co-op and deathmatch modes. Customize your
4494 player, choose from many weapons, and blast, slide and slash your way through
4495 over 100 user-created campaigns.")
4496 ;; GPLv2+ for code (includes files under BSD-2 and BSD-3),
4497 ;; CC0/CC-BY/CC-BY-SA for assets.
4498 (license (list license:gpl2+
4499 license:bsd-2
4500 license:bsd-3
4501 license:cc0
4502 license:cc-by3.0
4503 license:cc-by-sa3.0))))
4504
4505 (define-public kiki
4506 (package
4507 (name "kiki")
4508 (version "1.0.2")
4509 (source (origin
4510 (method url-fetch)
4511 (uri (string-append "mirror://sourceforge/kiki/kiki-src/"
4512 version "/kiki-" version "-src.tgz"))
4513 (sha256
4514 (base32
4515 "0ihjdsxbn8z3cz0gpcprafiipcqaiskgdnh1rhmw4qff8dszalbn"))
4516 (modules '((guix build utils)))
4517 (snippet
4518 '(begin
4519 (for-each delete-file (find-files "." "\\.dll$"))
4520 #t))
4521 (patches
4522 (search-patches "kiki-level-selection-crash.patch"
4523 "kiki-makefile.patch"
4524 "kiki-missing-includes.patch"
4525 "kiki-portability-64bit.patch"))))
4526 (build-system gnu-build-system)
4527 (arguments
4528 `(#:tests? #f ; there are no tests
4529 #:make-flags '("CXX=g++")
4530 #:phases
4531 (modify-phases %standard-phases
4532 (replace 'configure
4533 (lambda* (#:key inputs outputs #:allow-other-keys)
4534 (setenv "CPLUS_INCLUDE_PATH"
4535 (string-append (assoc-ref inputs "sdl-union")
4536 "/include/SDL:"
4537 (assoc-ref inputs "python")
4538 "/include/python2.7"))
4539 (substitute* "src/main/main.cpp"
4540 (("#include <SDL.h>" line)
4541 (string-append line "
4542 #define K_INCLUDE_GLUT
4543 #include \"KIncludeTools.h\""))
4544 (("// initialize SDL" line)
4545 (string-append "glutInit(&argc,argv);\n" line)))
4546 (substitute* "src/main/KikiController.cpp"
4547 (("getenv\\(\"KIKI_HOME\"\\)")
4548 (string-append "\"" (assoc-ref outputs "out") "/share/kiki/\"")))
4549 (substitute* "linux/Makefile"
4550 (("CXXOPTS =" line)
4551 (string-append line " -fpermissive"))
4552 (("PYTHON_VERSION=.*") "PYTHON_VERSION=2.7")
4553 (("PYTHONHOME =.*")
4554 (string-append "PYTHONHOME = "
4555 (assoc-ref inputs "python")
4556 "/lib/python2.7/"))
4557 (("\\$\\(GLLIBS\\)" line)
4558 (string-append line " -lm -lpython2.7")))
4559 (substitute* "src/main/KikiPythonWidget.h"
4560 (("#define __KikiPythonWidget" line)
4561 (string-append line "\n#include \"KikiPython.h\"")))
4562 #t))
4563 (add-before 'build 'build-kodilib
4564 (lambda* (#:key make-flags #:allow-other-keys)
4565 (with-directory-excursion "kodilib/linux"
4566 (apply invoke "make" make-flags))))
4567 (add-after 'build-kodilib 'chdir
4568 (lambda _ (chdir "linux") #t))
4569 (replace 'install
4570 (lambda* (#:key outputs #:allow-other-keys)
4571 (let* ((out (assoc-ref outputs "out"))
4572 (bin (string-append out "/bin"))
4573 (share (string-append out "/share/kiki")))
4574 (mkdir-p bin)
4575 (mkdir-p share)
4576 (install-file "kiki" bin)
4577 (copy-recursively "../py" (string-append share "/py"))
4578 (copy-recursively "../sound" (string-append share "/sound"))
4579 #t))))))
4580 (inputs
4581 `(("glu" ,glu)
4582 ;; Kiki builds fine with freeglut 3.0.0 but segfaults on start.
4583 ("freeglut" ,freeglut-2.8)
4584 ("sdl-union" ,(sdl-union (list sdl
4585 sdl-mixer
4586 sdl-image)))
4587 ("python" ,python-2)))
4588 (native-inputs
4589 `(("swig" ,swig)))
4590 (home-page "http://kiki.sourceforge.net/")
4591 (synopsis "3D puzzle game")
4592 (description "Kiki the nano bot is a 3D puzzle game. It is basically a
4593 mixture of the games Sokoban and Kula-World. Your task is to help Kiki, a
4594 small robot living in the nano world, repair its maker.")
4595 ;; See <http://metadata.ftp-master.debian.org/changelogs/main/k/
4596 ;; kiki-the-nano-bot/kiki-the-nano-bot_1.0.2+dfsg1-4_copyright>
4597 ;; for a statement from the author.
4598 (license license:public-domain)))
4599
4600 (define-public kiki-the-nano-bot
4601 (deprecated-package "kiki-the-nano-bot" kiki))
4602
4603 (define-public teeworlds
4604 (package
4605 (name "teeworlds")
4606 (version "0.7.4")
4607 (source (origin
4608 (method git-fetch)
4609 (uri (git-reference
4610 (url "https://github.com/teeworlds/teeworlds.git")
4611 (commit version)))
4612 (file-name (git-file-name name version))
4613 (sha256
4614 (base32
4615 "1lxdb1k2cdj2421vyz1z0ximzfnpkh2y4y84zpn2gqsa1nzwbryb"))
4616 (modules '((guix build utils)
4617 (ice-9 ftw)
4618 (ice-9 regex)
4619 (srfi srfi-1)
4620 (srfi srfi-26)))
4621 (snippet ; remove bundled libraries except md5
4622 '(let ((base-dir "src/engine/external/"))
4623 (for-each (compose (cut delete-file-recursively <>)
4624 (cut string-append base-dir <>))
4625 (remove (cut string-match "(^.)|(^md5$)" <>)
4626 (scandir base-dir)))
4627 #t))))
4628 (build-system gnu-build-system)
4629 (arguments
4630 `(#:tests? #f ; no tests included
4631 #:modules ((guix build gnu-build-system)
4632 (guix build utils)
4633 (srfi srfi-26))
4634 #:phases
4635 (modify-phases %standard-phases
4636 (replace 'configure
4637 (lambda* (#:key outputs #:allow-other-keys)
4638 ;; Embed path to assets.
4639 (substitute* "src/engine/shared/storage.cpp"
4640 (("#define DATA_DIR.*")
4641 (string-append "#define DATA_DIR \""
4642 (assoc-ref outputs "out")
4643 "/share/teeworlds/data"
4644 "\"")))
4645
4646 ;; Bam expects all files to have a recent time stamp.
4647 (for-each (cut utime <> 1 1)
4648 (find-files "."))
4649
4650 ;; Do not use bundled libraries.
4651 (substitute* "bam.lua"
4652 (("local json = Compile.+$")
4653 "local json = nil
4654 settings.link.libs:Add(\"jsonparser\")")
4655 (("local png = Compile.+$")
4656 "local png = nil
4657 settings.link.libs:Add(\"pnglite\")")
4658 (("local wavpack = Compile.+$")
4659 "local wavpack = nil
4660 settings.link.libs:Add(\"wavpack\")")
4661 (("if config\\.zlib\\.value == 1")
4662 "if config.zlib.value"))
4663 (substitute* "src/engine/client/graphics_threaded.cpp"
4664 (("engine/external/pnglite/pnglite\\.h")
4665 "pnglite.h"))
4666 (substitute* "src/engine/client/sound.cpp"
4667 (("engine/external/wavpack/wavpack\\.h")
4668 "wavpack/wavpack.h"))
4669 #t))
4670 (replace 'build
4671 (lambda _
4672 (invoke "bam" "-a" "-v" "conf=release")))
4673 (replace 'install
4674 (lambda* (#:key outputs #:allow-other-keys)
4675 (let* ((arch ,(system->linux-architecture
4676 (or (%current-target-system)
4677 (%current-system))))
4678 (build (string-append "build/" (if (string=? arch "i386")
4679 "x86" arch)
4680 "/release/"))
4681 (data-built (string-append build "data/"))
4682 (out (assoc-ref outputs "out"))
4683 (bin (string-append out "/bin/"))
4684 (data (string-append out "/share/teeworlds/data/")))
4685 (for-each (cut install-file <> bin)
4686 (map (cut string-append build <>)
4687 '("teeworlds" "teeworlds_srv")))
4688 (copy-recursively data-built data)
4689 #t))))))
4690 (inputs
4691 `(("freetype" ,freetype)
4692 ("glu" ,glu)
4693 ("json-parser" ,json-parser)
4694 ("mesa" ,mesa)
4695 ("pnglite" ,pnglite)
4696 ("sdl2" ,sdl2)
4697 ("sdl2-image" ,sdl2-image)
4698 ("sdl2-mixer" ,sdl2-mixer)
4699 ("wavpack" ,wavpack)
4700 ("zlib" ,zlib)))
4701 (native-inputs
4702 `(("bam" ,bam)
4703 ("python" ,python-wrapper)
4704 ("pkg-config" ,pkg-config)))
4705 (home-page "https://www.teeworlds.com")
4706 (synopsis "2D retro multiplayer shooter game")
4707 (description "Teeworlds is an online multiplayer game. Battle with up to
4708 16 players in a variety of game modes, including Team Deathmatch and Capture
4709 The Flag. You can even design your own maps!")
4710 (license license:bsd-3)))
4711
4712 (define-public enigma
4713 (package
4714 (name "enigma")
4715 (version "1.21")
4716 (source (origin
4717 (method url-fetch)
4718 (uri (string-append "mirror://sourceforge/enigma-game/"
4719 "Release%20" version "/enigma-"
4720 version ".tar.gz"))
4721 (sha256
4722 (base32
4723 "00ffh9pypj1948pg3q9sjp1nmiabh52p5c8wpg9n1dcfgl3cywnq"))))
4724 (build-system gnu-build-system)
4725 (arguments
4726 `(#:configure-flags
4727 (list "--with-system-enet")
4728 #:phases
4729 (modify-phases %standard-phases
4730 (add-after 'unpack 'find-sdl
4731 (lambda _
4732 (substitute* "configure"
4733 (("SDL_ttf.h") "SDL/SDL_ttf.h"))
4734 (substitute* '("tools/ttf2bmf.cc"
4735 "lib-src/enigma-core/ecl_font.cc"
4736 "lib-src/enigma-core/ecl_video.cc"
4737 "lib-src/enigma-core/ecl_buffer.hh"
4738 "src/SoundEngine.cc"
4739 "src/SoundEngine.hh"
4740 "src/MusicManager.cc"
4741 "src/MusicManager.hh"
4742 "src/d_models.cc"
4743 "src/main.cc"
4744 "src/network.cc")
4745 (("#include \"SDL_(image|ttf|mixer|types|syswm|mutex).h\"" line header)
4746 (string-append "#include \"SDL/SDL_" header ".h\"")))
4747 (substitute* "src/main.cc"
4748 (("#include <SDL_(image|ttf|mixer).h>" line header)
4749 (string-append "#include \"SDL/SDL_" header ".h\"")))
4750 #t)))))
4751 (inputs
4752 `(("xerces-c" ,xerces-c)
4753 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
4754 ("curl" ,curl)
4755 ("enet" ,enet)))
4756 (native-inputs
4757 `(("pkg-config" ,pkg-config)
4758 ("imagemagick" ,imagemagick)))
4759 (home-page "https://www.nongnu.org/enigma")
4760 (synopsis "Puzzle game with a dexterity component")
4761 (description "Enigma is a puzzle game with 550 unique levels. The object
4762 of the game is to find and uncover pairs of identically colored ‘Oxyd’ stones.
4763 Simple? Yes. Easy? Certainly not! Hidden traps, vast mazes, laser beams,
4764 and most of all, countless hairy puzzles usually block your direct way to the
4765 Oxyd stones. Enigma’s game objects (and there are hundreds of them, lest you
4766 get bored) interact in many unexpected ways, and since many of them follow the
4767 laws of physics (Enigma’s special laws of physics, that is), controlling them
4768 with the mouse isn’t always trivial.")
4769 (license license:gpl2+)))
4770
4771 (define-public chroma
4772 (package
4773 (name "chroma")
4774 (version "1.17")
4775 (source (origin
4776 (method url-fetch)
4777 (uri (string-append "http://level7.org.uk/chroma/download/chroma-"
4778 version ".tar.bz2"))
4779 (sha256
4780 (base32
4781 "047sf00x71xbmi8bqrhfbmr9bk89l2gbykkqsfpw4wz6yfjscs6y"))))
4782 (build-system gnu-build-system)
4783 (arguments
4784 `(#:tests? #f)) ; no tests included
4785 (inputs
4786 `(("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
4787 ("freetype" ,freetype)
4788 ("ncurses" ,ncurses)
4789 ("fontconfig" ,fontconfig)
4790 ("libxft" ,libxft)))
4791 (native-inputs
4792 `(("pkg-config" ,pkg-config)))
4793 (home-page "http://level7.org.uk/chroma/")
4794 (synopsis "Abstract puzzle game")
4795 (description "Chroma is an abstract puzzle game. A variety of colourful
4796 shapes are arranged in a series of increasingly complex patterns, forming
4797 fiendish traps that must be disarmed and mysterious puzzles that must be
4798 manipulated in order to give up their subtle secrets. Initially so
4799 straightforward that anyone can pick it up and begin to play, yet gradually
4800 becoming difficult enough to tax even the brightest of minds.")
4801 (license license:gpl2+)))
4802
4803 (define-public fillets-ng
4804 (package
4805 (name "fillets-ng")
4806 (version "1.0.1")
4807 (source (origin
4808 (method url-fetch)
4809 (uri (string-append "mirror://sourceforge/fillets/"
4810 "Fish%20Fillets%20-%20Next%20Generation/"
4811 version "/fillets-ng-" version ".tar.gz"))
4812 (sha256
4813 (base32
4814 "1nljp75aqqb35qq3x7abhs2kp69vjcj0h1vxcpdyn2yn2nalv6ij"))))
4815 (build-system gnu-build-system)
4816 (arguments
4817 `(#:configure-flags
4818 (list (string-append "--with-lua="
4819 (assoc-ref %build-inputs "lua")))
4820 #:make-flags
4821 (list (string-append "CFLAGS=-I"
4822 (assoc-ref %build-inputs "sdl-union")
4823 "/include/SDL")
4824 (string-append "CXXFLAGS=-I"
4825 (assoc-ref %build-inputs "sdl-union")
4826 "/include/SDL"))
4827 #:phases
4828 (modify-phases %standard-phases
4829 ;; Lua 5.1 does not provide it.
4830 (add-after 'unpack 'do-not-link-with-lualib
4831 (lambda _
4832 (substitute* "configure"
4833 (("-llualib") ""))
4834 #t))
4835 (add-after 'install 'install-data
4836 (lambda* (#:key inputs outputs #:allow-other-keys)
4837 (let ((data (string-append (assoc-ref outputs "out")
4838 "/share/games/fillets-ng")))
4839 (mkdir-p data)
4840 (invoke "tar" "-xvf"
4841 (assoc-ref inputs "fillets-ng-data")
4842 "--strip-components=1"
4843 "-C" data)))))))
4844 (inputs
4845 `(("sdl-union" ,(sdl-union (list sdl
4846 sdl-mixer
4847 sdl-image
4848 sdl-ttf)))
4849 ("fribidi" ,fribidi)
4850 ("libx11" ,libx11)
4851 ("lua" ,lua-5.1)))
4852 (native-inputs
4853 `(("pkg-config" ,pkg-config)
4854 ("fillets-ng-data"
4855 ,(origin
4856 (method url-fetch)
4857 (uri (string-append "mirror://sourceforge/fillets/"
4858 "Fish%20Fillets%20-%20Next%20Generation/"
4859 version "/fillets-ng-data-" version ".tar.gz"))
4860 (sha256
4861 (base32
4862 "169p0yqh2gxvhdilvjc2ld8aap7lv2nhkhkg4i1hlmgc6pxpkjgh"))))))
4863 (home-page "http://fillets.sourceforge.net/")
4864 (synopsis "Puzzle game")
4865 (description "Fish Fillets NG is strictly a puzzle game. The goal in
4866 every of the seventy levels is always the same: find a safe way out. The fish
4867 utter witty remarks about their surroundings, the various inhabitants of their
4868 underwater realm quarrel among themselves or comment on the efforts of your
4869 fish. The whole game is accompanied by quiet, comforting music.")
4870 (license license:gpl2+)))
4871
4872 (define-public fish-fillets-ng
4873 (deprecated-package "fish-fillets-ng" fillets-ng))
4874
4875 (define-public crawl
4876 (package
4877 (name "crawl")
4878 (version "0.24.0")
4879 (source
4880 (origin
4881 (method url-fetch)
4882 (uri (list
4883 ;; Older releases get moved into a versioned directory
4884 (string-append "http://crawl.develz.org/release/"
4885 (version-major+minor version) "/stone_soup-"
4886 version "-nodeps.tar.xz")
4887 ;; Only the latest release is in this directory
4888 (string-append "http://crawl.develz.org/release/stone_soup-"
4889 version "-nodeps.tar.xz")))
4890 (sha256
4891 (base32 "0kdq6s12myxfdg75ma9x3ys2nd0xwb3xm2ynlmhg4628va0pnixr"))
4892 (patches (search-patches "crawl-upgrade-saves.patch"))))
4893 (build-system gnu-build-system)
4894 (inputs
4895 `(("lua51" ,lua-5.1)
4896 ("ncurses" ,ncurses)
4897 ("sqlite" ,sqlite)
4898 ("zlib" ,zlib)))
4899 (native-inputs
4900 `(("bison" ,bison)
4901 ("flex" ,flex)
4902 ("perl" ,perl)
4903 ("python" ,python-wrapper)
4904 ("python-pyyaml" ,python-pyyaml)
4905 ("pkg-config" ,pkg-config)))
4906 (arguments
4907 `(#:make-flags
4908 (let* ((sqlite (assoc-ref %build-inputs "sqlite"))
4909 (out (assoc-ref %outputs "out")))
4910 (list (string-append "SQLITE_INCLUDE_DIR=" sqlite "/include")
4911 (string-append "prefix=" out)
4912 "SAVEDIR=~/.crawl"
4913 ;; Don't compile with SSE on systems which don't have it.
4914 ,@(match (%current-system)
4915 ((or "i686-linux" "x86_64-linux")
4916 '())
4917 (_ '("NOSSE=TRUE")))
4918 ;; don't build any bundled dependencies
4919 "BUILD_LUA="
4920 "BUILD_SQLITE="
4921 "BUILD_ZLIB="
4922 "-Csource"))
4923 #:phases
4924 (modify-phases %standard-phases
4925 (add-after 'unpack 'find-SDL-image
4926 (lambda _
4927 (substitute* "source/windowmanager-sdl.cc"
4928 (("SDL_image.h") "SDL2/SDL_image.h"))
4929 #t))
4930 (delete 'configure)
4931 (replace 'check
4932 (lambda* (#:key inputs outputs make-flags #:allow-other-keys)
4933 (setenv "HOME" (getcwd))
4934 ;; Fake a terminal for the test cases.
4935 (setenv "TERM" "xterm-256color")
4936 ;; Run the tests that don't require a debug build.
4937 (apply invoke "make" "nondebugtest"
4938 (format #f "-j~d" (parallel-job-count))
4939 ;; Force command line build for test cases.
4940 (append make-flags '("GAME=crawl" "TILES="))))))))
4941 (synopsis "Roguelike dungeon crawler game")
4942 (description "Dungeon Crawl Stone Soup (also known as \"Crawl\" or DCSS
4943 for short) is a roguelike adventure through dungeons filled with dangerous
4944 monsters in a quest to find the mystifyingly fabulous Orb of Zot.")
4945 (home-page "https://crawl.develz.org")
4946 (license (list license:gpl2+
4947 license:bsd-2
4948 license:bsd-3
4949 license:cc0
4950 license:expat
4951 license:zlib
4952 license:asl2.0))))
4953
4954 (define-public dungeon-crawl-stone-soup
4955 (deprecated-package "dungeon-crawl-stone-soup" crawl))
4956
4957 ;; The linter here claims that patch file names should start with the package
4958 ;; name. But, in this case, the patches are inherited from crawl with the
4959 ;; "crawl-" prefix instead of "crawl-tiles-".
4960 (define-public crawl-tiles
4961 (package
4962 (inherit crawl)
4963 (name "crawl-tiles")
4964 (arguments
4965 (substitute-keyword-arguments
4966 (package-arguments crawl)
4967 ((#:make-flags flags)
4968 `(let ((dejavu (assoc-ref %build-inputs "font-dejavu")))
4969 (cons*
4970 (string-append "PROPORTIONAL_FONT=" dejavu
4971 "/share/fonts/truetype/DejaVuSans.ttf")
4972 (string-append "MONOSPACED_FONT=" dejavu
4973 "/share/fonts/truetype/DejaVuSansMono.ttf")
4974 "TILES=y"
4975 ;; Rename the executable to allow parallel installation with crawl.
4976 "GAME=crawl-tiles"
4977 ,flags)))))
4978 (inputs
4979 `(,@(package-inputs crawl)
4980 ("font-dejavu" ,font-dejavu)
4981 ("freetype6" ,freetype)
4982 ("glu" ,glu)
4983 ("libpng" ,libpng)
4984 ("sdl2" ,sdl2)
4985 ("sdl2-image" ,sdl2-image)
4986 ("sdl2-mixer" ,sdl2-mixer)))
4987 (native-inputs
4988 `(,@(package-native-inputs crawl)
4989 ("pngcrush" ,pngcrush)
4990 ("which" ,which)))
4991 (synopsis "Graphical roguelike dungeon crawler game")))
4992
4993 (define-public dungeon-crawl-stone-soup-tiles
4994 (deprecated-package "dungeon-crawl-stone-soup-tiles" crawl-tiles))
4995
4996 (define-public lugaru
4997 (package
4998 (name "lugaru")
4999 (version "1.2")
5000 (source (origin
5001 (method url-fetch)
5002 (uri (string-append "https://bitbucket.org/osslugaru/lugaru/downloads/"
5003 "lugaru-" version ".tar.xz"))
5004 (sha256
5005 (base32
5006 "15zgcshy22q51rm72zi6y9z7qlgnz5iw3gczjdlir4bqmxy4gspk"))))
5007 (build-system cmake-build-system)
5008 (arguments
5009 `(#:configure-flags
5010 (list "-DSYSTEM_INSTALL=ON")
5011 ;; no test target
5012 #:tests? #f))
5013 (native-inputs
5014 `(("pkg-config" ,pkg-config)))
5015 (inputs
5016 `(("sdl2" ,sdl2)
5017 ("glu" ,glu)
5018 ("libjpeg" ,libjpeg-turbo)
5019 ("libpng" ,libpng)
5020 ("openal" ,openal)
5021 ("vorbis" ,libvorbis)
5022 ("zlib" ,zlib)))
5023 (home-page "https://osslugaru.gitlab.io")
5024 (synopsis "Cross-platform third-person action game")
5025 (description "Lugaru is a third-person action game. The main character,
5026 Turner, is an anthropomorphic rebel bunny rabbit with impressive combat skills.
5027 In his quest to find those responsible for slaughtering his village, he uncovers
5028 a far-reaching conspiracy involving the corrupt leaders of the rabbit republic
5029 and the starving wolves from a nearby den. Turner takes it upon himself to
5030 fight against their plot and save his fellow rabbits from slavery.")
5031 (license (list license:gpl2+ ; code
5032 ;; assets:
5033 license:cc-by-sa3.0
5034 license:cc-by-sa4.0))))
5035
5036 (define-public 0ad-data
5037 (package
5038 (name "0ad-data")
5039 (version "0.0.23b-alpha")
5040 (source
5041 (origin
5042 (method url-fetch)
5043 (uri (string-append "https://releases.wildfiregames.com/0ad-"
5044 version "-unix-data.tar.xz"))
5045 (file-name (string-append name "-" version ".tar.xz"))
5046 (sha256
5047 (base32
5048 "04x7729hk6zw1xj3n4s4lvaviijsnbjf5rhzvjxlr5fygvg4l6z1"))
5049 (modules '((guix build utils)))
5050 (snippet
5051 #~(begin
5052 (for-each (lambda (name)
5053 (let* ((dir (string-append "binaries/data/mods/" name))
5054 (file (string-append dir "/" name ".zip"))
5055 (unzip #$(file-append unzip "/bin/unzip")))
5056 (invoke unzip "-d" dir file)
5057 (delete-file file)))
5058 '("mod" "public"))
5059 #t))))
5060 (build-system trivial-build-system)
5061 (native-inputs `(("tar" ,tar)
5062 ("xz" ,xz)))
5063 (arguments
5064 `(#:modules ((guix build utils))
5065 #:builder
5066 (begin
5067 (use-modules (guix build utils))
5068 (let ((out (assoc-ref %outputs "out"))
5069 (source (assoc-ref %build-inputs "source"))
5070 (tar (string-append (assoc-ref %build-inputs "tar") "/bin/tar"))
5071 (xz-path (string-append (assoc-ref %build-inputs "xz") "/bin")))
5072 (setenv "PATH" xz-path)
5073 (mkdir out)
5074 (invoke tar "xvf" source "-C" out "--strip=3")))))
5075 (synopsis "Data files for 0ad")
5076 (description "0ad-data provides the data files required by the game 0ad.")
5077 (home-page "https://play0ad.com")
5078 (license (list (license:fsdg-compatible
5079 "http://tavmjong.free.fr/FONTS/ArevCopyright.txt"
5080 "Similar to the license of the Bitstream Vera fonts.")
5081 (license:fsdg-compatible
5082 "https://www.gnome.org/fonts/#Final_Bitstream_Vera_Fonts")
5083 license:cc-by-sa3.0
5084 license:expat
5085 license:gfl1.0
5086 license:gpl2+
5087 license:gpl3+))))
5088
5089 (define-public 0ad
5090 (package
5091 (name "0ad")
5092 (version "0.0.23b-alpha")
5093 (source
5094 (origin
5095 (method url-fetch)
5096 (uri (string-append "https://releases.wildfiregames.com/0ad-"
5097 version "-unix-build.tar.xz"))
5098 (file-name (string-append name "-" version ".tar.xz"))
5099 (sha256
5100 (base32
5101 "0draa53xg69i5qhqym85658m45xhwkbiimaldj4sr3703rjgggq1"))))
5102 ;; A snippet here would cause a build failure because of timestamps
5103 ;; reset. See https://bugs.gnu.org/26734.
5104 (inputs
5105 `(("0ad-data" ,0ad-data)
5106 ("curl" ,curl)
5107 ("enet" ,enet)
5108 ("gloox" ,gloox)
5109 ("icu4c" ,icu4c)
5110 ("libpng" ,libpng)
5111 ("libsodium" ,libsodium)
5112 ("libvorbis" ,libvorbis)
5113 ("libxcursor" ,libxcursor)
5114 ("libxml2" ,libxml2)
5115 ("miniupnpc" ,miniupnpc)
5116 ("mozjs-38" ,mozjs-38)
5117 ("openal" ,openal)
5118 ("sdl2" ,sdl2)
5119 ("wxwidgets" ,wxwidgets)
5120 ("zlib" ,zlib)))
5121 (native-inputs
5122 `(("boost" ,boost)
5123 ("cmake" ,cmake-minimal)
5124 ("mesa" ,mesa)
5125 ("pkg-config" ,pkg-config)
5126 ("python-2" ,python-2)))
5127 (build-system gnu-build-system)
5128 (arguments
5129 `(#:make-flags '("config=release" "verbose=1" "-C" "build/workspaces/gcc")
5130 #:phases
5131 (modify-phases %standard-phases
5132 (add-after 'unpack 'delete-bundles
5133 (lambda _
5134 (delete-file-recursively "libraries/source/spidermonkey")
5135 #t))
5136 (add-after 'unpack 'fix-x11-includes
5137 (lambda _
5138 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5139 (("<Xlib.h>") "<X11/Xlib.h>"))
5140 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5141 (("<Xatom.h>") "<X11/Xatom.h>"))
5142 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5143 (("<Xcursor/Xcursor.h>") "<X11/Xcursor/Xcursor.h>"))
5144 #t))
5145 (replace 'configure
5146 (lambda* (#:key inputs outputs #:allow-other-keys)
5147 (let* ((jobs (number->string (parallel-job-count)))
5148 (out (assoc-ref outputs "out"))
5149 (lib (string-append out "/lib"))
5150 (data (string-append out "/share/0ad")))
5151 (setenv "JOBS" (string-append "-j" jobs))
5152 (setenv "CC" "gcc")
5153 (with-directory-excursion "build/workspaces"
5154 (invoke "./update-workspaces.sh"
5155 (string-append "--libdir=" lib)
5156 (string-append "--datadir=" data)
5157 ;; TODO: "--with-system-nvtt"
5158 "--with-system-mozjs38")))))
5159 (delete 'check)
5160 (replace 'install
5161 (lambda* (#:key inputs outputs #:allow-other-keys)
5162 (chdir "binaries")
5163 (let* ((out (assoc-ref outputs "out"))
5164 (bin (string-append out "/bin"))
5165 (lib (string-append out "/lib"))
5166 (data (string-append out "/share/0ad"))
5167 (applications (string-append out "/share/applications"))
5168 (pixmaps (string-append out "/share/pixmaps"))
5169 (0ad-data (assoc-ref inputs "0ad-data")))
5170 ;; data
5171 (copy-recursively "data" data)
5172 (for-each (lambda (file)
5173 (symlink (string-append 0ad-data "/" file)
5174 (string-append data "/" file)))
5175 '("config" "mods/mod" "mods/public" "tools"))
5176 ;; libraries
5177 (for-each (lambda (file)
5178 (install-file file lib))
5179 (find-files "system" "\\.so$"))
5180 ;; binaries
5181 (install-file "system/pyrogenesis" bin)
5182 (with-directory-excursion bin
5183 (symlink "pyrogenesis" "0ad"))
5184 ;; resources
5185 (with-directory-excursion "../build/resources"
5186 (install-file "0ad.desktop" applications)
5187 (install-file "0ad.png" pixmaps))
5188 #t)))
5189 (add-after 'install 'check
5190 (lambda _
5191 (with-directory-excursion "system"
5192 (invoke "./test")))))))
5193 (home-page "https://play0ad.com")
5194 (synopsis "3D real-time strategy game of ancient warfare")
5195 (description "0 A.D. is a real-time strategy (RTS) game of ancient
5196 warfare. It's a historically-based war/economy game that allows players to
5197 relive or rewrite the history of twelve ancient civilizations, each depicted
5198 at their peak of economic growth and military prowess.
5199
5200 0ad needs a window manager that supports 'Extended Window Manager Hints'.")
5201 (license (list license:bsd-2
5202 license:bsd-3
5203 license:expat
5204 license:gpl2+
5205 license:ibmpl1.0
5206 license:isc
5207 license:lgpl2.1
5208 license:lgpl3
5209 license:mpl2.0
5210 license:zlib))))
5211
5212 ;; There have been no official releases.
5213 (define-public open-adventure
5214 (let* ((commit "d43854f0f6bb8e9eea7fbce80348150e7e7fc34d")
5215 (revision "2"))
5216 (package
5217 (name "open-adventure")
5218 (version (string-append "2.5-" revision "." (string-take commit 7)))
5219 (source (origin
5220 (method git-fetch)
5221 (uri (git-reference
5222 (url "https://gitlab.com/esr/open-adventure")
5223 (commit commit)))
5224 (file-name (string-append name "-" version "-checkout"))
5225 (sha256
5226 (base32
5227 "08bwrvf4axb1rsfd6ia1fddsky9pc1p350vjskhaakg2czc6dsk0"))))
5228 (build-system gnu-build-system)
5229 (arguments
5230 `(#:make-flags (list "CC=gcc")
5231 #:parallel-build? #f ; not supported
5232 #:phases
5233 (modify-phases %standard-phases
5234 (replace 'configure
5235 (lambda* (#:key inputs outputs #:allow-other-keys)
5236 ;; Linenoise is meant to be included, so we have to
5237 ;; copy it into the working directory.
5238 (let* ((linenoise (assoc-ref inputs "linenoise"))
5239 (noisepath (string-append linenoise "/include/linenoise"))
5240 (out (assoc-ref outputs "out")))
5241 (copy-recursively noisepath "linenoise"))
5242 #t))
5243 (add-before 'build 'use-echo
5244 (lambda _
5245 (substitute* "tests/Makefile"
5246 (("/bin/echo") (which "echo")))
5247 #t))
5248 (add-after 'build 'build-manpage
5249 (lambda _
5250 ;; This target is missing a dependency
5251 (substitute* "Makefile"
5252 ((".adoc.6:" line)
5253 (string-append line " advent.adoc")))
5254 (invoke "make" ".adoc.6")))
5255 ;; There is no install target
5256 (replace 'install
5257 (lambda* (#:key outputs #:allow-other-keys)
5258 (let* ((out (assoc-ref outputs "out"))
5259 (bin (string-append out "/bin"))
5260 (man (string-append out "/share/man/man6")))
5261 (install-file "advent" bin)
5262 (install-file "advent.6" man))
5263 #t)))))
5264 (native-inputs
5265 `(("asciidoc" ,asciidoc)
5266 ("linenoise" ,linenoise)
5267 ("python" ,python)
5268 ("python-pyyaml" ,python-pyyaml)))
5269 (home-page "https://gitlab.com/esr/open-adventure")
5270 (synopsis "Colossal Cave Adventure")
5271 (description "The original Colossal Cave Adventure from 1976 was the
5272 origin of all text adventures, dungeon-crawl (computer) games, and
5273 computer-hosted roleplaying games. This is the last version released by
5274 Crowther & Woods, its original authors, in 1995. It has been known as
5275 \"adventure 2.5\" and \"430-point adventure\".")
5276 (license license:bsd-2))))
5277
5278 (define-public tome4
5279 (package
5280 (name "tome4")
5281 (version "1.6.7")
5282 (synopsis "Single-player, RPG roguelike game set in the world of Eyal")
5283 (source
5284 (origin
5285 (method url-fetch)
5286 (uri (string-append "https://te4.org/dl/t-engine/t-engine4-src-"
5287 version ".tar.bz2"))
5288 (sha256
5289 (base32 "0283hvms5hr29zr0grd6gq059k0hg8hcz3fsmwjmysiih8790i68"))
5290 (modules '((guix build utils)))
5291 (snippet
5292 '(begin
5293 (substitute* '("src/music.h" "src/tSDL.h")
5294 (("#elif defined(__FreeBSD__)" line)
5295 (string-append
5296 line " || defined(__GNUC__)")))
5297 (substitute* '("src/tgl.h")
5298 (("#include <GL/glext.h>") ""))
5299 #t))))
5300 (build-system gnu-build-system)
5301 (native-inputs
5302 `(("unzip" ,unzip)))
5303 (inputs
5304 `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
5305 ("glu" ,glu)
5306 ("premake4" ,premake4)
5307 ("openal" ,openal)
5308 ("vorbis" ,libvorbis)
5309 ("luajit" ,luajit)))
5310 (arguments
5311 `(#:make-flags '("CC=gcc" "config=release")
5312 ;; XXX: Building in parallel occasionally causes this build failure:
5313 ;; ../src/luajit2/src/host/buildvm.c:73:10: fatal error: buildvm_arch.h:
5314 ;; No such file or directory
5315 #:parallel-build? #f
5316 #:phases (modify-phases %standard-phases
5317 (delete 'bootstrap)
5318 (replace 'configure
5319 (lambda _
5320 (invoke "premake4" "gmake")
5321 #t))
5322 (add-after 'set-paths 'set-sdl-paths
5323 (lambda* (#:key inputs #:allow-other-keys)
5324 (setenv "CPATH"
5325 (string-append (assoc-ref inputs "sdl-union")
5326 "/include/SDL2:"
5327 (getenv "CPATH")))
5328 #t))
5329 (delete 'check)
5330 ;; premake doesn't provide install target
5331 (replace 'install
5332 (lambda* (#:key inputs outputs #:allow-other-keys)
5333 (let* ((out (assoc-ref outputs "out"))
5334 (usr (string-append out "/usr"))
5335 (bin (string-append out "/bin"))
5336 (licenses (string-append out "/share/licenses"))
5337 (documents (string-append out "/share/doc"))
5338 (pixmaps (string-append out "/share/pixmaps"))
5339 (icon "te4-icon.png")
5340 (data (string-append out "/share/" ,name))
5341 (applications (string-append
5342 out "/share/applications"))
5343 (unzip (string-append
5344 (assoc-ref inputs "unzip") "/bin/unzip"))
5345 (wrapper (string-append bin "/" ,name)))
5346 ;; icon
5347 (mkdir-p pixmaps)
5348 (invoke unzip "-j"
5349 (string-append
5350 "game/engines/te4-" ,version ".teae")
5351 (string-append
5352 "data/gfx/" icon) "-d" pixmaps)
5353 ;; game executable
5354 (install-file "t-engine" data)
5355 (mkdir-p bin)
5356 (with-output-to-file wrapper
5357 (lambda ()
5358 (display
5359 (string-append
5360 "#!/bin/sh\n"
5361 ;; No bootstrap code found,
5362 ;; defaulting to working directory
5363 ;; for engine code!
5364 "cd " data "\n"
5365 "exec -a tome4 ./t-engine \"$@\"\n"))))
5366 (chmod wrapper #o555)
5367 ;; licenses
5368 (for-each (lambda (file)
5369 (install-file file licenses))
5370 '("COPYING" "COPYING-MEDIA"))
5371 ;; documents
5372 (for-each (lambda (file)
5373 (install-file file documents))
5374 '("CONTRIBUTING" "CREDITS"))
5375 ;; data
5376 (copy-recursively "bootstrap" (string-append
5377 data "/bootstrap"))
5378 (copy-recursively "game" (string-append data "/game"))
5379 ;; launcher
5380 (mkdir-p applications)
5381 (with-output-to-file (string-append applications "/"
5382 ,name ".desktop")
5383 (lambda ()
5384 (display
5385 (string-append
5386 "[Desktop Entry]
5387 Name=ToME4
5388 Comment=" ,synopsis "\n"
5389 "Exec=" ,name "\n"
5390 "Icon=" icon "\n"
5391 "Terminal=false
5392 Type=Application
5393 Categories=Game;RolePlaying;\n")))))
5394 #t)))))
5395 (home-page "https://te4.org")
5396 (description "Tales of Maj’Eyal (ToME) RPG, featuring tactical turn-based
5397 combat and advanced character building. Play as one of many unique races and
5398 classes in the lore-filled world of Eyal, exploring random dungeons, facing
5399 challenging battles, and developing characters with your own tailored mix of
5400 abilities and powers. With a modern graphical and customisable interface,
5401 intuitive mouse control, streamlined mechanics and deep, challenging combat,
5402 Tales of Maj’Eyal offers engaging roguelike gameplay for the 21st century.")
5403 (license license:gpl3+)))
5404
5405 (define-public tales-of-maj-eyal
5406 (deprecated-package "tales-of-maj-eyal" tome4))
5407
5408 (define-public quakespasm
5409 (package
5410 (name "quakespasm")
5411 (version "0.93.2")
5412 (source
5413 (origin
5414 (method url-fetch)
5415 (uri (string-append "mirror://sourceforge/quakespasm/Source/quakespasm-"
5416 version ".tgz"))
5417 (sha256
5418 (base32 "0qm0j5drybvvq8xadfyppkpk3rxqsxbywzm6iwsjwdf0iia3gss5"))))
5419 (arguments
5420 `(#:tests? #f
5421 #:make-flags '("CC=gcc"
5422 "MP3LIB=mpg123"
5423 "USE_CODEC_FLAC=1"
5424 "USE_CODEC_MIKMOD=1"
5425 "USE_SDL2=1"
5426 "-CQuake")
5427 #:phases (modify-phases %standard-phases
5428 (delete 'configure)
5429 (add-after 'unpack 'fix-makefile-paths
5430 (lambda* (#:key outputs #:allow-other-keys)
5431 (let ((out (assoc-ref outputs "out")))
5432 (mkdir-p (string-append out "/bin"))
5433 (substitute* "Quake/Makefile"
5434 (("/usr/local/games")
5435 (string-append out "/bin")))
5436 #t))))))
5437 (build-system gnu-build-system)
5438 (inputs `(("libmikmod" ,libmikmod)
5439 ("libvorbis" ,libvorbis)
5440 ("flac" ,flac)
5441 ("mesa" ,mesa)
5442 ("mpg123" ,mpg123)
5443 ("sdl2" ,sdl2)))
5444 (synopsis "First person shooter engine for Quake 1")
5445 (description "Quakespasm is a modern engine for id software's Quake 1.
5446 It includes support for 64 bit CPUs, custom music playback, a new sound driver,
5447 some graphical niceities, and numerous bug-fixes and other improvements.")
5448 (home-page "http://quakespasm.sourceforge.net/")
5449 (license license:gpl2+)))
5450
5451 (define-public vkquake
5452 (package
5453 (inherit quakespasm)
5454 (name "vkquake")
5455 (version "1.01.0")
5456 (source
5457 (origin
5458 (method git-fetch)
5459 (uri (git-reference
5460 (url "https://github.com/Novum/vkQuake.git")
5461 (commit version)))
5462 (file-name (git-file-name name version))
5463 (sha256
5464 (base32 "1iwin8j5kbyrknbkhjgpy8nmm7pxqzr0daa9gn7p38qhg2mh0a39"))))
5465 (arguments
5466 `(#:make-flags
5467 (let ((vulkanlib (string-append (assoc-ref %build-inputs
5468 "vulkan-loader") "/lib")))
5469 (list "CC=gcc"
5470 "MP3LIB=mpg123"
5471 "USE_CODEC_FLAC=1"
5472 "USE_CODEC_MIKMOD=1"
5473 "USE_SDL2=1"
5474 (string-append "LDFLAGS=-Wl,-rpath=" vulkanlib)
5475 "-CQuake"))
5476 #:phases (modify-phases %standard-phases
5477 (delete 'configure)
5478 (add-after 'unpack 'fix-makefile-paths
5479 (lambda* (#:key outputs #:allow-other-keys)
5480 (let ((vulkan (assoc-ref %build-inputs
5481 "vulkan-loader"))
5482 (out (assoc-ref outputs "out")))
5483 (mkdir-p (string-append out "/bin"))
5484 (substitute* "Quake/Makefile" ((" /usr")
5485 (string-append " " out)))
5486 (substitute* "Quake/Makefile" (("/games")
5487 (string-append "/bin")))
5488 (substitute* "Quake/Makefile" (("..VULKAN_SDK.") vulkan))
5489 #t))))
5490 ,@(strip-keyword-arguments '(#:make-flags #:phases)
5491 (package-arguments quakespasm))))
5492 (inputs `(("vulkan-headers" ,vulkan-headers)
5493 ("vulkan-loader" ,vulkan-loader)
5494 ,@(package-inputs quakespasm)))
5495 (description "vkquake is a modern engine for id software's Quake 1.
5496 It includes support for 64 bit CPUs, custom music playback, a new sound driver,
5497 some graphical niceities, and numerous bug-fixes and other improvements.")
5498 (home-page "https://github.com/Novum/vkQuake")))
5499
5500 (define-public yamagi-quake2
5501 (package
5502 (name "yamagi-quake2")
5503 (version "7.10")
5504 (source
5505 (origin
5506 (method url-fetch)
5507 (uri (string-append "https://deponie.yamagi.org/quake2/quake2-"
5508 version ".tar.xz"))
5509 (sha256
5510 (base32
5511 "0psinbg25mysd58k99s1n34w31w5hj1vppb39gdjb0zqi6sl6cps"))))
5512 (build-system gnu-build-system)
5513 (arguments
5514 `(#:tests? #f
5515 #:make-flags
5516 (list "CC=gcc"
5517 ;; link openAL instead of using dlopen at runtime
5518 "DLOPEN_OPENAL=\"no\""
5519 ;; an optional directory where it will look for quake2 data files
5520 ;; in addition to the current working directory
5521 "WITH_SYSTEMWIDE=yes"
5522 "WITH_SYSTEMDIR=\"/opt/quake2\"")
5523 #:phases
5524 (modify-phases %standard-phases
5525 (delete 'configure)
5526 (replace 'install
5527 (lambda* (#:key outputs #:allow-other-keys)
5528 (let ((out (assoc-ref outputs "out")))
5529 (mkdir-p (string-append out "/lib"))
5530 (mkdir-p (string-append out "/bin"))
5531 ;; The yamagi-quake2 binary must be in the same directory
5532 ;; as it's engine libraries, but symlinking it to /bin is okay
5533 ;; https://github.com/yquake2/yquake2/blob/master/stuff/packaging.md
5534 (copy-recursively "release"
5535 (string-append out "/lib/yamagi-quake2"))
5536 (symlink (string-append out "/lib/yamagi-quake2/quake2")
5537 (string-append out "/bin/yamagi-quake2"))
5538 (symlink (string-append out "/lib/yamagi-quake2/q2ded")
5539 (string-append out "/bin/yamagi-q2ded"))))))))
5540 (inputs `(("sdl2" ,sdl2)
5541 ("mesa" ,mesa)
5542 ("libvorbis" ,libvorbis)
5543 ("zlib" ,zlib)
5544 ("openal" ,openal)))
5545 (native-inputs `(("pkg-config" ,pkg-config)))
5546 (synopsis "First person shooter engine based on quake2")
5547 (description "Yamagi Quake II is an enhanced client for id Software's Quake II.
5548 The main focus is an unchanged single player experience like back in 1997,
5549 thus the gameplay and the graphics are unaltered. However the user may use one
5550 of the unofficial retexturing packs. In comparison with the official client,
5551 over 1000 bugs were fixed and an extensive code audit done,
5552 making Yamagi Quake II one of the most solid Quake II implementations available.")
5553 (home-page "https://www.yamagi.org/quake2/")
5554 (license (list license:gpl2+ ; game and server
5555 (license:non-copyleft ; info-zip
5556 "file://LICENSE"
5557 "See Info-Zip section.")
5558 license:public-domain)))) ; stb
5559
5560 (define-public nudoku
5561 (package
5562 (name "nudoku")
5563 (version "1.0.0")
5564 (source (origin
5565 (method url-fetch)
5566 (uri (string-append "https://github.com/jubalh/nudoku/"
5567 "releases/download/" version
5568 "/nudoku-" version ".tar.xz"))
5569 (sha256
5570 (base32
5571 "0nr2j2z07nxk70s8xnmmpzccxicf7kn5mbwby2kg6aq8paarjm8k"))))
5572 (build-system gnu-build-system)
5573 (inputs `(("ncurses" ,ncurses)))
5574 (home-page "https://jubalh.github.io/nudoku/")
5575 (synopsis "Sudoku for your terminal")
5576 (description "Nudoku is a ncurses-based Sudoku game for your terminal.")
5577 (license license:gpl3+)))
5578
5579 (define-public the-butterfly-effect
5580 (package
5581 (name "the-butterfly-effect")
5582 (version "0.9.3.1")
5583 (source
5584 (origin
5585 (method git-fetch)
5586 (uri (git-reference
5587 (url "https://github.com/the-butterfly-effect/tbe.git")
5588 (commit (string-append "v" version))))
5589 (file-name (git-file-name name version))
5590 (sha256
5591 (base32
5592 "1ag2cp346f9bz9qy6za6q54id44d2ypvkyhvnjha14qzzapwaysj"))))
5593 (build-system gnu-build-system)
5594 (arguments
5595 `(#:phases
5596 (modify-phases %standard-phases
5597 (delete 'configure)
5598 ;; There is no "install" phase. By default, tbe is installed
5599 ;; in the build directory. Provide our own installation.
5600 (replace 'install
5601 (lambda* (#:key outputs #:allow-other-keys)
5602 (let* ((out (assoc-ref outputs "out"))
5603 (bin (string-append out "/bin"))
5604 (share (string-append out "/share")))
5605 (install-file "usr/games/tbe" bin)
5606 (mkdir-p share)
5607 (copy-recursively "usr/share" share)
5608 #t))))
5609 ;; Test suite requires a running Xorg server. Even when
5610 ;; provided, it fails with "D-Bus library appears to be
5611 ;; incorrectly set up; failed to read machine uuid: Failed to
5612 ;; open "/etc/machine-id": No such file or directory" along
5613 ;; with multiple "QPainter:: ... Painter not active" warnings.
5614 #:tests? #f))
5615 (inputs
5616 `(("qtbase" ,qtbase)
5617 ("qtsvg" ,qtsvg)))
5618 (native-inputs
5619 `(("cmake" ,cmake-minimal)
5620 ("gettext-minimal" ,gettext-minimal)
5621 ("qttools" ,qttools)))
5622 (synopsis "Realistic physics puzzle game")
5623 (description "The Butterfly Effect (tbe) is a game that uses
5624 realistic physics simulations to combine lots of simple mechanical
5625 elements to achieve a simple goal in the most complex way possible.")
5626 (home-page "http://the-butterfly-effect.org/")
5627 ;; Main license is GPL2-only. However, artwork is distributed
5628 ;; under various licenses, listed here.
5629 (license (list license:gpl2 license:public-domain license:expat
5630 license:cc-by-sa3.0 license:gpl3+ license:wtfpl2))))
5631
5632 (define-public pioneer
5633 (package
5634 (name "pioneer")
5635 (version "20200203")
5636 (source (origin
5637 (method git-fetch)
5638 (uri (git-reference
5639 (url "https://github.com/pioneerspacesim/pioneer.git")
5640 (commit version)))
5641 (file-name (git-file-name name version))
5642 (sha256
5643 (base32
5644 "1011xsi94jhw98mhm8kryq8ajig0qfbrdx5xdasi92bd4nk7lcp8"))))
5645 (build-system cmake-build-system)
5646 (native-inputs
5647 `(("pkg-config" ,pkg-config)))
5648 (inputs
5649 `(("assimp" ,assimp)
5650 ("curl" ,curl)
5651 ("freetype" ,freetype)
5652 ("glew" ,glew)
5653 ("glu" ,glu)
5654 ("libpng" ,libpng)
5655 ("libsigc++" ,libsigc++)
5656 ("libvorbis" ,libvorbis)
5657 ("lua" ,lua-5.2) ;not compatible with 5.3
5658 ("mesa" ,mesa)
5659 ("sdl" ,(sdl-union (list sdl2 sdl2-image)))))
5660 (arguments
5661 `(#:tests? #f ;tests are broken
5662 #:configure-flags (list "-DUSE_SYSTEM_LIBLUA:BOOL=YES"
5663 (string-append "-DPIONEER_DATA_DIR="
5664 %output "/share/games/pioneer"))))
5665 (home-page "http://pioneerspacesim.net")
5666 (synopsis "Game of lonely space adventure")
5667 (description
5668 "Pioneer is a space adventure game set in our galaxy at the turn of the
5669 31st century. The game is open-ended, and you are free to eke out whatever
5670 kind of space-faring existence you can think of. Look for fame or fortune by
5671 exploring the millions of star systems. Turn to a life of crime as a pirate,
5672 smuggler or bounty hunter. Forge and break alliances with the various
5673 factions fighting for power, freedom or self-determination. The universe is
5674 whatever you make of it.")
5675 (license license:gpl3)))
5676
5677 (define-public badass
5678 (let ((commit "3c3cd669b4fc8f73a102e3702788f7b28dc47dbb")
5679 (revision "0"))
5680 (package
5681 (name "badass")
5682 (version (git-version "0.0" revision commit))
5683 (source (origin
5684 (method git-fetch)
5685 (uri (git-reference
5686 (url "https://github.com/umayr/badass.git")
5687 (commit commit)))
5688 (file-name (git-file-name name version))
5689 (sha256
5690 (base32
5691 "05c9vdcb5ym3z0n5ll3v39mw4yl9jcjnlydmn0yl89ai9pv71zb6"))))
5692 (build-system go-build-system)
5693 (arguments
5694 '(#:import-path "github.com/umayr/badass"))
5695 (synopsis "Hacking contribution graphs in git")
5696 (description
5697 "Badass generates false commits for a range of dates, essentially
5698 hacking the gamification of contribution graphs on platforms such as
5699 Github or Gitlab.")
5700 (home-page "https://github.com/umayr/badass")
5701 (license license:expat))))
5702
5703 (define-public colobot
5704 (package
5705 (name "colobot")
5706 (version "0.1.12-alpha")
5707 (source
5708 (origin
5709 (method git-fetch)
5710 (uri (git-reference
5711 (url "https://github.com/colobot/colobot.git")
5712 (commit (string-append "colobot-gold-" version))
5713 (recursive? #t))) ;for "data/" subdir
5714 (file-name (git-file-name name version))
5715 (sha256
5716 (base32
5717 "1c181cclkrnspgs07lvndg2c81cjq3smkv7qim8c470cj88rcrp2"))))
5718 (build-system cmake-build-system)
5719 (arguments
5720 `(#:tests? #f ;no test
5721 #:phases
5722 (modify-phases %standard-phases
5723 (add-after 'unpack 'make-git-checkout-writable
5724 (lambda _
5725 (for-each make-file-writable (find-files "."))
5726 #t))
5727 (add-after 'unpack 'fix-directories
5728 (lambda _
5729 (substitute* "CMakeLists.txt"
5730 (("(\\$\\{CMAKE_INSTALL_PREFIX\\})/games" _ prefix)
5731 (string-append prefix "/bin"))
5732 (("(\\$\\{CMAKE_INSTALL_PREFIX\\}/share)/games/colobot" _ prefix)
5733 (string-append prefix "/colobot")))
5734 #t))
5735 (add-after 'fix-directories 'install-music
5736 ;; Retrieve and install music files.
5737 (lambda* (#:key inputs #:allow-other-keys)
5738 ;; Installation process tries to download music files using
5739 ;; "wget" if not already present. Since we are going another
5740 ;; route, skip "wget" command check.
5741 (substitute* "data/music/CMakeLists.txt"
5742 (("find_program\\(WGET wget\\)") ""))
5743 ;; Populate "music/" directory.
5744 (let ((data (assoc-ref inputs "colobot-music")))
5745 (invoke "tar" "-xvf" data "-Cdata/music"))
5746 #t)))))
5747 (native-inputs
5748 `(("colobot-music"
5749 ,(origin
5750 (method url-fetch)
5751 (uri (string-append "https://colobot.info/files/music/"
5752 "colobot-music_ogg_" version ".tar.gz"))
5753 (sha256
5754 (base32
5755 "1s86cd36rwkff329mb1ay1wi5qqyi35564ppgr3f4qqz9wj9vs2m"))))
5756 ("gettext" ,gettext-minimal)
5757 ("librsvg" ,librsvg)
5758 ("po4a" ,po4a)
5759 ("python" ,python-wrapper)))
5760 (inputs
5761 `(("boost" ,boost)
5762 ("glew" ,glew)
5763 ("libogg" ,libogg)
5764 ("libpng" ,libpng)
5765 ("libsndfile" ,libsndfile)
5766 ("libvorbis" ,libvorbis)
5767 ("openal" ,openal)
5768 ("physfs" ,physfs)
5769 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-ttf)))))
5770 (synopsis "Educational programming strategy game")
5771 (description "Colobot: Gold Edition is a real-time strategy game, where
5772 you can program your units (bots) in a language called CBOT, which is similar
5773 to C++ and Java. Your mission is to find a new planet to live and survive.
5774 You can save humanity and get programming skills!")
5775 (home-page "https://colobot.info")
5776 (license license:gpl3+)))
5777
5778 (define-public gzdoom
5779 (package
5780 (name "gzdoom")
5781 (version "4.3.2")
5782 (source
5783 (origin
5784 (method git-fetch)
5785 (uri (git-reference
5786 (url "https://github.com/coelckers/gzdoom.git")
5787 (commit (string-append "g" version))))
5788 (file-name (git-file-name name version))
5789 (sha256
5790 (base32 "0i4hyg72z84fc6ca2ic9q82q5cbgrbd7bynl3kpkypxvyasq08wz"))
5791 (patches (search-patches "gzdoom-search-in-installed-share.patch"
5792 "gzdoom-find-system-libgme.patch"))
5793 (modules '((guix build utils)))
5794 (snippet
5795 '(begin
5796 ;; Remove some bundled libraries. XXX There are more, but removing
5797 ;; them would require, at least, patching the build system.
5798 (with-directory-excursion "libraries"
5799 (delete-file-recursively "bzip2")
5800 (delete-file-recursively "game-music-emu")
5801 (delete-file-recursively "jpeg")
5802 (delete-file-recursively "zlib"))
5803 #t))))
5804 (arguments
5805 '(#:tests? #f
5806 #:configure-flags
5807 (let ((out (assoc-ref %outputs "out")))
5808 (list
5809 (string-append
5810 "-DCMAKE_CXX_FLAGS:="
5811 "-DSHARE_DIR=\\\"" out "/share/\\\" "
5812 "-DGUIX_OUT_PK3=\\\"" out "/share/games/doom\\\"")
5813
5814 ;; The build requires some extra convincing not to use the bundled
5815 ;; libgme previously deleted in the soure snippet.
5816 "-DFORCE_INTERNAL_GME=OFF"
5817
5818 ;; Link libraries at build time instead of loading them at run time.
5819 "-DDYN_OPENAL=OFF"
5820 "-DDYN_FLUIDSYNTH=OFF"
5821 "-DDYN_GTK=OFF"
5822 "-DDYN_MPG123=OFF"
5823 "-DDYN_SNDFILE=OFF"))
5824 #:phases
5825 (modify-phases %standard-phases
5826 (add-before 'configure 'fix-referenced-paths
5827 (lambda* (#:key inputs outputs #:allow-other-keys)
5828 (let ((fluid-3 (assoc-ref inputs "fluid-3"))
5829 (timidity++ (assoc-ref inputs "timidity++"))
5830 (out (assoc-ref outputs "out")))
5831
5832 (substitute*
5833 "src/CMakeLists.txt"
5834 (("COMMAND /bin/sh")
5835 (string-append "COMMAND " (which "sh"))))
5836
5837 (substitute*
5838 "libraries/zmusic/mididevices/music_fluidsynth_mididevice.cpp"
5839 (("/usr/share/sounds/sf2/FluidR3_GM.sf2")
5840 (string-append fluid-3 "/share/soundfonts/FluidR3Mono_GM.sf3")))
5841
5842 (substitute*
5843 "libraries/zmusic/mididevices/music_timiditypp_mididevice.cpp"
5844 (("exename = \"timidity\"")
5845 (string-append "exename = \"" timidity++ "/bin/timidity\"")))
5846 #t))))))
5847 (build-system cmake-build-system)
5848 (inputs `(("bzip2" ,bzip2)
5849 ("fluid-3" ,fluid-3)
5850 ("fluidsynth" ,fluidsynth)
5851 ("gtk+3" ,gtk+)
5852 ("libgme" ,libgme)
5853 ("libjpeg" ,libjpeg)
5854 ("libsndfile" ,libsndfile)
5855 ("mesa" ,mesa)
5856 ("mpg123" ,mpg123)
5857 ("openal" ,openal)
5858 ("sdl2" ,sdl2)
5859 ("timidity++" ,timidity++)
5860 ("zlib" ,zlib)))
5861 (native-inputs `(("pkg-config" ,pkg-config)
5862 ("unzip" ,unzip)))
5863 (synopsis "Modern Doom 2 source port")
5864 (description "GZdoom is a port of the Doom 2 game engine, with a modern
5865 renderer. It improves modding support with ZDoom's advanced mapping features
5866 and the new ZScript language. In addition to Doom, it supports Heretic, Hexen,
5867 Strife, Chex Quest, and fan-created games like Harmony, Hacx and Freedoom.")
5868 (home-page "https://zdoom.org/index")
5869 ;; The source uses x86 assembly
5870 (supported-systems '("x86_64-linux" "i686-linux"))
5871 (license (list license:gpl3+ ; gzdoom game
5872 license:lgpl3+ ; gzdoom renderer
5873 license:expat ; gdtoa
5874 (license:non-copyleft ; modified dumb
5875 "file://dumb/licence.txt"
5876 "Dumb license, explicitly GPL compatible.")))))
5877
5878 (define-public odamex
5879 (package
5880 (name "odamex")
5881 (version "0.8.1")
5882 (source
5883 (origin
5884 (method url-fetch)
5885 (uri (string-append
5886 "mirror://sourceforge/odamex/Odamex/" version "/"
5887 "odamex-src-" version ".tar.gz"))
5888 (sha256
5889 (base32 "1ywbqkfacc9fc5di3dn95y5ah2ys9i241j64q3f37a73x92llw1i"))))
5890 (build-system cmake-build-system)
5891 (arguments `(#:tests? #f)) ; no tests
5892 (inputs
5893 `(("sdl" ,sdl)
5894 ("sdl-mixer" ,sdl-mixer)
5895 ("zlib" ,zlib)
5896 ("libpng" ,libpng)
5897 ("alsa-lib" ,alsa-lib)))
5898 (home-page "https://odamex.net/")
5899 (synopsis "Multiplayer Doom port")
5900 (description "Odamex is a modification of the Doom engine that
5901 allows players to easily join servers dedicated to playing Doom
5902 online.")
5903 (license license:gpl2+)))
5904
5905 (define-public chocolate-doom
5906 (package
5907 (name "chocolate-doom")
5908 (version "3.0.0")
5909 (source (origin
5910 (method url-fetch)
5911 (uri (string-append "https://www.chocolate-doom.org/downloads/"
5912 version
5913 "/chocolate-doom-"
5914 version
5915 ".tar.gz"))
5916 (sha256
5917 (base32
5918 "1f6sw6qa9z0a70dsjh5cs45fkyyxw68s7vkqlykihz8cjcisdbkk"))))
5919 (build-system gnu-build-system)
5920 (inputs `(("sdl2-net" ,sdl2-net)
5921 ("sdl2-mixer" , sdl2-mixer)
5922 ("sdl2" ,sdl2)))
5923 (native-inputs
5924 `(("pkg-config" ,pkg-config)))
5925 (synopsis "Doom source port preserving the look, feel, and bugs of vanilla
5926 Doom")
5927 (description
5928 "Chocolate Doom takes a different approach to other source ports. Its
5929 aim is to accurately reproduce the experience of playing Vanilla Doom. It is
5930 a conservative, historically accurate Doom source port, which is compatible
5931 with the thousands of mods and levels that were made before the Doom source
5932 code was released. Rather than flashy new graphics, Chocolate Doom's main
5933 features are its accurate reproduction of the game as it was played in the
5934 1990s. The project is developed around a carefully-considered philosophy that
5935 intentionally restricts which features may be added (and rejects any that
5936 affect gameplay).")
5937 (home-page "https://www.chocolate-doom.org/wiki/index.php/Chocolate_Doom")
5938 (license license:gpl2)))
5939
5940 (define-public crispy-doom
5941 (package
5942 (inherit chocolate-doom)
5943 (name "crispy-doom")
5944 (version "5.7.1")
5945 (source (origin
5946 (method git-fetch)
5947 (uri (git-reference
5948 (url "https://github.com/fabiangreffrath/crispy-doom.git")
5949 (commit (string-append "crispy-doom-" version))))
5950 (file-name (git-file-name name version))
5951 (sha256
5952 (base32 "1gqivy4pxasy7phyznixsagylf9f70bk33b0knpfzzlks6cc6zzj"))))
5953 (native-inputs
5954 (append
5955 (package-native-inputs chocolate-doom)
5956 `(("automake" ,automake)
5957 ("autoreconf" ,autoconf))))
5958 (arguments
5959 `(#:phases
5960 (modify-phases %standard-phases
5961 (replace 'bootstrap
5962 ;; The bundled autogen.sh script unconditionally runs ./configure.
5963 (lambda _ (invoke "autoreconf" "-vif"))))))
5964 (synopsis "Limit-removing enhanced-resolution Doom source port based on
5965 Chocolate Doom")
5966 (description
5967 "Crispy Doom is a friendly fork of Chocolate Doom that provides a higher
5968 display resolution, removes the static limits of the Doom engine and offers
5969 further optional visual, tactical and physical enhancements while remaining
5970 entirely config file, savegame, netplay and demo compatible with the
5971 original.")
5972 (home-page "https://www.chocolate-doom.org/wiki/index.php/Crispy_Doom")))
5973
5974 (define shlomif-cmake-modules
5975 (origin
5976 (method url-fetch)
5977 (uri (string-append "https://bitbucket.org/shlomif/shlomif-cmake-modules/"
5978 "raw/c505713d7a7cda608f97f01577e5868a711b883e/"
5979 "shlomif-cmake-modules/Shlomif_Common.cmake"))
5980 (sha256
5981 (base32 "0kx9s1qqhhzprp1w3b67xmsns0n0v506bg5hgrshxaxpy6lqiwb2"))))
5982
5983 (define-public rinutils
5984 (package
5985 (name "rinutils")
5986 (version "0.2.0")
5987 (source (origin
5988 (method git-fetch)
5989 (uri (git-reference
5990 (url "https://github.com/shlomif/rinutils.git")
5991 (commit version)))
5992 (file-name (git-file-name name version))
5993 (sha256
5994 (base32
5995 "1fpxyg86ggv0h7j8aarjjxrvwlj7jycd3bw066c0dwkq2fszxsf2"))))
5996 (native-inputs
5997 `(("perl" ,perl)
5998 ;; The following is only needed for tests.
5999 ("perl-file-find-object" ,perl-file-find-object)
6000 ("perl-test-differences" ,perl-test-differences)
6001 ("perl-class-xsaccessor" ,perl-class-xsaccessor)
6002 ("perl-io-all" ,perl-io-all)
6003 ("perl-test-runvalgrind" ,perl-test-runvalgrind)
6004 ("cmake-rules" ,shlomif-cmake-modules)
6005 ("pkg-config" ,pkg-config)))
6006 (inputs
6007 `(("cmocka" ,cmocka)
6008 ("perl-env-path", perl-env-path)
6009 ("perl-inline" ,perl-inline)
6010 ("perl-inline-c" ,perl-inline-c)
6011 ("perl-string-shellquote" ,perl-string-shellquote)
6012 ("perl-test-trailingspace" ,perl-test-trailingspace)
6013 ("perl-file-find-object-rule" ,perl-file-find-object-rule)
6014 ("perl-text-glob" ,perl-text-glob)
6015 ("perl-number-compare" ,perl-number-compare)
6016 ("perl-moo" ,perl-moo)))
6017 (arguments
6018 `(#:phases
6019 (modify-phases %standard-phases
6020 (add-after 'unpack 'fix-build-env
6021 (lambda* (#:key inputs #:allow-other-keys)
6022 (use-modules (guix build utils))
6023 (let* ((cmake-rules (assoc-ref inputs "cmake-rules")))
6024 (copy-file cmake-rules
6025 (string-append "cmake/"
6026 (strip-store-file-name cmake-rules)))
6027 #t)))
6028 (replace 'check
6029 (lambda _
6030 (with-directory-excursion "../source"
6031 (setenv "FCS_TEST_BUILD" "1")
6032 (setenv "RINUTILS_TEST_BUILD" "1")
6033 ;; TODO: Run tests after setting RINUTILS_TEST_TIDY to `1',
6034 ;; which requires tidy-all.
6035 ;; (setenv "RINUTILS_TEST_TIDY" "1")
6036 (invoke "perl" "CI-testing/continuous-integration-testing.pl")))))))
6037 (build-system cmake-build-system)
6038 (home-page "https://www.shlomifish.org/open-source/projects/")
6039 (synopsis "C11 / gnu11 utilities C library")
6040 (description "This package provides C11 / gnu11 utilities C library")
6041 (license license:expat)))
6042
6043 (define-public fortune-mod
6044 (package
6045 (name "fortune-mod")
6046 (version "2.12.0")
6047 (source
6048 (origin
6049 (method git-fetch)
6050 (uri (git-reference
6051 (url "https://github.com/shlomif/fortune-mod")
6052 (commit (string-append "fortune-mod-" version))))
6053 (file-name (git-file-name name version))
6054 (sha256
6055 (base32
6056 "0laxgqsdg7kvpvvm1f54b94ga9r0cr9g3ffii8avg8fy65x6pzc9"))))
6057 (build-system cmake-build-system)
6058 (arguments
6059 `(#:test-target "check"
6060 #:phases
6061 (modify-phases %standard-phases
6062 (add-after 'unpack 'fix-build-env
6063 (lambda* (#:key inputs #:allow-other-keys)
6064 (use-modules (guix build utils))
6065 (let* ((cmake-rules (assoc-ref inputs "cmake-rules")))
6066 (copy-file cmake-rules
6067 (string-append "fortune-mod/cmake/"
6068 (strip-store-file-name cmake-rules)))
6069 (chdir "fortune-mod")
6070 ;; TODO: Valgrind tests fail for some reason.
6071 ;; Similar issue: https://github.com/shlomif/fortune-mod/issues/21 (?)
6072 (delete-file "tests/t/valgrind.t")
6073 #t)))
6074 (add-after 'install 'fix-install-directory
6075 (lambda* (#:key outputs #:allow-other-keys)
6076 ;; Move binary from "games/" to "bin/" and remove the latter. This
6077 ;; is easier than patching CMakeLists.txt since the tests hard-code
6078 ;; the location as well.
6079 (let* ((out (assoc-ref outputs "out"))
6080 (bin (string-append out "/bin"))
6081 (games (string-append out "/games")))
6082 (rename-file (string-append games "/fortune")
6083 (string-append bin "/fortune"))
6084 (rmdir games)
6085 #t))))))
6086 (inputs `(("recode" ,recode)))
6087 (native-inputs
6088 `(("perl" ,perl)
6089 ;; The following is only needed for tests.
6090 ("perl-file-find-object" ,perl-file-find-object)
6091 ("perl-test-differences" ,perl-test-differences)
6092 ("perl-class-xsaccessor" ,perl-class-xsaccessor)
6093 ("perl-io-all" ,perl-io-all)
6094 ("perl-test-runvalgrind" ,perl-test-runvalgrind)
6095 ("cmake-rules" ,shlomif-cmake-modules)
6096 ("rinutils" ,rinutils)))
6097 (home-page "http://www.shlomifish.org/open-source/projects/fortune-mod/")
6098 (synopsis "The Fortune Cookie program from BSD games")
6099 (description "Fortune is a command-line utility which displays a random
6100 quotation from a collection of quotes.")
6101 (license license:bsd-4)))
6102
6103 (define xonotic-data
6104 (package
6105 (name "xonotic-data")
6106 (version "0.8.2")
6107 (source
6108 (origin
6109 (method url-fetch)
6110 (uri (string-append "http://dl.xonotic.org/xonotic-"
6111 version ".zip"))
6112 (file-name (string-append name "-" version ".zip"))
6113 (sha256
6114 (base32
6115 "1mcs6l4clvn7ibfq3q69k2p0z6ww75rxvnngamdq5ic6yhq74bx2"))))
6116 (build-system trivial-build-system)
6117 (native-inputs
6118 `(("unzip" ,unzip)))
6119 (arguments
6120 `(#:modules ((guix build utils))
6121 #:builder
6122 (begin
6123 (use-modules (guix build utils))
6124 (let* ((out (assoc-ref %outputs "out"))
6125 (xonotic (string-append out "/share/xonotic"))
6126 (source (assoc-ref %build-inputs "source"))
6127 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
6128 (copy-file source (string-append ,name "-" ,version ".zip"))
6129 (invoke unzip (string-append ,name "-" ,version ".zip"))
6130 (mkdir-p out)
6131 (mkdir-p xonotic)
6132 (chdir "Xonotic")
6133 (copy-recursively "data"
6134 (string-append xonotic "/data"))
6135 (copy-recursively "server"
6136 (string-append xonotic "/server"))
6137 (install-file "key_0.d0pk" xonotic)))))
6138 (home-page "http://xonotic.org")
6139 (synopsis "Data files for Xonotic")
6140 (description
6141 "Xonotic-data provides the data files required by the game Xonotic.")
6142 (license (list license:gpl2+
6143 (license:x11-style "file://server/rcon.pl")))))
6144
6145 (define-public xonotic
6146 (package
6147 (name "xonotic")
6148 (version "0.8.2")
6149 (source
6150 (origin
6151 (method url-fetch)
6152 (uri (string-append "http://dl.xonotic.org/xonotic-"
6153 version "-source.zip"))
6154 (file-name (string-append name "-" version ".zip"))
6155 (sha256
6156 (base32
6157 "0axxw04fyz6jlfqd0kp7hdrqa0li31sx1pbipf2j5qp9wvqicsay"))))
6158 (build-system gnu-build-system)
6159 (arguments
6160 `(#:configure-flags (list (string-append "--prefix="
6161 (assoc-ref %outputs "out"))
6162 "--disable-rijndael")
6163 #:phases
6164 (modify-phases %standard-phases
6165 (add-before 'configure 'make-darkplaces
6166 (lambda* (#:key outputs #:allow-other-keys)
6167 (let* ((out (assoc-ref outputs "out"))
6168 (sharedir (string-append out "/share/xonotic/")))
6169 (invoke "make" "-C" "source/darkplaces"
6170 (string-append "DP_FS_BASEDIR="
6171 sharedir)
6172 "DP_LINK_TO_LIBJPEG=1"
6173 "DP_SOUND_API=ALSA"
6174 "CC=gcc"
6175 "-f" "makefile"
6176 "cl-release")
6177 (invoke "make" "-C" "source/darkplaces"
6178 (string-append "DP_FS_BASEDIR="
6179 sharedir)
6180 "DP_LINK_TO_LIBJPEG=1"
6181 "DP_SOUND_API=ALSA"
6182 "CC=gcc"
6183 "-f" "makefile"
6184 "sdl-release")
6185 (invoke "make" "-C" "source/darkplaces"
6186 (string-append "DP_FS_BASEDIR="
6187 sharedir)
6188 "DP_LINK_TO_LIBJPEG=1"
6189 "DP_SOUND_API=ALSA"
6190 "CC=gcc"
6191 "-f" "makefile"
6192 "sv-release"))))
6193 (add-before 'configure 'bootstrap
6194 (lambda _
6195 (chdir "source/d0_blind_id")
6196 (invoke "sh" "autogen.sh")))
6197 (add-after 'build 'install-desktop-entry
6198 (lambda* (#:key outputs #:allow-other-keys)
6199 ;; Add .desktop files for the 2 variants and the symlink
6200 (let* ((output (assoc-ref outputs "out"))
6201 (apps (string-append output "/share/applications")))
6202 (mkdir-p apps)
6203 (with-output-to-file
6204 (string-append apps "/xonotic-glx.desktop")
6205 (lambda _
6206 (format #t
6207 "[Desktop Entry]~@
6208 Name=xonotic-glx~@
6209 Comment=Xonotic glx~@
6210 Exec=~a/bin/xonotic-glx~@
6211 TryExec=~@*~a/bin/xonotic-glx~@
6212 Icon=xonotic~@
6213 Categories=Game~@
6214 Type=Application~%"
6215 output)))
6216 (with-output-to-file
6217 (string-append apps "/xonotic-sdl.desktop")
6218 (lambda _
6219 (format #t
6220 "[Desktop Entry]~@
6221 Name=xonotic-sdl~@
6222 Comment=Xonotic sdl~@
6223 Exec=~a/bin/xonotic-sdl~@
6224 TryExec=~@*~a/bin/xonotic-sdl~@
6225 Icon=xonotic~@
6226 Categories=Game~@
6227 Type=Application~%"
6228 output)))
6229 (with-output-to-file
6230 (string-append apps "/xonotic.desktop")
6231 (lambda _
6232 (format #t
6233 "[Desktop Entry]~@
6234 Name=xonotic~@
6235 Comment=Xonotic~@
6236 Exec=~a/bin/xonotic-glx~@
6237 TryExec=~@*~a/bin/xonotic~@
6238 Icon=xonotic~@
6239 Categories=Game~@
6240 Type=Application~%"
6241 output)))
6242 #t)))
6243 (add-after 'install-desktop-entry 'install-icons
6244 (lambda* (#:key outputs #:allow-other-keys)
6245 (let ((out (assoc-ref outputs "out")))
6246 (with-directory-excursion "../../misc/logos/icons_png/"
6247 (for-each
6248 (lambda (file)
6249 (let* ((size (string-filter char-numeric? file))
6250 (icons (string-append out "/share/icons/hicolor/"
6251 size "x" size "/apps")))
6252 (mkdir-p icons)
6253 (copy-file file (string-append icons "/xonotic.png"))))
6254 '("xonotic_16.png" "xonotic_22.png" "xonotic_24.png"
6255 "xonotic_32.png" "xonotic_48.png" "xonotic_64.png"
6256 "xonotic_128.png" "xonotic_256.png" "xonotic_512.png"))))))
6257 (add-after 'install-icons 'install-binaries
6258 (lambda* (#:key outputs #:allow-other-keys)
6259 (let ((out (assoc-ref outputs "out")))
6260 (define (install src dst)
6261 (let ((dst (string-append out dst)))
6262 (mkdir-p (dirname dst))
6263 (copy-file src dst)))
6264 (mkdir-p (string-append out "/bin"))
6265 (install "../darkplaces/darkplaces-dedicated"
6266 "/bin/xonotic-dedicated")
6267 (install "../darkplaces/darkplaces-glx"
6268 "/bin/xonotic-glx")
6269 (install "../darkplaces/darkplaces-sdl"
6270 "/bin/xonotic-sdl")
6271 ;; Provide a default xonotic executable, defaulting to SDL.
6272 (symlink (string-append out "/bin/xonotic-sdl")
6273 (string-append out "/bin/xonotic"))
6274 #t)))
6275 (add-after 'install-binaries 'install-data
6276 (lambda* (#:key outputs inputs #:allow-other-keys)
6277 (let* ((out (assoc-ref outputs "out"))
6278 (data (assoc-ref inputs "xonotic-data")))
6279 (symlink (string-append data "/share/xonotic")
6280 (string-append out "/share/xonotic"))
6281 #t)))
6282 (add-after 'install-binaries 'wrap-binaries
6283 (lambda* (#:key outputs inputs #:allow-other-keys)
6284 ;; Curl and libvorbis need to be wrapped so that we get
6285 ;; sound and networking.
6286 (let* ((out (assoc-ref outputs "out"))
6287 (bin (string-append out "/bin/xonotic"))
6288 (bin-sdl (string-append out "/bin/xonotic-sdl"))
6289 (bin-glx (string-append out "/bin/xonotic-glx"))
6290 (bin-dedicated (string-append out "/bin/xonotic-dedicated"))
6291 (curl (assoc-ref inputs "curl"))
6292 (vorbis (assoc-ref inputs "libvorbis")))
6293 (wrap-program bin
6294 `("LD_LIBRARY_PATH" ":" prefix
6295 (,(string-append curl "/lib:" vorbis "/lib"))))
6296 (wrap-program bin-sdl
6297 `("LD_LIBRARY_PATH" ":" prefix
6298 (,(string-append curl "/lib:" vorbis "/lib"))))
6299 (wrap-program bin-glx
6300 `("LD_LIBRARY_PATH" ":" prefix
6301 (,(string-append curl "/lib:" vorbis "/lib"))))
6302 (wrap-program bin-dedicated
6303 `("LD_LIBRARY_PATH" ":" prefix
6304 (,(string-append curl "/lib:" vorbis "/lib"))))
6305 #t))))))
6306 (inputs
6307 `(("xonotic-data" ,xonotic-data)
6308 ("alsa-lib" ,alsa-lib)
6309 ("curl" ,curl)
6310 ("libjpeg" ,libjpeg)
6311 ("libmodplug" ,libmodplug)
6312 ("libvorbis" ,libvorbis)
6313 ("libogg" ,libogg)
6314 ("libxpm" ,libxpm)
6315 ("libxxf86dga" ,libxxf86dga)
6316 ("libxxf86vm" ,libxxf86vm)
6317 ("libx11" ,libx11)
6318 ("libxext" ,libxext)
6319 ("libxau" ,libxau)
6320 ("libxdmcp" ,libxdmcp)
6321 ("mesa" ,mesa)
6322 ("glu" ,glu)
6323 ("freetype" ,freetype)
6324 ("sdl2" ,sdl2)
6325 ("libpng" ,libpng)
6326 ("hicolor-icon-theme" ,hicolor-icon-theme)))
6327 (native-inputs
6328 `(("unzip" ,unzip)
6329 ("autoconf" ,autoconf)
6330 ("automake" ,automake)
6331 ("pkg-config" ,pkg-config)
6332 ("libtool" ,libtool)
6333 ("gmp" ,gmp)))
6334 (home-page "http://xonotic.org")
6335 (synopsis "Fast-paced first-person shooter game")
6336 (description
6337 "Xonotic is a free, fast-paced first-person shooter.
6338 The project is geared towards providing addictive arena shooter
6339 gameplay which is all spawned and driven by the community itself.
6340 Xonotic is a direct successor of the Nexuiz project with years of
6341 development between them, and it aims to become the best possible
6342 open-source FPS of its kind.")
6343 (license (list license:gpl2+
6344 license:bsd-3 ; /source/d0_blind_id folder and others
6345 (license:x11-style "" "See file rcon.pl.")))))
6346
6347 (define-public frotz
6348 (package
6349 (name "frotz")
6350 (version "2.44")
6351 (source (origin
6352 (method url-fetch)
6353 (uri (list (string-append
6354 "http://www.ifarchive.org/if-archive/infocom/interpreters/"
6355 "frotz/frotz-" version ".tar.gz")
6356 (string-append
6357 "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
6358 "frotz/frotz-" version ".tar.gz")))
6359 (sha256
6360 (base32
6361 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
6362 (build-system gnu-build-system)
6363 (arguments
6364 `(#:tests? #f ; there are no tests
6365 #:phases
6366 (modify-phases %standard-phases
6367 (delete 'configure)
6368 (add-before 'build 'curses
6369 (lambda _
6370 (substitute* "Makefile"
6371 (("lcurses") "lncurses"))
6372 #t))
6373 (replace 'install
6374 (lambda* (#:key outputs #:allow-other-keys)
6375 (let* ((out (assoc-ref outputs "out"))
6376 (bin (string-append out "/bin"))
6377 (man (string-append out "/share/man/man6")))
6378 (install-file "frotz" bin)
6379 (mkdir-p man)
6380 (install-file "doc/frotz.6" man)
6381 #t))))))
6382 (inputs `(("libmodplug" ,libmodplug)
6383 ("libsamplerate" ,libsamplerate)
6384 ("libsndfile" ,libsndfile)
6385 ("libvorbis" ,libvorbis)
6386 ("ncurses" ,ncurses)))
6387 (synopsis "Portable Z-machine interpreter (ncurses version) for text adventure games")
6388 (description "Frotz is an interpreter for Infocom games and other Z-machine
6389 games in the text adventure/interactive fiction genre. This version of Frotz
6390 complies with standard 1.0 of Graham Nelson's specification. It plays all
6391 Z-code games V1-V8, including V6, with sound support through libao, and uses
6392 ncurses for text display.")
6393 (home-page "http://frotz.sourceforge.net")
6394 (license license:gpl2+)))
6395
6396 (define-public frotz-dumb-terminal
6397 (package
6398 (name "frotz-dumb-terminal")
6399 (version "2.44")
6400 (source (origin
6401 (method url-fetch)
6402 (uri (list (string-append
6403 "http://www.ifarchive.org/if-archive/infocom/interpreters/"
6404 "frotz/frotz-" version ".tar.gz")
6405 (string-append
6406 "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
6407 "frotz/frotz-" version ".tar.gz")))
6408 (sha256
6409 (base32
6410 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
6411 (build-system gnu-build-system)
6412 (arguments
6413 `(#:tests? #f ; there are no tests
6414 #:phases
6415 (modify-phases %standard-phases
6416 (delete 'configure)
6417 (replace 'build
6418 (lambda _
6419 (invoke "make" "dumb")))
6420 (replace 'install
6421 (lambda* (#:key outputs #:allow-other-keys)
6422 (let* ((out (assoc-ref outputs "out"))
6423 (bin (string-append out "/bin"))
6424 (man (string-append out "/share/man/man6")))
6425 (install-file "dfrotz" bin)
6426 (mkdir-p man)
6427 (install-file "doc/dfrotz.6" man)
6428 #t))))))
6429 (synopsis "Portable Z-machine dumb interpreter for text adventure games")
6430 (description "Frotz is an interpreter for Infocom games and
6431 other Z-machine games in the text adventure/interactive fiction genre.
6432 dfrotz is the dumb interface version. You get no screen control; everything
6433 is just printed to the terminal line by line. The terminal handles all the
6434 scrolling. Maybe you'd like to experience what it's like to play Adventure on
6435 a teletype. A much cooler use for compiling Frotz with the dumb interface is
6436 that it can be wrapped in CGI scripting, PHP, and the like to allow people
6437 to play games on webpages. It can also be made into a chat bot.")
6438 (home-page "http://frotz.sourceforge.net")
6439 (license license:gpl2+)))
6440
6441 (define-public frotz-sdl
6442 (let* ((commit "4de8c34f2116fff554af6216c30ec9d41bf50b24"))
6443 (package
6444 (name "frotz-sdl")
6445 (version "2.45pre")
6446 (source (origin
6447 (method git-fetch)
6448 (uri (git-reference
6449 (url "https://gitlab.com/DavidGriffith/frotz")
6450 (commit commit)))
6451 (sha256
6452 (base32
6453 "18ms21pcrl7ipcnyqnf8janamkryzx78frsgd9kfk67jvbj0z2k8"))
6454 (file-name (git-file-name name version))))
6455 (build-system gnu-build-system)
6456 (arguments
6457 `(#:tests? #f ; there are no tests
6458 #:phases
6459 (modify-phases %standard-phases
6460 (delete 'configure)
6461 (add-before 'build 'patch-makefile
6462 (lambda _
6463 (substitute* "Makefile"
6464 (("lcurses") "lncurses")
6465 (("^BUILD_DATE_TIME =.*$")
6466 "BUILD_DATE_TIME = \"2.45pre-20180907.00000\"\n"))
6467 #t))
6468 (replace 'build
6469 (lambda _
6470 (invoke "make" "sdl")))
6471 (replace 'install
6472 (lambda* (#:key outputs #:allow-other-keys)
6473 (let* ((out (assoc-ref outputs "out"))
6474 (bin (string-append out "/bin"))
6475 (man (string-append out "/share/man/man6")))
6476 (install-file "sfrotz" bin)
6477 (mkdir-p man)
6478 (install-file "doc/sfrotz.6" man)
6479 #t))))))
6480 (native-inputs
6481 `(("pkg-config" ,pkg-config)
6482 ("which" ,which)
6483 ("perl" ,perl)))
6484 (inputs `(("sdl2" ,sdl2)
6485 ("sdl2-mixer" ,sdl2-mixer)
6486 ("libmodplug" ,libmodplug)
6487 ("libsamplerate" ,libsamplerate)
6488 ("libsndfile" ,libsndfile)
6489 ("libvorbis" ,libvorbis)
6490 ("ncurses" ,ncurses)
6491 ("freetype" ,freetype)
6492 ("libjpeg-turbo" ,libjpeg-turbo)))
6493 (synopsis "Portable Z-machine interpreter (SDL port) for text adventure games")
6494 (description "Frotz is an interpreter for Infocom games and other Z-machine
6495 games in the text adventure/interactive fiction genre. This version of Frotz
6496 using SDL fully supports all these versions of the Z-Machine including the
6497 graphical version 6. Graphics and sound are created through the use of the SDL
6498 libraries. AIFF sound effects and music in MOD and OGG formats are supported
6499 when packaged in Blorb container files or optionally from individual files.")
6500 (home-page "http://frotz.sourceforge.net")
6501 (license license:gpl2+))))
6502
6503 (define-public libmanette
6504 (package
6505 (name "libmanette")
6506 (version "0.2.3")
6507 (source (origin
6508 (method url-fetch)
6509 (uri (string-append "mirror://gnome/sources/libmanette/"
6510 (version-major+minor version) "/"
6511 "libmanette-" version ".tar.xz"))
6512 (sha256
6513 (base32
6514 "1zxh7jn2zg7hivmal5zxam6fxvjsd1w6hlw0m2kysk76b8anbw60"))))
6515 (build-system meson-build-system)
6516 (native-inputs
6517 `(("glib" ,glib "bin") ; for glib-compile-resources
6518 ("gobject-introspection" ,gobject-introspection)
6519 ("pkg-config" ,pkg-config)
6520 ("vala" ,vala)))
6521 (inputs
6522 `(("libevdev" ,libevdev)
6523 ("libgudev" ,libgudev)))
6524 (home-page "https://wiki.gnome.org/Apps/Games")
6525 (synopsis "Game controller library")
6526 (description "Libmanette is a small GObject library giving you simple
6527 access to game controllers. It supports the de-facto standard gamepads as
6528 defined by the W3C standard Gamepad specification or as implemented by the SDL
6529 GameController.")
6530 (license license:lgpl2.1+)))
6531
6532 (define-public quadrapassel
6533 (package
6534 (name "quadrapassel")
6535 (version "3.32.0")
6536 (source (origin
6537 (method url-fetch)
6538 (uri (string-append "mirror://gnome/sources/quadrapassel/"
6539 (version-major+minor version) "/"
6540 "quadrapassel-" version ".tar.xz"))
6541 (sha256
6542 (base32
6543 "1zhi1957knz9dm98drn2dh95mr33sdch590yddh1f8r6bzsfjvpy"))))
6544 (build-system meson-build-system)
6545 (arguments
6546 '(#:glib-or-gtk? #t
6547 #:phases
6548 (modify-phases %standard-phases
6549 (add-after 'unpack 'skip-gtk-update-icon-cache
6550 ;; Don't create 'icon-theme.cache'.
6551 (lambda _
6552 (substitute* "build-aux/meson_post_install.py"
6553 (("gtk-update-icon-cache") (which "true")))
6554 #t)))))
6555 (native-inputs
6556 `(("desktop-file-utils" ,desktop-file-utils) ;for desktop-file-validate
6557 ("gettext" ,gnu-gettext)
6558 ("glib" ,glib "bin") ;for glib-compile-resources
6559 ("itstool" ,itstool)
6560 ("libxml2" ,libxml2) ;for xmllint
6561 ("pkg-config" ,pkg-config)
6562 ("vala" ,vala)))
6563 (inputs
6564 `(("clutter" ,clutter)
6565 ("clutter-gtk" ,clutter-gtk)
6566 ("gtk+" ,gtk+)
6567 ("libcanberra" ,libcanberra)
6568 ("libmanette" ,libmanette)
6569 ("librsvg" ,librsvg)))
6570 (home-page "https://wiki.gnome.org/Apps/Quadrapassel")
6571 (synopsis "GNOME version of Tetris")
6572 (description "Quadrapassel comes from the classic falling-block game,
6573 Tetris. The goal of the game is to create complete horizontal lines of
6574 blocks, which will disappear. The blocks come in seven different shapes made
6575 from four blocks each: one straight, two L-shaped, one square, and two
6576 S-shaped. The blocks fall from the top center of the screen in a random
6577 order. You rotate the blocks and move them across the screen to drop them in
6578 complete lines. You score by dropping blocks fast and completing lines. As
6579 your score gets higher, you level up and the blocks fall faster.")
6580 (license license:gpl2+)))
6581
6582 (define-public endless-sky
6583 (package
6584 (name "endless-sky")
6585 (version "0.9.10")
6586 (source
6587 (origin
6588 (method git-fetch)
6589 (uri (git-reference
6590 (url "https://github.com/endless-sky/endless-sky")
6591 (commit (string-append "v" version))))
6592 (file-name (git-file-name name version))
6593 (sha256
6594 (base32
6595 "1wax9qhxakydg6bs92d1jy2fki1n9r0wkps1np02y0pvm1fl189i"))))
6596 (build-system scons-build-system)
6597 (arguments
6598 `(#:scons ,scons-python2
6599 #:scons-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
6600 #:tests? #f ; no tests
6601 #:phases
6602 (modify-phases %standard-phases
6603 (add-after 'unpack 'patch-resource-locations
6604 (lambda* (#:key outputs #:allow-other-keys)
6605 (substitute* "source/Files.cpp"
6606 (("/usr/local/")
6607 (string-append (assoc-ref outputs "out") "/")))
6608 #t))
6609 (add-after 'unpack 'patch-scons
6610 (lambda _
6611 (substitute* "SConstruct"
6612 ;; Keep environmental variables
6613 (("Environment\\(\\)")
6614 "Environment(ENV = os.environ)")
6615 ;; Install into %out/bin
6616 (("games\"") "bin\""))
6617 #t)))))
6618 (inputs
6619 `(("glew" ,glew)
6620 ("libjpeg" ,libjpeg-turbo)
6621 ("libmad" ,libmad)
6622 ("libpng" ,libpng)
6623 ("openal" ,openal)
6624 ("sdl2" ,sdl2)))
6625 (home-page "https://endless-sky.github.io/")
6626 (synopsis "2D space trading and combat game")
6627 (description "Endless Sky is a 2D space trading and combat game. Explore
6628 other star systems. Earn money by trading, carrying passengers, or completing
6629 missions. Use your earnings to buy a better ship or to upgrade the weapons and
6630 engines on your current one. Blow up pirates. Take sides in a civil war. Or
6631 leave human space behind and hope to find friendly aliens whose culture is more
6632 civilized than your own.")
6633 (license (list license:gpl3+
6634 license:cc-by-sa3.0
6635 license:cc-by-sa4.0
6636 license:public-domain))))
6637
6638 (define-public stepmania
6639 (package
6640 (name "stepmania")
6641 (version "5.1.0-b2")
6642 (source
6643 (origin
6644 (method git-fetch)
6645 (uri (git-reference
6646 (url "https://github.com/stepmania/stepmania.git")
6647 (commit (string-append "v" version))))
6648 (file-name (git-file-name name version))
6649 (sha256
6650 (base32
6651 "0a7y9l7xm510vgnpmj1is7p9m6d6yd0fcaxrjcickz295k5w3rdn"))
6652 (modules '((guix build utils)))
6653 (snippet
6654 '(begin
6655 ;; Remove song files, which are licensed under a non-commercial
6656 ;; clause, and a course pointing to them.
6657 (for-each delete-file-recursively
6658 '("Songs/StepMania 5/Goin' Under"
6659 "Songs/StepMania 5/MechaTribe Assault"
6660 "Songs/StepMania 5/Springtime"))
6661 (for-each delete-file '("Courses/Default/Jupiter.crs"
6662 "Courses/Default/Jupiter.png"))
6663 ;; Unbundle libpng.
6664 (substitute* "extern/CMakeLists.txt"
6665 (("include\\(CMakeProject-png.cmake\\)") ""))
6666 (delete-file-recursively "extern/libpng")
6667 #t))))
6668 (build-system cmake-build-system)
6669 (arguments
6670 `(#:tests? #f ;FIXME: couldn't find how to run tests
6671 #:build-type "Release"
6672 #:out-of-source? #f ;for the 'install-desktop' phase
6673 #:configure-flags
6674 (list "-DWITH_SYSTEM_FFMPEG=1"
6675 ;; SSE instructions are available on Intel systems only.
6676 ,@(if (any (cute string-prefix? <> (or (%current-target-system)
6677 (%current-system)))
6678 '("x64_64" "i686"))
6679 '()
6680 '("-DWITH_SSE2=NO"))
6681 ;; Configuration cannot find GTK2 without the two following
6682 ;; flags.
6683 (string-append "-DGTK2_GDKCONFIG_INCLUDE_DIR="
6684 (assoc-ref %build-inputs "gtk+")
6685 "/lib/gtk-2.0/include")
6686 (string-append "-DGTK2_GLIBCONFIG_INCLUDE_DIR="
6687 (assoc-ref %build-inputs "glib")
6688 "/lib/glib-2.0/include"))
6689 #:phases
6690 (modify-phases %standard-phases
6691 (add-after 'unpack 'ensure-application-files-can-be-found
6692 (lambda* (#:key outputs #:allow-other-keys)
6693 (let ((out (assoc-ref outputs "out")))
6694 (substitute* "src/arch/LoadingWindow/LoadingWindow_Gtk.cpp"
6695 (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\" \\+ \"GtkModule.so\"")
6696 (string-append "\"" out
6697 "/share/stepmania/GtkModule.so\"")))
6698 (substitute* "src/arch/ArchHooks/ArchHooks_Unix.cpp"
6699 (("Root = sDirOfExecutable")
6700 (string-append "Root = \"" out "/share/stepmania/\""))
6701 (("sDirOfExecutable \\+ \"/(Packages|Songs)\"" _ dir)
6702 (string-append "\"" out "/share/stepmania/" dir "\"")))
6703 (substitute* "src/RageFileManager.cpp"
6704 (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\"")
6705 (string-append "\"" out "/share/stepmania/\""))))
6706 #t))
6707 (add-after 'unpack 'fix-install-subdir
6708 ;; Installation would be done in "%out/stepmania-X.Y", but we
6709 ;; prefer the more common layout "%out/share/stepmania".
6710 (lambda _
6711 (substitute* "src/CMakeLists.txt"
6712 (("\"stepmania-.*?\"") "\"share/stepmania\""))
6713 #t))
6714 (add-after 'unpack 'unbundle-libpng
6715 (lambda* (#:key inputs #:allow-other-keys)
6716 (substitute* "src/CMakeLists.txt"
6717 (("\\$\\{SM_EXTERN_DIR\\}/libpng/include")
6718 (string-append (assoc-ref inputs "libpng") "/include")))
6719 #t))
6720 (add-after 'install 'install-executable
6721 (lambda* (#:key outputs #:allow-other-keys)
6722 (let* ((out (assoc-ref outputs "out"))
6723 (bin (string-append out "/bin"))
6724 (exe (string-append out "/share/stepmania/stepmania")))
6725 (mkdir-p bin)
6726 (symlink exe (string-append bin "/stepmania"))
6727 #t)))
6728 (add-after 'install-executable 'install-desktop
6729 (lambda* (#:key outputs #:allow-other-keys)
6730 (let* ((out (assoc-ref outputs "out"))
6731 (share (string-append out "/share"))
6732 (applications (string-append share "/applications"))
6733 (icons (string-append share "/icons")))
6734 (install-file "stepmania.desktop" applications)
6735 (mkdir-p icons)
6736 (copy-recursively "icons" icons)
6737 #t)))
6738 ;; Move documentation in a more usual place, i.e.,
6739 ;; "%out/share/doc/stepmania/".
6740 (add-after 'install-desktop 'install-doc
6741 (lambda* (#:key outputs #:allow-other-keys)
6742 (let* ((out (assoc-ref outputs "out"))
6743 (share (string-append out "/share")))
6744 (with-directory-excursion share
6745 (mkdir-p "doc")
6746 (symlink "../stepmania/Docs" "doc/stepmania"))
6747 #t))))))
6748 (native-inputs
6749 `(("pkg-config" ,pkg-config)
6750 ("yasm" ,yasm)))
6751 (inputs
6752 `(("alsa-lib" ,alsa-lib)
6753 ;; Per upstream, StepMania is only guaranteed to work with a very
6754 ;; specific FFmpeg version, which is included in the repository as
6755 ;; a Git submodule. This particular version requirement usually
6756 ;; changes every few years.
6757 ("ffmpeg" ,ffmpeg-for-stepmania)
6758 ("glib" ,glib)
6759 ("glew" ,glew)
6760 ("gtk+" ,gtk+-2)
6761 ("jsoncpp" ,jsoncpp)
6762 ("libpng" ,libpng)
6763 ("libjpeg" ,libjpeg-turbo)
6764 ("libmad" ,libmad)
6765 ("libogg" ,libogg)
6766 ("libva" ,libva)
6767 ("libvorbis" ,libvorbis)
6768 ("libxinerama" ,libxinerama)
6769 ("libxrandr" ,libxrandr)
6770 ("mesa" ,mesa)
6771 ("pcre" ,pcre)
6772 ("pulseaudio" ,pulseaudio)
6773 ("sdl" ,sdl2)
6774 ("udev" ,eudev)
6775 ("zlib" ,zlib)))
6776 (synopsis "Advanced rhythm game designed for both home and arcade use")
6777 (description "StepMania is a dance and rhythm game. It features 3D
6778 graphics, keyboard and dance pad support, and an editor for creating your own
6779 steps.
6780
6781 This package provides the core application, but no song is shipped. You need
6782 to download and install them in @file{$HOME/.stepmania-X.Y/Songs} directory.")
6783 (home-page "https://www.stepmania.com")
6784 (license license:expat)))
6785
6786 (define-public btanks
6787 (package
6788 (name "btanks")
6789 (version "0.9.8083")
6790 (source
6791 (origin
6792 (method url-fetch)
6793 (uri (string-append "mirror://sourceforge/btanks/btanks-source/"
6794 "btanks-" version ".tar.bz2"))
6795 (sha256
6796 (base32
6797 "0ha35kxc8xlbg74wsrbapfgxvcrwy6psjkqi7c6adxs55dmcxliz"))))
6798 (build-system scons-build-system)
6799 (arguments
6800 `(#:tests? #f ; there are none
6801 #:scons ,scons-python2
6802 #:scons-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
6803 #:phases
6804 (modify-phases %standard-phases
6805 (add-after 'unpack 'replace-removed-scons-syntax
6806 (lambda _
6807 (substitute* "SConstruct"
6808 (("Options") "Variables")
6809 (("opts.Add\\(BoolOption.*") "opts.Add('gcc_visibility', 'gcc visibility', 'true')")
6810 (("opts.Add\\(EnumOption.*") "opts.Add('mode', 'build mode', 'release')"))
6811 #t))
6812 (add-after 'set-paths 'set-sdl-paths
6813 (lambda* (#:key inputs #:allow-other-keys)
6814 (setenv "CPATH"
6815 (string-append (assoc-ref inputs "sdl")
6816 "/include/SDL:"
6817 (or (getenv "CPATH") "")))
6818 #t))
6819 (add-after 'unpack 'fix-compilation-errors
6820 (lambda _
6821 (substitute* "mrt/base_file.h"
6822 (("#include <string>" m)
6823 (string-append m "\n#include <sys/types.h>")))
6824 (substitute* '("engine/sl08/sl08.h"
6825 "engine/sl08/sl08.py")
6826 (("signal = NULL") "signal = 0")
6827 (("object\\(NULL\\)") "object(0)")
6828 (("func\\(NULL\\)") "func(0)")
6829 ((" connect\\(signal_ref\\)")
6830 " this->connect(signal_ref)"))
6831 (substitute* "math/range_list.h"
6832 ((" lower_bound\\(value\\)")
6833 " this->lower_bound(value)")
6834 ((" erase\\(i\\)")
6835 " this->erase(i)"))
6836 (substitute* "clunk/source.cpp"
6837 (("using namespace clunk" m)
6838 (string-append "# define pow10f(x) exp10f(x)\n" m)))
6839 #t))
6840 (add-after 'unpack 'find-lua
6841 (lambda _
6842 (substitute* "engine/SConscript"
6843 (("lua5.1") "lua-5.1")
6844 (("bt_libs.append\\(lua\\)")
6845 "bt_libs.append(\"lua\")"))
6846 #t)))))
6847 (inputs
6848 `(("expat" ,expat)
6849 ("glu" ,glu)
6850 ("libsmpeg" ,libsmpeg-with-sdl1)
6851 ("libvorbis" ,libvorbis)
6852 ("lua51" ,lua-5.1)
6853 ("sdl" ,(sdl-union (list sdl
6854 sdl-mixer
6855 sdl-image
6856 sdl-ttf)))
6857 ("zlib" ,zlib)))
6858 (native-inputs
6859 `(("pkg-config" ,pkg-config)
6860 ("zip" ,zip)))
6861 (home-page "http://btanks.sourceforge.net")
6862 (synopsis "Multiplayer tank battle game")
6863 (description "Battle Tanks (also known as \"btanks\") is a funny battle
6864 game, where you can choose one of three vehicles and eliminate your enemy
6865 using the whole arsenal of weapons. It has original cartoon-like graphics and
6866 cool music, it’s fun and dynamic, it has several network modes for deathmatch
6867 and cooperative.")
6868 ;; Some parts (e.g. mrt/b64.cpp) are LGPLv2.1+, but the whole package is
6869 ;; released under GPLv2 or later. It comes with extra exceptions for the
6870 ;; developers.
6871 (license (list license:gpl2+ license:lgpl2.1+))))
6872
6873 (define-public battle-tanks
6874 (deprecated-package "battle-tanks" btanks))
6875
6876 (define-public slingshot
6877 (package
6878 (name "slingshot")
6879 (version "0.9")
6880 (source
6881 (origin
6882 (method git-fetch)
6883 (uri (git-reference
6884 (url "https://github.com/ryanakca/slingshot.git")
6885 (commit version)))
6886 (file-name (git-file-name name version))
6887 (sha256
6888 (base32
6889 "19m8b6nsi786bc6gmkp185mwri3r5y249gjmqd5qsc23nnfhgrs1"))))
6890 (build-system python-build-system)
6891 (arguments
6892 `(#:python ,python-2))
6893 (inputs
6894 `(("python-pygame" ,python2-pygame)))
6895 (home-page "https://github.com/ryanakca/slingshot")
6896 (synopsis "Simple 2D shooting strategy game set in space")
6897 (description "Slingshot is a two-dimensional strategy game where two
6898 players attempt to shoot one another through a section of space populated by
6899 planets. The main feature of the game is that the shots, once fired, are
6900 affected by the gravity of the planets.")
6901 (license license:gpl2+)))
6902
6903 (define-public 4dtris
6904 (package
6905 (name "4dtris")
6906 (version "0.4.3")
6907 (source
6908 (origin
6909 (method url-fetch)
6910 (uri (string-append "https://launchpad.net/4dtris/"
6911 (version-major+minor version)
6912 "/" version "/+download/4dtris_"
6913 version ".orig.tar.gz"))
6914 (sha256
6915 (base32
6916 "1nfkhcm0l89jyw8yr65na97g4l385zhjf7whkyg47c3v5sdqq2g7"))))
6917 (build-system gnu-build-system)
6918 (arguments
6919 `(#:phases
6920 (modify-phases %standard-phases
6921 (add-after 'unpack 'fix-install-directories
6922 (lambda* (#:key outputs #:allow-other-keys)
6923 (let ((out (assoc-ref outputs "out")))
6924 (substitute* "Makefile.in"
6925 (("bindir = /usr/games")
6926 (string-append "bindir = " out "/bin"))
6927 (("/usr/share/applications")
6928 (string-append out "/share/applications"))
6929 (("/usr/share/games/4dtris")
6930 (string-append out "/share/4dtris"))))
6931 #t))
6932 (add-after 'set-paths 'set-sdl-paths
6933 (lambda* (#:key inputs #:allow-other-keys)
6934 (setenv "CPATH"
6935 (string-append (assoc-ref inputs "sdl")
6936 "/include/SDL:"
6937 (or (getenv "CPATH") "")))
6938 #t)))))
6939 (inputs
6940 `(("fontconfig" ,fontconfig)
6941 ("freeglut" ,freeglut)
6942 ("sdl" ,(sdl-union (list sdl sdl-ttf)))))
6943 (home-page "https://launchpad.net/4dtris/")
6944 (synopsis "4D Tetris")
6945 (description "4D-TRIS is an alteration of the well-known Tetris game. The
6946 game field is extended to 4D space, which has to filled up by the gamer with
6947 4D hyper cubes.")
6948 (license license:gpl3)))
6949
6950 (define-public arx-libertatis
6951 (package
6952 (name "arx-libertatis")
6953 (version "1.1.2")
6954 (source
6955 (origin
6956 (method url-fetch)
6957 (uri (string-append "http://arx-libertatis.org/files/arx-libertatis-"
6958 version ".tar.xz"))
6959 (sha256
6960 (base32
6961 "0hjfxlsmp8wwqr06snv2dlly2s79ra0d9aw49gkp6rn8m50b9bc2"))))
6962 (build-system cmake-build-system)
6963 (outputs '("out" "installer"))
6964 (arguments
6965 '(#:tests? #f ; No tests.
6966 #:phases
6967 (modify-phases %standard-phases
6968 (add-after 'unpack 'fix-install-helper-paths
6969 (lambda* (#:key inputs #:allow-other-keys)
6970 (let ((p7zip (assoc-ref inputs "p7zip"))
6971 (innoextract (assoc-ref inputs "innoextract"))
6972 (wget (assoc-ref inputs "wget"))
6973 (zenity (assoc-ref inputs "zenity")))
6974 (substitute* "scripts/arx-install-data"
6975 (("have innoextract")
6976 (string-append "have " innoextract "/bin/innoextract"))
6977 (("then innoextract")
6978 (string-append "then " innoextract "/bin/innoextract"))
6979 (("else innoextract")
6980 (string-append "else " innoextract "/bin/innoextract"))
6981 (("for _extract_zip_sz in 7za 7z")
6982 (string-append "for _extract_zip_sz in " p7zip "/bin/7za"))
6983 (("else if have 7z")
6984 (string-append "else if have " p7zip "/bin/7za"))
6985 (("7z x -tiso")
6986 (string-append p7zip "/bin/7z x -tiso"))
6987 (("if have wget")
6988 (string-append "if have " wget "/bin/wget"))
6989 (("wget -O")
6990 (string-append wget "/bin/wget -O"))
6991 (("for backend in \\$preferred zenity")
6992 (string-append "for backend in $preferred " zenity "/bin/zenity"))
6993 (("zenity +--title")
6994 (string-append zenity "/bin/zenity --title"))
6995 (("^zenity\\)")
6996 (string-append zenity "/bin/zenity)"))))
6997 #t))
6998 (add-after 'install 'move-installer
6999 (lambda* (#:key outputs #:allow-other-keys)
7000 (let ((out (assoc-ref outputs "out"))
7001 (installer (assoc-ref outputs "installer")))
7002 (mkdir-p (string-append installer "/bin"))
7003 (rename-file (string-append out "/bin/arx-install-data")
7004 (string-append installer "/bin/arx-install-data"))))))))
7005 (inputs
7006 `(("sdl" ,sdl) ; Switch to sdl2 in >1.1.2.
7007 ("mesa" ,mesa) ; Switch to libepoxy in >1.1.2.
7008 ("glew" ,glew)
7009 ("openal" ,openal)
7010 ("zlib" ,zlib)
7011 ("boost" ,boost)
7012 ("glm" ,glm)
7013 ("freetype" ,freetype)
7014 ;; The following are only needed by the arx-install-data script.
7015 ("p7zip" ,p7zip) ; Install-helper uses it to extract ISO and .cab archives.
7016 ("zenity" ,zenity) ; GUI for install-helper.
7017 ("wget" ,wget) ; Used by the install-helper to download the patch.
7018 ;; The install-helper needs it to extract the patch.
7019 ("innoextract" ,innoextract)))
7020 (home-page "https://arx-libertatis.org/")
7021 (synopsis "Port of Arx Fatalis, a first-person role-playing game")
7022 (description "Arx Libertatis is a cross-platform port of Arx Fatalis, a 2002
7023 first-person role-playing game / dungeon crawler developed by Arkane Studios.
7024 This port however does not include the game data, so you need to obtain a copy
7025 of the original Arx Fatalis or its demo to play Arx Libertatis. Arx Fatalis
7026 features crafting, melee and ranged combat, as well as a unique casting system
7027 where the player draws runes in real time to effect the desired spell.")
7028 (license license:gpl3+)))
7029
7030 (define-public edgar
7031 (package
7032 (name "edgar")
7033 (version "1.32")
7034 (source
7035 (origin
7036 (method url-fetch)
7037 (uri
7038 (string-append "https://github.com/riksweeney/edgar/releases/download/"
7039 version "/edgar-" version "-1.tar.gz"))
7040 (sha256
7041 (base32 "12lam6qcscc5ima1w2ksd1cvsvxbd17h6mqkgsqpzx8ap43p2r5p"))))
7042 (build-system gnu-build-system)
7043 (arguments '(#:tests? #f ; there are no tests
7044 #:make-flags
7045 (list "CC=gcc"
7046 (string-append "PREFIX=" (assoc-ref %outputs "out"))
7047 (string-append "BIN_DIR=" (assoc-ref %outputs "out") "/bin/"))
7048 #:phases
7049 (modify-phases %standard-phases
7050 (delete 'configure)
7051 (add-before 'build 'fix-env
7052 (lambda* (#:key inputs #:allow-other-keys)
7053 (setenv "CPATH"
7054 (string-append (assoc-ref inputs "sdl2-union")
7055 "/include/SDL2:"
7056 (or (getenv "CPATH") "")))
7057 #t)))))
7058 (inputs
7059 `(("sdl2-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
7060 ("zlib" ,zlib)))
7061 (native-inputs
7062 `(("pkg-config" ,pkg-config)
7063 ("autoconf" ,autoconf)
7064 ("automake" ,automake)
7065 ("gnu-gettext" ,gnu-gettext)
7066 ("libtool" ,libtool)
7067 ("which" ,which)))
7068 (synopsis "2d action platformer game")
7069 (description "The Legend of Edgar is a 2D platform game with a persistent world.
7070 When Edgar's father fails to return home after venturing out one dark and stormy night,
7071 Edgar fears the worst: he has been captured by the evil sorcerer who lives in
7072 a fortress beyond the forbidden swamp.")
7073 (home-page "https://www.parallelrealities.co.uk/games/edgar/")
7074 (license license:gpl2+)))
7075
7076 (define-public the-legend-of-edgar
7077 (deprecated-package "the-legend-of-edgar" edgar))
7078
7079 (define-public openclonk
7080 (package
7081 (name "openclonk")
7082 (version "8.1")
7083 (source (origin
7084 (method url-fetch)
7085 (uri (string-append
7086 "https://www.openclonk.org/builds/release/" version "/"
7087 "openclonk-" version "-src.tar.bz2"))
7088 (sha256
7089 (base32
7090 "0imkqjp8lww5p0cnqf4k4mb2v682mnsas63qmiz17rspakr7fxik"))))
7091 (build-system cmake-build-system)
7092 (arguments
7093 `(#:configure-flags '("-DAudio_TK=OpenAL")
7094 #:test-target "tests"
7095 #:phases
7096 (modify-phases %standard-phases
7097 (add-after 'unpack 'prepare-gmock
7098 (lambda* (#:key inputs #:allow-other-keys)
7099 (mkdir "gmock")
7100 (copy-recursively (assoc-ref inputs "googlemock") "gmock")
7101 (substitute* "tests/CMakeLists.txt"
7102 (("/usr/src/gmock")
7103 (string-append (getcwd) "/gmock/googlemock"))
7104 (("/usr/src/gtest")
7105 (string-append (getcwd) "/gmock/googletest"))
7106 (("PATH_SUFFIXES \"src\" \"gtest\"")
7107 "PATH_SUFFIXES \"src\""))
7108 #t))
7109 (add-after 'unpack 'adjust-backward-cpp-includes
7110 (lambda _
7111 ;; XXX: The bundled backward-cpp exports a CMake "interface"
7112 ;; that includes external libraries such as libdl from glibc.
7113 ;; By default, CMake interface includes are treated as "system
7114 ;; headers", and GCC behaves poorly when glibc is passed as a
7115 ;; system header (causing #include_next failures).
7116
7117 ;; Here we prevent targets that consume the Backward::Backward
7118 ;; interface from treating it as "system includes".
7119 (substitute* "CMakeLists.txt"
7120 (("target_link_libraries\\((.+) Backward::Backward\\)" all target)
7121 (string-append "set_property(TARGET " target " PROPERTY "
7122 "NO_SYSTEM_FROM_IMPORTED true)\n"
7123 all)))
7124 #t))
7125 (add-after 'unpack 'add-libiberty
7126 ;; Build fails upon linking executables without this.
7127 (lambda _
7128 (substitute* "thirdparty/backward-cpp/BackwardConfig.cmake"
7129 (("set\\(LIBBFD_LIBRARIES (.*?)\\)" _ libraries)
7130 (string-append "set(LIBBFD_LIBRARIES " libraries " iberty)")))
7131 #t))
7132 (add-after 'add-libiberty 'lax-freealut-requirement
7133 ;; TODO: We provide freealut 1.1.0, but pkg-config somehow detects
7134 ;; it as 1.0.1. Force minimal version.
7135 (lambda _
7136 (substitute* "cmake/FindAudio.cmake"
7137 (("freealut>=1.1.0") "freealut>=1.0.1"))
7138 #t))
7139 (add-after 'lax-freealut-requirement 'fix-directories
7140 ;; Prefer "$out/share/openclonk" over
7141 ;; "$out/share/games/openclonk". Also install "openclonk"
7142 ;; binary in "bin/", not "games/".
7143 (lambda _
7144 (substitute* "CMakeLists.txt"
7145 (("share/games/openclonk") "share/openclonk")
7146 (("TARGETS openclonk DESTINATION games")
7147 "TARGETS openclonk DESTINATION bin"))
7148 #t)))))
7149 (native-inputs
7150 `(("googlemock" ,(package-source googletest))
7151 ("googletest" ,googletest)
7152 ("pkg-config" ,pkg-config)))
7153 (inputs
7154 `(("freealut" ,freealut)
7155 ("freetype" ,freetype)
7156 ("glew" ,glew)
7157 ("libiberty" ,libiberty)
7158 ("libjpeg" ,libjpeg-turbo)
7159 ("libogg" ,libogg)
7160 ("libpng" ,libpng)
7161 ("libvorbis" ,libvorbis)
7162 ("libxrandr" ,libxrandr)
7163 ("mesa" ,mesa)
7164 ("miniupnpc" ,miniupnpc)
7165 ("openal" ,openal)
7166 ("qtbase" ,qtbase)
7167 ("readline" ,readline)
7168 ("sdl" ,sdl2)
7169 ("tinyxml" ,tinyxml)
7170 ("zlib" ,zlib)))
7171 (home-page "https://www.openclonk.org/")
7172 (synopsis
7173 "Multiplayer action game where you control small and nimble humanoids")
7174 (description "OpenClonk is a multiplayer action/tactics/skill game. It is
7175 often referred to as a mixture of The Settlers and Worms. In a simple 2D
7176 antfarm-style landscape, the player controls a crew of Clonks, small but
7177 robust humanoid beings. The game encourages free play but the normal goal is
7178 to either exploit valuable resources from the earth by building a mine or
7179 fight each other on an arena-like map.")
7180 ;; Software as a whole is licensed under ISC, artwork under CC-BY.
7181 (license (list license:isc license:cc-by3.0))))
7182
7183 (define-public flare-engine
7184 (package
7185 (name "flare-engine")
7186 (version "1.11")
7187 (source (origin
7188 (method git-fetch)
7189 (uri (git-reference
7190 (url "https://github.com/flareteam/flare-engine.git")
7191 (commit (string-append "v" version))))
7192 (file-name (git-file-name name version))
7193 (sha256
7194 (base32
7195 "1mqr1s72p5bdh4kq2a8hg72dk8lwnddicjnd2cdp1sbfa9lmjym8"))))
7196 (build-system cmake-build-system)
7197 (arguments
7198 `(#:tests? #f ;no test
7199 #:configure-flags '("-DBINDIR=bin" "-DDATADIR=share/flare")))
7200 (inputs
7201 `(("hicolor-icon-theme" ,hicolor-icon-theme)
7202 ("python" ,python-wrapper)
7203 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
7204 (home-page "http://www.flarerpg.org/")
7205 (synopsis "Action Roleplaying Engine")
7206 (description "Flare (Free Libre Action Roleplaying Engine) is a simple
7207 game engine built to handle a very specific kind of game: single-player 2D
7208 action RPGs.")
7209 (license license:gpl3+)))
7210
7211 (define-public flare-game
7212 (package
7213 (name "flare-game")
7214 (version "1.11")
7215 (source (origin
7216 (method git-fetch)
7217 (uri (git-reference
7218 (url "https://github.com/flareteam/flare-game.git")
7219 (commit (string-append "v" version))))
7220 (file-name (git-file-name name version))
7221 (sha256
7222 (base32
7223 "0bd5g7sd89a9176ilr408hdqzdfv4j7wj0idd685c1n6s01c3h6p"))))
7224 (build-system cmake-build-system)
7225 (arguments
7226 `(#:tests? #f ;no test
7227 #:configure-flags '("-DDATADIR=share/flare")
7228 #:phases
7229 (modify-phases %standard-phases
7230 ;; Flare expects the mods to be located in the same folder.
7231 ;; Yet, "default" mod is in the engine, whereas the others
7232 ;; are in the current package. Merge everything here with
7233 ;; a symlink.
7234 (add-after 'install 'add-default-mod
7235 (lambda* (#:key inputs outputs #:allow-other-keys)
7236 (let* ((out (assoc-ref outputs "out"))
7237 (mods (string-append out "/share/flare/mods")))
7238 (with-directory-excursion mods
7239 (symlink (string-append (assoc-ref inputs "flare-engine")
7240 "/share/flare/mods/default")
7241 "default")))
7242 #t))
7243 (add-after 'install 'install-executable
7244 ;; The package only provides assets for the game, the
7245 ;; executable coming from "flare-engine". Since more than
7246 ;; one game may use the engine, we create a new executable,
7247 ;; "flare-game", which launches the engine with appropriate
7248 ;; parameters.
7249 (lambda* (#:key inputs outputs #:allow-other-keys)
7250 (let* ((out (assoc-ref outputs "out"))
7251 (bash (string-append (assoc-ref inputs "bash")
7252 "/bin/bash"))
7253 (flare (string-append (assoc-ref inputs "flare-engine")
7254 "/bin/flare"))
7255 (script (string-append out "/bin/flare-game")))
7256 (mkdir-p (dirname script))
7257 (call-with-output-file script
7258 (lambda (port)
7259 (format port
7260 "#!~a
7261 exec ~a --data-path=~a/share/flare --mods=empyrean_campaign~%"
7262 bash
7263 flare
7264 out)))
7265 (chmod script #o755))
7266 #t)))))
7267 (inputs
7268 `(("flare-engine" ,flare-engine)))
7269 (home-page "http://www.flarerpg.org/")
7270 (synopsis "Fantasy action RPG using the FLARE engine")
7271 (description "Flare is a single-player 2D action RPG with
7272 fast-paced action and a dark fantasy style.")
7273 (license license:cc-by-sa3.0)))
7274
7275 (define-public meritous
7276 (package
7277 (name "meritous")
7278 (version "1.5")
7279 (source (origin
7280 (method git-fetch)
7281 (uri (git-reference
7282 (url "https://gitlab.com/meritous/meritous.git")
7283 (commit (string-append "v" version))))
7284 (file-name (git-file-name name version))
7285 (sha256
7286 (base32
7287 "0n5jm4g0arjllgqmd2crv8h02i6hs3hlh1zyc7ng7yfpg1mbd8p8"))))
7288 (build-system gnu-build-system)
7289 (arguments
7290 `(#:tests? #f ;no test
7291 #:make-flags
7292 (list "CC=gcc"
7293 (string-append "prefix=" (assoc-ref %outputs "out")))
7294 #:phases
7295 (modify-phases %standard-phases
7296 (delete 'configure)
7297 (add-after 'unpack 'fix-sdl-path
7298 ;; XXX: For some reason, `sdl-config' reports stand-alone SDL
7299 ;; directory, not SDL-union provided as an input to the package.
7300 ;; We force the latter with "--prefix=" option.
7301 (lambda* (#:key inputs #:allow-other-keys)
7302 (substitute* "Makefile"
7303 (("sdl-config" command)
7304 (string-append command " --prefix=" (assoc-ref inputs "sdl"))))
7305 #t))
7306 (add-after 'unpack 'fix-crash
7307 ;; XXX: Songs are not present in the repository, due to licensing
7308 ;; issues. Yet, the game tries to load them, and, since it cannot
7309 ;; find them, crashes. Users cannot add them back, the store being
7310 ;; read-only, so we turn off background music altogether.
7311 (lambda _
7312 (substitute* "src/audio.c"
7313 (("PlayBackgroundMusic\\(new_track\\);" all)
7314 (string-append "// " all)))
7315 #t)))))
7316 (native-inputs
7317 `(("intltool" ,intltool)))
7318 (inputs
7319 `(("sdl" ,(sdl-union (list sdl sdl-image sdl-mixer)))
7320 ("zlib" ,zlib)))
7321 (home-page "https://gitlab.com/meritous/meritous")
7322 (synopsis "Action-adventure dungeon crawl game")
7323 (description "Far below the surface of the planet is a place of limitless
7324 power. Those that seek to control such a utopia will soon bring an end to
7325 themselves. Seeking an end to the troubles that plague him, PSI user Merit
7326 journeys into the hallowed Orcus Dome in search of answers.
7327
7328 Meritous is a action-adventure game with simple controls but a challenge to
7329 find a balance of power versus recovery time during real-time battles. Set in
7330 a procedurally generated world, the player can explore thousands of rooms in
7331 search of powerful artifacts, tools to help them, and to eventually free the
7332 Orcus Dome from evil.")
7333 (license license:gpl3+)))
7334
7335 (define-public marble-marcher
7336 (let ((commit "e580460a0c3826f9b28ab404607942a8ecb625d7")
7337 (revision "1"))
7338 (package
7339 (name "marble-marcher")
7340 (version (git-version "0" revision commit))
7341 (source (origin
7342 (method git-fetch)
7343 (uri (git-reference
7344 (url "https://github.com/HackerPoet/MarbleMarcher.git")
7345 (commit commit)))
7346 (file-name (git-file-name name version))
7347 (sha256
7348 (base32
7349 "0jjv832hl1v170n6gryp2sr3lgqndi9ab841qvgqk68bks8701mx"))))
7350 (build-system cmake-build-system)
7351 (arguments
7352 `(#:tests? #f ; there are none
7353 #:phases
7354 (modify-phases %standard-phases
7355 (add-after 'unpack 'embed-asset-directory
7356 (lambda* (#:key outputs #:allow-other-keys)
7357 (let ((assets (string-append (assoc-ref outputs "out")
7358 "/share/marble-marcher/assets/")))
7359 ;; Some of the files we're patching are
7360 ;; ISO-8859-1-encoded, so choose it as the default
7361 ;; encoding so the byte encoding is preserved.
7362 (with-fluids ((%default-port-encoding #f))
7363 (substitute* "src/Resource.rc"
7364 (("../assets/icon.ico")
7365 (string-append assets "icon.ico")))
7366 (substitute* "src/Res.h"
7367 (("assets/") assets))))
7368 #t))
7369 (replace 'install
7370 (lambda* (#:key outputs #:allow-other-keys)
7371 (let* ((out (assoc-ref outputs "out"))
7372 (assets (string-append out "/share/marble-marcher/assets"))
7373 (bin (string-append out "/bin/")))
7374 (mkdir-p bin)
7375 (mkdir-p assets)
7376 (copy-recursively "../source/assets" assets)
7377 (install-file "MarbleMarcher" bin))
7378 #t)))))
7379 (inputs
7380 `(("eigen" ,eigen)
7381 ("mesa" ,mesa)
7382 ("sfml" ,sfml)))
7383 (native-inputs
7384 `(("pkg-config" ,pkg-config)))
7385 (home-page "https://codeparade.itch.io/marblemarcher")
7386 (synopsis "Guide a marble across fractal landscapes")
7387 (description "Marble Marcher is a video game that uses a fractal physics
7388 engine and fully procedural rendering to produce beautiful and unique
7389 gameplay. The game is played on the surface of evolving fractals. The goal
7390 of the game is to get your marble to the flag as quickly as possible. But be
7391 careful not to fall off the level or get crushed by the fractal! There are 24
7392 levels to unlock.")
7393 ;; Code is under GPLv2+, assets are under CC-BY-SA 3.0 and OFL 1.1.
7394 (license (list license:gpl2+
7395 license:silofl1.1
7396 license:cc-by-sa3.0)))))
7397
7398 ;; This must be updated together with flightgear.
7399 (define simgear
7400 (package
7401 (name "simgear")
7402 (version "2018.3.2")
7403 (source (origin
7404 (method url-fetch)
7405 (uri (string-append "mirror://sourceforge/flightgear/release-"
7406 (version-major+minor version) "/"
7407 "simgear-" version ".tar.bz2"))
7408 (sha256
7409 (base32
7410 "1941ay8rngz4vwsx37bbpxr48hpcvcbj3xw1hy264lq4qnl99c68"))))
7411 (build-system cmake-build-system)
7412 (arguments
7413 `(#:phases
7414 (modify-phases %standard-phases
7415 (replace 'check
7416 (lambda _
7417 ;; Skip tests that require internet access.
7418 (invoke "ctest" "-E" "(http|dns)"))))))
7419 (inputs
7420 `(("boost" ,boost-for-mysql) ; fails with 1.69
7421 ("curl" ,curl)
7422 ("expat" ,expat)
7423 ("mesa" ,mesa)
7424 ("openal" ,openal)
7425 ("openscenegraph" ,openscenegraph-3.4)
7426 ("zlib" ,zlib)))
7427 (home-page "https://home.flightgear.org/")
7428 (synopsis "Libraries for 3D simulations and games")
7429 (description "SimGear is a set of libraries designed to be used as
7430 building blocks for quickly assembling 3D simulations, games, and
7431 visualization applications. SimGear is developed by the FlightGear project
7432 and also provides the base for the FlightGear Flight Simulator.")
7433 (license license:lgpl2.0+)))
7434
7435 (define-public flightgear
7436 (package
7437 (name "flightgear")
7438 (version (package-version simgear))
7439 (source (origin
7440 (method url-fetch)
7441 (uri (string-append "mirror://sourceforge/flightgear/release-"
7442 (version-major+minor version) "/"
7443 "flightgear-" version ".tar.bz2"))
7444 (sha256
7445 (base32
7446 "0lzy524cjzs8vldcjcc750bgg5c4mq9fkymxxxzqf68ilc4d1jss"))
7447 (modules '((guix build utils)))
7448 (snippet
7449 '(begin
7450 ;; There are some bundled libraries.
7451 (for-each delete-file-recursively
7452 '("3rdparty/sqlite3/"))
7453 #t))))
7454 (build-system cmake-build-system)
7455 (arguments
7456 `(#:configure-flags
7457 (list "-DSYSTEM_SQLITE=ON"
7458 (string-append "-DFG_DATA_DIR="
7459 (assoc-ref %outputs "out")
7460 "/share/flightgear"))
7461 ;; TODO: test cannot be run because the "run_test_suite" executable
7462 ;; does not seem to be built.
7463 #:tests? #f
7464 #:phases
7465 (modify-phases %standard-phases
7466 (add-after 'install 'wrap-executable
7467 (lambda* (#:key inputs outputs #:allow-other-keys)
7468 (let ((out (assoc-ref outputs "out")))
7469 (wrap-program (string-append out "/bin/fgfs")
7470 `("QT_PLUGIN_PATH" ":" prefix
7471 ,(map (lambda (label)
7472 (string-append (assoc-ref inputs label)
7473 "/lib/qt5/plugins"))
7474 '("qtbase" "qtdeclarative" "qtsvg")))
7475 `("QML2_IMPORT_PATH" ":" prefix
7476 ,(map (lambda (label)
7477 (string-append (assoc-ref inputs label)
7478 "/lib/qt5/qml"))
7479 '("qtdeclarative" "qtsvg"))))
7480 #t)))
7481 (add-after 'install 'install-data
7482 (lambda* (#:key inputs outputs #:allow-other-keys)
7483 (let ((share (string-append (assoc-ref outputs "out") "/share/flightgear")))
7484 (mkdir-p share)
7485 (with-directory-excursion share
7486 (invoke "tar" "xf" (assoc-ref inputs "flightgear-data")
7487 "--strip-components=1")))
7488 #t)))))
7489 (inputs
7490 `(("boost" ,boost-for-mysql) ; same as simgear
7491 ("dbus" ,dbus)
7492 ("eudev" ,eudev)
7493 ("freeglut" ,freeglut)
7494 ("freetype" ,freetype)
7495 ("glew" ,glew)
7496 ("libpng" ,libpng)
7497 ("openal" ,openal)
7498 ("openscenegraph" ,openscenegraph-3.4)
7499 ("plib" ,plib)
7500 ("qtbase" ,qtbase)
7501 ("qtdeclarative" ,qtdeclarative)
7502 ("qtsvg" ,qtsvg)
7503 ("simgear" ,simgear)
7504 ("speexdsp" ,speexdsp)
7505 ("sqlite" ,sqlite)
7506 ("zlib" ,zlib)))
7507 (native-inputs
7508 `(("cppunit" ,cppunit)
7509 ("pkg-config" ,pkg-config)
7510 ("qttools" ,qttools)
7511 ("flightgear-data"
7512 ,(origin
7513 (method url-fetch)
7514 (uri (string-append "mirror://sourceforge/flightgear/release-"
7515 (version-major+minor version) "/"
7516 "FlightGear-" version "-data.tar.bz2"))
7517 (sha256
7518 (base32
7519 "0h4npa7gqpf5fw6pv2bpw0wbwr7fa2vhia21cjbigfgd75x82zi7"))))))
7520 (home-page "https://home.flightgear.org/")
7521 (synopsis "Flight simulator")
7522 (description "The goal of the FlightGear project is to create a
7523 sophisticated flight simulator framework for use in research or academic
7524 environments, pilot training, as an industry engineering tool, for DIY-ers to
7525 pursue their favorite interesting flight simulation idea, and last but
7526 certainly not least as a fun, realistic, and challenging desktop flight
7527 simulator.")
7528 (license license:gpl2+)))
7529
7530 (define-public jumpnbump
7531 (package
7532 (name "jumpnbump")
7533 (version "1.61")
7534 (source (origin
7535 (method git-fetch)
7536 (uri (git-reference
7537 (url "https://gitlab.com/LibreGames/jumpnbump.git")
7538 (commit version)))
7539 (file-name (git-file-name name version))
7540 (sha256
7541 (base32
7542 "12lwl5sl5n009nb83r8l4lakb9286csqdf1ynpmwwydy17giqsdp"))))
7543 (build-system gnu-build-system)
7544 (arguments
7545 `(#:make-flags
7546 (list "CC=gcc"
7547 (string-append "PREFIX=" (assoc-ref %outputs "out")))
7548 #:tests? #f ;no test
7549 #:phases
7550 (modify-phases %standard-phases
7551 (delete 'configure) ;no configure script
7552 (add-after 'unpack 'fix-sdl-path
7553 ;; XXX: For some reason, `sdl2-config' reports stand-alone SDL
7554 ;; directory, not SDL-union provided as an input to the package.
7555 ;; We force the latter with "--prefix=" option.
7556 (lambda* (#:key inputs #:allow-other-keys)
7557 (substitute* "Makefile"
7558 (("sdl2-config" command)
7559 (string-append command " --prefix=" (assoc-ref inputs "sdl"))))
7560 #t)))))
7561 (inputs
7562 `(("bzip2" ,bzip2)
7563 ("sdl" ,(sdl-union (list sdl2 sdl2-mixer sdl2-net)))
7564 ("zlib" ,zlib)))
7565 (native-inputs
7566 `(("gettext" ,gettext-minimal))) ;for msgfmt
7567 (home-page "https://gitlab.com/LibreGames/jumpnbump")
7568 (synopsis "Multiplayer platform game with bunnies")
7569 (description "You, as a bunny, have to jump on your opponents to make them
7570 explode. It is a true multiplayer game; you cannot play this alone. You can
7571 play with up to four players simultaneously. It has network support.")
7572 (license license:gpl2+)))
7573
7574 (define-public hedgewars
7575 (package
7576 (name "hedgewars")
7577 (version "1.0.0")
7578 (source (origin
7579 (method url-fetch)
7580 (uri (string-append "https://www.hedgewars.org/download/releases/"
7581 "hedgewars-src-" version ".tar.bz2"))
7582 (sha256
7583 (base32
7584 "0nqm9w02m0xkndlsj6ys3wr0ik8zc14zgilq7k6fwjrf3zk385i1"))))
7585 (build-system cmake-build-system)
7586 (arguments
7587 ;; XXX: Engine is built as Pascal source code, requiring Free Pascal
7588 ;; Compiler, which we haven't packaged yet. With the flag below, we use
7589 ;; a Pascal to C translator and Clang instead.
7590 `(#:configure-flags (list "-DBUILD_ENGINE_C=ON")
7591 #:phases
7592 (modify-phases %standard-phases
7593 (replace 'check
7594 (lambda _ (invoke "ctest"))))))
7595 (inputs
7596 `(("ffmpeg" ,ffmpeg)
7597 ("freeglut" ,freeglut)
7598 ("ghc-entropy" ,ghc-entropy)
7599 ("ghc-hslogger" ,ghc-hslogger)
7600 ("ghc-network" ,ghc-network)
7601 ("ghc-random" ,ghc-random)
7602 ("ghc-regex-tdfa" ,ghc-regex-tdfa)
7603 ("ghc-sandi" ,ghc-sandi)
7604 ("ghc-sha" ,ghc-sha)
7605 ("ghc-utf8-string" ,ghc-utf8-string)
7606 ("ghc-vector" ,ghc-vector)
7607 ("ghc-zlib" ,ghc-zlib)
7608 ("glew" ,glew)
7609 ("libpng" ,libpng)
7610 ("lua" ,lua-5.1)
7611 ("physfs" ,physfs)
7612 ("qtbase" ,qtbase)
7613 ("sdl" ,(sdl-union
7614 (list sdl2 sdl2-mixer sdl2-net sdl2-ttf sdl2-image)))))
7615 (native-inputs
7616 `(("clang" ,clang)
7617 ("ghc" ,ghc)
7618 ("pkg-config" ,pkg-config)
7619 ("qttools" ,qttools)))
7620 (home-page "https://hedgewars.org/")
7621 (synopsis "Turn-based artillery game featuring fighting hedgehogs")
7622 (description
7623 "Hedgewars is a turn based strategy, artillery, action and comedy game,
7624 featuring the antics of pink hedgehogs with attitude as they battle from the
7625 depths of hell to the depths of space.
7626
7627 As commander, it's your job to assemble your crack team of hedgehog soldiers
7628 and bring the war to your enemy.")
7629 ;; Software as a whole is licensed under GPL-2 terms. Artwork and
7630 ;; scripts are distributed under various terms.
7631 (license (list license:gpl2
7632 license:bsd-2 license:bsd-3 license:cc-by3.0 license:cc0
7633 license:expat license:fdl1.3+ license:public-domain
7634 license:zlib))))
7635
7636 (define-public harmonist
7637 (package
7638 (name "harmonist")
7639 (version "0.3.0")
7640 (source (origin
7641 (method git-fetch)
7642 (uri (git-reference
7643 (url "https://git.tuxfamily.org/harmonist/harmonist.git")
7644 (commit (string-append "v" version))))
7645 (file-name (git-file-name name version))
7646 (sha256
7647 (base32
7648 "146wiyanag0zqj6fhyll2sw6sydnnll8mgxhhqf9sjqsl2rx4s5r"))))
7649 (build-system go-build-system)
7650 (arguments
7651 '(#:import-path "git.tuxfamily.org/harmonist/harmonist"))
7652 (inputs
7653 `(("go-github.com-nsf-termbox-go" ,go-github.com-nsf-termbox-go)))
7654 (home-page "https://harmonist.tuxfamily.org/")
7655 (synopsis "Stealth coffee-break roguelike game")
7656 (description "Harmonist: Dayoriah Clan Infiltration is a stealth
7657 coffee-break roguelike game. The game has a heavy focus on tactical
7658 positioning, light and noise mechanisms, making use of various terrain types
7659 and cones of view for monsters. Aiming for a replayable streamlined experience,
7660 the game avoids complex inventory management and character building, relying
7661 on items and player adaptability for character progression.")
7662 (license license:isc)))
7663
7664 (define-public harmonist-tk
7665 (package
7666 (inherit harmonist)
7667 (name "harmonist-tk")
7668 (arguments
7669 (append
7670 (package-arguments harmonist)
7671 `(#:phases
7672 (modify-phases %standard-phases
7673 (replace 'build
7674 (lambda _
7675 (invoke "go" "install" "-v" "-x" "--tags" "tk"
7676 "git.tuxfamily.org/harmonist/harmonist")))
7677 (replace 'check
7678 (lambda _
7679 (invoke "go" "test" "--tags" "tk"
7680 "git.tuxfamily.org/harmonist/harmonist")))))))
7681 (inputs
7682 `(("go-github.com-nsf-gothic" ,go-github.com-nsf-gothic)))))
7683
7684 (define-public drascula
7685 (package
7686 (name "drascula")
7687 (version "1.0")
7688 (source (origin
7689 (method url-fetch)
7690 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7691 "Drascula_%20The%20Vampire%20Strikes%20Back/"
7692 "drascula-" version ".zip"))
7693 (sha256
7694 (base32
7695 "1pj29rpb754sn6a56f8brfv6f2m1p5qgaqik7d68pfi2bb5zccdp"))))
7696 (build-system trivial-build-system)
7697 (arguments
7698 `(#:modules ((guix build utils))
7699 #:builder
7700 (begin
7701 (use-modules (guix build utils)
7702 (ice-9 match))
7703 (let* ((out (assoc-ref %outputs "out"))
7704 (share (string-append out "/share/drascula"))
7705 (scummvm (assoc-ref %build-inputs "scummvm")))
7706 ;; Install data.
7707 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
7708 "/bin/unzip"))
7709 (doc (string-append out "/share/doc/" ,name "-" ,version)))
7710 (for-each
7711 (lambda (input)
7712 (invoke unzip
7713 "-j"
7714 (assoc-ref %build-inputs input)
7715 "-x" "__MACOSX")
7716 ;; Every input provides "readme.txt", and we want to
7717 ;; preserve them all. Therefore we rename them first.
7718 (match input
7719 ("drascula-int"
7720 (rename-file "readme.txt" "readme-international.txt"))
7721 ("drascula-audio"
7722 (rename-file "readme.txt" "readme-audio.txt"))
7723 (_ #f))
7724 ;; Install documentation.
7725 (for-each (lambda (f) (install-file f doc))
7726 (find-files "." "\\.(txt|doc)$"))
7727 ;; Install data.
7728 (for-each (lambda (f) (install-file f share))
7729 (find-files "." "\\.(ogg|00[0-9])$")))
7730 '("drascula-audio" "drascula-int" "source")))
7731 ;; Create standalone executable.
7732 (let* ((bin (string-append out "/bin"))
7733 (executable (string-append bin "/drascula"))
7734 (bash (string-append (assoc-ref %build-inputs "bash")
7735 "/bin/bash")))
7736 (mkdir-p bin)
7737 (with-output-to-file executable
7738 (lambda ()
7739 (format #t "#!~a~%" bash)
7740 (format #t
7741 "exec ~a/bin/scummvm --path=~a drascula~%"
7742 scummvm share)))
7743 (chmod executable #o755))
7744 ;; Create desktop file. There is no dedicated icon for the
7745 ;; game, so we borrow SCUMMVM's.
7746 (let ((apps (string-append out "/share/applications")))
7747 (mkdir-p apps)
7748 (with-output-to-file (string-append apps "/drascula.desktop")
7749 (lambda _
7750 (format #t
7751 "[Desktop Entry]~@
7752 Name=Drascula: The Vampire Strikes Back~@
7753 GenericName=Drascula~@
7754 Exec=~a/bin/drascula~@
7755 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
7756 Categories=AdventureGame;Game;RolePlaying;~@
7757 Keywords=game;adventure;roleplaying;2D,fantasy;~@
7758 Comment=Classic 2D point and click adventure game~@
7759 Comment[de]=klassisches 2D-Abenteuerspiel in Zeigen-und-Klicken-Manier~@
7760 Comment[fr]=Jeux classique d'aventure pointer-et-cliquer en 2D~@
7761 Comment[it]=Gioco classico di avventura punta e clicca 2D~@
7762 Type=Application~%"
7763 out scummvm))))
7764 #t))))
7765 (native-inputs
7766 `(("bash" ,bash)
7767 ("unzip" ,unzip)))
7768 (inputs
7769 `(("scummvm" ,scummvm)
7770 ("drascula-int"
7771 ,(let ((version "1.1"))
7772 (origin
7773 (method url-fetch)
7774 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7775 "Drascula_%20The%20Vampire%20Strikes%20Back/"
7776 "drascula-int-" version ".zip"))
7777 (sha256
7778 (base32
7779 "12236i7blamal92p1i8dgp3nhp2yicics4whsl63v682bj999n14")))))
7780 ("drascula-audio"
7781 ,(let ((version "2.0"))
7782 (origin
7783 (method url-fetch)
7784 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7785 "Drascula_%20The%20Vampire%20Strikes%20Back/"
7786 "drascula-audio-" version ".zip"))
7787 (sha256
7788 (base32
7789 "00g4izmsqzxb8ry1vhfx6jrygl58lvlij09nw01ds4zddsiznsky")))))))
7790 (home-page "https://www.scummvm.org")
7791 (synopsis "Classic 2D point and click adventure game")
7792 (description "Drascula: The Vampire Strikes Back is a classic humorous 2D
7793 point and click adventure game.
7794
7795 In Drascula you play the role of John Hacker, a British estate agent, that
7796 gets to meet a gorgeous blond girl who is kidnapped by the notorious vampire
7797 Count Drascula and embark on a fun yet dangerous quest to rescue her.
7798 Unfortunately, Hacker is not aware of Drascula's real ambitions: DOMINATING
7799 the World and demonstrating that he is even more evil than his brother Vlad.")
7800 ;; Drascula uses a BSD-like license.
7801 (license (license:non-copyleft "file:///readme.txt"))))
7802
7803 (define (make-lure-package name language hash)
7804 (package
7805 (name name)
7806 (version "1.1")
7807 (source
7808 (origin
7809 (method url-fetch)
7810 (uri (string-append
7811 "mirror://sourceforge/scummvm/extras/"
7812 "Lure%20of%20the%20Temptress/"
7813 name "-" version ".zip"))
7814 (sha256
7815 (base32 hash))))
7816 (build-system trivial-build-system)
7817 (arguments
7818 `(#:modules ((guix build utils))
7819 #:builder
7820 (begin
7821 (use-modules (guix build utils))
7822 (let* ((out (assoc-ref %outputs "out"))
7823 (share (string-append out "/share"))
7824 (data (string-append share "/" ,name "/" ,language))
7825 (apps (string-append share "/applications"))
7826 (bin (string-append out "/bin"))
7827 (executable (string-append bin "/" ,name))
7828 (scummvm (assoc-ref %build-inputs "scummvm")))
7829 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
7830 "/bin/unzip")))
7831 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
7832 (let ((doc (string-append share "/doc/" ,name "-" ,version)))
7833 (for-each (lambda (f) (install-file f doc))
7834 (find-files "." "\\.(txt|PDF|pdf)$")))
7835 (for-each (lambda (f) (install-file f data))
7836 (find-files "." "\\.(vga|VGA)$"))
7837 ;; Build the executable.
7838 (mkdir-p bin)
7839 (let ((bash (assoc-ref %build-inputs "bash")))
7840 (with-output-to-file executable
7841 (lambda ()
7842 (format #t "#!~a/bin/bash~%" bash)
7843 (format #t "exec ~a/bin/scummvm -q ~a -p ~a lure~%"
7844 scummvm ,language data))))
7845 (chmod executable #o755)
7846 ;; Create desktop file. There is no dedicated
7847 ;; icon for the game, so we borrow SCUMMVM's.
7848 (mkdir-p apps)
7849 (with-output-to-file (string-append apps "/" ,name ".desktop")
7850 (lambda _
7851 (format #t
7852 "[Desktop Entry]~@
7853 Name=Lure of the Temptress~@
7854 GenericName=Lure~@
7855 Exec=~a~@
7856 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
7857 Categories=AdventureGame;Game;RolePlaying;~@
7858 Keywords=game;adventure;roleplaying;2D,fantasy;~@
7859 Comment=Classic 2D point and click adventure game~@
7860 Comment[de]=klassisches 2D-Abenteuerspiel in Zeigen-und-Klicken-Manier~@
7861 Comment[fr]=Jeu classique d'aventure pointer-et-cliquer en 2D~@
7862 Comment[it]=Gioco classico di avventura punta e clicca 2D~@
7863 Type=Application~%"
7864 executable scummvm)))
7865 #t))))
7866 (native-inputs
7867 `(("unzip" ,unzip)))
7868 (inputs
7869 `(("bash" ,bash)
7870 ("scummvm" ,scummvm)))
7871 (home-page "https://www.scummvm.org")
7872 (synopsis "2D point and click fantasy adventure game")
7873 (description
7874 "Lure of the Temptress is a classic 2D point and click adventure game.
7875
7876 You are Diermot, an unwilling hero who'd prefer a quiet life, and are, to all
7877 intents and purposes, a good man. After decades of unrest the King has united
7878 the warring factions in his kingdom and all his lands are at peace, except
7879 a remote region around a town called Turnvale. A revolt has recently taken
7880 place in Turnvale, a revolt orchestrated by an apprentice sorceress called
7881 Selena, the titular temptress. The king calls together his finest horsemen
7882 and heads off (with you in tow) to Turnvale just to witness how hellish
7883 mercenary monsters called Skorl are invading the town.
7884
7885 The king's men are defeated, the king is killed and you fall of your horse and
7886 bang your head heavily on the ground. You have been *unconscious for a while
7887 when you realize that you are in a dingy cell guarded by a not so friendly
7888 Skorl. Maybe it would be an idea to try and escape...")
7889 (license (license:non-copyleft "file:///README"))))
7890
7891 (define-public lure
7892 (make-lure-package
7893 "lure" "en" "0201i70qcs1m797kvxjx3ygkhg6kcl5yf49sihba2ga8l52q45zk"))
7894
7895 (define-public lure-de
7896 (make-lure-package
7897 "lure-de" "de" "0sqq7h5llml6rv85x0bfv4bgzwhs4c82p4w4zmfcaab6cjlad0sy"))
7898
7899 (define-public lure-es
7900 (make-lure-package
7901 "lure-es" "es" "1dvv5znvlsakw6w5r16calv9jkgw27aymgybsf4q22lcmpxbj1lk"))
7902
7903 (define-public lure-fr
7904 (make-lure-package
7905 "lure-fr" "fr" "1y51jjb7f8023832g44vd1jsb6ni85586pi2n5hjg9qjk6gi90r9"))
7906
7907 (define-public lure-it
7908 (make-lure-package
7909 "lure-it" "it" "1ks6n39r1cllisrrh6pcr39swsdv7ng3gx5c47vaw71zzfr70hjj"))
7910
7911 (define (make-queen-package name file-prefix release language hash)
7912 (package
7913 (name name)
7914 (version release)
7915 (source
7916 (origin
7917 (method url-fetch)
7918 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7919 "Flight%20of%20the%20Amazon%20Queen/"
7920 file-prefix release ".zip"))
7921 (sha256
7922 (base32 hash))))
7923 (build-system trivial-build-system)
7924 (arguments
7925 `(#:modules ((guix build utils))
7926 #:builder
7927 (begin
7928 (use-modules (guix build utils))
7929 (let* ((out (assoc-ref %outputs "out"))
7930 (share (string-append out "/share"))
7931 (data (string-append share "/" ,name))
7932 (apps (string-append share "/applications"))
7933 (bin (string-append out "/bin"))
7934 (executable (string-append bin "/" ,name))
7935 (scummvm (assoc-ref %build-inputs "scummvm")))
7936 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
7937 "/bin/unzip")))
7938 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
7939 (let ((doc (string-append share "/doc/" ,name "-" ,version)))
7940 (install-file "readme.txt" doc))
7941 (install-file "queen.1c" data)
7942 (mkdir-p bin)
7943 (let ((bash (assoc-ref %build-inputs "bash")))
7944 (with-output-to-file executable
7945 (lambda ()
7946 (format #t "#!~a/bin/bash~%" bash)
7947 (format #t "exec ~a/bin/scummvm -q fr -p ~a queen~%"
7948 scummvm data))))
7949 (chmod executable #o755)
7950 ;; Create desktop file. There is no dedicated
7951 ;; icon for the game, so we borrow SCUMMVM's.
7952 (mkdir-p apps)
7953 (with-output-to-file (string-append apps "/" ,name ".desktop")
7954 (lambda _
7955 (format #t
7956 "[Desktop Entry]~@
7957 Name=Flight of the Amazon Queen~@
7958 GenericName=Queen~@
7959 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~@
7960 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~@
7961 Type=Application~@
7962 Exec=~a~@
7963 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
7964 Categories=AdventureGame;Game;RolePlaying;~@
7965 Keywords=adventure;game;roleplaying;fantasy;~%"
7966 executable scummvm))))
7967 #t)))
7968 (native-inputs
7969 `(("unzip" ,unzip)))
7970 (inputs
7971 `(("bash" ,bash)
7972 ("scummvm" ,scummvm)))
7973 (home-page "https://www.scummvm.org/")
7974 (synopsis "Classic 2D point and click adventure game")
7975 (description "Flight of the Amazon Queen is a 2D point-and-click
7976 adventure game set in the 1940s.
7977
7978 You assume the role of Joe King, a pilot for hire who is given the job
7979 of flying Faye Russell (a famous movie star) into the Amazon jungle
7980 for a photo shoot. Of course, things never go according to plans.
7981 After an unfortunate turn of events they find themselves stranded in
7982 the heart of the Amazon jungle, where Joe will embark on a quest to
7983 rescue a kidnapped princess and in the process, discover the true
7984 sinister intentions of a suspiciously located Lederhosen company. In
7985 a rich 2D environment, Joe will cross paths with a variety of unlikely
7986 jungle inhabitants including, but not limited to, a tribe of Amazon
7987 women and 6-foot-tall pygmies.")
7988 (license (license:non-copyleft "file:///readme.txt"))))
7989
7990 (define-public queen
7991 (make-queen-package
7992 "queen" "FOTAQ_Talkie-" "1.1" "en"
7993 "1a6q71q1dl9vvw2qqsxk5h1sv0gaqy6236zr5905w2is01gdsp52"))
7994
7995 (define-public queen-de
7996 (make-queen-package
7997 "queen-de" "FOTAQ_Ger_talkie-" "1.0" "de"
7998 "13vn43x7214vyprlpqabvv71k890nff3d6fjscflr1ll7acjca3f"))
7999
8000 (define-public queen-fr
8001 (make-queen-package
8002 "queen-fr" "FOTAQ_Fr_Talkie_" "1.0" "fr"
8003 "0hq5g4qrkcwm2kn5i4kv4hijs9hi7bw9xl1vrwd1l69qqn30crwy"))
8004
8005 (define-public queen-it
8006 (make-queen-package
8007 "queen-it" "FOTAQ_It_Talkie_" "1.0" "it"
8008 "1h76y70lrpzfjkm53n4nr364nhyka54vbz9r7sadzyzl7c7ilv4d"))
8009
8010 (define-public sky
8011 (package
8012 (name "sky")
8013 (version "1.2") ;1.3 is floppy version
8014 (source
8015 (origin
8016 (method url-fetch)
8017 (uri (string-append "mirror://sourceforge/scummvm/extras/"
8018 "Beneath%20a%20Steel%20Sky/"
8019 "bass-cd-" version ".zip"))
8020 (sha256
8021 (base32 "14s5jz67kavm8l15gfm5xb7pbpn8azrv460mlxzzvdpa02a9n82k"))))
8022 (build-system trivial-build-system)
8023 (arguments
8024 `(#:modules ((guix build utils))
8025 #:builder
8026 (begin
8027 (use-modules (guix build utils))
8028 (let* ((out (assoc-ref %outputs "out"))
8029 (share (string-append out "/share"))
8030 (data (string-append share "/" ,name))
8031 (apps (string-append share "/applications"))
8032 (bin (string-append out "/bin"))
8033 (executable (string-append bin "/" ,name))
8034 (scummvm (assoc-ref %build-inputs "scummvm")))
8035 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
8036 "/bin/unzip")))
8037 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
8038 (let ((doc (string-append share "/doc/bass-" ,version)))
8039 (install-file "readme.txt" doc))
8040 (for-each (lambda (f) (install-file f data))
8041 (find-files "." "^sky\\."))
8042 ;; Build the executable.
8043 (mkdir-p bin)
8044 (let ((bash (assoc-ref %build-inputs "bash")))
8045 (with-output-to-file executable
8046 (lambda ()
8047 (format #t "#!~a/bin/bash~%" bash)
8048 (format #t "exec ~a/bin/scummvm -p ~a sky~%" scummvm data))))
8049 (chmod executable #o755)
8050 ;; Create desktop file. There is no dedicated
8051 ;; icon for the game, so we borrow SCUMMVM's.
8052 (mkdir-p apps)
8053 (with-output-to-file (string-append apps "/" ,name ".desktop")
8054 (lambda _
8055 (format #t
8056 "[Desktop Entry]~@
8057 Name=Beneath a Steel Sky~@
8058 GenericName=Bass~@
8059 Exec=~a~@
8060 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
8061 Categories=AdventureGame;Game;RolePlaying;~@
8062 Keywords=adventure;game;roleplaying;cyberpunk;~@
8063 Comment=A science-fiction adventure game set in a bleak post-apocalyptic vision of the future~@
8064 Comment[de]=Ein Science-Fiction-Abenteuerspiel \
8065 angesiedelt in einer düsteren, postapokalyptischen Vision der Zukunft~@
8066 Type=Application~%"
8067 executable scummvm)))
8068 #t))))
8069 (native-inputs
8070 `(("unzip" ,unzip)))
8071 (inputs
8072 `(("bash" ,bash)
8073 ("scummvm" ,scummvm)))
8074 (home-page "https://www.scummvm.org/")
8075 (synopsis "Classic 2D point an click science-fiction adventure game")
8076 (description
8077 "Beneath a Steel Sky is a science-fiction thriller set in a bleak
8078 post-apocalyptic vision of the future. It revolves around Union City,
8079 where selfishness, rivalry, and corruption by its citizens seems to be
8080 all too common, those who can afford it live underground, away from
8081 the pollution and social problems which are plaguing the city.
8082
8083 You take on the role of Robert Foster, an outcast of sorts from the
8084 city since a boy who was raised in a remote environment outside of
8085 Union City simply termed ``the gap''. Robert's mother took him away
8086 from Union City as a child on their way to ``Hobart'' but the
8087 helicopter crashed on its way. Unfortunately, Robert's mother died,
8088 but he survived and was left to be raised by a local tribe from the
8089 gap.
8090
8091 Years later, Union City security drops by and abducts Robert, killing
8092 his tribe in the process; upon reaching the city the helicopter taking
8093 him there crashes with him escaping, high upon a tower block in the
8094 middle of the city. He sets out to discover the truth about his past,
8095 and to seek vengeance for the killing of his tribe.")
8096 (license (license:non-copyleft "file:///readme.txt"))))
8097
8098 (define-public gnurobots
8099 (package
8100 (name "gnurobots")
8101 (version "1.2.0")
8102 (source
8103 (origin
8104 (method url-fetch)
8105 (uri (string-append "mirror://gnu/gnurobots/gnurobots-"
8106 version ".tar.gz"))
8107 (sha256
8108 (base32
8109 "07gi3lsmbzzsjambgixj6xy79lh22km84z7bnzgwzxdy806lyvwb"))))
8110 (build-system gnu-build-system)
8111 (inputs
8112 `(("glib" ,glib)
8113 ("gtk+" ,gtk+-2)
8114 ("vte" ,vte/gtk+-2)
8115 ("readline" ,readline)
8116 ("guile" ,guile-1.8)))
8117 (native-inputs
8118 `(("pkg-config" ,pkg-config)))
8119 (arguments
8120 `(#:make-flags
8121 (list
8122 ;; Do not abort build on "deprecated-declarations" warnings.
8123 "CFLAGS=-Wno-error=deprecated-declarations"
8124 ;; Find readline headers in sub-directory.
8125 (string-append "READLINE_CFLAGS=-I"
8126 (assoc-ref %build-inputs "readline")
8127 "/include/readline/"))
8128 #:phases
8129 (modify-phases %standard-phases
8130 (add-after 'install 'install-doc
8131 (lambda* (#:key outputs #:allow-other-keys)
8132 (install-file "doc/Robots-HOWTO"
8133 (string-append (assoc-ref outputs "out")
8134 "/share/doc/gnurobots-"
8135 ,version))
8136 #t)))))
8137 (home-page "https://www.gnu.org/software/gnurobots/")
8138 (synopsis "Program a little robot and watch it explore a world")
8139 (description
8140 "GNU Robots is a game in which you program a robot to explore a world
8141 full of enemies that can hurt it, obstacles and food to be eaten. The goal of
8142 the game is to stay alive and collect prizes. The robot program conveniently
8143 may be written in a plain text file in the Scheme programming language.")
8144 (license license:gpl3+)))
8145
8146 (define-public ri-li
8147 (package
8148 (name "ri-li")
8149 (version "2.0.1")
8150 (source (origin
8151 (method url-fetch)
8152 (uri (string-append "mirror://sourceforge/ri-li/"
8153 "Ri-li%20Linux_Unix/Ri-li%20V" version "/"
8154 "Ri-li-" version ".tar.bz2"))
8155 (sha256
8156 (base32
8157 "1gcdsgnnbbn1mb1hkpwniv3fhkaj1nn8gq33v5c16q3wqchcq77p"))
8158 ;; Taken from
8159 ;; <https://github.com/NixOS/nixpkgs/blob/master/pkgs/games/rili/moderinze_cpp.patch>.
8160 ;; It doesn't build otherwise.
8161 (patches (search-patches "ri-li-modernize_cpp.patch"))))
8162 (build-system gnu-build-system)
8163 (arguments
8164 `(#:phases
8165 (modify-phases %standard-phases
8166 ;; Remove "gentoo" subdirectory from Makefile, as it is
8167 ;; missing a make file and generates a build failure.
8168 (add-after 'configure 'fix-build
8169 (lambda _
8170 (substitute* "Makefile"
8171 ((" gentoo") ""))
8172 #t))
8173 (add-after 'install 'install-desktop-file
8174 (lambda* (#:key outputs #:allow-other-keys)
8175 (let* ((out (assoc-ref outputs "out"))
8176 (apps (string-append out "/share/applications"))
8177 (pixmaps (string-append out "/share/pixmaps")))
8178 (for-each (lambda (f) (install-file f pixmaps))
8179 (find-files "data" "\\.(png|ico)$"))
8180 (mkdir-p apps)
8181 (with-output-to-file (string-append apps "/ri-li.desktop")
8182 (lambda _
8183 (format #t
8184 "[Desktop Entry]~@
8185 Name=Ri-li~@
8186 Exec=~a/bin/Ri_li~@
8187 Icon=~a/Ri-li-icon-32x32.png~@
8188 Categories=Game;ArcadeGame;~@
8189 Keywords=toy;train;wooden;snake-like;engine;~@
8190 Comment=a toy simulator game~@
8191 Comment[de]=Ein Spiel mit einem kleinen Zug~@
8192 Comment[fr]=un jeu de petit train~@
8193 Comment[ro_RO]=un joc cu un tren de jucărie~@
8194 Terminal=false~@
8195 Type=Application~%"
8196 out pixmaps))))
8197 #t))
8198 (add-after 'install-desktop-file 'remove-spurious-files
8199 ;; Delete redundant files already installed somewhere else.
8200 (lambda* (#:key outputs #:allow-other-keys)
8201 (let ((out (assoc-ref outputs "out")))
8202 (for-each delete-file
8203 (find-files (string-append out "/share/Ri-li")
8204 "\\.(png|ico)|COPYING"))
8205 #t))))))
8206 (inputs
8207 `(("sdl" ,(sdl-union (list sdl sdl-mixer)))))
8208 (home-page "http://www.ri-li.org")
8209 (synopsis "Toy train simulation game")
8210 (description "Ri-li is a game in which you drive a wooden toy
8211 steam locomotive across many levels and collect all the coaches to
8212 win.")
8213 ;; The project is dual-licensed GPL2+ and GPL3+.
8214 (license (list license:gpl2+ license:gpl3+))))
8215
8216 (define-public freeorion
8217 (package
8218 (name "freeorion")
8219 (version "0.4.9")
8220 (source
8221 (origin
8222 (method url-fetch)
8223 (uri (string-append "https://github.com/freeorion/freeorion/releases/"
8224 "download/v" version "/FreeOrion_v" version
8225 "_2020-02-02.db53471_Source.tar.gz"))
8226 (sha256
8227 (base32 "1qfnqkysagh8dw26plk229qh17mv4prjxs6qhfyczrmrrakb72an"))
8228 (modules '((guix build utils)))
8229 (snippet
8230 '(begin
8231 ;; There are some bundled fonts.
8232 (for-each delete-file-recursively '("default/data/fonts"))
8233 #t))))
8234 (build-system cmake-build-system)
8235 (arguments
8236 '(#:tests? #f ;no test
8237 #:phases
8238 (modify-phases %standard-phases
8239 (add-after 'unpack 'unbundle-fonts
8240 (lambda* (#:key inputs #:allow-other-keys)
8241 (let ((roboto-dir (string-append (assoc-ref inputs "font-roboto")
8242 "/share/fonts/truetype/")))
8243 (substitute* "UI/ClientUI.cpp"
8244 (("\\(GetRootDataDir.*?Roboto-(Bold|Regular)\\.ttf\"\\)\\.string\\(\\)\\);"
8245 all type)
8246 (string-append "\"" roboto-dir "Roboto-" type ".ttf\");")))
8247 #t))))))
8248 (inputs
8249 `(("boost" ,boost)
8250 ("boost_signals" ,boost-signals2)
8251 ("font-dejavu" ,font-dejavu)
8252 ("font-roboto" ,font-google-roboto)
8253 ("freetype2" ,freetype)
8254 ("glew" ,glew)
8255 ("glu" ,glu)
8256 ("libogg" ,libogg)
8257 ("libpng" ,libpng)
8258 ("libvorbis" ,libvorbis)
8259 ("openal" ,openal)
8260 ("python2" ,python-2.7)
8261 ("sdl2" ,sdl2)
8262 ("zlib" ,zlib)))
8263 (home-page "https://www.freeorion.org/index.php/Main_Page")
8264 (synopsis "Turn-based space empire and galactic conquest computer game")
8265 (description
8266 "FreeOrion is a turn-based space empire and galactic conquest (4X)
8267 computer game being designed and built by the FreeOrion project. Control an
8268 empire with the goal of exploring the galaxy, expanding your territory,
8269 exploiting the resources, and exterminating rival alien empires. FreeOrion is
8270 inspired by the tradition of the Master of Orion games, but is not a clone or
8271 remake of that series or any other game.")
8272 ;; Source code is released under gpl2. Artwork, music and sounds, and
8273 ;; in-game text are released under cc-by-sa3.0. Game content scripts are
8274 ;; released under both gpl2 and cc-by-sa3.0. Bundled Gigi library is
8275 ;; released under lgpl2.1+.
8276 (license (list license:gpl2 license:cc-by-sa3.0 license:lgpl2.1+))))
8277
8278 (define-public leela-zero
8279 (package
8280 (name "leela-zero")
8281 (version "0.17")
8282 (source
8283 (origin
8284 (method git-fetch)
8285 (uri (git-reference
8286 (url "https://github.com/leela-zero/leela-zero.git")
8287 (commit (string-append "v" version))))
8288 (file-name (git-file-name name version))
8289 (sha256
8290 (base32
8291 "17px5iny8mql5c01bymcli7zfssswkzvb2i8gnsmjcck6i2n8srl"))
8292 (patches (search-patches "leela-zero-gtest.patch"))))
8293 (build-system cmake-build-system)
8294 (native-inputs
8295 `(("googletest" ,googletest)))
8296 (inputs
8297 `(("boost" ,boost)
8298 ("ocl-icd" ,ocl-icd)
8299 ("openblas" ,openblas)
8300 ("opencl-headers" ,opencl-headers)
8301 ("qtbase" ,qtbase)
8302 ("zlib" ,zlib)))
8303 (arguments
8304 '(#:configure-flags '("-DUSE_BLAS=YES")
8305 #:phases (modify-phases %standard-phases
8306 (add-before 'configure 'fix-tests
8307 (lambda* (#:key outputs #:allow-other-keys)
8308 (let ((home (getcwd)))
8309 (setenv "HOME" home)
8310 (substitute* "src/tests/gtests.cpp"
8311 (("\\.\\./src/tests/0k\\.txt")
8312 (string-append home "/src/tests/0k.txt"))
8313 (("cfg_gtp_mode = true;")
8314 "cfg_gtp_mode = true; cfg_cpu_only = true;")))
8315 #t))
8316 (replace 'check
8317 (lambda _
8318 (invoke "./tests"))))))
8319 (home-page "https://github.com/leela-zero/leela-zero")
8320 (synopsis "Program playing the game of Go")
8321 (description
8322 "Leela-zero is a Go engine with no human-provided knowledge, modeled after
8323 the AlphaGo Zero paper. The current best network weights file for the engine
8324 can be downloaded from @url{https://zero.sjeng.org/best-network}.")
8325 (license license:gpl3+)))
8326
8327 (define-public q5go
8328 (package
8329 (name "q5go")
8330 (version "1.0")
8331 (source (origin
8332 (method git-fetch)
8333 (uri (git-reference
8334 (url "https://github.com/bernds/q5Go.git")
8335 (commit (string-append "q5go-" version))))
8336 (file-name (git-file-name name version))
8337 (sha256
8338 (base32
8339 "1gdlfqcqkqv7vph3qwq78d0qz6dhmdsranxq9bmixiisbzkqby31"))))
8340 (build-system gnu-build-system)
8341 (native-inputs
8342 `(("pkg-config" ,pkg-config)))
8343 (inputs
8344 `(("qtbase" ,qtbase)
8345 ("qtmultimedia" ,qtmultimedia)
8346 ("qtsvg" ,qtsvg)))
8347 (arguments
8348 '(#:phases
8349 (modify-phases %standard-phases
8350 (add-after 'unpack 'fix-configure-script
8351 (lambda _
8352 ;; Bypass the unavailable qtchooser program.
8353 (substitute* "configure"
8354 (("test -z \"QTCHOOSER\"")
8355 "false")
8356 (("qtchooser -run-tool=(.*) -qt=qt5" _ command)
8357 command))
8358 #t))
8359 (add-after 'unpack 'fix-paths
8360 (lambda _
8361 (substitute* '("src/pics/Makefile.in"
8362 "src/translations/Makefile.in")
8363 (("\\$\\(datadir\\)/qGo/")
8364 "$(datadir)/q5go/"))
8365 #t))
8366 (add-after 'install 'install-desktop-file
8367 (lambda* (#:key outputs #:allow-other-keys)
8368 (let* ((out (assoc-ref outputs "out"))
8369 (apps (string-append out "/share/applications"))
8370 (pics (string-append out "/share/q5go/pics")))
8371 (delete-file-recursively (string-append out "/share/applnk"))
8372 (delete-file-recursively (string-append out "/share/mimelnk"))
8373 (install-file "../source/src/pics/Bowl.ico" pics)
8374 (mkdir-p apps)
8375 (with-output-to-file (string-append apps "/q5go.desktop")
8376 (lambda _
8377 (format #t
8378 "[Desktop Entry]~@
8379 Name=q5go~@
8380 Exec=~a/bin/q5go~@
8381 Icon=~a/Bowl.ico~@
8382 Categories=Game;~@
8383 Comment=Game of Go~@
8384 Comment[de]=Spiel des Go~@
8385 Comment[eo]=Goo~@
8386 Comment[es]=Juego de Go~@
8387 Comment[fr]=Jeu de Go~@
8388 Comment[ja]=囲碁~@
8389 Comment[ko]=바둑~@
8390 Comment[zh]=围棋~@
8391 Terminal=false~@
8392 Type=Application~%"
8393 out pics))))
8394 #t)))))
8395 (synopsis "Qt GUI to play the game of Go")
8396 (description
8397 "This a tool for Go players which performs the following functions:
8398 @itemize
8399 @item SGF editor,
8400 @item Analysis frontend for Leela Zero (or compatible engines),
8401 @item GTP interface (to play against an engine),
8402 @item IGS client (to play on the internet),
8403 @item Export games to a variety of formats.
8404 @end itemize")
8405 (home-page "https://github.com/bernds/q5Go")
8406 (license license:gpl2+)))
8407
8408 (define-public ktuberling
8409 (package
8410 (name "ktuberling")
8411 (version "19.08.3")
8412 (source
8413 (origin
8414 (method url-fetch)
8415 (uri (string-append "mirror://kde/stable/applications/" version
8416 "/src/ktuberling-" version ".tar.xz"))
8417 (sha256
8418 (base32 "1qdf4q6wjh1lnlqw5c8z4rpj9w5vbyjfri1dah6yjm3mwppbc12j"))))
8419 (build-system qt-build-system)
8420 (native-inputs
8421 `(("extra-cmake-modules" ,extra-cmake-modules)
8422 ("perl" ,perl)))
8423 (inputs
8424 `(("kcompletion" ,kcompletion)
8425 ("kconfigwidgets" ,kconfigwidgets)
8426 ("kcoreaddons" ,kcoreaddons)
8427 ("kcrash" ,kcrash)
8428 ("kdbusaddons" ,kdbusaddons)
8429 ("kdelibs4support" ,kdelibs4support)
8430 ("ki18n" ,ki18n)
8431 ("kwidgetsaddons" ,kwidgetsaddons)
8432 ("kxmlgui" ,kxmlgui)
8433 ("libkdegames" ,libkdegames)
8434 ("qtbase" ,qtbase)
8435 ("qtmultimedia" ,qtmultimedia)
8436 ("qtdeclarative" ,qtdeclarative)
8437 ("qtsvg" ,qtsvg)))
8438 (home-page "https://games.kde.org/")
8439 (synopsis "Stamp drawing toy")
8440 (description "KTuberling is a drawing toy intended for small children and
8441 adults who remain young at heart. The game has no winner; the only purpose is
8442 to make the funniest faces you can. Several activites are possible, e.g.:
8443
8444 @itemize
8445 @item Give the potato a funny face, clothes, and other goodies
8446 @item Build a small town, complete with school, zoo, and fire department
8447 @item Create a fantastic moonscape with spaceships and aliens
8448 @item Top a pizza
8449 @end itemize
8450
8451 KTuberling can speak the name of each the object in several languages,
8452 to assist in learning basic vocabulary.
8453
8454 This package is part of the KDE games module.")
8455 (license (list license:gpl2+ license:fdl1.2+))))
8456
8457 (define-public picmi
8458 (package
8459 (name "picmi")
8460 (version "19.08.3")
8461 (source
8462 (origin
8463 (method url-fetch)
8464 (uri (string-append "mirror://kde/stable/applications/" version
8465 "/src/picmi-" version ".tar.xz"))
8466 (sha256
8467 (base32 "0z9mpmv49w914gqdx274brdzl6d1bz9j9nkvbwgmr3iq1ba49m3f"))))
8468 (build-system qt-build-system)
8469 (native-inputs
8470 `(("extra-cmake-modules" ,extra-cmake-modules)
8471 ("kdoctools" ,kdoctools)))
8472 (inputs
8473 `(("kcoreaddons" ,kcoreaddons)
8474 ("kcrash" ,kcrash)
8475 ("kdbusaddons" ,kdbusaddons)
8476 ("kdeclarative" ,kdeclarative)
8477 ("ki18n" ,ki18n)
8478 ("kio" ,kio)
8479 ("knewstuff" ,knewstuff)
8480 ("kxmlgui" ,kxmlgui)
8481 ("libkdegames" ,libkdegames)
8482 ("qtbase" ,qtbase)
8483 ("qtdeclarative" ,qtdeclarative)
8484 ("qtsvg" ,qtsvg)))
8485 (home-page "https://games.kde.org/")
8486 (synopsis "Number logic game")
8487 (description "Picmi is a number logic game in which cells in a grid have
8488 to be colored or left blank according to numbers given at the side of the
8489 grid. The aim is to reveal a hidden picture.
8490
8491 This package is part of the KDE games module.")
8492 (license (list license:gpl2+ license:fdl1.2+))))
8493
8494 (define-public kolf
8495 (package
8496 (name "kolf")
8497 (version "19.08.3")
8498 (source
8499 (origin
8500 (method url-fetch)
8501 (uri (string-append "mirror://kde/stable/applications/" version
8502 "/src/kolf-" version ".tar.xz"))
8503 (sha256
8504 (base32 "06sfd0llr5cc3zf1vrpcxgw9bm009ky7y8822kynic9ipcd4z1hw"))))
8505 (build-system qt-build-system)
8506 (native-inputs
8507 `(("extra-cmake-modules" ,extra-cmake-modules)
8508 ("kdoctools" ,kdoctools)))
8509 (inputs
8510 `(("kcompletion" ,kcompletion)
8511 ("kconfigwidgets" ,kconfigwidgets)
8512 ("kcoreaddons" ,kcoreaddons)
8513 ("kcrash" ,kcrash)
8514 ("kdbusaddons" ,kdbusaddons)
8515 ("ki18n" ,ki18n)
8516 ("kio" ,kio)
8517 ("kwidgetsaddons" ,kwidgetsaddons)
8518 ("kxmlgui" ,kxmlgui)
8519 ("ktextwidgets" ,ktextwidgets)
8520 ("libkdegames" ,libkdegames)
8521 ("qtbase" ,qtbase)
8522 ("qtdeclarative" ,qtdeclarative)))
8523 (home-page "https://games.kde.org/")
8524 (synopsis "Miniature golf game")
8525 (description "Kolf is a miniature golf game for one to ten players. The
8526 game is played from an overhead view, with a short bar representing the golf
8527 club. Kolf features many different types of objects, such as water hazards,
8528 slopes, sand traps, and black holes (warps), among others.
8529
8530 Features are:
8531 @itemize
8532 @item Single and Multi-player (up to ten players) modes
8533 @item High scores table
8534 @item Dynamic courses
8535 @item Third-party courses
8536 @item Course editor
8537 @end itemize
8538
8539 This package is part of the KDE games module.")
8540 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
8541
8542 (define-public libkmahjongg
8543 (package
8544 (name "libkmahjongg")
8545 (version "19.08.3")
8546 (source
8547 (origin
8548 (method url-fetch)
8549 (uri (string-append "mirror://kde/stable/applications/"
8550 version "/src/libkmahjongg-" version ".tar.xz"))
8551 (sha256
8552 (base32 "0rdimk11hrc8qrmiv26z0ddjzi1k6806c0rfskx4cwmildmh6zgx"))))
8553 (build-system qt-build-system)
8554 (native-inputs
8555 `(("extra-cmake-modules" ,extra-cmake-modules)))
8556 (inputs
8557 `(("kauth" ,kauth)
8558 ("kcompletion" ,kcompletion)
8559 ;("kconfig" ,kconfig)
8560 ("kcodecs" ,kcodecs)
8561 ("kconfigwidgets" ,kconfigwidgets)
8562 ("kcoreaddons" ,kcoreaddons)
8563 ("ki18n" ,ki18n)
8564 ("kwidgetsaddons" ,kwidgetsaddons)
8565 ("qtbase" ,qtbase)
8566 ("qtsvg" ,qtsvg)))
8567 (home-page "https://games.kde.org/")
8568 (synopsis "Shared library for kmahjongg and kshisen")
8569 (description "Shared library and common files for kmahjongg, kshisen and
8570 other Mah Jongg like games.")
8571 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
8572
8573 (define-public kmahjongg
8574 (package
8575 (name "kmahjongg")
8576 (version "19.08.3")
8577 (source
8578 (origin
8579 (method url-fetch)
8580 (uri (string-append "mirror://kde/stable/applications/"
8581 version "/src/kmahjongg-" version ".tar.xz"))
8582 (sha256
8583 (base32 "08na845h0nhmfrszdmvfq5y1dy7kgbrlzjp0f5snvbbf7w44ci6p"))))
8584 (build-system qt-build-system)
8585 (native-inputs
8586 `(("extra-cmake-modules" ,extra-cmake-modules)
8587 ("kdoctools" ,kdoctools)))
8588 (inputs
8589 `(("kcompletion" ,kcompletion)
8590 ("kcrash" ,kcrash)
8591 ("kdbusaddons" ,kdbusaddons)
8592 ("kdeclarative" ,kdeclarative)
8593 ("ki18n" ,ki18n)
8594 ("knewstuff" ,knewstuff)
8595 ("kxmlgui" ,kxmlgui)
8596 ("libkdegames" ,libkdegames)
8597 ("libkmahjongg" ,libkmahjongg)
8598 ("qtbase" ,qtbase)
8599 ("qtdeclarative" ,qtdeclarative)
8600 ("qtsvg" ,qtsvg)))
8601 (home-page "https://games.kde.org/")
8602 (synopsis "Tile laying patience")
8603 (description "In KMahjongg the tiles are scrambled and staked on top of
8604 each other to resemble a certain shape. The player is then expected to remove
8605 all the tiles off the game board by locating each tile's matching pair.
8606
8607 A variety of tile layouts are included, as well as an editor to create new
8608 layouts.
8609
8610 This package is part of the KDE games module.")
8611 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
8612
8613 (define-public kshisen
8614 (package
8615 (name "kshisen")
8616 (version "19.08.3")
8617 (source
8618 (origin
8619 (method url-fetch)
8620 (uri (string-append "mirror://kde/stable/applications/"
8621 version "/src/kshisen-" version ".tar.xz"))
8622 (sha256
8623 (base32 "1bq5m48af4h5apfp3bfsp76nlpv6h5sc0gd544zv7cgpfznz1sds"))))
8624 (build-system qt-build-system)
8625 (native-inputs
8626 `(("extra-cmake-modules" ,extra-cmake-modules)
8627 ;("perl" ,perl)
8628 ;("pkg-config" ,pkg-config)
8629 ("kdoctools" ,kdoctools)))
8630 (inputs
8631 `(("kauth" ,kauth)
8632 ("kcompletion" ,kcompletion)
8633 ("kconfigwidgets" ,kconfigwidgets)
8634 ("kcoreaddons" ,kcoreaddons)
8635 ("kcrash" ,kcrash)
8636 ("kdbusaddons" ,kdbusaddons)
8637 ("ki18n" ,ki18n)
8638 ("kxmlgui" ,kxmlgui)
8639 ("libkdegames" ,libkdegames)
8640 ("libkmahjongg" ,libkmahjongg)
8641 ("qtbase" ,qtbase)
8642 ("qtdeclarative" ,qtdeclarative)))
8643 (home-page "https://games.kde.org/")
8644 (synopsis "Shisen-Sho solitaire game")
8645 (description "KShisen is a solitaire-like game played using the standard
8646 set of Mahjong tiles. Unlike Mahjong however, KShisen has only one layer of
8647 scrambled tiles
8648
8649 This package is part of the KDE games module.")
8650 (license license:gpl2+)))
8651
8652 (define-public kajongg
8653 (package
8654 (name "kajongg")
8655 (version "19.08.3")
8656 (source
8657 (origin
8658 (method url-fetch)
8659 (uri (string-append "mirror://kde/stable/applications/"
8660 version "/src/kajongg-" version ".tar.xz"))
8661 (sha256
8662 (base32 "0ql6p5zifdpdf65r7ki9ml123azpwwk9x3x8r9ij6xhjnf7p7x6w"))))
8663 (build-system qt-build-system)
8664 (native-inputs
8665 `(("extra-cmake-modules" ,extra-cmake-modules)
8666 ;("perl" ,perl)
8667 ("kdoctools" ,kdoctools)))
8668 (inputs
8669 `(("kconfig" ,kconfig)
8670 ("kconfigwidgets" ,kconfigwidgets)
8671 ("kcoreaddons" ,kcoreaddons)
8672 ("ki18n" ,ki18n)
8673 ("libkmahjongg" ,libkmahjongg)
8674 ("python" ,python)
8675 ("qtbase" ,qtbase)
8676 ("qtsvg" ,qtsvg)))
8677 (propagated-inputs
8678 `(("python-twisted" ,python-twisted)
8679 ("python-pyqt" ,python-pyqt)))
8680 ;; FIXME: Need to wrap PYTHONPATH
8681 (home-page "https://games.kde.org/")
8682 (synopsis "Classical Mah Jongg game for 4 players")
8683 (description "Kajongg is the ancient Chinese board game for 4 players.
8684
8685 If you are looking for the Mah Jongg solitaire please use the application
8686 kmahjongg.
8687
8688 Kajongg can be used in two different ways: Scoring a manual game where you
8689 play as always and use Kajongg for the computation of scores and for
8690 bookkeeping. Or you can use Kajongg to play against any combination of other
8691 human players or computer players.
8692
8693 This package is part of the KDE games module.")
8694 (license (list license:gpl2+ license:fdl1.2+))))
8695
8696 (define-public kbreakout
8697 (package
8698 (name "kbreakout")
8699 (version "19.08.3")
8700 (source
8701 (origin
8702 (method url-fetch)
8703 (uri (string-append "mirror://kde/stable/applications/" version
8704 "/src/kbreakout-" version ".tar.xz"))
8705 (sha256
8706 (base32 "0gwzx1z9mxrjlcjzglg8cxkyd6900whcar3b5j9laxxarc6xhj8w"))))
8707 (build-system qt-build-system)
8708 (native-inputs
8709 `(("extra-cmake-modules" ,extra-cmake-modules)
8710 ("kdoctools" ,kdoctools)))
8711 (inputs
8712 `(("kcompletion" ,kcompletion)
8713 ("kconfig" ,kconfig)
8714 ("kconfigwidgets" ,kconfigwidgets)
8715 ("kcoreaddons" ,kcoreaddons)
8716 ("kcrash" ,kcrash)
8717 ("kdbusaddons" ,kdbusaddons)
8718 ("ki18n" ,ki18n)
8719 ("kwidgetsaddons" ,kwidgetsaddons)
8720 ("kxmlgui" ,kxmlgui)
8721 ("libkdegames" ,libkdegames)
8722 ("qtbase" ,qtbase)
8723 ("qtdeclarative" ,qtdeclarative)))
8724 (home-page "https://games.kde.org/")
8725 (synopsis "Breakout like game")
8726 (description "KBreakout is similar to the classics breakout and xboing,
8727 featuring a number of added graphical enhancements and effects. You control a
8728 paddle at the bottom of the playing-field, and must destroy bricks at the top
8729 by bouncing balls against them.
8730
8731 This package is part of the KDE games module.")
8732 (license (list license:gpl2+ license:fdl1.2+))))
8733
8734 (define-public kmines
8735 (package
8736 (name "kmines")
8737 (version "19.08.3")
8738 (source
8739 (origin
8740 (method url-fetch)
8741 (uri (string-append "mirror://kde/stable/applications/" version
8742 "/src/kmines-" version ".tar.xz"))
8743 (sha256
8744 (base32 "0ac3za36lh8hpx6mqfic9amwmzhzhzplm9hg3pw12gxl5a9mvfsf"))))
8745 (build-system qt-build-system)
8746 (native-inputs
8747 `(("extra-cmake-modules" ,extra-cmake-modules)
8748 ("kdoctools" ,kdoctools)))
8749 (inputs
8750 `(("kcompletion" ,kcompletion)
8751 ("kconfig" ,kconfig)
8752 ("kconfigwidgets" ,kconfigwidgets)
8753 ("kcoreaddons" ,kcoreaddons)
8754 ("kcrash" ,kcrash)
8755 ("kdbusaddons" ,kdbusaddons)
8756 ("ki18n" ,ki18n)
8757 ("ktextwidgets" ,ktextwidgets)
8758 ("kwidgetsaddons" ,kwidgetsaddons)
8759 ("kxmlgui" ,kxmlgui)
8760 ("libkdegames" ,libkdegames)
8761 ("qtbase" ,qtbase)
8762 ("qtdeclarative" ,qtdeclarative)))
8763 (home-page "https://games.kde.org/")
8764 (synopsis "Classical mine sweeper game")
8765 (description "KMines is a classic Minesweeper game. The idea is to
8766 uncover all the squares without blowing up any mines. When a mine is blown
8767 up, the game is over.
8768
8769 This package is part of the KDE games module.")
8770 (license (list license:gpl2+ license:fdl1.2+))))
8771
8772 (define-public konquest
8773 (package
8774 (name "konquest")
8775 (version "19.08.3")
8776 (source
8777 (origin
8778 (method url-fetch)
8779 (uri (string-append "mirror://kde/stable/applications/"
8780 version "/src/konquest-" version ".tar.xz"))
8781 (sha256
8782 (base32 "02gjxskhi10a1sqh3skcild8zria7wncz1a4sbz7ax1p851q76k1"))))
8783 (build-system qt-build-system)
8784 (native-inputs
8785 `(("extra-cmake-modules" ,extra-cmake-modules)
8786 ("kdoctools" ,kdoctools)))
8787 (inputs
8788 `(("kcompletion" ,kcompletion)
8789 ("kconfig" ,kconfig)
8790 ("kcoreaddons" ,kcoreaddons)
8791 ("kcrash" ,kcrash)
8792 ("kdbusaddons" ,kdbusaddons)
8793 ("kguiaddons" ,kguiaddons)
8794 ("ki18n" ,ki18n)
8795 ("kwidgetsaddons" ,kwidgetsaddons)
8796 ("kxmlgui" ,kxmlgui)
8797 ("libkdegames" ,libkdegames)
8798 ("qtbase" ,qtbase)
8799 ("qtdeclarative" ,qtdeclarative)
8800 ("qtsvg" ,qtsvg)))
8801 (home-page "https://games.kde.org/")
8802 (synopsis "Simple turn-based strategy game")
8803 (description "Konquest is the KDE version of Gnu-Lactic Konquest. Players
8804 conquer other planets by sending ships to them. The goal is to build an
8805 interstellar empire and ultimately conquer all other player's planets. The
8806 game can be played with up to nine empires, commanded either by the computer
8807 or by puny earthlings.
8808
8809 This package is part of the KDE games module.")
8810 (license (list license:gpl2+ license:fdl1.2+))))
8811
8812 (define-public kbounce
8813 (package
8814 (name "kbounce")
8815 (version "19.08.3")
8816 (source
8817 (origin
8818 (method url-fetch)
8819 (uri (string-append "mirror://kde/stable/applications/"
8820 version "/src/kbounce-" version ".tar.xz"))
8821 (sha256
8822 (base32 "02rfv0qzz5cmyfx8f56a45hbm9gsp6m3dcy8ajwx88rw5wpbrr11"))))
8823 (build-system qt-build-system)
8824 (native-inputs
8825 `(("extra-cmake-modules" ,extra-cmake-modules)
8826 ("kdoctools" ,kdoctools)))
8827 (inputs
8828 `(("kcompletion" ,kcompletion)
8829 ("kconfigwidgets" ,kconfigwidgets)
8830 ("kcoreaddons" ,kcoreaddons)
8831 ("kcrash" ,kcrash)
8832 ("kdbusaddons" ,kdbusaddons)
8833 ("ki18n" ,ki18n)
8834 ("kio" ,kio)
8835 ("kwidgetsaddons" ,kwidgetsaddons)
8836 ("kxmlgui" ,kxmlgui)
8837 ("libkdegames" ,libkdegames)
8838 ("qtbase" ,qtbase)
8839 ("qtdeclarative" ,qtdeclarative)
8840 ("qtsvg" ,qtsvg)))
8841 (home-page "https://games.kde.org/")
8842 (synopsis "Jezzball arcade game")
8843 (description "KBounce is a single player arcade game with the elements of
8844 puzzle. It is played on a field, surrounded by wall, with two or more balls
8845 bouncing around within the walls. The object of the game is to build new
8846 walls to decrease the size of the active field.
8847
8848 This package is part of the KDE games module.")
8849 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
8850
8851 (define-public kblocks
8852 (package
8853 (name "kblocks")
8854 (version "19.08.3")
8855 (source
8856 (origin
8857 (method url-fetch)
8858 (uri (string-append "mirror://kde/stable/applications/"
8859 version "/src/kblocks-" version ".tar.xz"))
8860 (sha256
8861 (base32 "0qrm0dihzhkxsq9l49ndzms802x6jn92vvabb2zf2q9z593m69cx"))))
8862 (build-system qt-build-system)
8863 (native-inputs
8864 `(("extra-cmake-modules" ,extra-cmake-modules)
8865 ("kdoctools" ,kdoctools)))
8866 (inputs
8867 `(("kcompletion" ,kcompletion)
8868 ("kconfig" ,kconfig)
8869 ("kconfigwidgets" ,kconfigwidgets)
8870 ("kcoreaddons" ,kcoreaddons)
8871 ("kcrash" ,kcrash)
8872 ("kdbusaddons" ,kdbusaddons)
8873 ("ki18n" ,ki18n)
8874 ("kwidgetsaddons" ,kwidgetsaddons)
8875 ("kxmlgui" ,kxmlgui)
8876 ("libkdegames" ,libkdegames)
8877 ("qtbase" ,qtbase)
8878 ("qtdeclarative" ,qtdeclarative)
8879 ("qtsvg" ,qtsvg)))
8880 (home-page "https://games.kde.org/")
8881 (synopsis "Single player falling blocks puzzle game")
8882 (description "KBlocks is the classic Tetris-like falling blocks game.
8883
8884 The idea is to stack the falling blocks to create horizontal lines without any
8885 gaps. When a line is completed it is removed, and more space is available in
8886 the play area. When there is not enough space for blocks to fall, the game is
8887 over.
8888
8889 This package is part of the KDE games module.")
8890 (license (list license:gpl2+ license:fdl1.2+))))
8891
8892 (define-public ksudoku
8893 (package
8894 (name "ksudoku")
8895 (version "19.08.3")
8896 (source
8897 (origin
8898 (method url-fetch)
8899 (uri (string-append "mirror://kde/stable/applications/"
8900 version "/src/ksudoku-" version ".tar.xz"))
8901 (sha256
8902 (base32 "0rcscz91hilm7l3am5w02n0n8l7xhi4l0n4sskznh68kblw0ggw2"))))
8903 (build-system qt-build-system)
8904 (native-inputs
8905 `(("extra-cmake-modules" ,extra-cmake-modules)
8906 ("kdoctools" ,kdoctools)))
8907 (inputs
8908 `(("karchive", karchive)
8909 ("kconfig" ,kconfig)
8910 ("kconfigwidgets" ,kconfigwidgets)
8911 ("kcoreaddons" ,kcoreaddons)
8912 ("kcrash" ,kcrash)
8913 ("kguiaddons" ,kguiaddons)
8914 ("ki18n" ,ki18n)
8915 ("kiconthemes" ,kiconthemes)
8916 ("kio" ,kio)
8917 ("kwidgetsaddons" ,kwidgetsaddons)
8918 ("kxmlgui" ,kxmlgui)
8919 ("libkdegames" ,libkdegames)
8920 ("glu" ,glu)
8921 ("qtbase" ,qtbase)
8922 ("qtdeclarative" ,qtdeclarative)
8923 ("qtsvg" ,qtsvg)))
8924 (home-page "https://games.kde.org/")
8925 (synopsis "Sudoku puzzle game and solver")
8926 (description "KSudoku is a Sudoku game and solver, supporting a range of
8927 2D and 3D Sudoku variants. In addition to playing Sudoku, it can print Sudoku
8928 puzzle sheets and find the solution to any Sudoku puzzle.
8929
8930 The word Sudoku means \"single number in an allotted place\" in Japanese.
8931 These are the basic rules: Every Sudoku is a square divided into 3x3
8932 subsquares with 3x3 cells each.
8933
8934 Some cells are filled with a number at the beginning. The remaining ones are
8935 to be filled by the player using numbers from 1 to 9, without repeating a
8936 number twice on each column, row or subsquare (each of them must contain only
8937 one 1, one 2, one 3, and so on). The game requires logic and patience.
8938 Solving takes usually 10 to 30 minutes, depending on puzzle level, your skill
8939 and experience.
8940
8941 The numerals in Sudoku puzzles are used for convenience (for example in 16x16
8942 board we use letters): arithmetic relationships between numbers are
8943 irrelevant.
8944
8945 This program supports also 16x16 games with numbers from 1 to 16 and 256
8946 cells with 16 cols, rows and subsquares!
8947
8948 More information at http://en.wikipedia.org/wiki/Sudoku
8949
8950 This package is part of the KDE games module.")
8951 (license (list license:gpl2+ license:fdl1.2+))))
8952
8953 (define-public klines
8954 (package
8955 (name "klines")
8956 (version "19.08.3")
8957 (source
8958 (origin
8959 (method url-fetch)
8960 (uri (string-append "mirror://kde/stable/applications/" version
8961 "/src/klines-" version ".tar.xz"))
8962 (sha256
8963 (base32 "1g1f46jp0rb8gpqkgcf915ydpsscn1sxk3gjvm8bcqgx9ddq59xa"))))
8964 (build-system qt-build-system)
8965 (native-inputs
8966 `(("extra-cmake-modules" ,extra-cmake-modules)
8967 ("kdoctools" ,kdoctools)))
8968 (inputs
8969 `(("kcompletion" ,kcompletion)
8970 ("kconfigwidgets" ,kconfigwidgets)
8971 ("kcoreaddons" ,kcoreaddons)
8972 ("kcrash" ,kcrash)
8973 ("kdbusaddons" ,kdbusaddons)
8974 ("ki18n" ,ki18n)
8975 ("kwidgetsaddons" ,kwidgetsaddons)
8976 ("kxmlgui" ,kxmlgui)
8977 ("libkdegames" ,libkdegames)
8978 ("qtbase" ,qtbase)
8979 ("qtdeclarative" ,qtdeclarative)))
8980 (home-page "https://games.kde.org/")
8981 (synopsis "Place 5 equal pieces together, but wait, there are 3 new ones")
8982 (description "KLines is a simple but highly addictive one player game.
8983
8984 The player has to move the colored balls around the game board, gathering them
8985 into the lines of the same color by five. Once the line is complete it is
8986 removed from the board, therefore freeing precious space. In the same time
8987 the new balls keep arriving by three after each move, filling up the game
8988 board.
8989
8990 KLines is a single-player game where the player removes colored balls from the
8991 board by arranging them into lines of five or more. However, every time the
8992 player moves a ball, three more balls are added to the board.
8993
8994 This package is part of the KDE games module.")
8995 (license (list license:gpl2+ license:fdl1.2+))))
8996
8997 (define-public kgoldrunner
8998 (package
8999 (name "kgoldrunner")
9000 (version "19.08.3")
9001 (source
9002 (origin
9003 (method url-fetch)
9004 (uri (string-append "mirror://kde/stable/applications/" version "/src/kgoldrunner-"
9005 version ".tar.xz"))
9006 (sha256
9007 (base32 "16rcvq796r3asz4v4ap75xvwnxd3dd2nsq5r9vxvzl6rrf1w9bj4"))))
9008 (build-system qt-build-system)
9009 (native-inputs
9010 `(("extra-cmake-modules" ,extra-cmake-modules)
9011 ("kdoctools" ,kdoctools)))
9012 (inputs
9013 `(("kcompletion" ,kcompletion)
9014 ("kcoreaddons" ,kcoreaddons)
9015 ("kcrash" ,kcrash)
9016 ("kdbusaddons" ,kdbusaddons)
9017 ("ki18n" ,ki18n)
9018 ("kio" ,kio)
9019 ("kwidgetsaddons" ,kwidgetsaddons)
9020 ("kxmlgui" ,kxmlgui)
9021 ("libkdegames" ,libkdegames)
9022 ("qtbase" ,qtbase)
9023 ("qtdeclarative" ,qtdeclarative)))
9024 (home-page "https://games.kde.org/")
9025 (synopsis "Action and puzzle solving game")
9026 (description "KGoldrunner is an action game where the hero runs through a
9027 maze, climbs stairs, dig holes and dodges enemies in order to collect all the
9028 gold nuggets and escape to the next level. Your enemies are also after the
9029 gold. Worse still, they are after you!.
9030
9031 KGoldrunner is a fast-paced platform game where the player must navigate a
9032 maze while collecting gold nuggets and avoiding enemies. A variety of level
9033 packs are included, as well as an editor to create new levels.
9034
9035 This package is part of the KDE games module.")
9036 (license (list license:gpl2+ license:fdl1.2+))))
9037
9038 (define-public kdiamond
9039 (package
9040 (name "kdiamond")
9041 (version "19.08.3")
9042 (source
9043 (origin
9044 (method url-fetch)
9045 (uri (string-append "mirror://kde/stable/applications/" version
9046 "/src/kdiamond-" version ".tar.xz"))
9047 (sha256
9048 (base32 "1v5yb9hb26lk277zhw8d37ks829yfqr5anzx1qhms44gca5kqhva"))))
9049 (build-system qt-build-system)
9050 (native-inputs
9051 `(("extra-cmake-modules" ,extra-cmake-modules)
9052 ("kdoctools" ,kdoctools)))
9053 (inputs
9054 `(("kcompletion", kcompletion)
9055 ("kconfig" ,kconfig)
9056 ("kconfigwidgets" ,kconfigwidgets)
9057 ("kcoreaddons" ,kcoreaddons)
9058 ("kcrash" ,kcrash)
9059 ("kdbusaddons" ,kdbusaddons)
9060 ("ki18n" ,ki18n)
9061 ("knotifications" ,knotifications)
9062 ("knotifyconfig" ,knotifyconfig)
9063 ("kwidgetsaddons" ,kwidgetsaddons)
9064 ("kxmlgui" ,kxmlgui)
9065 ("libkdegames" ,libkdegames)
9066 ("qtbase" ,qtbase)
9067 ("qtdeclarative" ,qtdeclarative)))
9068 (home-page "https://games.kde.org/")
9069 (synopsis "Three-in-a-row game")
9070 (description "KDiamond is a three-in-a-row game like Bejeweled. It
9071 features unlimited fun with randomly generated games and five difficulty
9072 levels with varying number of diamond colors and board sizes.
9073
9074 This package is part of the KDE games module.")
9075 (license (list license:gpl2+ license:fdl1.2+))))
9076
9077 (define-public kfourinline
9078 (package
9079 (name "kfourinline")
9080 (version "19.08.3")
9081 (source
9082 (origin
9083 (method url-fetch)
9084 (uri (string-append "mirror://kde/stable/applications/" version
9085 "/src/kfourinline-" version ".tar.xz"))
9086 (sha256
9087 (base32 "1vprs6dc1ccn3g6k594i9s94xy4b91vzlqjysyc6fqcq2fs54ny3"))))
9088 (build-system qt-build-system)
9089 (native-inputs
9090 `(("extra-cmake-modules" ,extra-cmake-modules)
9091 ("kdoctools" ,kdoctools)))
9092 (inputs
9093 `(("kcompletion" ,kcompletion)
9094 ("kconfig" ,kconfig)
9095 ("kconfigwidgets" ,kconfigwidgets)
9096 ("kcoreaddons" ,kcoreaddons)
9097 ("kcrash" ,kcrash)
9098 ("kdelibs4support" ,kdelibs4support)
9099 ("kdnssd" ,kdnssd)
9100 ("ki18n" ,ki18n)
9101 ("kxmlgui" ,kxmlgui)
9102 ("libkdegames" ,libkdegames)
9103 ("qtbase" ,qtbase)
9104 ("qtdeclarative" ,qtdeclarative)
9105 ("qtsvg" ,qtsvg)))
9106 (home-page "https://games.kde.org/")
9107 (synopsis "Place 4 pieces in a row")
9108 (description "KFourInLine is a board game for two players based on the
9109 Connect-Four game.
9110
9111 KFourInLine is a game where two players take turns dropping pieces into a
9112 grid, the winner being the first to place four pieces in a line.
9113
9114 This package is part of the KDE games module.")
9115 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
9116
9117 (define-public kblackbox
9118 (package
9119 (name "kblackbox")
9120 (version "19.08.3")
9121 (source
9122 (origin
9123 (method url-fetch)
9124 (uri (string-append "mirror://kde/stable/applications/" version
9125 "/src/kblackbox-" version ".tar.xz"))
9126 (sha256
9127 (base32 "1x42sfpf75c6mavwkc7g7dm11y9s5dpj8igphly5kvm0pajqby0n"))))
9128 (build-system qt-build-system)
9129 (native-inputs
9130 `(("extra-cmake-modules" ,extra-cmake-modules)
9131 ("kdoctools" ,kdoctools)))
9132 (inputs
9133 `(("karchive" ,karchive)
9134 ("kcompletion" ,kcompletion)
9135 ("kconfig" ,kconfig)
9136 ("kcoreaddons" ,kcoreaddons)
9137 ("kcrash" ,kcrash)
9138 ("kdbusaddons" ,kdbusaddons)
9139 ("ki18n" ,ki18n)
9140 ("ktextwidgets" ,ktextwidgets)
9141 ("kxmlgui" ,kxmlgui)
9142 ("libkdegames" ,libkdegames)
9143 ("qtbase" ,qtbase)
9144 ("qtdeclarative" ,qtdeclarative)
9145 ("qtsvg" ,qtsvg)))
9146 (home-page "https://games.kde.org/")
9147 (synopsis "Find atoms in a grid by shooting electrons")
9148 (description "KBlackbox is a game of hide and seek played on a grid of
9149 boxes where the computer has hidden several balls. The position of the hidden
9150 balls can be deduced by shooting beams into the box
9151
9152 KBlackBox is a game of hide and seek played on an grid of boxes, where the
9153 player shoots rays into the grid to deduce the positions of hidden objects.
9154
9155 This package is part of the KDE games module.")
9156 (license (list license:gpl2+ license:fdl1.2+))))
9157
9158 (define-public knetwalk
9159 (package
9160 (name "knetwalk")
9161 (version "19.08.3")
9162 (source
9163 (origin
9164 (method url-fetch)
9165 (uri (string-append "mirror://kde/stable/applications/" version
9166 "/src/knetwalk-" version ".tar.xz"))
9167 (sha256
9168 (base32 "1i340salzgqdw8y33wrrydmpgx3pvwf5wrbljlh67cjf6s4csx7d"))))
9169 (build-system qt-build-system)
9170 (native-inputs
9171 `(("extra-cmake-modules" ,extra-cmake-modules)
9172 ("kdoctools" ,kdoctools)))
9173 (inputs
9174 `(("kcompletion" ,kcompletion)
9175 ("kconfig" ,kconfig)
9176 ("kconfigwidgets" ,kconfigwidgets)
9177 ("kcoreaddons" ,kcoreaddons)
9178 ("kcrash" ,kcrash)
9179 ("kdbusaddons" ,kdbusaddons)
9180 ("ki18n" ,ki18n)
9181 ("ktextwidgets" ,ktextwidgets)
9182 ("kwidgetsaddons" ,kwidgetsaddons)
9183 ("kxmlgui" ,kxmlgui)
9184 ("libkdegames" ,libkdegames)
9185 ("qtbase" ,qtbase)
9186 ("qtdeclarative" ,qtdeclarative)))
9187 (home-page "https://games.kde.org/")
9188 (synopsis "Turn the board pieces to get all computers connected")
9189 (description "KNetWalk is a small game where you have to build up a
9190 computer network by rotating the wires to connect the terminals to the server.
9191 When the network is build, a highscore-list comes up where competitions can be
9192 fought out.
9193
9194 KNetwalk is a puzzle game where the player arranges sections of wire to
9195 connect all the computers on the board.
9196
9197 This package is part of the KDE games module.")
9198 (license (list license:gpl2+ license:fdl1.2+))))
9199
9200 (define-public bomber
9201 (package
9202 (name "bomber")
9203 (version "19.08.3")
9204 (source
9205 (origin
9206 (method url-fetch)
9207 (uri (string-append "mirror://kde/stable/applications/" version
9208 "/src/bomber-" version ".tar.xz"))
9209 (sha256
9210 (base32 "1lvzd0mzgq25akvwvkm57l3plm65k731v2i1ahakn985bb5gc3is"))))
9211 (build-system qt-build-system)
9212 (native-inputs
9213 `(("extra-cmake-modules" ,extra-cmake-modules)
9214 ("kdoctools" ,kdoctools)))
9215 (inputs
9216 `(("kcompletiom" ,kcompletion)
9217 ("kconfig" ,kconfig)
9218 ("kcoreaddons" ,kcoreaddons)
9219 ("kcrash" ,kcrash)
9220 ("kdbusaddons" ,kdbusaddons)
9221 ("ki18n" ,ki18n)
9222 ("kxmlgui" ,kxmlgui)
9223 ("libkdegames" ,libkdegames)
9224 ("qtbase" ,qtbase)
9225 ("qtdeclarative" ,qtdeclarative)))
9226 (home-page "https://games.kde.org/")
9227 (synopsis "Arcade bombing game")
9228 (description "Bomber is a single player arcade game.
9229
9230 The player is invading various cities in a plane that is decreasing in height.
9231 The goal of the game is to destroy all the buildings and advance to the next
9232 level. Each level gets a bit harder by increasing the speed of the plane and
9233 the height of the buildings.
9234
9235 Bomber is a game where you fly a spaceship and attempt to bomb the buildings
9236 below you. Each pass the spaceship makes, it gets lower and lower. If you've
9237 not destroyed a building in your path, you will crash into it.
9238
9239 This package is part of the KDE games module.")
9240 (license (list license:gpl2+ license:fdl1.2+))))
9241
9242 (define-public granatier
9243 (package
9244 (name "granatier")
9245 (version "19.08.3")
9246 (source
9247 (origin
9248 (method url-fetch)
9249 (uri (string-append "mirror://kde/stable/applications/" version
9250 "/src/granatier-" version ".tar.xz"))
9251 (sha256
9252 (base32 "141qmdinz7ikbbrs8dq6cap3nl22sl7pw62r80pf3xxwn2q4phpa"))))
9253 (build-system qt-build-system)
9254 (native-inputs
9255 `(("extra-cmake-modules" ,extra-cmake-modules)
9256 ("kdoctools" ,kdoctools)))
9257 (inputs
9258 `(("kcompletion" ,kcompletion)
9259 ("kconfig" ,kconfig)
9260 ("kconfigwidgets" ,kconfigwidgets)
9261 ("kcoreaddons" ,kcoreaddons)
9262 ("kcrash" ,kcrash)
9263 ("kdbusaddons" ,kdbusaddons)
9264 ("ki18n" ,ki18n)
9265 ("knewstuff" ,knewstuff)
9266 ("kwidgetsaddons" ,kwidgetsaddons)
9267 ("kxmlgui" ,kxmlgui)
9268 ("libkdegames" ,libkdegames)
9269 ("qtbase" ,qtbase)
9270 ("qtdeclarative" ,qtdeclarative)
9271 ("qtsvg" ,qtsvg)))
9272 (home-page "https://games.kde.org/")
9273 (synopsis "Bomberman clone")
9274 (description "Granatier is a clone of the classic Bomberman game,
9275 inspired by the work of the Clanbomber clone.
9276
9277 This package is part of the KDE games module.")
9278 (license (list license:gpl2+ license:fdl1.2+))))
9279
9280 (define-public ksirk
9281 (package
9282 (name "ksirk")
9283 (version "19.08.3")
9284 (source
9285 (origin
9286 (method url-fetch)
9287 (uri (string-append "mirror://kde/stable/applications/" version
9288 "/src/ksirk-" version ".tar.xz"))
9289 (sha256
9290 (base32 "1b1wixs2hp5qnvdygfwa3kvy0kn94ysa4ifmx90q6r3yfr2lpfca"))))
9291 (build-system qt-build-system)
9292 (native-inputs
9293 `(("extra-cmake-modules" ,extra-cmake-modules)
9294 ("kdoctools" ,kdoctools)))
9295 (inputs
9296 `(("kcrash" ,kcrash)
9297 ("ki18n" ,ki18n)
9298 ("kiconthemes" ,kiconthemes)
9299 ("kio" ,kio)
9300 ("knewstuff" ,knewstuff)
9301 ("kwallet" ,kwallet)
9302 ("kxmlgui" ,kxmlgui)
9303 ("libkdegames" ,libkdegames)
9304 ("phonon" ,phonon)
9305 ("qca" ,qca)
9306 ("qtbase" ,qtbase)
9307 ("qtdeclarative" ,qtdeclarative)
9308 ("qtsvg" ,qtsvg)
9309 ("zlib" ,zlib)))
9310 (home-page "https://games.kde.org/")
9311 (synopsis "Computerized version of the well known strategy board game
9312 'Risk'")
9313 (description "KsirK is a multi-player network-enabled game. The goal of
9314 the game is simply to conquer the world by attacking your neighbors with your
9315 armies.
9316
9317 At the beginning of the game, countries are distributed to all the players.
9318 Each country contains one army represented by an infantryman. Each player has
9319 some armies to distribute to his countries. On each turn, each player can
9320 attack his neighbours, eventually conquering one or more countries. At the
9321 end of each turn, some bonus armies are distributed to the players in function
9322 of the number of countries they own. The winner is the player that conquered
9323 all the world.
9324
9325 Features:
9326 @itemize
9327 @item Support for 1-6 human or computer players
9328 @item Multi-player gaming over a network
9329 @item You can easily create new skins with SVG graphics and the skin editor
9330 @item Hot New Stuff support. You can easily download and install new skins
9331 @end itemize
9332
9333 This package is part of the KDE games module.")
9334 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
9335
9336 (define-public palapeli
9337 (package
9338 (name "palapeli")
9339 (version "19.08.3")
9340 (source
9341 (origin
9342 (method url-fetch)
9343 (uri (string-append "mirror://kde/stable/applications/" version
9344 "/src/palapeli-" version ".tar.xz"))
9345 (sha256
9346 (base32 "1g91ydbc0x2y2gn3lcb5w03mn7k78l5bq4cb1s59kx6yjbflv3pw"))))
9347 (build-system qt-build-system)
9348 (native-inputs
9349 `(("extra-cmake-modules" ,extra-cmake-modules)
9350 ("kdoctools" ,kdoctools)))
9351 (inputs
9352 `(("karchive" ,karchive)
9353 ("kcompletion" ,kcompletion)
9354 ("kconfig" ,kconfig)
9355 ("kconfigwidgets" ,kconfigwidgets)
9356 ("kcoreaddons" ,kcoreaddons)
9357 ("kcrash" ,kcrash)
9358 ("kcrash" ,kcrash)
9359 ("ki18n" ,ki18n)
9360 ("ki18n" ,ki18n)
9361 ("kio" ,kio)
9362 ("kitemviews" ,kitemviews)
9363 ("knotifications" ,knotifications)
9364 ("kservice" ,kservice)
9365 ("kwidgetsaddons" ,kwidgetsaddons)
9366 ("kxmlgui" ,kxmlgui)
9367 ("libkdegames" ,libkdegames)
9368 ("qtbase" ,qtbase)
9369 ("qtdeclarative" ,qtdeclarative)
9370 ("qtsvg" ,qtsvg)
9371 ("shared-mime-info" ,shared-mime-info)))
9372 (home-page "https://games.kde.org/")
9373 (synopsis "Jigsaw puzzle game")
9374 (description "Palapeli is a jigsaw puzzle game. Unlike other games in
9375 that genre, you are not limited to aligning pieces on imaginary grids. The
9376 pieces are freely moveable. Also, Palapeli features real persistency, i.e.
9377 everything you do is saved on your disk immediately.
9378
9379 Palapeli is the Finnish word for jigsaw puzzle.
9380
9381 This package is part of the KDE games module.")
9382 (license license:gpl2+)))
9383
9384 (define-public kiriki
9385 (package
9386 (name "kiriki")
9387 (version "19.08.3")
9388 (source
9389 (origin
9390 (method url-fetch)
9391 (uri (string-append "mirror://kde/stable/applications/" version
9392 "/src/kiriki-" version ".tar.xz"))
9393 (sha256
9394 (base32 "1xg25dj95g81dc5l7k47am4j52abrwwfx4h73lvsbn4lc8lfmshw"))))
9395 (build-system qt-build-system)
9396 (native-inputs
9397 `(("extra-cmake-modules" ,extra-cmake-modules)
9398 ("kdoctools" ,kdoctools)))
9399 (inputs
9400 `(("kcompletion" ,kcompletion)
9401 ("kconfig" ,kconfig)
9402 ("kconfigwidgets" ,kconfigwidgets)
9403 ("kcoreaddons" ,kcoreaddons)
9404 ("kcrash" ,kcrash)
9405 ("kdbusaddons" ,kdbusaddons)
9406 ("ki18n" ,ki18n)
9407 ("kiconthemes" ,kiconthemes)
9408 ("kxmlgui" ,kxmlgui)
9409 ("libkdegames" ,libkdegames)
9410 ("qtbase" ,qtbase)
9411 ("qtdeclarative" ,qtdeclarative)))
9412 (home-page "https://games.kde.org/")
9413 (synopsis "Yahtzee dice game")
9414 (description "Kiriki is an addictive and fun dice game, designed to be
9415 played by as many as six players.
9416
9417 Participants have to collect points by rolling five dice for up to three times
9418 per single turn to make combinations with the highest score.
9419
9420 This package is part of the KDE games module.")
9421 (license (list license:gpl2+ license:fdl1.2+))))
9422
9423 (define-public kigo
9424 (package
9425 (name "kigo")
9426 (version "19.08.3")
9427 (source
9428 (origin
9429 (method url-fetch)
9430 (uri (string-append "mirror://kde/stable/applications/" version
9431 "/src/kigo-" version ".tar.xz"))
9432 (sha256
9433 (base32 "00l5gcbi8xyj9c1lngkrddka3a4m4cd78prfplrpq32ma9xq681f"))))
9434 (build-system qt-build-system)
9435 (native-inputs
9436 `(("extra-cmake-modules" ,extra-cmake-modules)
9437 ("kdoctools" ,kdoctools)))
9438 (inputs
9439 `(("kconfig" ,kconfig)
9440 ("kconfigwidgets" ,kconfigwidgets)
9441 ("kcoreaddons" ,kcoreaddons)
9442 ("kcrash" ,kcrash)
9443 ("kdbusaddons" ,kdbusaddons)
9444 ("ki18n" ,ki18n)
9445 ("kio" ,kio)
9446 ("knewstuff", knewstuff)
9447 ("ktextwidgets" ,ktextwidgets)
9448 ("kxmlgui" ,kxmlgui)
9449 ("libkdegames" ,libkdegames)
9450 ("qtbase" ,qtbase)
9451 ("qtdeclarative" ,qtdeclarative)
9452 ("qtsvg" ,qtsvg)))
9453 (home-page "https://games.kde.org/")
9454 (synopsis "Go board game")
9455 (description "Kigo is an open-source implementation of the popular Go
9456 game.
9457
9458 Go is a strategic board game for two players. It is also known as
9459 igo (Japanese), weiqi or wei ch'i (Chinese) or baduk (Korean). Go is noted
9460 for being rich in strategic complexity despite its simple rules. The game is
9461 played by two players who alternately place black and white stones (playing
9462 pieces, now usually made of glass or plastic) on the vacant intersections of a
9463 grid of 19x19 lines (9x9 or 13x13 for easier games).
9464
9465 You also need to install a go engine, e.g. @code{gnugo}.
9466
9467 This package is part of the KDE games module.")
9468 (license license:gpl3+)))
9469
9470 (define-public kubrick
9471 (package
9472 (name "kubrick")
9473 (version "19.08.3")
9474 (source
9475 (origin
9476 (method url-fetch)
9477 (uri (string-append "mirror://kde/stable/applications/" version
9478 "/src/kubrick-" version ".tar.xz"))
9479 (sha256
9480 (base32 "0ma8wja4rqlsmsr8cyicfpkwlgqva4450ls4c0ql53p0kabf04gx"))))
9481 (build-system qt-build-system)
9482 (native-inputs
9483 `(("extra-cmake-modules" ,extra-cmake-modules)
9484 ("kdoctools" ,kdoctools)))
9485 (inputs
9486 `(("glu" ,glu)
9487 ("kconfig" ,kconfig)
9488 ("kconfigwidgets" ,kconfigwidgets)
9489 ("kcoreaddons" ,kcoreaddons)
9490 ("kcrash" ,kcrash)
9491 ("ki18n" ,ki18n)
9492 ("kio" ,kio)
9493 ("kwidgetsaddons" ,kwidgetsaddons)
9494 ("kxmlgui" ,kxmlgui)
9495 ("libkdegames" ,libkdegames)
9496 ("qtbase" ,qtbase)
9497 ("qtdeclarative" ,qtdeclarative)
9498 ("qtsvg" ,qtsvg)))
9499 (home-page "https://games.kde.org/")
9500 (synopsis "Game based on Rubik's Cube")
9501 (description "Kubrick is a game based on the Rubik's Cube puzzle.
9502
9503 The cube sizes range from 2x2x2 up to 6x6x6, or you can play with irregular
9504 \"bricks\" such as 5x3x2 or \"mats\" such as 6x4x1 or 2x2x1. The game has a
9505 selection of puzzles at several levels of difficulty, as well as demos of
9506 pretty patterns and solution moves, or you can make up your own puzzles. The
9507 game has unlimited undo, redo, save and reload capabilities.
9508
9509 This package is part of the KDE games module.")
9510 (license (list license:gpl2+ license:fdl1.2+))))
9511
9512 (define-public lskat
9513 (package
9514 (name "lskat")
9515 (version "19.08.3")
9516 (source
9517 (origin
9518 (method url-fetch)
9519 (uri (string-append "mirror://kde/stable/applications/" version
9520 "/src/lskat-" version ".tar.xz"))
9521 (sha256
9522 (base32 "1qk5hd27zb42pbcxq5wyzz62nj5f0qdmgy54r9rnk92pzzzk94s9"))))
9523 (build-system qt-build-system)
9524 (native-inputs
9525 `(("extra-cmake-modules" ,extra-cmake-modules)
9526 ("kdoctools" ,kdoctools)))
9527 (inputs
9528 `(("kcompletion" ,kcompletion)
9529 ("kconfig" ,kconfig)
9530 ("kcoreaddons" ,kcoreaddons)
9531 ("kcrash" ,kcrash)
9532 ("kguiaddons" ,kguiaddons)
9533 ("ki18n" ,ki18n)
9534 ("kwidgetsaddons" ,kwidgetsaddons)
9535 ("kxmlgui" ,kxmlgui)
9536 ("libkdegames" ,libkdegames)
9537 ("qtbase" ,qtbase)
9538 ("qtdeclarative" ,qtdeclarative)
9539 ("qtsvg" ,qtsvg)))
9540 (home-page "https://games.kde.org/")
9541 (synopsis "Lieutnant Skat card game")
9542 (description "Lieutnant Skat (from German \"Offiziersskat\") is a fun and
9543 engaging card game for two players, where the second player is either live
9544 opponent, or a built in artificial intelligence.
9545
9546 Lieutnant Skat is a simplified variant of the Skat card game for two players.
9547
9548 This package is part of the KDE games module.")
9549 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
9550
9551 (define-public kapman
9552 (package
9553 (name "kapman")
9554 (version "19.08.3")
9555 (source
9556 (origin
9557 (method url-fetch)
9558 (uri (string-append "mirror://kde/stable/applications/" version
9559 "/src/kapman-" version ".tar.xz"))
9560 (sha256
9561 (base32 "03pq38caam30q4bw14c045kayw2d87xq1yaa3s2jkrylylfq3p0f"))))
9562 (build-system qt-build-system)
9563 (native-inputs
9564 `(("extra-cmake-modules" ,extra-cmake-modules)
9565 ("kdoctools" ,kdoctools)))
9566 (inputs
9567 `(("kcompletion" ,kcompletion)
9568 ("kconfig" ,kconfig)
9569 ("kconfigwidgets" ,kconfigwidgets)
9570 ("kcoreaddons" ,kcoreaddons)
9571 ("kcrash" ,kcrash)
9572 ("kdbusaddons" ,kdbusaddons)
9573 ("ki18n" ,ki18n)
9574 ("kxmlgui" ,kxmlgui)
9575 ("libkdegames" ,libkdegames)
9576 ("qtbase" ,qtbase)
9577 ("qtdeclarative" ,qtdeclarative)
9578 ("qtsvg" ,qtsvg)))
9579 (home-page "https://games.kde.org/")
9580 (synopsis "Pac-Man clone")
9581 (description "Kapman is a clone of the well known game Pac-Man.
9582
9583 You must run through the maze to eat all pills without being captured by a
9584 ghost. By eating an energizer, Kapman gets the ability to eat ghosts for a
9585 few seconds. When a stage is cleared of pills and energizer the player is
9586 taken to the next stage with slightly increased game speed
9587
9588 This package is part of the KDE games module.")
9589 (license (list license:gpl2+ license:fdl1.2+))))
9590
9591 (define-public kspaceduel
9592 (package
9593 (name "kspaceduel")
9594 (version "19.08.3")
9595 (source
9596 (origin
9597 (method url-fetch)
9598 (uri (string-append "mirror://kde/stable/applications/" version
9599 "/src/kspaceduel-" version ".tar.xz"))
9600 (sha256
9601 (base32 "1hppni0ihs7psc0dly5rxyy2a38nzhlig9yfyhi3lkh36z05pql8"))))
9602 (build-system qt-build-system)
9603 (native-inputs
9604 `(("extra-cmake-modules" ,extra-cmake-modules)
9605 ("kdoctools" ,kdoctools)))
9606 (inputs
9607 `(("kcompletion" ,kcompletion)
9608 ("kconfig" ,kconfig)
9609 ("kconfigwidgets" ,kconfigwidgets)
9610 ("kcoreaddons" ,kcoreaddons)
9611 ("kcrash" ,kcrash)
9612 ("kdbusaddons" ,kdbusaddons)
9613 ("ki18n" ,ki18n)
9614 ("kxmlgui" ,kxmlgui)
9615 ("libkdegames" ,libkdegames)
9616 ("qtbase" ,qtbase)
9617 ("qtdeclarative" ,qtdeclarative)
9618 ("qtsvg" ,qtsvg)))
9619 (home-page "https://games.kde.org/")
9620 (synopsis "Two player game with shooting spaceships flying around a sun")
9621 (description "KSpaceduel is a space battle game for one or two players,
9622 where two ships fly around a star in a struggle to be the only survivor.
9623
9624 This package is part of the KDE games module.")
9625 (license (list license:gpl2+ license:fdl1.2+))))
9626
9627 (define-public bovo
9628 (package
9629 (name "bovo")
9630 (version "19.08.3")
9631 (source
9632 (origin
9633 (method url-fetch)
9634 (uri (string-append "mirror://kde/stable/applications/" version
9635 "/src/bovo-" version ".tar.xz"))
9636 (sha256
9637 (base32 "0dbpng0w52nahmx7brsll66zw23ql1g6pcvn2k4g2lnvxch0i59g"))))
9638 (build-system qt-build-system)
9639 (native-inputs
9640 `(("extra-cmake-modules" ,extra-cmake-modules)
9641 ("kdoctools" ,kdoctools)))
9642 (inputs
9643 `(("kcompletion" ,kcompletion)
9644 ("kcoreaddons" ,kcoreaddons)
9645 ("kcrash" ,kcrash)
9646 ("kdbusaddons" ,kdbusaddons)
9647 ("ki18n" ,ki18n)
9648 ("kxmlgui" ,kxmlgui)
9649 ("libkdegames" ,libkdegames)
9650 ("qtbase" ,qtbase)
9651 ("qtdeclarative" ,qtdeclarative)
9652 ("qtsvg" ,qtsvg)))
9653 (home-page "https://games.kde.org/")
9654 (synopsis "Classic pen and paper game: five in a line")
9655 (description "Bovo is a Gomoku (from Japanese 五目並べ - lit. \"five
9656 points\") like game for two players, where the opponents alternate in placing
9657 their respective pictogram on the game board. The winner is the first to
9658 complete a line of five markers. (Also known as: Connect Five, Five in a row,
9659 X and O, Naughts and Crosses)
9660
9661 This package is part of the KDE games module.")
9662 (license (list license:gpl2+ license:fdl1.2+))))
9663
9664 (define-public killbots
9665 (package
9666 (name "killbots")
9667 (version "19.08.3")
9668 (source
9669 (origin
9670 (method url-fetch)
9671 (uri (string-append "mirror://kde/stable/applications/" version
9672 "/src/killbots-" version ".tar.xz"))
9673 (sha256
9674 (base32 "1qi86q7diw7glkp9v33yim9nhz2da4balbxa1hjrdgjdv8zdbxbm"))))
9675 (build-system qt-build-system)
9676 (native-inputs
9677 `(("extra-cmake-modules" ,extra-cmake-modules)
9678 ("kdoctools" ,kdoctools)))
9679 (inputs
9680 `(("kcompletion" ,kcompletion)
9681 ("kconfig" ,kconfig)
9682 ("kconfigwidgets" ,kconfigwidgets)
9683 ("kcoreaddons" ,kcoreaddons)
9684 ("kcrash" ,kcrash)
9685 ("kdbusaddons" ,kdbusaddons)
9686 ("ki18n" ,ki18n)
9687 ("kwidgetsaddons" ,kwidgetsaddons)
9688 ("kxmlgui" ,kxmlgui)
9689 ("libkdegames" ,libkdegames)
9690 ("qtbase" ,qtbase)
9691 ("qtdeclarative" ,qtdeclarative)))
9692 (home-page "https://games.kde.org/")
9693 (synopsis "Port of the classic BSD console game robots")
9694 (description "Killbots is a simple game of evading killer robots.
9695
9696 Who created the robots and why they have been programmed to destroy, no one
9697 knows. All that is known is that the robots are numerous and their sole
9698 objective is to destroy you. Fortunately for you, their creator has focused
9699 on quantity rather than quality and as a result the robots are severely
9700 lacking in intelligence. Your superior wit and a fancy teleportation device
9701 are your only weapons against the never-ending stream of mindless automatons.
9702
9703 This package is part of the KDE games module.")
9704 (license (list license:gpl2+ license:fdl1.2+))))
9705
9706 (define-public ksnakeduel
9707 (package
9708 (name "ksnakeduel")
9709 (version "19.08.3")
9710 (source
9711 (origin
9712 (method url-fetch)
9713 (uri (string-append "mirror://kde/stable/applications/" version
9714 "/src/ksnakeduel-" version ".tar.xz"))
9715 (sha256
9716 (base32 "0mprrnpax8pv7ab36zwhvdfj8id52w8g6x76nnj8qvkdlkjiqdnn"))))
9717 (build-system qt-build-system)
9718 (native-inputs
9719 `(("extra-cmake-modules" ,extra-cmake-modules)
9720 ("kdoctools" ,kdoctools)))
9721 (inputs
9722 `(("kcompletion" ,kcompletion)
9723 ("kconfig" ,kconfig)
9724 ("kconfigwidgets" ,kconfigwidgets)
9725 ("kcoreaddons" ,kcoreaddons)
9726 ("kcrash" ,kcrash)
9727 ("kdbusaddons" ,kdbusaddons)
9728 ("kguiaddons" ,kguiaddons)
9729 ("ki18n" ,ki18n)
9730 ("kxmlgui" ,kxmlgui)
9731 ("libkdegames" ,libkdegames)
9732 ("qtbase" ,qtbase)
9733 ("qtdeclarative" ,qtdeclarative)
9734 ("qtsvg" ,qtsvg)))
9735 (home-page "https://games.kde.org/")
9736 (synopsis "Snake race played against the computer")
9737 (description "KSnakeDuel is a fast action game where you steer a snake
9738 which has to eat food. While eating the snake grows. But once a player
9739 collides with the other snake or the wall the game is lost. This becomes of
9740 course more and more difficult the longer the snakes grow.
9741
9742 This package is part of the KDE games module.")
9743 (license (list license:gpl2+ license:fdl1.2+))))
9744
9745 (define-public kollision
9746 (package
9747 (name "kollision")
9748 (version "19.08.3")
9749 (source
9750 (origin
9751 (method url-fetch)
9752 (uri (string-append "mirror://kde/stable/applications/" version
9753 "/src/kollision-" version ".tar.xz"))
9754 (sha256
9755 (base32 "1p7qrn3d0ybpvc9k6k5wzj54dsrp1rqh39844maz0ay2fhvmch12"))))
9756 (build-system qt-build-system)
9757 (native-inputs
9758 `(("extra-cmake-modules" ,extra-cmake-modules)
9759 ("kdoctools" ,kdoctools)))
9760 (inputs
9761 `(("kcompletion" ,kcompletion)
9762 ("kconfig" ,kconfig)
9763 ("kcoreaddons" ,kcoreaddons)
9764 ("kcrash" ,kcrash)
9765 ("kdbusaddons" ,kdbusaddons)
9766 ("ki18n" ,ki18n)
9767 ("kwidgetsaddons" ,kwidgetsaddons)
9768 ("kxmlgui" ,kxmlgui)
9769 ("libkdegames" ,libkdegames)
9770 ("qtbase" ,qtbase)
9771 ("qtdeclarative" ,qtdeclarative)))
9772 (home-page "https://games.kde.org/")
9773 (synopsis "Simple ball dodging game")
9774 (description "In Kollision you use mouse to control a small blue ball in a
9775 closed space environment filled with small red balls, which move about
9776 chaotically. Your goal is to avoid touching any of those red balls with your
9777 blue one, because the moment you do the game will be over. The longer you can
9778 stay in game the higher will your score be.
9779
9780 This package is part of the KDE games module.")
9781 (license (list license:gpl2+ license:fdl1.2+))))
9782
9783 (define-public knavalbattle
9784 (package
9785 (name "knavalbattle")
9786 (version "19.08.3")
9787 (source
9788 (origin
9789 (method url-fetch)
9790 (uri (string-append "mirror://kde/stable/applications/" version
9791 "/src/knavalbattle-" version ".tar.xz"))
9792 (sha256
9793 (base32 "0sdfjplqkb30x2mvh66pkzay6vn5px87779sh2s8lpl6fcw0v9g4"))))
9794 (build-system qt-build-system)
9795 (native-inputs
9796 `(("extra-cmake-modules" ,extra-cmake-modules)
9797 ("kdoctools" ,kdoctools)))
9798 (inputs
9799 `(("kauth" ,kauth)
9800 ("kcompletion" ,kcompletion)
9801 ("kconfig" ,kconfig)
9802 ("kconfigwidgets" ,kconfigwidgets)
9803 ("kcoreaddons" ,kcoreaddons)
9804 ("kcrash" ,kcrash)
9805 ("kdbusaddons" ,kdbusaddons)
9806 ("kdnssd" ,kdnssd)
9807 ("ki18n" ,ki18n)
9808 ("ktextwidgets" ,ktextwidgets)
9809 ("kxmlgui" ,kxmlgui)
9810 ("libkdegames" ,libkdegames)
9811 ("qtbase" ,qtbase)
9812 ("qtdeclarative" ,qtdeclarative)))
9813 (home-page "https://games.kde.org/")
9814 (synopsis "Battleship board game with built-in game server")
9815 (description "KBattleship is a Battle Ship game for KDE.
9816
9817 Ships are placed on a board which represents the sea. Players try to hit each
9818 others ships in turns without knowing where they are placed. The first player
9819 to destroy all ships wins the game.
9820
9821 This package is part of the KDE games module.")
9822 (license (list license:gpl2+ license:fdl1.2+))))
9823
9824 (define-public kreversi
9825 (package
9826 (name "kreversi")
9827 (version "19.08.3")
9828 (source
9829 (origin
9830 (method url-fetch)
9831 (uri (string-append "mirror://kde/stable/applications/" version
9832 "/src/kreversi-" version ".tar.xz"))
9833 (sha256
9834 (base32 "0b6q8df2bawgnrswhq59z37axad0q3zpvvzxdds7sz1lw505xw9h"))))
9835 (build-system qt-build-system)
9836 (native-inputs
9837 `(("extra-cmake-modules" ,extra-cmake-modules)
9838 ("kdoctools" ,kdoctools)))
9839 (inputs
9840 `(("kconfig" ,kconfig)
9841 ("kconfigwidgets" ,kconfigwidgets)
9842 ("kcoreaddons" ,kcoreaddons)
9843 ("kcrash" ,kcrash)
9844 ("kdbusaddons" ,kdbusaddons)
9845 ("kdeclarative" ,kdeclarative)
9846 ("ki18n" ,ki18n)
9847 ("kiconthemes" ,kiconthemes)
9848 ("kio" ,kio)
9849 ("kxmlgui" ,kxmlgui)
9850 ("libkdegames" ,libkdegames)
9851 ("qtbase" ,qtbase)
9852 ("qtdeclarative" ,qtdeclarative)
9853 ("qtsvg" ,qtsvg)))
9854 (home-page "https://games.kde.org/")
9855 (synopsis "Old reversi board game, also known as othello")
9856 (description "KReversi is a simple one player strategy game played
9857 against the computer.
9858
9859 If a player's piece is captured by an opposing player, that piece is turned
9860 over to reveal the color of that player. A winner is declared when one player
9861 has more pieces of his own color on the board and there are no more possible
9862 moves.
9863
9864 This package is part of the KDE games module.")
9865 (license (list license:gpl2+ license:fdl1.2+))))
9866
9867 (define-public ksquares
9868 (package
9869 (name "ksquares")
9870 (version "19.08.3")
9871 (source
9872 (origin
9873 (method url-fetch)
9874 (uri (string-append "mirror://kde/stable/applications/" version
9875 "/src/ksquares-" version ".tar.xz"))
9876 (sha256
9877 (base32 "0hv8hls5s627lys08nnw72rfzsafj3dmp49mh2afzmh6lgk9h5vy"))))
9878 (build-system qt-build-system)
9879 (native-inputs
9880 `(("extra-cmake-modules" ,extra-cmake-modules)
9881 ("kdoctools" ,kdoctools)))
9882 (inputs
9883 `(("kcompletion" ,kcompletion)
9884 ("kconfig" ,kconfig)
9885 ("kconfigwidgets" ,kconfigwidgets)
9886 ("kcoreaddons" ,kcoreaddons)
9887 ("kcrash" ,kcrash)
9888 ("kdbusaddons" ,kdbusaddons)
9889 ("ki18n" ,ki18n)
9890 ("kwidgetsaddons" ,kwidgetsaddons)
9891 ("kxmlgui" ,kxmlgui)
9892 ("libkdegames" ,libkdegames)
9893 ("qtbase" ,qtbase)
9894 ("qtdeclarative" ,qtdeclarative)))
9895 (home-page "https://games.kde.org/")
9896 (synopsis "Dots and Boxes game")
9897 (description "KSquares is an implementation of the popular paper based
9898 game Squares. Two players take turns connecting dots on a grid to complete
9899 squares, the player with the most squares wins.
9900
9901 This package is part of the KDE games module.")
9902 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
9903
9904 (define-public kjumpingcube
9905 (package
9906 (name "kjumpingcube")
9907 (version "19.08.3")
9908 (source
9909 (origin
9910 (method url-fetch)
9911 (uri (string-append "mirror://kde/stable/applications/" version
9912 "/src/kjumpingcube-" version ".tar.xz"))
9913 (sha256
9914 (base32 "0d67zqkf2xffjkj671gl2n6nj6jajyn6rgqqj5i6gm500mqi9rm1"))))
9915 (build-system qt-build-system)
9916 (native-inputs
9917 `(("extra-cmake-modules" ,extra-cmake-modules)
9918 ("kdoctools" ,kdoctools)))
9919 (inputs
9920 `(("kconfig" ,kconfig)
9921 ("kconfigwidgets" ,kconfigwidgets)
9922 ("kcoreaddons" ,kcoreaddons)
9923 ("kcrash" ,kcrash)
9924 ("kdbusaddons" ,kdbusaddons)
9925 ("ki18n" ,ki18n)
9926 ("kio" ,kio)
9927 ("kwidgetsaddons" ,kwidgetsaddons)
9928 ("kxmlgui" ,kxmlgui)
9929 ("libkdegames" ,libkdegames)
9930 ("qtbase" ,qtbase)
9931 ("qtdeclarative" ,qtdeclarative)
9932 ("qtsvg" ,qtsvg)))
9933 (home-page "https://games.kde.org/")
9934 (synopsis "Simple tactical game for number-crunchers")
9935 (description "KJumpingcube is a simple tactical game for one or two
9936 players, played on a grid of numbered squares. Each turn, players compete for
9937 control of the board by capturing or adding to one square.
9938
9939 This package is part of the KDE games module.")
9940 (license (list license:gpl2+ license:fdl1.2+))))
9941
9942 (define-public xmoto
9943 (package
9944 (name "xmoto")
9945 (version "0.5.11")
9946 (source
9947 (origin
9948 (method url-fetch)
9949 (uri (string-append
9950 "http://download.tuxfamily.org/xmoto/xmoto/" version "/"
9951 "xmoto-" version "-src.tar.gz"))
9952 (sha256
9953 (base32 "1ci6r8zd0l7z28cy92ddf9dmqbdqwinz2y1cny34c61b57wsd155"))
9954 (patches
9955 (search-patches
9956 "xmoto-remove-glext.patch" ;fixes licensing issue
9957 "xmoto-reproducible.patch"
9958 "xmoto-utf8.patch"))
9959 ;; Unbundle ODE.
9960 (modules '((guix build utils)))
9961 (snippet
9962 `(begin
9963 (delete-file-recursively "src/ode")
9964 #t))))
9965 (build-system gnu-build-system)
9966 (arguments
9967 ;; XXX: First flag prevents a build error with GCC7+. The second
9968 ;; flag works around missing text in game. Both are fixed
9969 ;; upstream. Remove once xmoto 0.5.12+ is released.
9970 `(#:make-flags '("CXXFLAGS=-fpermissive -D_GLIBCXX_USE_CXX11_ABI=0")
9971 #:phases
9972 (modify-phases %standard-phases
9973 (add-after 'install 'install-desktop-file
9974 (lambda* (#:key outputs #:allow-other-keys)
9975 (let* ((out (assoc-ref outputs "out"))
9976 (apps (string-append out "/share/applications"))
9977 (pixmaps (string-append out "/share/pixmaps")))
9978 (install-file "extra/xmoto.desktop" apps)
9979 (install-file "extra/xmoto.xpm" pixmaps)
9980 #t)))
9981 (add-after 'install-desktop-file 'install-fonts
9982 (lambda* (#:key outputs inputs #:allow-other-keys)
9983 (let ((font-dir (string-append (assoc-ref inputs "font-dejavu")
9984 "/share/fonts/truetype/"))
9985 (target-dir (string-append (assoc-ref outputs "out")
9986 "/share/xmoto/Textures/Fonts/")))
9987 (for-each (lambda (f)
9988 (let ((font (string-append font-dir f))
9989 (target (string-append target-dir f)))
9990 (delete-file target)
9991 (symlink font target)))
9992 '("DejaVuSans.ttf" "DejaVuSansMono.ttf"))
9993 #t)))
9994 (add-after 'install-fonts 'install-man-page
9995 (lambda* (#:key outputs #:allow-other-keys)
9996 (install-file "xmoto.6"
9997 (string-append (assoc-ref outputs "out")
9998 "/share/man/man6"))
9999 #t)))))
10000 (native-inputs
10001 `(("gettext" ,gettext-minimal)))
10002 (inputs
10003 `(("curl" ,curl)
10004 ("font-dejavu" ,font-dejavu)
10005 ("glu" ,glu)
10006 ("libjpeg" ,libjpeg)
10007 ("libpng" ,libpng)
10008 ("libxdg-basedir" ,libxdg-basedir)
10009 ("libxml2" ,libxml2)
10010 ("lua" ,lua-5.2)
10011 ("ode" ,ode)
10012 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-net sdl-ttf)))
10013 ("sqlite" ,sqlite)
10014 ("zlib" ,zlib)))
10015 (home-page "https://xmoto.tuxfamily.org/")
10016 (synopsis "2D motocross platform game")
10017 (description "X-Moto is a challenging 2D motocross platform game, where
10018 physics play an all important role in the gameplay. You need to control your
10019 bike to its limit, if you want to have a chance finishing the more difficult
10020 challenges.")
10021 (license (list license:gpl2+ ;whole project
10022 license:bsd-4 ;src/bzip
10023 license:bsd-3 ;src/md5sum
10024 license:lgpl2.1+ ;src/iqsort.h
10025 license:expat))))
10026
10027 (define-public eboard
10028 (package
10029 (name "eboard")
10030 (version "1.1.3")
10031 (source
10032 (origin
10033 (method git-fetch)
10034 (uri (git-reference
10035 (url "https://github.com/fbergo/eboard.git")
10036 (commit (string-append "v" version))))
10037 (file-name (git-file-name name version))
10038 (sha256
10039 (base32 "1z4pwpqyvxhlda99h6arh2rjk90fbms9q29fqizjblrdn01dlxn1"))))
10040 (build-system gnu-build-system)
10041 (native-inputs
10042 `(("perl" ,perl)
10043 ("pkg-config" ,pkg-config)))
10044 (inputs
10045 `(("gtk+" ,gtk+-2)
10046 ("libpng" ,libpng)
10047 ("gstreamer" ,gstreamer)))
10048 (arguments
10049 `(#:tests? #f
10050 #:phases
10051 (modify-phases %standard-phases
10052 (replace 'configure
10053 (lambda* (#:key outputs #:allow-other-keys)
10054 (make-file-writable "eboard-config")
10055 (setenv "CC" "gcc")
10056 (invoke "./configure"
10057 (string-append "--prefix=" (assoc-ref outputs "out")))
10058 #t))
10059 (add-before 'install 'make-required-directories
10060 (lambda* (#:key outputs #:allow-other-keys)
10061 (mkdir-p (string-append (assoc-ref outputs "out")
10062 "/share/eboard"))
10063 #t)))))
10064 (synopsis "Graphical user interface to play chess")
10065 (description
10066 "Eboard is a chess board interface for ICS (Internet Chess Servers)
10067 and chess engines.")
10068 (home-page "https://www.bergo.eng.br/eboard/")
10069 (license license:gpl2+)))
10070
10071 (define-public chessx
10072 (package
10073 (name "chessx")
10074 (version "1.5.0")
10075 (source
10076 (origin
10077 (method url-fetch)
10078 (uri (string-append "mirror://sourceforge/chessx/chessx/"
10079 version "/chessx-" version ".tgz"))
10080 (sha256
10081 (base32 "09rqyra28w3z9ldw8sx07k5ap3sjlli848p737maj7c240rasc6i"))))
10082 (build-system qt-build-system)
10083 (native-inputs
10084 `(("qttools" ,qttools)))
10085 (inputs
10086 `(("qtbase" ,qtbase)
10087 ("qtmultimedia" ,qtmultimedia)
10088 ("qtsvg" ,qtsvg)
10089 ("zlib" ,zlib)))
10090 (arguments
10091 `(#:tests? #f
10092 #:phases
10093 (modify-phases %standard-phases
10094 (add-after 'unpack 'fix-paths
10095 (lambda* (#:key inputs #:allow-other-keys)
10096 (substitute* "chessx.pro"
10097 (("\\$\\$\\[QT_INSTALL_BINS\\]/lrelease")
10098 (string-append (assoc-ref inputs "qttools") "/bin/lrelease")))
10099 #t))
10100 (add-after 'fix-paths 'make-qt-deterministic
10101 (lambda _
10102 (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1")
10103 #t))
10104 (replace 'configure
10105 (lambda _
10106 (invoke "qmake")
10107 #t))
10108 (replace 'install
10109 (lambda* (#:key outputs #:allow-other-keys)
10110 (let ((out (assoc-ref outputs "out")))
10111 (install-file "release/chessx" (string-append out "/bin"))
10112 (install-file "unix/chessx.desktop"
10113 (string-append out "/share/applications")))
10114 #t)))))
10115 (synopsis "Chess game database")
10116 (description
10117 "ChessX is a chess database. With ChessX you can operate on your
10118 collection of chess games in many ways: browse, edit, add, organize, analyze,
10119 etc. You can also play games on FICS or against an engine.")
10120 (home-page "http://chessx.sourceforge.net/")
10121 (license license:gpl2+)))
10122
10123 (define-public stockfish
10124 (package
10125 (name "stockfish")
10126 (version "11")
10127 (source
10128 (origin
10129 (method git-fetch)
10130 (uri (git-reference
10131 (url "https://github.com/official-stockfish/Stockfish.git")
10132 (commit (string-append "sf_" version))))
10133 (file-name (git-file-name name version))
10134 (sha256
10135 (base32 "12mppipinymj8s1ipq9a7is453vncly49c32ym9wvyklsgyxfzlk"))))
10136 (build-system gnu-build-system)
10137 (arguments
10138 `(#:tests? #f
10139 #:make-flags (list "-C" "src"
10140 "build"
10141 (string-append "PREFIX="
10142 (assoc-ref %outputs "out"))
10143 (string-append "ARCH="
10144 ,(match (%current-system)
10145 ("x86_64-linux" "x86-64")
10146 ("i686-linux" "x86-32")
10147 ("aarch64-linux" "general-64")
10148 ("armhf-linux" "armv7")
10149 ("mips64el-linux" "general-64")
10150 (_ "general-32"))))
10151 #:phases (modify-phases %standard-phases
10152 (delete 'configure))))
10153 (synopsis "Strong chess engine")
10154 (description
10155 "Stockfish is a very strong chess engines. It is much stronger than the
10156 best human chess grandmasters. It can be used with UCI-compatible GUIs like
10157 ChessX.")
10158 (home-page "https://stockfishchess.org/")
10159 (license license:gpl3+)))