gnu: kdenlive: Add missing dependencies.
[jackhill/guix/guix.git] / gnu / packages / games.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2013 John Darrington <jmd@gnu.org>
3 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
4 ;;; Copyright © 2014, 2016 David Thompson <dthompson2@worcester.edu>
5 ;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020 Eric Bavier <bavier@posteo.net>
6 ;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com>
7 ;;; Copyright © 2014 Sylvain Beucler <beuc@beuc.net>
8 ;;; Copyright © 2014, 2015, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
9 ;;; Copyright © 2014, 2015, 2016 Sou Bunnbu <iyzsong@gmail.com>
10 ;;; Copyright © 2014, 2015, 2019 Mark H Weaver <mhw@netris.org>
11 ;;; Copyright © 2015, 2016 Andreas Enge <andreas@enge.fr>
12 ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
13 ;;; Copyright © 2015, 2017, 2018 Christopher Lemmer Webber <cwebber@dustycloud.org>
14 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
15 ;;; Copyright © 2015, 2016, 2017 Alex Kost <alezost@gmail.com>
16 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
17 ;;; Copyright © 2016, 2017 Rodger Fox <thylakoid@openmailbox.org>
18 ;;; Copyright © 2016, 2017, 2018 Nikita <nikita@n0.is>
19 ;;; Copyright © 2016 Albin Söderqvist <albin@fripost.org>
20 ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Kei Kebreau <kkebreau@posteo.net>
21 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
22 ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
23 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
24 ;;; Copyright © 2016 Steve Webber <webber.sl@gmail.com>
25 ;;; Copyright © 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@hyperbola.info>
26 ;;; Copyright © 2017, 2018, 2020 Arun Isaac <arunisaac@systemreboot.net>
27 ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
28 ;;; Copyright © 2017, 2019 nee <nee-git@hidamari.blue>
29 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
30 ;;; Copyright © 2017, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
31 ;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
32 ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
33 ;;; Copyright © 2017, 2018, 2019, 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
34 ;;; Copyright © 2018 okapi <okapi@firemail.cc>
35 ;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
36 ;;; Copyright © 2018 Madalin Ionel-Patrascu <madalinionel.patrascu@mdc-berlin.de>
37 ;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net>
38 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
39 ;;; Copyright © 2019, 2020 Pierre Neidhardt <mail@ambrevar.xyz>
40 ;;; Copyright © 2019, 2020 Oleg Pykhalov <go.wigust@gmail.com>
41 ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
42 ;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
43 ;;; Copyright © 2019, 2020 Jesse Gibbons <jgibbons2357+guix@gmail.com>
44 ;;; Copyright © 2019 Dan Frumin <dfrumin@cs.ru.nl>
45 ;;; Copyright © 2019, 2020 Guillaume Le Vaillant <glv@posteo.net>
46 ;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar@araneo.si>
47 ;;; Copyright © 2019 Josh Holland <josh@inv.alid.pw>
48 ;;; Copyright © 2017, 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
49 ;;; Copyright © 2020 Alberto Eleuterio Flores Guerrero <barbanegra+guix@posteo.mx>
50 ;;; Copyright © 2020 Naga Malleswari <nagamalli@riseup.net>
51 ;;; Copyright © 2020 Vitaliy Shatrov <D0dyBo0D0dyBo0@protonmail.com>
52 ;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us>
53 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
54 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
55 ;;; Copyright © 2020 Trevor Hass <thass@okstate.edu>
56 ;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at>
57 ;;;
58 ;;; This file is part of GNU Guix.
59 ;;;
60 ;;; GNU Guix is free software; you can redistribute it and/or modify it
61 ;;; under the terms of the GNU General Public License as published by
62 ;;; the Free Software Foundation; either version 3 of the License, or (at
63 ;;; your option) any later version.
64 ;;;
65 ;;; GNU Guix is distributed in the hope that it will be useful, but
66 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
67 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
68 ;;; GNU General Public License for more details.
69 ;;;
70 ;;; You should have received a copy of the GNU General Public License
71 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
72
73 (define-module (gnu packages games)
74 #:use-module (ice-9 match)
75 #:use-module ((guix licenses) #:prefix license:)
76 #:use-module (guix utils)
77 #:use-module (guix packages)
78 #:use-module (guix download)
79 #:use-module (guix git-download)
80 #:use-module (guix svn-download)
81 #:use-module (guix gexp)
82 #:use-module (gnu packages)
83 #:use-module (gnu packages adns)
84 #:use-module (gnu packages algebra)
85 #:use-module (gnu packages autotools)
86 #:use-module (gnu packages backup)
87 #:use-module (gnu packages base)
88 #:use-module (gnu packages build-tools)
89 #:use-module (gnu packages admin)
90 #:use-module (gnu packages audio)
91 #:use-module (gnu packages avahi)
92 #:use-module (gnu packages assembly)
93 #:use-module (gnu packages bash)
94 #:use-module (gnu packages bison)
95 #:use-module (gnu packages boost)
96 #:use-module (gnu packages check)
97 #:use-module (gnu packages cmake)
98 #:use-module (gnu packages compression)
99 #:use-module (gnu packages curl)
100 #:use-module (gnu packages crypto)
101 #:use-module (gnu packages cyrus-sasl)
102 #:use-module (gnu packages documentation)
103 #:use-module (gnu packages docbook)
104 #:use-module (gnu packages emulators)
105 #:use-module (gnu packages flex)
106 #:use-module (gnu packages fltk)
107 #:use-module (gnu packages fonts)
108 #:use-module (gnu packages fontutils)
109 #:use-module (gnu packages freedesktop)
110 #:use-module (gnu packages fribidi)
111 #:use-module (gnu packages game-development)
112 #:use-module (gnu packages gcc)
113 #:use-module (gnu packages gettext)
114 #:use-module (gnu packages ghostscript)
115 #:use-module (gnu packages gimp)
116 #:use-module (gnu packages gl)
117 #:use-module (gnu packages glib)
118 #:use-module (gnu packages gnome)
119 #:use-module (gnu packages gnupg)
120 #:use-module (gnu packages gnuzilla)
121 #:use-module (gnu packages gperf)
122 #:use-module (gnu packages graphics)
123 #:use-module (gnu packages gsasl)
124 #:use-module (gnu packages gstreamer)
125 #:use-module (gnu packages gtk)
126 #:use-module (gnu packages guile)
127 #:use-module (gnu packages haskell)
128 #:use-module (gnu packages haskell-crypto)
129 #:use-module (gnu packages haskell-xyz)
130 #:use-module (gnu packages icu4c)
131 #:use-module (gnu packages image)
132 #:use-module (gnu packages imagemagick)
133 #:use-module (gnu packages kde)
134 #:use-module (gnu packages kde-frameworks)
135 #:use-module (gnu packages less)
136 #:use-module (gnu packages libcanberra)
137 #:use-module (gnu packages libedit)
138 #:use-module (gnu packages libunwind)
139 #:use-module (gnu packages linux)
140 #:use-module (gnu packages llvm)
141 #:use-module (gnu packages lua)
142 #:use-module (gnu packages man)
143 #:use-module (gnu packages maths)
144 #:use-module (gnu packages messaging)
145 #:use-module (gnu packages mp3)
146 #:use-module (gnu packages music)
147 #:use-module (gnu packages multiprecision)
148 #:use-module (gnu packages ncurses)
149 #:use-module (gnu packages netpbm)
150 #:use-module (gnu packages networking)
151 #:use-module (gnu packages ocaml)
152 #:use-module (gnu packages opencl)
153 #:use-module (gnu packages pcre)
154 #:use-module (gnu packages perl)
155 #:use-module (gnu packages perl-check)
156 #:use-module (gnu packages perl-compression)
157 #:use-module (gnu packages pkg-config)
158 #:use-module (gnu packages protobuf)
159 #:use-module (gnu packages pulseaudio)
160 #:use-module (gnu packages python)
161 #:use-module (gnu packages python-xyz)
162 #:use-module (gnu packages qt)
163 #:use-module (gnu packages readline)
164 #:use-module (gnu packages ruby)
165 #:use-module (gnu packages shells)
166 #:use-module (gnu packages sdl)
167 #:use-module (gnu packages serialization)
168 #:use-module (gnu packages sqlite)
169 #:use-module (gnu packages squirrel)
170 #:use-module (gnu packages swig)
171 #:use-module (gnu packages tcl)
172 #:use-module (gnu packages terminals)
173 #:use-module (gnu packages texinfo)
174 #:use-module (gnu packages textutils)
175 #:use-module (gnu packages tls)
176 #:use-module (gnu packages upnp)
177 #:use-module (gnu packages video)
178 #:use-module (gnu packages vulkan)
179 #:use-module (gnu packages web)
180 #:use-module (gnu packages wget)
181 #:use-module (gnu packages wxwidgets)
182 #:use-module (gnu packages xdisorg)
183 #:use-module (gnu packages xorg)
184 #:use-module (gnu packages xiph)
185 #:use-module (gnu packages xml)
186 #:use-module (guix build-system copy)
187 #:use-module (guix build-system cmake)
188 #:use-module (guix build-system glib-or-gtk)
189 #:use-module (guix build-system gnu)
190 #:use-module (guix build-system go)
191 #:use-module (guix build-system meson)
192 #:use-module (guix build-system perl)
193 #:use-module (guix build-system python)
194 #:use-module (guix build-system qt)
195 #:use-module (guix build-system scons)
196 #:use-module (guix build-system trivial)
197 #:use-module ((srfi srfi-1) #:hide (zip))
198 #:use-module (srfi srfi-26))
199
200 (define-public abe
201 (package
202 (name "abe")
203 (version "1.1")
204 (source
205 (origin
206 (method url-fetch)
207 (uri (string-append "mirror://sourceforge/abe/abe/abe-" version
208 "/abe-" version ".tar.gz"))
209 (sha256
210 (base32 "1xvpnq1y6y48fn3pvn2lk0h1ilmalv7nb7awpid1g4jcq1sfmi6z"))))
211 (build-system gnu-build-system)
212 (arguments
213 `(#:configure-flags
214 (list (string-append "--with-data-dir="
215 (assoc-ref %outputs "out")
216 "/share/abe"))
217 #:phases
218 (modify-phases %standard-phases
219 (replace 'bootstrap
220 (lambda _ (invoke "sh" "autogen.sh")))
221 (add-before 'build 'set-SDL
222 ;; Set correct environment for SDL.
223 (lambda* (#:key inputs #:allow-other-keys)
224 (setenv "CPATH"
225 (string-append
226 (assoc-ref inputs "sdl") "/include/SDL:"
227 (or (getenv "CPATH") "")))
228 #t))
229 (add-after 'install 'finalize-install
230 (lambda* (#:key outputs #:allow-other-keys)
231 (let ((share (string-append (assoc-ref outputs "out") "/share")))
232 ;; Installation script does not copy game data files.
233 (let ((data (string-append share "/abe")))
234 (for-each (lambda (dir)
235 (let ((target (string-append data "/" dir)))
236 (mkdir-p target)
237 (copy-recursively dir target)))
238 '("images" "maps" "sounds")))
239 ;; Create desktop file.
240 (let ((apps (string-append share "/applications")))
241 (mkdir-p apps)
242 (make-desktop-entry-file
243 (string-append apps "/abe.desktop")
244 #:name "Abe's Amazing Adventure"
245 #:exec ,name
246 #:categories '("AdventureGame" "Game")
247 #:keywords
248 '("side-scrolling" "adventure" "pyramid" "singleplayer")
249 #:comment
250 '(("de" "Ein sich seitwärts bewegendes Abenteuerspiel")
251 (#f "Side-scrolling game")))))
252 #t)))))
253 (native-inputs
254 `(("autoconf" ,autoconf)
255 ("automake" ,automake)))
256 (inputs
257 `(("libxi" ,libxi)
258 ("libxmu" ,libxmu)
259 ("libxt" ,libxt)
260 ("sdl" ,(sdl-union (list sdl sdl-mixer)))))
261 (home-page "http://abe.sourceforge.net")
262 (synopsis "Scrolling, platform-jumping, ancient pyramid exploring game")
263 (description
264 "Abe's Amazing Adventure is a scrolling,
265 platform-jumping, key-collecting, ancient pyramid exploring game, vaguely in
266 the style of similar games for the Commodore+4.")
267 (license license:gpl2+)))
268
269 ;; Data package for adanaxisgpl.
270 (define adanaxis-mush
271 (let ((version "1.1.0"))
272 (origin
273 (method url-fetch)
274 (uri (string-append "http://www.mushware.com/files/adanaxis-mush-"
275 version ".tar.gz"))
276 (sha256
277 (base32 "0mk9ibis5nkdcalcg1lkgnsdxxbw4g5w2i3icjzy667hqirsng03")))))
278
279 (define-public adanaxisgpl
280 (package
281 (name "adanaxisgpl")
282 (version "1.2.5")
283 (source
284 (origin
285 (method url-fetch)
286 (uri (string-append "http://www.mushware.com/files/adanaxisgpl-"
287 version ".tar.gz"))
288 (sha256
289 (base32 "0jkn637jaabvlhd6hpvzb57vvjph94l6fbf7qxbjlw9zpr19dw1f"))
290 (modules '((guix build utils)))
291 (snippet
292 '(begin
293 ;; Necessary for building with gcc >=4.7.
294 (substitute* "src/Mushcore/MushcoreSingleton.h"
295 (("SingletonPtrSet\\(new SingletonType\\);")
296 "MushcoreSingleton::SingletonPtrSet(new SingletonType);"))
297 ;; Avoid an "invalid conversion from const char* to char*" error.
298 (substitute* "src/Platform/X11/PlatformMiscUtils.cpp"
299 (("char \\*end, \\*result;")
300 (string-append "const char *end;"
301 "\n"
302 "char *result;")))
303 #t))))
304 (build-system gnu-build-system)
305 (arguments
306 `(#:tests? #f ; no check target
307 #:phases
308 (modify-phases %standard-phases
309 (add-after 'install 'install-data
310 (lambda* (#:key inputs outputs #:allow-other-keys)
311 (let ((data (assoc-ref inputs "adanaxis-mush"))
312 (share (string-append (assoc-ref outputs "out")
313 "/share/" ,name "-" ,version)))
314 (mkdir-p share)
315 (invoke "tar" "xvf" data "-C" share)))))))
316 (native-inputs
317 `(("adanaxis-mush" ,adanaxis-mush))) ; game data
318 (inputs
319 `(("expat" ,expat)
320 ("freeglut" ,freeglut)
321 ("glu" ,glu)
322 ("libjpeg" ,libjpeg-turbo)
323 ("libogg" ,libogg)
324 ("libtiff" ,libtiff)
325 ("libvorbis" ,libvorbis)
326 ("libx11" ,libx11)
327 ("libxext" ,libxext)
328 ("pcre" ,pcre)
329 ("sdl" ,sdl)
330 ("sdl-mixer" ,sdl-mixer)))
331 (home-page "https://www.mushware.com")
332 (synopsis "Action game in four spatial dimensions")
333 (description
334 "Adanaxis is a fast-moving first person shooter set in deep space, where
335 the fundamentals of space itself are changed. By adding another dimension to
336 space this game provides an environment with movement in four directions and
337 six planes of rotation. Initially the game explains the 4D control system via
338 a graphical sequence, before moving on to 30 levels of gameplay with numerous
339 enemy, ally, weapon and mission types. Features include simulated 4D texturing,
340 mouse and joystick control, and original music.")
341 (license license:gpl2)))
342
343 (define-public alex4
344 (package
345 (name "alex4")
346 (version "1.2.1")
347 (source
348 (origin
349 (method git-fetch)
350 (uri (git-reference
351 (url "https://github.com/carstene1ns/alex4")
352 (commit version)))
353 (file-name (git-file-name name version))
354 (sha256
355 (base32 "098wy72mh4lsvq3gm0rhamjssf9l1hp6hhkpzrv7klpb97cwwc3h"))))
356 (build-system gnu-build-system)
357 (arguments
358 `(#:tests? #f ; no check target
359 #:make-flags
360 (list "CC=gcc"
361 "CFLAGS=-D_FILE_OFFSET_BITS=64"
362 (string-append "PREFIX=" (assoc-ref %outputs "out")))
363 #:phases
364 (modify-phases %standard-phases
365 (delete 'configure) ; no configure script
366 (add-after 'install 'install-data
367 (lambda* (#:key outputs #:allow-other-keys)
368 (let ((share (string-append (assoc-ref outputs "out")
369 "/share/" ,name)))
370 (install-file "alex4.ini" share)
371 #t))))))
372 (inputs
373 `(("allegro" ,allegro-4)
374 ("dumb" ,dumb-allegro4)))
375 (home-page "http://allegator.sourceforge.net/")
376 (synopsis "Retro platform game")
377 (description
378 "Guide Alex the Allegator through the jungle in order to save his
379 girlfriend Lola from evil humans who want to make a pair of shoes out of her.
380 Plenty of classic platforming in four nice colors guaranteed!
381
382 The game includes a built-in editor so you can design and share your own maps.")
383 (license license:gpl2+)))
384
385 (define-public armagetronad
386 (package
387 (name "armagetronad")
388 (version "0.2.9.0.1")
389 (source (origin
390 (method url-fetch)
391 (uri (string-append "mirror://sourceforge/armagetronad/stable/"
392 version "/armagetronad-" version ".tbz"))
393 (sha256
394 (base32
395 "19rfhlg4gp0r7k1j8v4iw20325ciy156nmzax4xikmw22c6nmxcz"))))
396 (build-system gnu-build-system)
397 (native-inputs
398 `(("pkg-config" ,pkg-config)))
399 (inputs
400 `(("libxml2" ,libxml2)
401 ("sdl" ,sdl)
402 ("sdl-image" ,sdl-image)
403 ("freeglut" ,freeglut)
404 ("libpng" ,libpng)
405 ("libjpeg-turbo" ,libjpeg-turbo)))
406 (home-page "http://www.armagetronad.org")
407 (synopsis "Tron clone in 3D")
408 (description "Armagetron Advanced is a multiplayer game in 3d that
409 attempts to emulate and expand on the lightcycle sequence from the movie Tron.
410 It's an old school arcade game slung into the 21st century. Highlights
411 include a customizable playing arena, HUD, unique graphics, and AI bots. For
412 the more advanced player there are new game modes and a wide variety of
413 physics settings to tweak as well.")
414 (license license:gpl2+)))
415
416 (define-public astromenace
417 (package
418 (name "astromenace")
419 (version "1.4.1")
420 (source
421 (origin
422 (method git-fetch)
423 (uri (git-reference
424 (url "https://github.com/viewizard/astromenace")
425 (commit (string-append "v" version))))
426 (file-name (git-file-name name version))
427 (sha256
428 (base32 "1ad6l887jxqv8xspwc2rvy8ym9sdlmkqdqhsh0pi076kjarxsyws"))))
429 (build-system cmake-build-system)
430 (arguments
431 `(#:tests? #f ;no test
432 #:configure-flags '("-DDATADIR=share/astromenace")
433 #:phases
434 (modify-phases %standard-phases
435 (replace 'install
436 ;; Upstream provides no install phase.
437 (lambda* (#:key inputs outputs #:allow-other-keys)
438 (let* ((out (assoc-ref outputs "out"))
439 (bin (string-append out "/bin"))
440 (share (string-append out "/share"))
441 (apps (string-append share "/applications"))
442 (data (string-append share "/astromenace"))
443 (icons (string-append share "/icons/hicolor/64x64/apps")))
444 (install-file "astromenace" bin)
445 (install-file "gamedata.vfs" data)
446 (let ((source (assoc-ref inputs "source")))
447 (with-directory-excursion (string-append source "/share")
448 (install-file "astromenace.desktop" apps)
449 (mkdir-p icons)
450 (copy-file "astromenace_64.png"
451 (string-append icons "/astromenace.png")))))
452 #t)))))
453 (inputs
454 `(("freealut" ,freealut)
455 ("freetype" ,freetype)
456 ("glu" ,glu)
457 ("libogg" ,libogg)
458 ("libvorbis" ,libvorbis)
459 ("openal" ,openal)
460 ("sdl2" ,sdl2)))
461 (home-page "https://www.viewizard.com/")
462 (synopsis "3D space shooter with spaceship upgrade possibilities")
463 (description
464 "Space is a vast area, an unbounded territory where it seems there is
465 a room for everybody, but reversal of fortune put things differently. The
466 hordes of hostile creatures crawled out from the dark corners of the universe,
467 craving to conquer your homeland. Their force is compelling, their legions
468 are interminable. However, humans didn't give up without a final showdown and
469 put their best pilot to fight back. These malicious invaders chose the wrong
470 galaxy to conquer and you are to prove it! Go ahead and make alien aggressors
471 regret their insolence.")
472 ;; Game is released under GPL3+ terms. Artwork is subject to CC
473 ;; BY-SA 4.0, and fonts to OFL1.1.
474 (license (list license:gpl3+ license:cc-by-sa4.0 license:silofl1.1))))
475
476 (define-public bastet
477 (package
478 (name "bastet")
479 (version "0.43.2")
480 (source
481 (origin
482 (method git-fetch)
483 (uri (git-reference
484 (url "https://github.com/fph/bastet")
485 (commit version)))
486 (file-name (git-file-name name version))
487 (sha256
488 (base32 "09kamxapm9jw9przpsgjfg33n9k94bccv65w95dakj0br33a75wn"))
489 (patches
490 (search-patches "bastet-change-source-of-unordered_set.patch"))))
491 (build-system gnu-build-system)
492 (arguments
493 `(#:make-flags
494 (list (string-append "CXXFLAGS=-I"
495 (assoc-ref %build-inputs "boost") "/include"))
496 #:phases
497 (modify-phases %standard-phases
498 (delete 'configure) ; no configure script
499 (replace 'check
500 ;; The 'Test' target builds the tests, but doesn't actually run them.
501 (lambda* (#:key make-flags #:allow-other-keys)
502 (apply invoke "make" "Test" make-flags)
503 (setenv "HOME" ".")
504 (invoke "./Test")))
505 (replace 'install
506 (lambda* (#:key outputs #:allow-other-keys)
507 (let* ((out (assoc-ref outputs "out"))
508 (share (string-append out "/share"))
509 (hicolor (string-append share "/icons/hicolor")))
510 (install-file "bastet"
511 (string-append out "/bin"))
512
513 (install-file "bastet.desktop"
514 (string-append share "/applications"))
515 (install-file "bastet.svg"
516 (string-append hicolor "/scalable/apps"))
517
518 (install-file "bastet.appdata.xml"
519 (string-append share "/appdata"))
520
521 (install-file "bastet.6"
522 (string-append out "/share/man/man6"))
523 #t))))))
524 (native-inputs
525 `(("hicolor-icon-theme" ,hicolor-icon-theme)))
526 (inputs
527 `(("boost" ,boost)
528 ("ncurses" ,ncurses)))
529 (home-page "https://fph.altervista.org/prog/bastet.html")
530 (synopsis "Antagonistic Tetris-style falling brick game for text terminals")
531 (description
532 "Bastet (short for Bastard Tetris) is a simple ncurses-based falling brick
533 game. Unlike normal Tetris, Bastet does not choose the next brick at random.
534 Instead, it uses a special algorithm to choose the worst brick possible.
535
536 Playing bastet can be a painful experience, especially if you usually make
537 canyons and wait for the long I-shaped block to clear four rows at a time.")
538 (license license:gpl3+)))
539
540 (define-public blobwars
541 (package
542 (name "blobwars")
543 (version "2.00")
544 (source
545 (origin
546 (method url-fetch)
547 (uri (string-append "mirror://sourceforge/blobwars/"
548 "blobwars-" version ".tar.gz"))
549 (sha256
550 (base32 "16aagvkx6azf75gm5kaa94bh5npydvhqp3fvdqyfsanzdjgjf1n4"))))
551 (build-system gnu-build-system)
552 (arguments
553 `(#:tests? #f ;no test
554 #:make-flags
555 (let ((out (assoc-ref %outputs "out")))
556 (list (string-append "PREFIX=" out)
557 (string-append "BINDIR=" out "/bin/")
558 "USEPAK=1"
559 "RELEASE=1"))
560 #:phases
561 (modify-phases %standard-phases
562 (add-after 'unpack 'werror-begone
563 (lambda _
564 (substitute* "Makefile" (("-Werror") ""))
565 #t))
566 (delete 'configure)))) ;no configure script
567 (native-inputs
568 `(("gettext" ,gettext-minimal)
569 ("pkg-config" ,pkg-config)))
570 (inputs
571 `(("hicolor-icon-theme" ,hicolor-icon-theme)
572 ("sdl" ,(sdl-union (list sdl2
573 sdl2-image
574 sdl2-mixer
575 sdl2-ttf
576 sdl2-net)))))
577 (home-page "https://sourceforge.net/projects/blobwars/")
578 (synopsis "Platform action game featuring a blob with a lot of weapons")
579 (description "Blobwars: Metal Blob Solid is a 2D platform game, the first
580 in the Blobwars series. You take on the role of a fearless Blob agent. Your
581 mission is to infiltrate various enemy bases and rescue as many MIAs as
582 possible, while battling many vicious aliens.")
583 (license (list license:gpl2 ; For code and graphics
584 license:cc0 ; Music and sounds have specific licenses
585 license:cc-by3.0 ; see /doc/readme
586 license:cc-by-sa3.0
587 license:lgpl2.1+
588 license:bsd-2))))
589
590 (define-public bzflag
591 (package
592 (name "bzflag")
593 (version "2.4.20")
594 (source
595 (origin
596 (method url-fetch)
597 (uri (string-append "https://download.bzflag.org/bzflag/source/"
598 version "/bzflag-" version ".tar.bz2"))
599 (sha256
600 (base32 "16brxqmfiyz4j4lb8ihzjcbwqmpsms6vm3ijbp34lnw0blbwdjb2"))))
601 (build-system gnu-build-system)
602 (arguments
603 `(#:phases
604 (modify-phases %standard-phases
605 (add-after 'install 'install-desktop-file-and-icons
606 (lambda* (#:key outputs #:allow-other-keys)
607 (let* ((share (string-append (assoc-ref outputs "out") "/share"))
608 (data (string-append share "/bzflag"))
609 (hicolor (string-append share "/icons/hicolor"))
610 (applications (string-append share "/applications")))
611 ;; Move desktop file.
612 (install-file (string-append data "/bzflag.desktop")
613 applications)
614 ;; Install icons.
615 (for-each (lambda (size)
616 (let* ((dim (string-append size "x" size))
617 (dir (string-append hicolor "/" dim "/apps")))
618 (mkdir-p dir)
619 (copy-file
620 (string-append data "/bzflag-" dim ".png")
621 (string-append dir "/bzflag.png"))))
622 '("48" "256")))
623 #t)))))
624 (native-inputs
625 `(("pkg-config" ,pkg-config)))
626 (inputs
627 `(("c-ares" ,c-ares)
628 ("curl" ,curl)
629 ("glew" ,glew)
630 ("glu" ,glu)
631 ("sdl2" ,sdl2)
632 ("zlib" ,zlib)))
633 (home-page "https://www.bzflag.org/")
634 (synopsis "3D first person tank battle game")
635 (description
636 "BZFlag is a 3D multi-player multiplatform tank battle game that
637 allows users to play against each other in a network environment.
638 There are five teams: red, green, blue, purple and rogue (rogue tanks
639 are black). Destroying a player on another team scores a win, while
640 being destroyed or destroying a teammate scores a loss. Rogues have
641 no teammates (not even other rogues), so they cannot shoot teammates
642 and they do not have a team score.
643
644 There are two main styles of play: capture-the-flag and free-for-all.
645 In capture-the-flag, each team (except rogues) has a team base and
646 each team with at least one player has a team flag. The object is to
647 capture an enemy team's flag by bringing it to your team's base. This
648 destroys every player on the captured team, subtracts one from that
649 team's score, and adds one to your team's score. In free-for-all,
650 there are no team flags or team bases. The object is simply to get as
651 high a score as possible.")
652 ;; The game is dual-licensed.
653 (license (list license:lgpl2.1 license:mpl2.0))))
654
655 (define-public cataclysm-dda
656 (package
657 (name "cataclysm-dda")
658 (version "0.E-2")
659 (source
660 (origin
661 (method git-fetch)
662 (uri (git-reference
663 (url "https://github.com/CleverRaven/Cataclysm-DDA")
664 (commit version)))
665 (sha256
666 (base32 "15l6w6lxays7qmsv0ci2ry53asb9an9dh7l7fc13256k085qcg68"))
667 (file-name (git-file-name name version))))
668 (build-system gnu-build-system)
669 (arguments
670 '(#:make-flags
671 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
672 "USE_HOME_DIR=1" "DYNAMIC_LINKING=1" "RELEASE=1"
673 "LOCALIZE=1" "LANGUAGES=all")
674 #:phases
675 (modify-phases %standard-phases
676 (delete 'configure)
677 (add-after 'build 'build-tiles
678 (lambda* (#:key make-flags outputs #:allow-other-keys)
679 ;; Change prefix directory and enable tile graphics and sound.
680 (apply invoke "make" "TILES=1" "SOUND=1"
681 (string-append "PREFIX="
682 (assoc-ref outputs "tiles"))
683 (cdr make-flags))))
684 (add-after 'install 'install-tiles
685 (lambda* (#:key make-flags outputs #:allow-other-keys)
686 (apply invoke "make" "install" "TILES=1" "SOUND=1"
687 (string-append "PREFIX="
688 (assoc-ref outputs "tiles"))
689 (cdr make-flags)))))
690 ;; TODO: Add libtap++ from https://github.com/cbab/libtappp as a native
691 ;; input in order to support tests.
692 #:tests? #f))
693 (outputs '("out"
694 "tiles")) ;for tile graphics and sound support
695 (native-inputs
696 `(("gettext" ,gettext-minimal)
697 ("pkg-config" ,pkg-config)))
698 (inputs
699 `(("freetype" ,freetype)
700 ("libogg" ,libogg)
701 ("libvorbis" ,libvorbis)
702 ("ncurses" ,ncurses)
703 ("sdl2" ,sdl2)
704 ("sdl2-image" ,sdl2-image)
705 ("sdl2-ttf" ,sdl2-ttf)
706 ("sdl2-mixer" ,sdl2-mixer)))
707 (home-page "https://cataclysmdda.org/")
708 (synopsis "Survival horror roguelike video game")
709 (description
710 "Cataclysm: Dark Days Ahead (or \"DDA\" for short) is a roguelike set
711 in a post-apocalyptic world. Struggle to survive in a harsh, persistent,
712 procedurally generated world. Scavenge the remnants of a dead civilization
713 for food, equipment, or, if you are lucky, a vehicle with a full tank of gas
714 to get you out of Dodge. Fight to defeat or escape from a wide variety of
715 powerful monstrosities, from zombies to giant insects to killer robots and
716 things far stranger and deadlier, and against the others like yourself, that
717 want what you have.")
718 (license license:cc-by-sa3.0)))
719
720 (define-public corsix-th
721 (package
722 (name "corsix-th")
723 (version "0.64")
724 (source
725 (origin
726 (method git-fetch)
727 (uri (git-reference
728 (url "https://github.com/CorsixTH/CorsixTH")
729 (commit (string-append "v" version))))
730 (file-name (git-file-name name version))
731 (sha256
732 (base32 "0chh9cv2kdc39sr0x8hclcyzd8dz2y6grgagqzkvr7j570wa5cqh"))))
733 (build-system cmake-build-system)
734 (arguments
735 `(#:phases
736 (modify-phases %standard-phases
737 (add-after 'install 'wrap-binary
738 (lambda _
739 ;; Set Lua module paths and default MIDI soundfont on startup.
740 (let* ((out (assoc-ref %outputs "out"))
741 (fluid (assoc-ref %build-inputs "fluid-3"))
742 (lua-version ,(version-major+minor (package-version lua)))
743 (lua-cpath
744 (map (lambda (lib)
745 (string-append
746 (assoc-ref %build-inputs (string-append "lua-" lib))
747 "/lib/lua/" lua-version "/?.so"))
748 '("filesystem" "lpeg"))))
749 (wrap-program (string-append out "/bin/corsix-th")
750 `("LUA_CPATH" ";" = ,lua-cpath)
751 `("SDL_SOUNDFONTS" ":" suffix
752 (,(string-append fluid "/share/soundfonts/FluidR3Mono_GM.sf3")))))
753 #t)))
754 #:tests? #f)) ; TODO need busted package to run tests
755 ;; Omit Lua-Socket dependency to disable automatic updates.
756 (inputs
757 `(("ffmpeg" ,ffmpeg)
758 ("fluid-3" ,fluid-3)
759 ("freetype" ,freetype)
760 ("lua" ,lua)
761 ("lua-filesystem" ,lua-filesystem)
762 ("lua-lpeg" ,lua-lpeg)
763 ("sdl2" ,sdl2)
764 ("sdl2-mixer" ,sdl2-mixer)))
765 (home-page "https://corsixth.com")
766 (synopsis "Implementation of the @i{Theme Hospital} game engine")
767 (description
768 "This package provides a reimplementation of the 1997 Bullfrog business
769 simulation game @i{Theme Hospital}. As well as faithfully recreating the
770 original engine, CorsixTH adds support for high resolutions, custom levels and
771 more. This package does @emph{not} provide the game assets.")
772 (license (list
773 license:expat ; main license
774 license:bsd-3)))) ; CorsixTH/Src/random.c
775
776 (define-public cowsay
777 (package
778 (name "cowsay")
779 (version "3.04")
780 (source (origin
781 (method git-fetch)
782 (uri (git-reference
783 (url "https://github.com/tnalpgge/rank-amateur-cowsay")
784 (commit (string-append name "-" version))))
785 (file-name (git-file-name name version))
786 (sha256
787 (base32
788 "06455kq37hvq1xb7adyiwrx0djs50arsxvjgixyxks16lm1rlc7n"))))
789 (build-system gnu-build-system)
790 (arguments
791 `(#:phases
792 (modify-phases %standard-phases
793 (delete 'configure) ; no configure script
794 (delete 'build) ; nothing to be built
795 (replace 'install
796 (lambda* (#:key outputs #:allow-other-keys)
797 (invoke "sh" "install.sh"
798 (assoc-ref outputs "out"))))
799 (delete 'check)
800 (add-after 'install 'check
801 (lambda* (#:key outputs #:allow-other-keys)
802 (invoke (string-append (assoc-ref outputs "out")
803 "/bin/cowsay")
804 "We're done!"))))))
805 (inputs
806 `(("perl" ,perl)))
807 (home-page (string-append "https://web.archive.org/web/20071026043648/"
808 "http://www.nog.net:80/~tony/warez/cowsay.shtml"))
809 (synopsis "Speaking cow text filter")
810 (description "Cowsay is basically a text filter. Send some text into it,
811 and you get a cow saying your text. If you think a talking cow isn't enough,
812 cows can think too: all you have to do is run @command{cowthink}. If you're
813 tired of cows, a variety of other ASCII-art messengers are available.")
814 (license license:gpl3+)))
815
816 (define-public lolcat
817 (let ((commit "35dca3d0a381496d7195cd78f5b24aa7b62f2154")
818 (revision "0"))
819 (package
820 (name "lolcat")
821 (version (git-version "1.0" revision commit))
822 (source
823 (origin
824 (method git-fetch)
825 (uri (git-reference
826 (url "https://github.com/jaseg/lolcat")
827 (commit commit)))
828 (sha256
829 (base32
830 "0jjbkqcc2ikjxd1xgdyv4rb0vsw218181h89f2ywg29ffs3ypd8g"))
831 (file-name (git-file-name name version))))
832 (build-system gnu-build-system)
833 (arguments
834 `(#:tests? #f ; no check target
835 #:make-flags
836 (list ,(string-append "CC=" (cc-for-target)))
837 #:phases
838 (modify-phases %standard-phases
839 (delete 'bootstrap)
840 (delete 'configure)
841 (replace 'install
842 (lambda* (#:key outputs #:allow-other-keys)
843 (let* ((out (assoc-ref outputs "out"))
844 (dest (string-append out "/bin")))
845 (mkdir-p dest)
846 (install-file "lolcat" dest)
847 (install-file "censor" dest)
848 #t))))))
849 (home-page "https://github.com/jaseg/lolcat")
850 (synopsis "Rainbow coloring effect for text console display")
851 (description "@command{lolcat} concatenates files and streams like
852 regular @command{cat}, but it also adds terminal escape codes between
853 characters and lines resulting in a rainbow effect.")
854 (license license:wtfpl2))))
855
856 (define-public foobillard++
857 ;; Even though this latest revision is old already, stable release is
858 ;; lagging way behind it, and has issues with textures rendering.
859 (let ((svn-revision 170))
860 (package
861 (name "foobillard++")
862 (version (string-append "3.43-r" (number->string svn-revision)))
863 (source
864 (origin
865 (method svn-fetch)
866 (uri (svn-reference
867 (url "svn://svn.code.sf.net/p/foobillardplus/code/")
868 (revision svn-revision)))
869 (file-name (git-file-name name version))
870 (sha256
871 (base32 "00b693ys5zvzjbjzzj3dqfzm5xw64gwjf9m8qv6bkmf0klbhmayk"))
872 (patches
873 (search-patches "foobillard++-pkg-config.patch"))
874 (modules '((guix build utils)))
875 (snippet
876 '(begin
877 ;; Unfortunately, the game includes background music with
878 ;; a non-commercial clause. Delete it.
879 (for-each delete-file (find-files "data/music" "\\.ogg$"))
880 #t))))
881 (build-system gnu-build-system)
882 (arguments
883 `(#:configure-flags
884 (list
885 ;; Install data in a less exotic location.
886 (string-append "--prefix=" (assoc-ref %outputs "out") "/share")
887 ;; Prevent a build error about undefined trigonometric functions.
888 "--enable-fastmath=no")
889 #:phases
890 (modify-phases %standard-phases
891 (add-after 'unpack 'fix-makefile
892 ;; Remove hard-coded directories. Also fix installation
893 ;; rule: it tries to move around non-existent files or
894 ;; files already moved.
895 (lambda* (#:key outputs #:allow-other-keys)
896 (substitute* "Makefile.am"
897 (("/usr") (assoc-ref outputs "out"))
898 (("cp .*?/foobillardplus\\.desktop.*") "")
899 (("cp .*?/foobillardplus\\.(png|xbm) \\$\\(datarootdir\\).*")
900 ""))
901 #t))
902 (add-after 'unpack 'unbundle-font
903 ;; XXX: The package ships with LinBiolinum_aSB.ttf and
904 ;; LinBiolinum_aS.ttf, which are not provided by
905 ;; `font-linuxlibertine' package. Therefore, we cannot replace
906 ;; them yet.
907 (lambda* (#:key inputs #:allow-other-keys)
908 (let ((dejavu (string-append (assoc-ref inputs "font-dejavu")
909 "/share/fonts/truetype/")))
910 (with-directory-excursion "data"
911 (for-each (lambda (f)
912 (delete-file f)
913 (symlink (string-append dejavu f) f))
914 '("DejaVuSans-Bold.ttf" "DejaVuSans.ttf"))))
915 #t))
916 (replace 'bootstrap
917 (lambda _
918 (invoke "aclocal" "--force")
919 (invoke "autoconf" "-f")
920 (invoke "autoheader" "-f")
921 (invoke "automake" "-a" "-c" "-f")))
922 (add-before 'build 'prepare-build
923 ;; Set correct environment for SDL.
924 (lambda* (#:key inputs #:allow-other-keys)
925 (setenv "CPATH"
926 (string-append (assoc-ref inputs "sdl")
927 "/include/SDL:"
928 (or (getenv "CPATH") "")))
929 #t))
930 (add-before 'build 'fix-settings-directory
931 ;; Hide foobillardplus settings directory in $HOME.
932 (lambda _
933 (substitute* "src/history.c"
934 (("/foobillardplus-data") "/.foobillardplus"))
935 #t))
936 (add-before 'install 'create-directories
937 ;; Install process does not create directories before
938 ;; trying to move file in it.
939 (lambda* (#:key outputs #:allow-other-keys)
940 (let ((out (assoc-ref outputs "out")))
941 (mkdir-p (string-append out "/share/icons"))
942 (mkdir-p (string-append out "/share/applications")))
943 #t))
944 (add-after 'install 'symlink-executable
945 ;; Symlink executable to $out/bin.
946 (lambda* (#:key outputs #:allow-other-keys)
947 (let* ((out (assoc-ref outputs "out"))
948 (bin (string-append out "/bin")))
949 (mkdir-p bin)
950 (with-directory-excursion bin
951 (symlink "../share/foobillardplus/bin/foobillardplus"
952 "foobillardplus"))
953 #t))))))
954 (native-inputs
955 `(("autoconf" ,autoconf)
956 ("automake" ,automake)
957 ("pkg-config" ,pkg-config)))
958 (inputs
959 `(("font-dejavu" ,font-dejavu)
960 ("freetype" ,freetype)
961 ("glu" ,glu)
962 ("libpng" ,libpng)
963 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-net)))))
964 (home-page "http://foobillardplus.sourceforge.net/")
965 (synopsis "3D billiard game")
966 (description "FooBillard++ is an advanced 3D OpenGL billiard game
967 based on the original foobillard 3.0a sources from Florian Berger.
968 You can play it with one or two players or against the computer.
969
970 The game features:
971
972 @itemize
973 @item Wood paneled table with gold covers and gold diamonds.
974 @item Reflections on balls.
975 @item Zoom in and out, rotation, different angles and bird's eye view.
976 @item Different game modes: 8 or 9-ball, Snooker or Carambole.
977 @item Tournaments. Compete against other players.
978 @item Animated cue with strength and eccentric hit adjustment.
979 @item Jump shots and snipping.
980 @item Realistic gameplay and billiard sounds.
981 @item Red-Green stereo.
982 @item And much more.
983 @end itemize")
984 (license (list license:gpl2 license:silofl1.1)))))
985
986 (define-public freedoom
987 (package
988 (name "freedoom")
989 (version "0.12.1")
990 (source
991 (origin
992 (method git-fetch)
993 (uri (git-reference
994 (url "https://github.com/freedoom/freedoom")
995 (commit (string-append "v" version))))
996 (file-name (git-file-name name version))
997 (sha256
998 (base32 "1mq60lfwaaxmch7hsz8403pwafnlsmsd5z2df2j77ppwndwcrypb"))))
999 (build-system gnu-build-system)
1000 (arguments
1001 '(#:make-flags
1002 (list (string-append "prefix=" (assoc-ref %outputs "out")))
1003 #:tests? #f ; no check target
1004 #:phases
1005 (modify-phases %standard-phases
1006 (delete 'bootstrap)
1007 (replace 'configure
1008 (lambda* (#:key inputs outputs #:allow-other-keys)
1009 (let* ((freedoom (assoc-ref outputs "out"))
1010 (wad-dir (string-append freedoom "/share/games/doom")))
1011 ;; Make sure that the install scripts know where to find
1012 ;; the appropriate WAD files.
1013 (substitute* "dist/freedoom"
1014 (("IWAD=freedm.wad")
1015 (string-append "IWAD=" wad-dir "/freedm.wad"))
1016 (("IWAD=freedoom1.wad")
1017 (string-append "IWAD=" wad-dir "/freedoom1.wad"))
1018 (("IWAD=freedoom2.wad")
1019 (string-append "IWAD=" wad-dir "/freedoom2.wad")))
1020 #t))))))
1021 (native-inputs
1022 `(("asciidoc" ,asciidoc)
1023 ("deutex" ,deutex)
1024 ("python" ,python)
1025 ("python-pillow" ,python-pillow)))
1026 (home-page "https://freedoom.github.io/")
1027 (synopsis "Free content game based on the Doom engine")
1028 (native-search-paths
1029 (list (search-path-specification
1030 (variable "DOOMWADDIR")
1031 (files '("share/games/doom")))
1032 (search-path-specification
1033 (variable "DOOMWADPATH")
1034 (files '("share/games/doom")))))
1035 (description
1036 "The Freedoom project aims to create a complete free content first person
1037 shooter game. Freedoom by itself is just the raw material for a game: it must
1038 be paired with a compatible game engine (such as @code{prboom-plus}) to be
1039 played. Freedoom complements the Doom engine with free levels, artwork, sound
1040 effects and music to make a completely free game.")
1041 (license license:bsd-3)))
1042
1043 (define-public freedroidrpg
1044 (package
1045 (name "freedroidrpg")
1046 (version "0.16.1")
1047 (source
1048 (origin
1049 (method url-fetch)
1050 (uri (string-append "http://ftp.osuosl.org/pub/freedroid/"
1051 "freedroidRPG-" (version-major+minor version) "/"
1052 "freedroidRPG-" version ".tar.gz"))
1053 (sha256
1054 (base32 "0n4kn38ncmcy3lrxmq8fjry6c1z50z4q1zcqfig0j4jb0dsz2va2"))))
1055 (build-system gnu-build-system)
1056 (arguments
1057 `(#:configure-flags
1058 (list
1059 (string-append "CFLAGS="
1060 "-I" (assoc-ref %build-inputs "sdl-gfx") "/include/SDL "
1061 "-I" (assoc-ref %build-inputs "sdl-image") "/include/SDL "
1062 "-I" (assoc-ref %build-inputs "sdl-mixer") "/include/SDL")
1063 "--enable-opengl")
1064 ;; FIXME: the test suite fails with the following error output:
1065 ;; 4586 Segmentation fault env SDL_VIDEODRIVER=dummy \
1066 ;; SDL_AUDIODRIVER=dummy ./src/freedroidRPG -nb text
1067 #:tests? #f))
1068 (native-inputs
1069 `(("pkg-config" ,pkg-config)))
1070 (inputs
1071 `(("glu" ,glu)
1072 ("libjpeg" ,libjpeg-turbo)
1073 ("libogg" ,libogg)
1074 ("libpng" ,libpng)
1075 ("libvorbis" ,libvorbis)
1076 ("mesa" ,mesa)
1077 ("python" ,python-wrapper)
1078 ("sdl" ,sdl)
1079 ("sdl-gfx" ,sdl-gfx)
1080 ("sdl-image" ,sdl-image)
1081 ("sdl-mixer" ,sdl-mixer)
1082 ("zlib" ,zlib)))
1083 (home-page "http://www.freedroid.org/")
1084 (synopsis "Isometric role-playing game against killer robots")
1085 (description
1086 "Freedroid RPG is an @dfn{RPG} (Role-Playing Game) with isometric graphics.
1087 The game tells the story of a world destroyed by a conflict between robots and
1088 their human masters. To restore peace to humankind, the player must complete
1089 numerous quests while fighting off rebelling robots---either by taking control
1090 of them, or by simply blasting them to pieces with melee and ranged weapons in
1091 real-time combat.")
1092 (license (list license:expat ; lua/
1093 license:gpl3 ; src/gen_savestruct.py
1094 license:gpl2+)))) ; the rest
1095
1096 (define-public golly
1097 (package
1098 (name "golly")
1099 (version "3.3")
1100 (source (origin
1101 (method url-fetch)
1102 (uri (string-append "mirror://sourceforge/golly/golly/golly-"
1103 version "/golly-" version
1104 "-src.tar.gz"))
1105 (sha256
1106 (base32
1107 "1j3ksnar4rdam4xiyspgyrs1pifbvxfxkrn65brkwxpx39mpgzc8"))))
1108 (build-system gnu-build-system)
1109 (arguments
1110 '(#:make-flags (list "CC=gcc"
1111 (string-append "GOLLYDIR="
1112 (assoc-ref %outputs "out")
1113 "/share/golly"))
1114 #:tests? #f ; no check target
1115 #:phases
1116 (modify-phases %standard-phases
1117 (replace 'configure
1118 (lambda* (#:key inputs #:allow-other-keys)
1119 ;; For some reason, setting the PYTHON_SHLIB make flag doesn't
1120 ;; properly set the path to the Python shared library. This
1121 ;; substitution acheives the same end by different means.
1122 (substitute* "gui-wx/wxprefs.cpp"
1123 (("pythonlib = wxT\\(STRINGIFY\\(PYTHON_SHLIB\\)\\)")
1124 (string-append "pythonlib = \""
1125 (assoc-ref inputs "python")
1126 "/lib/libpython-2.7.so\"")))
1127 #t))
1128 (replace 'build
1129 (lambda* (#:key make-flags outputs #:allow-other-keys)
1130 (with-directory-excursion "gui-wx"
1131 (apply invoke `("make" ,@make-flags "-f" "makefile-gtk")))))
1132 (replace 'install
1133 (lambda* (#:key outputs #:allow-other-keys)
1134 (let* ((out (assoc-ref outputs "out"))
1135 (bin (string-append out "/bin"))
1136 (doc (string-append out "/share/doc/golly"))
1137 (pixmaps (string-append out "/share/pixmaps"))
1138 (share (string-append out "/share/golly")))
1139 (for-each (lambda (binary)
1140 (install-file binary bin))
1141 '("bgolly" "golly"))
1142 (for-each (lambda (document)
1143 (install-file
1144 (string-append "docs/" document ".html")
1145 doc))
1146 '("License" "ReadMe" "ToDo"))
1147 (install-file "gui-wx/icons/appicon.xpm" pixmaps)
1148 (for-each (lambda (folder)
1149 (copy-recursively
1150 folder
1151 (string-append share "/" folder)))
1152 '("Help" "Patterns" "Rules" "Scripts")))
1153 #t)))))
1154 (native-inputs
1155 `(("lua" ,lua)))
1156 (inputs
1157 `(("glu" ,glu)
1158 ("mesa" ,mesa)
1159 ("python" ,python-2)
1160 ("wxwidgets" ,wxwidgets-gtk2)
1161 ("zlib" ,zlib)))
1162 (home-page "http://golly.sourceforge.net/")
1163 (synopsis "Software for exploring cellular automata")
1164 (description
1165 "Golly simulates Conway's Game of Life and many other types of cellular
1166 automata. The following features are available:
1167 @enumerate
1168 @item Support for bounded and unbounded universes, with cells of up to 256
1169 states.
1170 @item Support for multiple algorithms, including Bill Gosper's Hashlife
1171 algorithm.
1172 @item Loading patterns from BMP, PNG, GIF and TIFF image files.
1173 @item Reading RLE, macrocell, Life 1.05/1.06, dblife and MCell files.
1174 @item Scriptable via Lua or Python.
1175 @item Extracting patterns, rules and scripts from zip files.
1176 @item Downloading patterns, rules and scripts from online archives.
1177 @item Pasting patterns from the clipboard.
1178 @item Unlimited undo/redo.
1179 @item Configurable keyboard shortcuts.
1180 @item Auto fit option to keep patterns within the view.
1181 @end enumerate")
1182 (license license:gpl2+)))
1183
1184 (define-public julius
1185 (package
1186 (name "julius")
1187 (version "1.4.1")
1188 (source
1189 (origin
1190 (method git-fetch)
1191 (uri (git-reference
1192 (url "https://github.com/bvschaik/julius")
1193 (commit (string-append "v" version))))
1194 (file-name (git-file-name name version))
1195 (sha256
1196 (base32 "12hhnhdwgz7hd3hlndbnk15pxggm1375qs0764ija4nl1gbpb110"))
1197 ;; Remove unused bundled libraries.
1198 (modules '((guix build utils)))
1199 (snippet
1200 '(begin
1201 (with-directory-excursion "ext"
1202 (for-each delete-file-recursively '("dirent" "png" "SDL2" "zlib")))
1203 #t))))
1204 (build-system cmake-build-system)
1205 (inputs
1206 `(("libpng" ,libpng)
1207 ("sdl2" ,sdl2)
1208 ("sdl2-mixer" ,sdl2-mixer)))
1209 (home-page "https://github.com/bvschaik/julius")
1210 (synopsis "Re-implementation of Caesar III game engine")
1211 (description
1212 "Engine for Caesar III, a city-building real-time strategy game.
1213 Julius includes some UI enhancements while preserving the logic (including
1214 bugs) of the original game, so that saved games are compatible. This package
1215 does not include game data.")
1216 (license (list license:agpl3
1217 license:zlib)))) ; ext/tinyfiledialogs
1218
1219 (define-public augustus
1220 (package
1221 (inherit julius)
1222 (name "augustus")
1223 (version (package-version julius))
1224 (source
1225 (origin
1226 (method git-fetch)
1227 (uri (git-reference
1228 (url "https://github.com/Keriew/augustus")
1229 (commit (string-append "v" version))))
1230 (file-name (git-file-name name version))
1231 (sha256
1232 (base32 "0ii0w0iwa9zv5bbqfcps5mxifd796m6fw4gvjf09pkm3yjgqc0ag"))
1233 ;; Remove unused bundled libraries.
1234 (modules '((guix build utils)))
1235 (snippet
1236 '(begin
1237 (with-directory-excursion "ext"
1238 (for-each delete-file-recursively '("dirent" "png" "SDL2" "zlib")))
1239 #t))))
1240 (arguments
1241 ;; No tests. See https://github.com/Keriew/augustus/issues/82.
1242 `(#:tests? #f))
1243 (home-page "https://github.com/Keriew/augustus")
1244 (synopsis "Re-implementation of Caesar III game engine with gameplay changes")
1245 (description
1246 "Fork of Julius, an engine for the a city-building real-time strategy
1247 game Caesar III. Gameplay enhancements include:
1248
1249 @itemize
1250 @item roadblocks;
1251 @item market special orders;
1252 @item global labour pool;
1253 @item partial warehouse storage;
1254 @item increased game limits;
1255 @item zoom controls.
1256 @end itemize\n")))
1257
1258 (define-public meandmyshadow
1259 (package
1260 (name "meandmyshadow")
1261 (version "0.5a")
1262 (source (origin
1263 (method url-fetch)
1264 (uri (string-append "mirror://sourceforge/meandmyshadow/"
1265 version "/meandmyshadow-" version
1266 "-src.tar.gz"))
1267 (sha256
1268 (base32
1269 "0i98v6cgmpsxy7mbb0s2y6f6qq6mkwzk2nrv1nz39ncf948aky2h"))))
1270 (build-system cmake-build-system)
1271 (arguments
1272 `(#:tests? #f)) ; there are no tests
1273 (native-inputs
1274 `(("pkg-config" ,pkg-config)))
1275 (inputs
1276 `(("curl" ,curl)
1277 ("libarchive" ,libarchive)
1278 ("lua" ,lua)
1279 ("sdl" ,(sdl-union (list sdl2
1280 sdl2-image
1281 sdl2-mixer
1282 sdl2-ttf)))))
1283 (home-page "https://acmepjz.github.io/meandmyshadow/")
1284 (synopsis "Puzzle/platform game")
1285 (description "Me and My Shadow is a puzzle/platform game in which you try
1286 to reach the exit by solving puzzles. Spikes, moving blocks, fragile blocks
1287 and much more stand between you and the exit. Record your moves and let your
1288 shadow mimic them to reach blocks you couldn't reach alone.")
1289 (license license:gpl3+)))
1290
1291 (define-public opensurge
1292 (package
1293 (name "opensurge")
1294 (version "0.5.1.2")
1295 (source
1296 (origin
1297 (method git-fetch)
1298 (uri (git-reference
1299 (url "https://github.com/alemart/opensurge")
1300 (commit (string-append "v" version))))
1301 (file-name (git-file-name name version))
1302 (sha256
1303 (base32 "0ih7hlqjnp9rv0m4lqf7c0s1ai532way5i4pk45jq1gqm8325dbv"))))
1304 (build-system cmake-build-system)
1305 (arguments
1306 `(#:tests? #f ;there are no tests
1307 #:configure-flags
1308 (let* ((out (assoc-ref %outputs "out"))
1309 (share (string-append out "/share")))
1310 (list (string-append "-DCMAKE_INSTALL_PREFIX=" out "/bin")
1311 (string-append "-DGAME_DATADIR=" share "/" ,name)
1312 (string-append "-DDESKTOP_ENTRY_PATH=" share "/applications")
1313 (string-append "-DDESKTOP_ICON_PATH=" share "/pixmaps")
1314 (string-append "-DDESKTOP_METAINFO_PATH=" share "/metainfo")))
1315 #:phases
1316 (modify-phases %standard-phases
1317 (add-after 'unpack 'fix-xdg-open-path
1318 (lambda* (#:key inputs #:allow-other-keys)
1319 ;; Look for xdg-open in the store.
1320 (substitute* "src/core/web.c"
1321 (("/usr(/bin/xdg-open)" _ bin)
1322 (string-append (assoc-ref inputs "xdg-utils") bin)))
1323 #t))
1324 (add-after 'unpack 'unbundle-fonts
1325 (lambda* (#:key inputs #:allow-other-keys)
1326 ;; Replace bundled Roboto fonts with links to the store.
1327 (with-directory-excursion "fonts"
1328 (let ((roboto-dir (string-append
1329 (assoc-ref inputs "font-google-roboto")
1330 "/share/fonts/truetype/")))
1331 (for-each
1332 (lambda (font)
1333 (delete-file font)
1334 (symlink (string-append roboto-dir font) font))
1335 '("Roboto-Black.ttf" "Roboto-Bold.ttf" "Roboto-Medium.ttf")))
1336 #t))))))
1337 (inputs
1338 `(("allegro" ,allegro)
1339 ("font-google-roboto" ,font-google-roboto)
1340 ("surgescript" ,surgescript)
1341 ("xdg-utils" ,xdg-utils)))
1342 (home-page "https://opensurge2d.org")
1343 (synopsis "2D retro side-scrolling game")
1344 (description "@code{Open Surge} is a 2D retro side-scrolling platformer
1345 inspired by the Sonic games. The player runs at high speeds through each
1346 level while collecting items and avoiding obstacles. The game includes a
1347 built-in level editor.")
1348 (license
1349 ;; Code is under GPL 3+, assets are under various licenses.
1350 ;; See src/misc/credits.c for details.
1351 (list license:gpl3+
1352 license:cc0
1353 license:cc-by3.0
1354 license:cc-by-sa3.0
1355 license:expat
1356 license:public-domain
1357 license:silofl1.1))))
1358
1359 (define-public knights
1360 (package
1361 (name "knights")
1362 (version "025")
1363 (source (origin
1364 (method url-fetch)
1365 (uri (string-append "http://www.knightsgame.org.uk/files/knights_"
1366 version "_src.tar.gz"))
1367 (sha256
1368 (base32
1369 "18vp2ygvn0s0jz8rm585jqf6hjqkam1ximq81k0r9hpmfj7wb88f"))))
1370 (build-system gnu-build-system)
1371 (arguments
1372 '(#:make-flags
1373 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
1374 "CXXFLAGS=-lpthread")
1375 #:phases
1376 (modify-phases %standard-phases
1377 ;; No configure script.
1378 (delete 'configure))
1379 #:tests? #f)) ;; No check target.
1380 (inputs
1381 `(("boost" ,boost)
1382 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
1383 ("freetype" ,freetype)
1384 ("fontconfig" ,fontconfig)
1385 ("curl" ,curl)))
1386 (native-inputs
1387 `(("pkg-config" ,pkg-config)))
1388 (home-page "http://www.knightsgame.org.uk/")
1389 (synopsis "Multiplayer dungeon game involving knights and quests")
1390 (description "Knights is a multiplayer game involving several knights who
1391 must run around a dungeon and complete various quests. Each game revolves
1392 around a quest – for example, you might have to find some items and carry them
1393 back to your starting point. This may sound easy, but as there are only
1394 enough items in the dungeon for one player to win, you may end up having to
1395 kill your opponents to get their stuff! Other quests involve escaping from
1396 the dungeon, fighting a duel to the death against the enemy knights, or
1397 destroying an ancient book using a special wand.")
1398 ;; This package includes modified sources of lua (X11), enet (Expat), and
1399 ;; guichan (BSD-3). The "Coercri" library is released under the Boost
1400 ;; license. The whole package is released under GPLv3+.
1401 (license license:gpl3+)))
1402
1403 (define-public gnome-chess
1404 (package
1405 (name "gnome-chess")
1406 (version "3.37.3")
1407 (source (origin
1408 (method url-fetch)
1409 (uri (string-append "mirror://gnome/sources/gnome-chess/"
1410 (version-major+minor version) "/"
1411 "gnome-chess-" version ".tar.xz"))
1412 (sha256
1413 (base32
1414 "09axf0q1mp13sv8cs0syfg8ahcd9r2qb26278r09j6s4njxmkfv4"))))
1415 (build-system meson-build-system)
1416 (arguments
1417 '(#:glib-or-gtk? #t
1418 #:phases
1419 (modify-phases %standard-phases
1420 (add-after 'unpack 'skip-gtk-update-icon-cache
1421 ;; Don't create 'icon-theme.cache'.
1422 (lambda _
1423 (substitute* "meson_post_install.py"
1424 (("gtk-update-icon-cache") "true"))
1425 #t)))))
1426 (inputs
1427 `(("gtk+" ,gtk+)
1428 ("librsvg" ,librsvg)))
1429 (native-inputs
1430 `(("gettext" ,gettext-minimal)
1431 ("glib:bin" ,glib "bin") ; for desktop-file-validate and appstream-util
1432 ("itstool" ,itstool)
1433 ("pkg-config" ,pkg-config)
1434 ("vala" ,vala)))
1435 (home-page "https://wiki.gnome.org/Apps/Chess")
1436 (synopsis "Chess board for GNOME")
1437 (description "GNOME Chess provides a 2D board for playing chess games
1438 against human or computer players. It supports loading and saving games in
1439 Portable Game Notation. To play against a computer, install a chess engine
1440 such as chess or stockfish.")
1441 (license license:gpl3+)))
1442
1443 (define-public gnubg
1444 (package
1445 (name "gnubg")
1446 (version "1.06.002")
1447 (source
1448 (origin
1449 (method url-fetch)
1450 (uri (string-append "mirror://gnu/gnubg/gnubg-release-"
1451 version "-sources.tar.gz"))
1452 (sha256
1453 (base32
1454 "11xwhcli1h12k6rnhhyq4jphzrhfik7i8ah3k32pqw803460n6yf"))))
1455 (build-system gnu-build-system)
1456 (inputs `(;; XXX: Build with an older Pango for 'pango_font_get_hb_font' and
1457 ;; 'pango_coverage_get_type'. Try removing this for versions > 1.06.002.
1458 ("pango" ,pango-1.42)
1459
1460 ("glib" ,glib)
1461 ("readline" ,readline)
1462 ("gtk+" ,gtk+-2)
1463 ("mesa" ,mesa)
1464 ("glu" ,glu)
1465 ("gtkglext" ,gtkglext)
1466 ("sqlite" ,sqlite)
1467 ("libcanberra" ,libcanberra)))
1468 (native-inputs `(("python-2" ,python-2)
1469 ("pkg-config" ,pkg-config)))
1470 (arguments
1471 `(#:phases
1472 (modify-phases %standard-phases
1473 (add-after 'install 'install-desktop-file
1474 (lambda* (#:key outputs #:allow-other-keys)
1475 (let* ((out (assoc-ref outputs "out"))
1476 (apps (string-append out "/share/applications")))
1477 (mkdir-p apps)
1478 (with-output-to-file (string-append apps "/gnubg.desktop")
1479 (lambda _
1480 (format #t
1481 "[Desktop Entry]~@
1482 Name=GNU Backgammon~@
1483 Exec=~a/bin/gnubg -w~@
1484 Icon=gnubg~@
1485 Categories=Game;~@
1486 Terminal=false~@
1487 Type=Application~%"
1488 out))))
1489 #t)))))
1490 (home-page "https://www.gnu.org/software/gnubg/")
1491 (synopsis "Backgammon game")
1492 (description "The GNU backgammon application (also known as \"gnubg\") can
1493 be used for playing, analyzing and teaching the game. It has an advanced
1494 evaluation engine based on artificial neural networks suitable for both
1495 beginners and advanced players. In addition to a command-line interface, it
1496 also features an attractive, 3D representation of the playing board.")
1497 (license license:gpl3+)))
1498
1499 (define-public gnubik
1500 (package
1501 (name "gnubik")
1502 (version "2.4.3")
1503 (source
1504 (origin
1505 (method url-fetch)
1506 (uri (string-append "mirror://gnu/gnubik/gnubik-"
1507 version ".tar.gz"))
1508 (sha256
1509 (base32
1510 "1vlf924mq8hg93bsjj0rzvs0crc6psmlxyc6zn0fr7msnmpx6gib"))))
1511 (build-system gnu-build-system)
1512 (arguments
1513 '(#:phases (modify-phases %standard-phases
1514 (add-after 'unpack 'skip-gtk-update-icon-cache
1515 (lambda _
1516 ;; Do not attempt to run 'gtk-update-icon-cache', which is
1517 ;; unnecessary and causes a needless dependency on glib.
1518 (substitute* "Makefile.in"
1519 (("gtk-update-icon-cache")
1520 "true"))
1521 #t)))))
1522 (inputs `(("gtk+" ,gtk+-2)
1523 ("mesa" ,mesa)
1524 ("glu" ,glu)
1525 ("libx11" ,libx11)
1526 ("guile" ,guile-2.0)
1527 ("gtkglext" ,gtkglext)))
1528 (native-inputs `(("gettext" ,gettext-minimal)
1529 ("pkg-config" ,pkg-config)))
1530 (home-page "https://www.gnu.org/software/gnubik/")
1531 (synopsis "3d Rubik's cube game")
1532 (description
1533 "GNUbik is a puzzle game in which you must manipulate a cube to make
1534 each of its faces have a uniform color. The game is customizable, allowing
1535 you to set the size of the cube (the default is 3x3) or to change the colors.
1536 You may even apply photos to the faces instead of colors. The game is
1537 scriptable with Guile.")
1538 (license license:gpl3+)))
1539
1540 (define-public gnushogi
1541 (package
1542 (name "gnushogi")
1543 (version "1.4.2")
1544 (source
1545 (origin
1546 (method url-fetch)
1547 (uri (string-append "mirror://gnu/gnushogi/gnushogi-"
1548 version ".tar.gz"))
1549 (sha256
1550 (base32
1551 "0a9bsl2nbnb138lq0h14jfc5xvz7hpb2bcsj4mjn6g1hcsl4ik0y"))))
1552 (arguments `(#:tests? #f)) ;; No check target.
1553 (build-system gnu-build-system)
1554 (home-page "https://www.gnu.org/software/gnushogi/")
1555 (synopsis "The game of Shogi (Japanese chess)")
1556 (description "GNU Shogi is a program that plays the game Shogi (Japanese
1557 Chess). It is similar to standard chess but this variant is far more complicated.")
1558 (license license:gpl3+)))
1559
1560 (define-public ltris
1561 (package
1562 (name "ltris")
1563 (version "1.2.1")
1564 (source
1565 (origin
1566 (method url-fetch)
1567 (uri (string-append "mirror://sourceforge/lgames/ltris/"
1568 "ltris-" version ".tar.gz"))
1569 (sha256
1570 (base32 "0959vvxh5xnxzpdv7i67lpd2b6ghx69z65ldnclj1z6llyfzfs7q"))))
1571 (build-system gnu-build-system)
1572 (arguments
1573 '(;; The code in LTris uses traditional GNU semantics for inline functions
1574 #:configure-flags '("CFLAGS=-fgnu89-inline")
1575 #:phases
1576 (modify-phases %standard-phases
1577 (add-after 'set-paths 'set-sdl-paths
1578 (lambda* (#:key inputs #:allow-other-keys)
1579 (setenv "CPATH"
1580 (string-append (assoc-ref inputs "sdl-union")
1581 "/include/SDL:"
1582 (or (getenv "CPATH") "")))
1583 #t)))))
1584 (inputs
1585 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))))
1586 (home-page "http://lgames.sourceforge.net/LTris/")
1587 (synopsis "Tetris clone based on the SDL library")
1588 (description
1589 "LTris is a tetris clone: differently shaped blocks are falling down the
1590 rectangular playing field and can be moved sideways or rotated by 90 degree
1591 units with the aim of building lines without gaps which then disappear (causing
1592 any block above the deleted line to fall down). LTris has three game modes: In
1593 Classic you play until the stack of blocks reaches the top of the playing field
1594 and no new blocks can enter. In Figures the playing field is reset to a new
1595 figure each level and later on tiles and lines suddenly appear. In Multiplayer
1596 up to three players (either human or CPU) compete with each other sending
1597 removed lines to all opponents. There is also a Demo mode in which you can
1598 watch your CPU playing while enjoying a cup of tea!")
1599 (license license:gpl2+)))
1600
1601 (define-public nethack
1602 (package
1603 (name "nethack")
1604 (version "3.6.6")
1605 (source
1606 (origin
1607 (method url-fetch)
1608 (uri
1609 (string-append "https://www.nethack.org/download/" version "/nethack-"
1610 (string-join (string-split version #\.) "") "-src.tgz"))
1611 (sha256
1612 (base32 "1liyckjp34j354qnxc1zn9730lh1p2dabrg1hap24z6xnqx0rpng"))))
1613 (native-inputs
1614 `(("bison" ,bison)
1615 ("flex" ,flex)))
1616 (inputs
1617 `(("ncurses" ,ncurses)
1618 ("less" ,less)))
1619 (build-system gnu-build-system)
1620 (arguments
1621 '(#:make-flags
1622 `(,(string-append "PREFIX=" (assoc-ref %outputs "out")))
1623 #:phases
1624 (modify-phases %standard-phases
1625 (add-before 'configure 'patch-paths
1626 (lambda _
1627 (substitute* "sys/unix/nethack.sh"
1628 (("^ *cd .*$") ""))
1629 (substitute* "sys/unix/Makefile.utl"
1630 (("^YACC *=.*$") "YACC = bison -y\n")
1631 (("^LEX *=.*$") "LEX = flex\n")
1632 (("^# CC = gcc") "CC = gcc"))
1633 (substitute* "sys/unix/hints/linux"
1634 (("/bin/gzip") (string-append
1635 (assoc-ref %build-inputs "gzip")
1636 "/bin/gzip"))
1637 (("^WINTTYLIB=.*") "WINTTYLIB=-lncurses"))
1638 (substitute* "include/config.h"
1639 (("^.*define CHDIR.*$") "")
1640 (("^/\\* *#*define *REPRODUCIBLE_BUILD *\\*/")
1641 ;; Honor SOURCE_DATE_EPOCH.
1642 "#define REPRODUCIBLE_BUILD"))
1643
1644 ;; Note: 'makedefs' rejects and ignores dates that are too old
1645 ;; or too new, so we must choose something reasonable here.
1646 (setenv "SOURCE_DATE_EPOCH" "1531865062")
1647
1648 (substitute* "sys/unix/Makefile.src"
1649 (("^# CC = gcc") "CC = gcc"))
1650 #t))
1651 (replace 'configure
1652 (lambda _
1653 (let ((bash (string-append
1654 (assoc-ref %build-inputs "bash")
1655 "/bin/bash")))
1656 (with-directory-excursion "sys/unix"
1657 (substitute* "setup.sh" (("/bin/sh") bash))
1658 (invoke bash "setup.sh" "hints/linux"))
1659 #t)))
1660 (add-after 'install 'fixup-paths
1661 (lambda _
1662 (let* ((output (assoc-ref %outputs "out"))
1663 (nethack-script (string-append output "/bin/nethack")))
1664 (mkdir-p (string-append output "/games/lib/nethackuserdir"))
1665 (for-each
1666 (lambda (file)
1667 (rename-file
1668 (string-append output "/games/lib/nethackdir/" file)
1669 (string-append output "/games/lib/nethackuserdir/"
1670 file)))
1671 '("xlogfile" "logfile" "perm" "record" "save"))
1672 (mkdir-p (string-append output "/bin"))
1673 (call-with-output-file nethack-script
1674 (lambda (port)
1675 (format port "#!~a/bin/sh
1676 PATH=~a:$PATH
1677 if [ ! -d ~~/.config/nethack ]; then
1678 mkdir -p ~~/.config/nethack
1679 cp -r ~a/games/lib/nethackuserdir/* ~~/.config/nethack
1680 chmod -R +w ~~/.config/nethack
1681 fi
1682
1683 RUNDIR=$(mktemp -d)
1684
1685 cleanup() {
1686 rm -rf $RUNDIR
1687 }
1688 trap cleanup EXIT
1689
1690 cd $RUNDIR
1691 for i in ~~/.config/nethack/*; do
1692 ln -s $i $(basename $i)
1693 done
1694 for i in ~a/games/lib/nethackdir/*; do
1695 ln -s $i $(basename $i)
1696 done
1697 ~a/games/nethack"
1698 (assoc-ref %build-inputs "bash")
1699 (list->search-path-as-string
1700 (list
1701 (string-append
1702 (assoc-ref %build-inputs "coreutils") "/bin")
1703 (string-append
1704 (assoc-ref %build-inputs "less") "/bin"))
1705 ":")
1706 output
1707 output
1708 output)))
1709 (chmod nethack-script #o555)
1710 #t)))
1711 (delete 'check))))
1712 (home-page "https://nethack.org")
1713 (synopsis "Classic dungeon crawl game")
1714 (description "NetHack is a single player dungeon exploration game that runs
1715 on a wide variety of computer systems, with a variety of graphical and text
1716 interfaces all using the same game engine. Unlike many other Dungeons &
1717 Dragons-inspired games, the emphasis in NetHack is on discovering the detail of
1718 the dungeon and not simply killing everything in sight - in fact, killing
1719 everything in sight is a good way to die quickly. Each game presents a
1720 different landscape - the random number generator provides an essentially
1721 unlimited number of variations of the dungeon and its denizens to be discovered
1722 by the player in one of a number of characters: you can pick your race, your
1723 role, and your gender.")
1724 (license
1725 (license:fsdg-compatible
1726 "https://nethack.org/common/license.html"))))
1727
1728 (define-public pipewalker
1729 (package
1730 (name "pipewalker")
1731 (version "0.9.4")
1732 (source
1733 (origin
1734 (method url-fetch)
1735 (uri (string-append "http://downloads.sourceforge.net/pipewalker/"
1736 "pipewalker-" version ".tar.gz"))
1737 (sha256
1738 (base32 "1x46wgk0s55562pd96cxagxkn6wpgglq779f9b64ff1k3xzp3myn"))))
1739 (build-system gnu-build-system)
1740 (arguments
1741 `(#:configure-flags
1742 (list (string-append "--docdir=" (assoc-ref %outputs "out")
1743 "/share/doc/" ,name "-" ,version))
1744 #:phases
1745 (modify-phases %standard-phases
1746 (add-after 'configure 'patch-docdir
1747 ;; Makefile.in ignores configure's ‘--docdir=...’ option. Fix that.
1748 (lambda _
1749 (substitute* "Makefile"
1750 (("(pkgdocdatadir = ).*" _ assignment)
1751 (string-append assignment "$(docdir)\n")))
1752 #t)))))
1753 (inputs
1754 `(("libpng" ,libpng)
1755 ("mesa" ,mesa)
1756 ("sdl" ,sdl)))
1757 (home-page "http://pipewalker.sourceforge.net/")
1758 (synopsis "Logical tile puzzle")
1759 (description
1760 "PipeWalker is a simple puzzle game with many diffent themes: connect all
1761 computers to one network server, bring water from a source to the taps, etc.
1762 The underlying mechanism is always the same: you must turn each tile in the
1763 grid in the right direction to combine all components into a single circuit.
1764 Every puzzle has a complete solution, although there may be more than one.")
1765 (license license:gpl3+)))
1766
1767 (define-public prboom-plus
1768 (package
1769 (name "prboom-plus")
1770 (version "2.5.1.4")
1771 (source (origin
1772 (method url-fetch)
1773 (uri (string-append "mirror://sourceforge/prboom-plus/prboom-plus/"
1774 version "/prboom-plus-" version ".tar.gz"))
1775 (sha256
1776 (base32 "151v6nign86m1a2vqz27krsccpc9m4d1jax4y43v2fa82wfj9qp0"))
1777 (modules '((guix build utils)))
1778 (snippet
1779 '(begin
1780 (substitute* "src/version.c"
1781 (("__DATE__") "")
1782 (("__TIME__") ""))
1783 #t))))
1784 (build-system gnu-build-system)
1785 (arguments
1786 '(#:configure-flags '("--disable-cpu-opt")
1787 #:make-flags `(,(string-append "gamesdir="
1788 (assoc-ref %outputs "out") "/bin"))
1789 #:phases
1790 (modify-phases %standard-phases
1791 (add-after 'set-paths 'set-sdl'paths
1792 (lambda* (#:key inputs #:allow-other-keys)
1793 (setenv "CPATH"
1794 (string-append (assoc-ref inputs "sdl-union")
1795 "/include/SDL:"
1796 (or (getenv "CPATH") "")))
1797 #t)))))
1798 (inputs
1799 `(("fluidsynth" ,fluidsynth)
1800 ("glu" ,glu)
1801 ("libmad" ,libmad)
1802 ("libpng" ,libpng)
1803 ("libvorbis" ,libvorbis)
1804 ("pcre" ,pcre)
1805 ("portmidi" ,portmidi)
1806 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-net)))))
1807 (home-page "http://prboom-plus.sourceforge.net/")
1808 (synopsis "Version of the classic 3D shoot'em'up game Doom")
1809 (description
1810 "PrBoom+ is a Doom source port developed from the original PrBoom project.")
1811 (license license:gpl2+)))
1812
1813 (define-public retux
1814 (package
1815 (name "retux")
1816 (version "1.4")
1817 (source (origin
1818 (method url-fetch)
1819 (uri (string-append "https://github.com/retux-game/retux/"
1820 "releases/download/v"
1821 (version-major+minor version) "/retux-"
1822 version "-src.tar.gz"))
1823 (sha256
1824 (base32
1825 "1hxy1pvlxhk0ci3wh2i3mmr82faqdjnnxsiwwr5gcr93nfnw9w5f"))))
1826 (build-system python-build-system)
1827 (arguments
1828 `(#:tests? #f ; no check target
1829 #:phases
1830 (modify-phases %standard-phases
1831 ;; no setup.py script
1832 (delete 'build)
1833 (replace 'install
1834 (lambda* (#:key outputs #:allow-other-keys)
1835 (let* ((out (assoc-ref outputs "out"))
1836 (bin (string-append out "/bin"))
1837 (data (string-append out "/share/retux")))
1838 (mkdir-p bin)
1839
1840 (substitute* "retux.py"
1841 ;; Use the correct data directory.
1842 (("os\\.path\\.join\\(os\\.path\\.dirname\\(__file__\\), \"data\"\\),")
1843 (string-append "\"" data "\",")))
1844
1845 (copy-file "retux.py" (string-append bin "/retux"))
1846 (copy-recursively "data" data)
1847 #t))))))
1848 (inputs
1849 `(("python-sge-pygame" ,python-sge-pygame)
1850 ("python-six" ,python-six)
1851 ("python-xsge" ,python-xsge)))
1852 (home-page "https://retux-game.github.io/")
1853 (synopsis "Action platformer game")
1854 (description
1855 "ReTux is an action platformer loosely inspired by the Mario games,
1856 utilizing the art assets from the @code{SuperTux} project.")
1857 ;; GPL version 3 or later is the license for the code and some art.
1858 ;; The rest of the licenses are for the art exclusively, as listed in
1859 ;; data/LICENSES.
1860 (license (list license:cc0
1861 license:cc-by3.0
1862 license:cc-by-sa3.0
1863 license:cc-by-sa4.0
1864 license:gpl2+
1865 license:gpl3+))))
1866
1867 (define-public roguebox-adventures
1868 (package
1869 (name "roguebox-adventures")
1870 (version "3.0.1")
1871 (source
1872 (origin
1873 (method url-fetch)
1874 (uri (string-append
1875 "http://download.tuxfamily.org/rba/RogueBoxAdventures_v"
1876 (string-join (string-split version #\.) "_") "_Source.zip"))
1877 (file-name (string-append name "-" version ".zip"))
1878 (sha256
1879 (base32
1880 "05zd03s5w9kcpklfgcggbaa6rwf59nm0q9vcj6gh9v2lh402k067"))))
1881 (build-system python-build-system)
1882 (arguments
1883 `(#:tests? #f ; no check target
1884 #:phases
1885 (modify-phases %standard-phases
1886 (replace 'unpack
1887 (lambda* (#:key source #:allow-other-keys)
1888 (and (invoke "unzip" source)
1889 ;; The actual source is buried a few directories deep.
1890 (chdir (string-append "RogueBoxAdventures_v"
1891 (string-join
1892 (string-split ,version #\.) "_")
1893 "_Source")))))
1894 ;; no setup.py script
1895 (replace 'build
1896 (lambda* (#:key outputs #:allow-other-keys)
1897 (let* ((out (assoc-ref outputs "out"))
1898 (data (string-append
1899 out "/share/games/roguebox-adventures")))
1900 ;; Use the correct data directory.
1901 (substitute* '("main.py" "LIB/getch.py" "LIB/getch_gcwz.py")
1902 (("basic_path + os\\.sep + 'DATA'")
1903 (string-append "'" data "'"))
1904 (("^basic_path.*$")
1905 (string-append "basic_path ='" data "'\n")))
1906 (substitute* "LIB/dialog.py"
1907 (("d_path = os\\.path\\.dirname\\(.*\\)\\)")
1908 (string-append "d_path = '" data "'")))
1909 (substitute* "LIB/gra_files.py"
1910 (("basic_path = b_path\\.replace\\('/LIB',''\\)")
1911 (string-append "basic_path ='" data "'\n")))
1912
1913 ;; The game must save in the user's home directory because
1914 ;; the store is read-only.
1915 (substitute* "main.py"
1916 (("home_save = False") "home_save = True")
1917 (("'icon_small.png'")
1918 (string-append "'" data "/icon_small.png'"))))
1919 #t))
1920 (replace 'install
1921 (lambda* (#:key outputs #:allow-other-keys)
1922 (let* ((out (assoc-ref outputs "out"))
1923 (bin (string-append out "/bin"))
1924 (roguebox-adventures
1925 (string-append bin "/roguebox-adventures"))
1926 (data (string-append
1927 out "/share/games/roguebox-adventures"))
1928 (lib (string-append data "/LIB"))
1929 (doc (string-append
1930 out "/share/doc/roguebox-adventures")))
1931 (mkdir-p bin)
1932 (mkdir-p doc)
1933
1934 (for-each (lambda (file)
1935 (copy-recursively file
1936 (string-append data "/" file)))
1937 '("AUDIO" "FONT" "GRAPHIC" "LIB" "LICENSE"
1938 "icon_big.png" "icon_small.png"))
1939 (for-each (lambda (file)
1940 (chmod file #o555)
1941 (install-file file lib))
1942 '("main.py" "run.py"))
1943
1944 (copy-recursively "DOC" doc)
1945
1946 (call-with-output-file
1947 roguebox-adventures
1948 (lambda (p)
1949 (format p "\
1950 #!~a
1951 export PYTHONPATH=~a/LIB:~a
1952 exec -a \"~a\" ~a \"$@\"\n"
1953 (which "bash") data (getenv "PYTHONPATH")
1954 (which "python3")
1955 (string-append lib "/main.py"))))
1956 (chmod roguebox-adventures #o555))
1957 #t)))))
1958 (native-inputs
1959 `(("unzip" ,unzip)))
1960 (inputs
1961 `(("python-pygame" ,python-pygame)
1962 ("python-tmx" ,python-tmx)))
1963 (home-page "https://rogueboxadventures.tuxfamily.org")
1964 (synopsis "A classical roguelike/sandbox game")
1965 (description
1966 "RogueBox Adventures is a graphical roguelike with strong influences
1967 from sandbox games like Minecraft or Terraria. The main idea of RogueBox
1968 Adventures is to offer the player a kind of roguelike toy-world. This world
1969 can be explored and changed freely.")
1970 ;; The GPL3+ is for code, the rest are for art.
1971 (license (list license:cc0
1972 license:cc-by3.0
1973 license:gpl3+
1974 license:silofl1.1))))
1975
1976 (define-public seahorse-adventures
1977 (package
1978 (name "seahorse-adventures")
1979 (version "1.2")
1980 (source
1981 (origin
1982 (method git-fetch)
1983 (uri (git-reference
1984 (url "https://github.com/dulsi/seahorse-adventures")
1985 (commit (string-append "release-" version))))
1986 (file-name (git-file-name name version))
1987 (sha256
1988 (base32 "1rnvk06npaqcpjz5z6xcmssz61i32s422lydp49vrnf3j2g4yimd"))
1989 (modules '((guix build utils)
1990 (ice-9 ftw)
1991 (srfi srfi-1)))
1992 ;; Remove non-free (non-commercial) font.
1993 (snippet
1994 `(begin
1995 (for-each delete-file (find-files "data/fonts" "."))
1996 #t))))
1997 (build-system python-build-system)
1998 (arguments
1999 `(#:tests? #f ;no test
2000 #:phases
2001 (modify-phases %standard-phases
2002 (delete 'build) ;pure Python
2003 (replace 'install ;no install script
2004 (lambda* (#:key outputs #:allow-other-keys)
2005 (let* ((out (assoc-ref outputs "out"))
2006 (bin (string-append out "/bin"))
2007 (share (string-append out "/share"))
2008 (applications (string-append share "/applications"))
2009 (data (string-append share "/seahorse-adventures")))
2010 ;; Install data.
2011 (for-each (lambda (f)
2012 (chmod f #o555)
2013 (install-file f data))
2014 '("leveledit.py" "run_game.py" "tileedit.py"))
2015 (for-each (lambda (dir)
2016 (let ((target (string-append data "/" dir)))
2017 (mkdir-p target)
2018 (copy-recursively dir target)))
2019 '("data" "lib"))
2020 ;; Create executable.
2021 (mkdir-p bin)
2022 (let ((executable (string-append bin "/seahorse-adventures")))
2023 (call-with-output-file executable
2024 (lambda (p)
2025 (format p
2026 "#!~a~@
2027 export PYTHONPATH=~a:~a~@
2028 exec -a \"~a\" ~a \"$@\"~%"
2029 (which "bash") data (getenv "PYTHONPATH")
2030 (which "python3")
2031 (string-append data "/run_game.py"))))
2032 (chmod executable #o555))
2033 ;; Add desktop file.
2034 (mkdir-p applications)
2035 (make-desktop-entry-file
2036 (string-append applications "/seahorse-adventures.desktop")
2037 #:name "Seahorse Adventures"
2038 #:comment
2039 '((#f "Help Barbie the seahorse float on bubbles to the moon"))
2040 #:exec ,name
2041 #:icon ,name
2042 #:categories '("Game" "ActionGame")
2043 #:keywords '("game" "retro" "platform"))
2044 ;; Add icons.
2045 (for-each
2046 (lambda (size)
2047 (let ((dir (string-append share "/icons/hicolor/"
2048 size "x" size "/apps")))
2049 (mkdir-p dir)
2050 (copy-file
2051 (string-append "icon" size ".png")
2052 (string-append dir "/searhorse-adventures.png"))))
2053 '("32" "64" "128")))
2054 #t))
2055 (add-after 'install 'unbundle-fonts
2056 ;; Unbundle Bitstream Vera font and replace deleted one.
2057 (lambda* (#:key outputs inputs #:allow-other-keys)
2058 (let* ((out (assoc-ref outputs "out"))
2059 (data (string-append out "/share/seahorse-adventures"))
2060 (vera (string-append (assoc-ref inputs "font-bitstream-vera")
2061 "/share/fonts/truetype/Vera.ttf")))
2062 (let ((themes-dir (string-append data "/data/themes/")))
2063 (for-each
2064 (lambda (theme)
2065 (let ((target (string-append themes-dir theme "/Vera.ttf")))
2066 (delete-file target)
2067 (symlink vera target)))
2068 '("default" "gray")))
2069 (symlink vera (string-append data "/data/fonts/04B_20__.TTF"))
2070 (substitute* (string-append data "/lib/main.py")
2071 (("f_scale = 0.35") "f_scale = 0.47")))
2072 #t)))))
2073 (inputs
2074 `(("font-bitstream-vera" ,font-bitstream-vera)
2075 ("python-pygame" ,python-pygame)))
2076 (home-page "http://www.imitationpickles.org/barbie/")
2077 (synopsis "Help Barbie the seahorse float on bubbles to the moon")
2078 (description
2079 "Barbie Seahorse Adventures is a retro style platform arcade game.
2080 You are Barbie the seahorse who travels through the jungle, up to the
2081 volcano until you float on bubbles to the moon. On the way to your
2082 final destination you will encounter various enemies, servants of the
2083 evil overlord who has stolen the galaxy crystal. Avoid getting hit
2084 and defeat them with your bubbles!")
2085 ;; GPL2+ is for code, CC0 is for art.
2086 (license (list license:gpl2+ license:cc0))))
2087
2088 (define-public superstarfighter
2089 (package
2090 (name "superstarfighter")
2091 (version "0.6.4")
2092 (source
2093 (origin
2094 (method git-fetch)
2095 (uri (git-reference
2096 (url "https://github.com/notapixelstudio/superstarfighter")
2097 (commit (string-append "v" version))))
2098 (file-name (git-file-name name version))
2099 (sha256
2100 (base32 "1fly63yf5ls1xwm15if4lxwy67wi84k4gvjllljpykrl18vw2y0y"))))
2101 (build-system gnu-build-system)
2102 (arguments
2103 `(#:tests? #f ;there are no tests
2104 #:phases
2105 (modify-phases %standard-phases
2106 (replace 'configure
2107 (lambda _
2108 (chdir "godot")
2109 (setenv "HOME" (getcwd))
2110 (with-output-to-file "export_presets.cfg"
2111 (lambda ()
2112 (display
2113 "[preset.0]
2114 name=\"Guix\"
2115 platform=\"Linux/X11\"
2116 runnable=true
2117 [preset.0.options]")))
2118 #t))
2119 (replace 'build
2120 (lambda _
2121 (let ((godot (assoc-ref %build-inputs "godot-headless")))
2122 (invoke (string-append godot "/bin/godot_server")
2123 "--export-pack" "Guix"
2124 "superstarfighter.pck" "project.godot"))
2125 #t))
2126 (replace 'install
2127 (lambda* (#:key inputs outputs #:allow-other-keys)
2128 (let* ((out (assoc-ref outputs "out"))
2129 (bin (string-append out "/bin"))
2130 (share (string-append out "/share"))
2131 (data (string-append share "/superstarfighter"))
2132 (icons (string-append share "/icons/hicolor/256x256/apps")))
2133 (install-file "superstarfighter.pck" data)
2134 (mkdir-p bin)
2135 (call-with-output-file (string-append bin "/superstarfighter")
2136 (lambda (port)
2137 (format port
2138 "#!/bin/sh~@
2139 exec ~a/bin/godot --main-pack ~a/superstarfighter.pck~%"
2140 (assoc-ref inputs "godot")
2141 data)
2142 (chmod port #o755)))
2143 (mkdir-p icons)
2144 (copy-file "icon.png" (string-append icons "/" ,name ".png"))
2145 (make-desktop-entry-file
2146 (string-append share "/applications/" ,name ".desktop")
2147 #:name "SuperStarfighter"
2148 #:comment "Fast-paced arcade combat game"
2149 #:exec ,name
2150 #:icon ,name
2151 #:categories '("Game" "ArcadeGame")))
2152 #t)))))
2153 (native-inputs
2154 `(("godot-headless" ,godot "headless")))
2155 (inputs
2156 `(("godot" ,godot)))
2157 (home-page "https://notapixel.itch.io/superstarfighter")
2158 (synopsis "Fast-paced local multiplayer arcade game")
2159 (description "In SuperStarfighter, up to four local players compete in a
2160 2D arena with fast-moving ships and missiles. Different game types are
2161 available, as well as a single-player mode with AI-controlled ships.")
2162 (license (list license:expat ; game
2163 license:silofl1.1)))) ; fonts
2164
2165 (define %ufoai-commit "a542a87a891f96b1ab2c44d35b2f6f16859a5019")
2166 (define %ufoai-revision "0")
2167 (define %ufoai-version (git-version "2.6.0_dev" %ufoai-revision %ufoai-commit))
2168 (define ufoai-source
2169 (origin
2170 (method git-fetch)
2171 (uri (git-reference
2172 (url "git://git.code.sf.net/p/ufoai/code") ;HTTPS fails mid-clone
2173 (commit %ufoai-commit)))
2174 (file-name (string-append "ufoai-" %ufoai-version "-checkout"))
2175 (sha256
2176 (base32
2177 "024s7b9rcg7iw8i2p72gwnvabk23ljlq0nldws0y4b6hpwzyn1wz"))
2178 (modules '((guix build utils)
2179 (srfi srfi-1)
2180 (ice-9 ftw)))
2181 (snippet
2182 '(begin
2183 ;; Delete ~32MiB of bundled dependencies.
2184 (with-directory-excursion "src/libs"
2185 (for-each delete-file-recursively
2186 (lset-difference equal? (scandir ".")
2187 '("." ".." "gtest" "mumble"))))
2188
2189 ;; Use relative path to Lua headers.
2190 (substitute* "src/common/scripts_lua.h"
2191 (("\\.\\./libs/lua/") ""))
2192
2193 ;; Adjust Makefile targets to not depend on 'ufo2map', since we build
2194 ;; it as a separate package. This way we don't need to make the same
2195 ;; adjustments for 'ufoai-data' and 'ufoai' below.
2196 (substitute* "build/maps.mk"
2197 (("\\./ufo2map") "ufo2map")
2198 (("maps: ufo2map") "maps:"))
2199 (substitute* "build/modules/testall.mk"
2200 (("testall: ufo2map") "testall:"))
2201
2202 ;; If no cURL headers are found, the build system will try to include
2203 ;; the bundled version, even when not required. Prevent that.
2204 (substitute* "build/default.mk"
2205 (("^include src/libs/curl/lib/Makefile\\.inc")
2206 ""))
2207
2208 ;; While here, improve reproducibility by adding the '-X' flag to the
2209 ;; zip command used to create the map files, in order to prevent time
2210 ;; stamps from making it into the generated archives.
2211 (substitute* "build/data.mk"
2212 (("\\$\\(call ZIP\\)")
2213 "$(call ZIP) -X"))
2214 #t))))
2215
2216 (define-public ufo2map
2217 (package
2218 (name "ufo2map")
2219 (version %ufoai-version)
2220 (home-page "https://ufoai.org/")
2221 (source ufoai-source)
2222 (build-system gnu-build-system)
2223 (arguments
2224 '(#:configure-flags '("CC=gcc" "CXX=g++"
2225 "--enable-release"
2226 "--enable-ufo2map"
2227 "--disable-uforadiant"
2228 "--disable-cgame-campaign"
2229 "--disable-cgame-multiplayer"
2230 "--disable-cgame-skirmish"
2231 "--disable-game"
2232 "--disable-memory"
2233 "--disable-testall"
2234 "--disable-ufoded"
2235 "--disable-ufo"
2236 "--disable-ufomodel"
2237 "--disable-ufoslicer")
2238 #:tests? #f ;no tests
2239 #:phases (modify-phases %standard-phases
2240 (replace 'configure
2241 (lambda* (#:key (configure-flags '()) #:allow-other-keys)
2242 ;; The home-made configure script does not understand
2243 ;; some of the default flags of gnu-build-system.
2244 (apply invoke "./configure" configure-flags)))
2245 (replace 'install
2246 (lambda* (#:key outputs #:allow-other-keys)
2247 (let ((out (assoc-ref outputs "out")))
2248 (install-file "ufo2map" (string-append out "/bin"))
2249 (install-file "debian/ufo2map.6"
2250 (string-append out "/share/man/man6"))
2251 #t))))))
2252 (native-inputs
2253 `(("pkg-config" ,pkg-config)))
2254 (inputs
2255 `(("libjpeg" ,libjpeg-turbo)
2256 ("libpng" ,libpng)
2257 ("lua" ,lua-5.1)
2258 ("sdl-union" ,(sdl-union (list sdl2 sdl2-mixer sdl2-ttf)))))
2259 (synopsis "UFO: AI map generator")
2260 (description
2261 "This package provides @command{ufo2map}, a program used to generate
2262 maps for the UFO: Alien Invasion strategy game.")
2263 (license license:gpl2+)))
2264
2265 (define ufoai-data
2266 (package
2267 (name "ufoai-data")
2268 (version %ufoai-version)
2269 (home-page "https://ufoai.org/")
2270 (source ufoai-source)
2271 (build-system gnu-build-system)
2272 (arguments
2273 '(#:tests? #f
2274 #:configure-flags '("CC=gcc" "CXX=g++")
2275 #:phases (modify-phases %standard-phases
2276 (replace 'configure
2277 (lambda* (#:key outputs (configure-flags '()) #:allow-other-keys)
2278 (apply invoke "./configure" configure-flags)))
2279 (replace 'build
2280 (lambda* (#:key (parallel-build? #t) #:allow-other-keys)
2281 (invoke "make"
2282 "-j" (if parallel-build?
2283 (number->string (parallel-job-count))
2284 "1")
2285 "maps")))
2286 (add-after 'build 'pack
2287 (lambda _
2288 (invoke "make" "pk3")))
2289 (replace 'install
2290 (lambda* (#:key outputs #:allow-other-keys)
2291 (let ((out (assoc-ref outputs "out")))
2292 (for-each (lambda (file)
2293 (install-file file out))
2294 (find-files "base" "\\.pk3$"))
2295 #t))))))
2296 (native-inputs
2297 `(("python" ,python-2)
2298 ("ufo2map" ,ufo2map)
2299 ("which" ,which)
2300 ("zip" ,zip)))
2301 (synopsis "UFO: AI data files")
2302 (description
2303 "This package contains maps and other assets for UFO: Alien Invasion.")
2304 ;; Most assets are available under either GPL2 or GPL2+. Some use other
2305 ;; licenses, see LICENSES for details.
2306 (license (list license:gpl2+ license:gpl2 license:cc-by3.0
2307 license:cc-by-sa3.0 license:public-domain))))
2308
2309 (define-public ufoai
2310 (package
2311 (name "ufoai")
2312 (version %ufoai-version)
2313 (home-page "https://ufoai.org/")
2314 (source ufoai-source)
2315 (build-system gnu-build-system)
2316 (arguments
2317 `(#:configure-flags
2318 (list (string-append "--prefix=" (assoc-ref %outputs "out"))
2319 (string-append "--datadir=" (assoc-ref %outputs "out")
2320 "/share/games/ufo")
2321 "CC=gcc" "CXX=g++"
2322 "--enable-release"
2323 "--enable-game"
2324 "--disable-ufo2map"
2325 "--disable-dependency-tracking"
2326
2327 ;; Disable hard links to prevent huge NARs.
2328 "--disable-hardlinkedgame"
2329 "--disable-hardlinkedcgame")
2330 #:phases (modify-phases %standard-phases
2331 (add-after 'unpack 'symlink-data-files
2332 (lambda* (#:key inputs #:allow-other-keys)
2333 (let ((data (assoc-ref inputs "ufoai-data")))
2334 ;; Symlink the data files to where the build system
2335 ;; expects to find them. Ultimately these files are
2336 ;; copied to $out/share/games/ufoai/base, losing the
2337 ;; symlinks; we could fix that after install, but it
2338 ;; does not make a big difference in practice due to
2339 ;; deduplication.
2340 (with-directory-excursion "base"
2341 (for-each (lambda (file)
2342 (symlink file (basename file)))
2343 (find-files data "\\.pk3$")))
2344 #t)))
2345 (add-before 'configure 'create-language-files
2346 (lambda _
2347 (invoke "make" "lang")))
2348 (replace 'configure
2349 (lambda* (#:key outputs (configure-flags '()) #:allow-other-keys)
2350 (apply invoke "./configure" configure-flags)))
2351 (replace 'check
2352 (lambda* (#:key tests? #:allow-other-keys)
2353 (if tests?
2354 (invoke "./testall")
2355 (format #t "test suite not run~%"))
2356 #t))
2357 (add-after 'install 'install-man-pages
2358 (lambda* (#:key outputs #:allow-other-keys)
2359 (let* ((out (assoc-ref outputs "out"))
2360 (man6 (string-append out "/share/man/man6")))
2361 (install-file "debian/ufo.6" man6)
2362 (install-file "debian/ufoded.6" man6)
2363 #t))))
2364
2365 ;; TODO: Some map tests occasionally fail because of randomness issues,
2366 ;; e.g. not enough generated aliens. The test runner also fails early
2367 ;; in the build container with 'failed to shutdown server'?
2368 #:tests? #f))
2369 (native-inputs
2370 `(("gettext" ,gettext-minimal)
2371 ("pkg-config" ,pkg-config)
2372 ("python" ,python-2)
2373 ("ufo2map" ,ufo2map)
2374 ("ufoai-data" ,ufoai-data)))
2375 (inputs
2376 `(("curl" ,curl)
2377 ("libjpeg" ,libjpeg-turbo)
2378 ("libogg" ,libogg)
2379 ("libpng" ,libpng)
2380 ("libtheora" ,libtheora)
2381 ("libvorbis" ,libvorbis)
2382 ("libxml2" ,libxml2)
2383 ("lua" ,lua-5.1)
2384 ("mesa" ,mesa)
2385 ("minixml" ,minixml)
2386 ("sdl-union" ,(sdl-union (list sdl2 sdl2-mixer sdl2-ttf)))
2387 ("zlib" ,zlib)))
2388 (synopsis "Turn-based tactical strategy game")
2389 (description
2390 "UFO: Alien Invasion is a tactical strategy game set in the year 2084.
2391 You control a secret organisation charged with defending Earth from a brutal
2392 alien enemy. Build up your bases, prepare your team, and dive head-first into
2393 the fast and flowing turn-based combat.
2394
2395 Over the long term you will need to conduct research into the alien threat to
2396 figure out their mysterious goals and use their powerful weapons for your own
2397 ends. You will produce unique items and use them in combat against your
2398 enemies.
2399
2400 You can also use them against your friends with the multiplayer functionality.
2401
2402 Warning: This is a pre-release version of UFO: AI! Some things may not work
2403 properly.")
2404
2405 ;; The game code and most assets are GPL2+, but we use GPL2 only here
2406 ;; because some assets do not use the "or later" clause. Many individual
2407 ;; assets use Creative Commons or Public Domain; see the LICENSE file.
2408 (license (delete license:gpl2+ (package-license ufoai-data)))))
2409
2410 (define-public xshogi
2411 (package
2412 (name "xshogi")
2413 (version "1.4.2")
2414 (source
2415 (origin
2416 (method url-fetch)
2417 (uri (string-append "mirror://gnu/gnushogi/xshogi-"
2418 version ".tar.gz"))
2419 (sha256
2420 (base32
2421 "1dns0nhymak44by18sv48m4xb2skiwbi2i3nb9hl6w9iwd2i2brf"))))
2422 (build-system gnu-build-system)
2423 (inputs
2424 `(("libxaw" ,libxaw)
2425 ("libxt" ,libxt)))
2426 (home-page "https://www.gnu.org/software/gnushogi/")
2427 (synopsis "User interface for gnushogi")
2428 (description "A graphical user interface for the package @code{gnushogi}.")
2429 ;; Contains a copy of GPLv3 but the licence notices simply
2430 ;; state "GNU General Public Licence" without specifying a version.
2431 (license license:gpl1+)))
2432
2433 (define-public abbaye
2434 (package
2435 (name "abbaye")
2436 (version "2.0.1")
2437 (source
2438 (origin
2439 (method git-fetch)
2440 (uri (git-reference
2441 (url "https://github.com/nevat/abbayedesmorts-gpl")
2442 (commit (string-append "v" version))))
2443 (file-name (git-file-name name version))
2444 (sha256
2445 (base32 "1pwqf7r9bqb2p3xrw9i7y8pgr1401fy3mnnqpb1qkhmdl3gqi9hb"))
2446 (modules '((guix build utils)))
2447 (snippet
2448 ;; Unbundle fonts.
2449 '(begin
2450 (delete-file-recursively "fonts")
2451 #t))))
2452 (build-system gnu-build-system)
2453 (arguments
2454 '(#:make-flags '("CC=gcc")
2455 #:phases (modify-phases %standard-phases
2456 (add-after 'set-paths 'set-sdl-paths
2457 (lambda* (#:key inputs #:allow-other-keys)
2458 (setenv "CPATH"
2459 (string-append (assoc-ref inputs "sdl-union")
2460 "/include/SDL:"
2461 (or (getenv "CPATH") "")))))
2462 (add-after 'patch-source-shebangs 'patch-makefile
2463 (lambda* (#:key outputs #:allow-other-keys)
2464 ;; Replace /usr with package output directory.
2465 (substitute* "Makefile"
2466 (("/usr") (assoc-ref outputs "out")))))
2467 (add-before 'install 'make-install-dirs
2468 (lambda* (#:key outputs #:allow-other-keys)
2469 (let ((prefix (assoc-ref outputs "out")))
2470 ;; Create directories that the makefile assumes exist.
2471 (mkdir-p (string-append prefix "/bin"))
2472 (mkdir-p (string-append prefix "/share/applications"))
2473 (mkdir-p (string-append prefix "/share/pixmaps")))))
2474 ;; No configure script.
2475 (delete 'configure))
2476 #:tests? #f)) ;; No check target.
2477 (native-inputs `(("pkg-config" ,pkg-config)))
2478 (inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer)))))
2479 (home-page "https://github.com/nevat/abbayedesmorts-gpl")
2480 (synopsis "GNU/Linux port of the indie game \"l'Abbaye des Morts\"")
2481 (description "L'Abbaye des Morts is a 2D platform game set in 13th century
2482 France. The Cathars, who preach about good Christian beliefs, were being
2483 expelled by the Catholic Church out of the Languedoc region in France. One of
2484 them, called Jean Raymond, found an old church in which to hide, not knowing
2485 that beneath its ruins lay buried an ancient evil.")
2486 (license license:gpl3)))
2487
2488 (define-public angband
2489 (package
2490 (name "angband")
2491 (version "4.2.1")
2492 (source
2493 (origin
2494 (method url-fetch)
2495 (uri (string-append "https://rephial.org/downloads/"
2496 (version-major+minor version)
2497 "/angband-" version ".tar.gz"))
2498 (sha256
2499 (base32 "03qdavkj2ik02mqjxmlm5bn17ba3yxb1rirp8ghnxy3bsk4kbmxc"))
2500 (modules '((guix build utils)))
2501 (snippet
2502 ;; So, some of the sounds/graphics/tilesets are under different
2503 ;; licenses... some of them even nonfree! This is a console-only
2504 ;; version of this package so we just remove them.
2505 ;; In the future, if someone tries to make a graphical variant of
2506 ;; this package, they can deal with that mess themselves. :)
2507 '(begin
2508 (for-each (lambda (subdir)
2509 (let ((lib-subdir (string-append "lib/" subdir)))
2510 (delete-file-recursively lib-subdir)))
2511 '("fonts" "icons" "sounds" "tiles"))
2512 (substitute* "lib/Makefile"
2513 ;; And don't try to invoke makefiles in the directories we removed.
2514 (("gamedata customize help screens fonts tiles sounds icons user")
2515 "gamedata customize help screens user"))
2516 #t))))
2517 (build-system gnu-build-system)
2518 (arguments
2519 `(#:tests? #f ; no check target
2520 #:configure-flags (list (string-append "--bindir=" %output "/bin"))
2521 #:phases
2522 (modify-phases %standard-phases
2523 (replace 'bootstrap
2524 (lambda _
2525 (substitute* "acinclude.m4"
2526 (("ncursesw5-config") "ncursesw6-config"))
2527 (invoke "sh" "autogen.sh"))))))
2528 (native-inputs
2529 `(("autoconf" ,autoconf)
2530 ("automake" ,automake)))
2531 (inputs `(("ncurses" ,ncurses)))
2532 (home-page "https://rephial.org/")
2533 (synopsis "Dungeon exploration roguelike")
2534 (description "Angband is a Classic dungeon exploration roguelike. Explore
2535 the depths below Angband, seeking riches, fighting monsters, and preparing to
2536 fight Morgoth, the Lord of Darkness.")
2537 (license license:gpl2)))
2538
2539 (define-public pingus
2540 (package
2541 (name "pingus")
2542 (version "0.7.6")
2543 (source
2544 (origin
2545 (method git-fetch)
2546 (uri (git-reference
2547 (url "https://gitlab.com/pingus/pingus.git")
2548 (commit (string-append "v" version))))
2549 (file-name (git-file-name name version))
2550 (sha256
2551 (base32
2552 "0wp06kcmknsnxz7bjnsndb8x062z7r23fb3yrnbfnj68qhz18y74"))
2553 (patches (search-patches "pingus-boost-headers.patch"
2554 "pingus-sdl-libs-config.patch"))
2555 (modules '((guix build utils)))
2556 (snippet
2557 '(begin
2558 (substitute* "src/pingus/screens/demo_session.cpp"
2559 (("#include <iostream>")
2560 ;; std::function moved to <functional> with C++ 11.
2561 ;; Remove this for versions newer than 0.7.6.
2562 "#include <iostream>\n#include <functional>"))
2563 #t))))
2564 (build-system gnu-build-system)
2565 (native-inputs `(("pkg-config" ,pkg-config)
2566 ("scons-python2" ,scons-python2)))
2567 (inputs `(("sdl" ,sdl)
2568 ("sdl-image" ,sdl-image)
2569 ("sdl-mixer" ,sdl-mixer)
2570 ("mesa" ,mesa)
2571 ("glu" ,glu)
2572 ("libpng" ,libpng)
2573 ("boost" ,boost)))
2574 (arguments
2575 '(#:make-flags (list (string-append "PREFIX=" %output))
2576 #:tests? #f ; no check target
2577 #:phases
2578 (modify-phases %standard-phases
2579 (delete 'configure)))) ; no configure script
2580 (home-page "https://pingus.seul.org/")
2581 (synopsis "Lemmings clone")
2582 (description
2583 "Pingus is a free Lemmings-like puzzle game in which the player takes
2584 command of a bunch of small animals and has to guide them through levels.
2585 Since the animals walk on their own, the player can only influence them by
2586 giving them commands, like build a bridge, dig a hole, or redirect all animals
2587 in the other direction. Multiple such commands are necessary to reach the
2588 level's exit. The game is presented in a 2D side view.")
2589 ;; Some source files are under bsd-3 and gpl2+ licenses.
2590 (license license:gpl3+)))
2591
2592 (define-public talkfilters
2593 (package
2594 (name "talkfilters")
2595 (version "2.3.8")
2596 (source
2597 (origin
2598 (method url-fetch)
2599 (uri (string-append "http://www.hyperrealm.com/talkfilters/"
2600 "talkfilters-" version ".tar.gz"))
2601 (sha256
2602 (base32 "19nc5vq4bnkjvhk8srqddzhcs93jyvpm9r6lzjzwc1mgf08yg0a6"))))
2603 (build-system gnu-build-system)
2604 (home-page "https://www.gnu.org/software/talkfilters/")
2605 (synopsis "Convert English text to humorous dialects")
2606 (description "The GNU Talk Filters are programs that convert English text
2607 into stereotyped or otherwise humorous dialects. The filters are provided as
2608 a C library, so they can easily be integrated into other programs.")
2609 (license license:gpl2+)))
2610
2611 (define-public taisei
2612 (package
2613 (name "taisei")
2614 (version "1.3.1")
2615 (source
2616 (origin
2617 (method url-fetch)
2618 (uri (string-append "https://github.com/taisei-project/"
2619 "taisei/releases/download/v" version
2620 "/taisei-v" version ".tar.xz"))
2621 (sha256
2622 (base32 "11f9mlqmzy1lszwcc1nsbar9q1hs4ml6pbm52hqfd4q0f4x3ln46"))))
2623 (build-system meson-build-system)
2624 (arguments
2625 `(#:build-type "release" ;comment out for bug-reporting (and cheats)
2626 #:configure-flags
2627 (list "-Dr_default=gles30"
2628 "-Dr_gles20=true"
2629 "-Dr_gles30=true"
2630 "-Dshader_transpiler=true")))
2631 (native-inputs
2632 `(("pkg-config" ,pkg-config)
2633 ("python" ,python)
2634 ("python-docutils" ,python-docutils)
2635 ("python-pygments" ,python-pygments)))
2636 (inputs
2637 `(("freetype" ,freetype)
2638 ("libpng" ,libpng)
2639 ("libwebp" ,libwebp)
2640 ("libzip" ,libzip)
2641 ("mesa" ,mesa)
2642 ("openssl" ,openssl)
2643 ("opusfile" ,opusfile)
2644 ("sdl2" ,sdl2)
2645 ("sdl2-mixer" ,sdl2-mixer)
2646 ("shaderc" ,shaderc)
2647 ("spirv-cross" ,spirv-cross)
2648 ("zlib" ,zlib)))
2649 (home-page "https://taisei-project.org/")
2650 (synopsis "Shoot'em up fangame and libre clone of Touhou Project")
2651 (description
2652 "The player controls a character (one of three: Good, Bad, and Dead),
2653 dodges the missiles (lots of it cover the screen, but the character's hitbox
2654 is very small), and shoot at the adversaries that keep appear on the screen.")
2655 (license (list ;;game
2656 license:expat
2657 ;;resources/00-taisei.pkgdir/bgm/
2658 ;;atlas/portraits/
2659 license:cc-by4.0
2660 ;;miscellaneous
2661 license:cc0
2662 license:public-domain))))
2663
2664 (define-public cmatrix
2665 (package
2666 (name "cmatrix")
2667 (version "2.0")
2668 (source
2669 (origin
2670 (method git-fetch)
2671 (uri (git-reference
2672 (url "https://github.com/abishekvashok/cmatrix")
2673 (commit (string-append "v" version))))
2674 (file-name (git-file-name name version))
2675 (sha256
2676 (base32
2677 "1h9jz4m4s5l8c3figaq46ja0km1gimrkfxm4dg7mf4s84icmasbm"))))
2678 (build-system gnu-build-system)
2679 (native-inputs
2680 `(("autoconf" ,autoconf)
2681 ("automake" ,automake)))
2682 (arguments
2683 '(#:phases
2684 (modify-phases %standard-phases
2685 (replace 'configure
2686 (lambda* (#:key outputs #:allow-other-keys)
2687 ;; This old ‘configure’ script doesn't support
2688 ;; variables passed as arguments.
2689 (let ((out (assoc-ref outputs "out")))
2690 (setenv "CONFIG_SHELL" (which "bash"))
2691 (invoke "./configure"
2692 (string-append "--prefix=" out))))))))
2693 (inputs `(("ncurses" ,ncurses)))
2694 (home-page "http://www.asty.org/cmatrix")
2695 (synopsis "Simulate the display from \"The Matrix\"")
2696 (description "CMatrix simulates the display from \"The Matrix\" and is
2697 based on the screensaver from the movie's website. It works with terminal
2698 settings up to 132x300 and can scroll lines all at the same rate or
2699 asynchronously and at a user-defined speed.")
2700 (license license:gpl2+)))
2701
2702 (define-public chess
2703 (package
2704 (name "chess")
2705 (version "6.2.7")
2706 (source
2707 (origin
2708 (method url-fetch)
2709 (uri (string-append "mirror://gnu/chess/gnuchess-" version
2710 ".tar.gz"))
2711 (sha256
2712 (base32
2713 "0ilq4bfl0lwyzf11q7n2skydjhalfn3bgxhrp5hjxs5bc5d6fdp5"))))
2714 (build-system gnu-build-system)
2715 (home-page "https://www.gnu.org/software/chess/")
2716 (synopsis "Full chess implementation")
2717 (description "GNU Chess is a chess engine. It allows you to compete
2718 against the computer in a game of chess, either through the default terminal
2719 interface or via an external visual interface such as GNU XBoard.")
2720 (properties '((upstream-name . "gnuchess")
2721 (ftp-directory . "/chess")))
2722 (license license:gpl3+)))
2723
2724 (define freedink-engine
2725 (package
2726 (name "freedink-engine")
2727 (version "109.6")
2728 (source (origin
2729 (method url-fetch)
2730 (uri (string-append "mirror://gnu/freedink/freedink-" version
2731 ".tar.gz"))
2732 (patches (search-patches "freedink-engine-fix-sdl-hints.patch"))
2733 (sha256
2734 (base32
2735 "00hhk1bjdrc1np2qz44sa5n1mb62qzwxbvsnws3vpms6iyn3a2sy"))))
2736 (build-system gnu-build-system)
2737 (arguments
2738 `(#:configure-flags '("--disable-embedded-resources")
2739 #:phases
2740 (modify-phases %standard-phases
2741 (add-after 'unpack 'disable-graphical-tests
2742 (lambda _
2743 ;; These tests require a graphical interface.
2744 (substitute* "src/Makefile.am"
2745 (("test_gfx_fonts TestIOGfxDisplay") ""))
2746 #t))
2747 (add-before 'bootstrap 'autoreconf
2748 (lambda _
2749 ;; automake is out of date in the source
2750 ;; autoreconf updates the automake scripts
2751 (invoke "autoreconf")
2752 ;; Build fails when autom4te.cache exists.
2753 (delete-file-recursively "autom4te.cache")
2754 #t)))))
2755 (native-inputs `(("autoconf" ,autoconf)
2756 ("automake" ,automake)
2757 ("cxxtest" ,cxxtest)
2758 ("gettext" ,gettext-minimal)
2759 ("help2man" ,help2man)
2760 ("pkg-config" ,pkg-config)))
2761 (inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer
2762 sdl2-ttf sdl2-gfx)))
2763 ("fontconfig" ,fontconfig)
2764 ("glm" ,glm)))
2765 (properties '((ftp-directory . "/freedink")
2766 (upstream-name . "freedink")))
2767 (home-page "https://www.gnu.org/software/freedink/")
2768 (synopsis "Twisted adventures of young pig farmer Dink Smallwood")
2769 (description
2770 "GNU FreeDink is a free and portable re-implementation of the engine
2771 for the role-playing game Dink Smallwood. It supports not only the original
2772 game data files but it also supports user-produced game mods or \"D-Mods\".
2773 To that extent, it also includes a front-end for managing all of your D-Mods.")
2774 (license license:gpl3+)))
2775
2776 (define freedink-data
2777 (package
2778 (name "freedink-data")
2779 (version "1.08.20190120")
2780 (source (origin
2781 (method url-fetch)
2782 (uri (string-append "mirror://gnu/freedink/freedink-data-"
2783 version ".tar.gz"))
2784 (sha256
2785 (base32
2786 "17gvryadlxk172mblbsil7hina1z5wahwaxnr6g3mdq57dvl8pvi"))))
2787 (build-system gnu-build-system)
2788 (arguments
2789 `(#:phases
2790 (modify-phases %standard-phases
2791 (delete 'configure) ; no configure script
2792 (delete 'check)) ; no tests
2793 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))))
2794 (properties '((ftp-directory . "/freedink")))
2795 (home-page "https://www.gnu.org/software/freedink/")
2796 (synopsis "Game data for GNU Freedink")
2797 (description
2798 "This package contains the game data of GNU Freedink.")
2799 (license license:gpl3+)))
2800
2801 (define-public freedink-dfarc
2802 (package
2803 (name "freedink-dfarc")
2804 (version "3.14")
2805 (source (origin
2806 (method url-fetch)
2807 (uri (string-append "mirror://gnu/freedink/dfarc-"
2808 version ".tar.gz"))
2809 (sha256
2810 (base32
2811 "1yp8n3w426xnlp10xk06vfi2y3k9xrcfyck7s7qs1v0ys7n284d5"))))
2812 (build-system gnu-build-system)
2813 (native-inputs
2814 `(("intltool" ,intltool)))
2815 (inputs
2816 `(("bzip2" ,bzip2)
2817 ("wxwidgets" ,wxwidgets)))
2818 (properties '((ftp-directory . "/freedink")
2819 (upstream-name . "dfarc")))
2820 (home-page "https://www.gnu.org/software/freedink/")
2821 (synopsis "Front-end for managing and playing Dink Modules")
2822 (description "DFArc makes it easy to play and manage the GNU FreeDink game
2823 and its numerous D-Mods.")
2824 (license license:gpl3+)))
2825
2826 (define-public freedink
2827 ;; This is a wrapper that tells the engine where to find the data.
2828 (package (inherit freedink-engine)
2829 (name "freedink")
2830 (build-system trivial-build-system)
2831 (arguments
2832 '(#:builder (begin
2833 (use-modules (guix build utils))
2834
2835 (let* ((output (assoc-ref %outputs "out"))
2836 (bin (string-append output "/bin"))
2837 (executable (string-append bin "/freedink")))
2838 (mkdir-p bin)
2839 (call-with-output-file executable
2840 (lambda (port)
2841 (format port "#!~a/bin/sh
2842 exec ~a/bin/freedink -refdir ~a/share/dink\n"
2843 (assoc-ref %build-inputs "bash")
2844 (assoc-ref %build-inputs "engine")
2845 (assoc-ref %build-inputs "data"))
2846 (chmod port #o777)))
2847 #t))
2848 #:modules ((guix build utils))))
2849 (inputs `(("engine" ,freedink-engine)
2850 ("data" ,freedink-data)
2851 ("bash" ,bash)))
2852 (native-inputs '())))
2853
2854 (define-public xboard
2855 (package
2856 (name "xboard")
2857 (version "4.9.1")
2858 (source
2859 (origin
2860 (method url-fetch)
2861 (uri (string-append "mirror://gnu/xboard/xboard-" version
2862 ".tar.gz"))
2863 (sha256
2864 (base32
2865 "1mkh36xnnacnz9r00b5f9ld9309k32jv6mcavklbdnca8bl56bib"))))
2866 (build-system gnu-build-system)
2867 (inputs
2868 `(("gtk+" ,gtk+-2)
2869 ("librsvg" ,librsvg)))
2870 (native-inputs
2871 `(("texinfo" ,texinfo)
2872 ("pkg-config" ,pkg-config)))
2873 (home-page "https://www.gnu.org/software/xboard/")
2874 (synopsis "Graphical user interface for chess programs")
2875 (description "GNU XBoard is a graphical board for all varieties of chess,
2876 including international chess, xiangqi (Chinese chess), shogi (Japanese chess)
2877 and Makruk. Several lesser-known variants are also supported. It presents a
2878 fully interactive graphical interface and it can load and save games in the
2879 Portable Game Notation.")
2880 (license license:gpl3+)))
2881
2882 (define-public gtypist
2883 (package
2884 (name "gtypist")
2885 (version "2.9.5")
2886 (source (origin
2887 (method url-fetch)
2888 (uri (string-append "mirror://gnu/gtypist/gtypist-"
2889 version ".tar.xz"))
2890 (sha256
2891 (base32
2892 "0xzrkkmj0b1dw3yr0m9hml2y634cc4h61im6zwcq57s7285z8fn1"))
2893 (modules '((guix build utils)))
2894 (snippet
2895 ;; We do not provide `ncurses.h' within an `ncursesw'
2896 ;; sub-directory, so patch the source accordingly. See
2897 ;; <http://bugs.gnu.org/19018>.
2898 '(begin
2899 (for-each (lambda (file)
2900 (substitute* file
2901 (("ncursesw/ncurses.h")
2902 "ncurses.h")))
2903 (find-files "." "configure$|\\.c$"))
2904 #t))))
2905 (build-system gnu-build-system)
2906 (inputs `(("ncurses" ,ncurses)
2907 ("perl" ,perl)))
2908 (home-page "https://www.gnu.org/software/gtypist/")
2909 (synopsis "Typing tutor")
2910 (description
2911 "GNU Typist is a universal typing tutor. It can be used to learn and
2912 practice touch-typing. Several tutorials are included; in addition to
2913 tutorials for the standard QWERTY layout, there are also tutorials for the
2914 alternative layouts Dvorak and Colemak, as well as for the numpad. Tutorials
2915 are primarily in English, however some in other languages are provided.")
2916 (license license:gpl3+)))
2917
2918 (define-public irrlicht
2919 (package
2920 (name "irrlicht")
2921 (version "1.8.4")
2922 (source (origin
2923 (method url-fetch)
2924 (uri (string-append
2925 "mirror://sourceforge/irrlicht/Irrlicht%20SDK/"
2926 (version-major+minor version)
2927 "/" version "/irrlicht-" version ".zip"))
2928 (sha256
2929 (base32
2930 "0cz4z4dwrv5ypl19ll67wl6jjpy5k6ly4vr042w4br88qq5jhazl"))
2931 (patches (search-patches "irrlicht-use-system-libs.patch"))
2932 (modules '((guix build utils)))
2933 (snippet
2934 '(begin
2935 (for-each delete-file-recursively
2936 '("bin" ; bundled compiled Windows binaries"
2937 "source/Irrlicht/MacOSX"
2938 "source/Irrlicht/bzip2"
2939 "source/Irrlicht/jpeglib"
2940 "source/Irrlicht/libpng"
2941 "source/Irrlicht/lzma"
2942 "source/Irrlicht/zlib"))
2943 (delete-file "source/Irrlicht/glext.h")
2944 (delete-file "source/Irrlicht/glxext.h")
2945 (delete-file "source/Irrlicht/wglext.h")
2946 #t))))
2947 (build-system gnu-build-system)
2948 (arguments
2949 `(#:phases
2950 (modify-phases %standard-phases
2951 (add-after 'unpack 'chdir-to-source
2952 (lambda _
2953 ;; The actual source is buried a few directories deep.
2954 (chdir "source/Irrlicht/")
2955 #t))
2956 (add-after 'chdir-to-source 'fix-build-env
2957 (lambda* (#:key outputs #:allow-other-keys)
2958 (let ((out (assoc-ref outputs "out")))
2959 (substitute* "Makefile"
2960 (("INSTALL_DIR = /usr/local/lib")
2961 (string-append "INSTALL_DIR = " out "/lib"))
2962 ;; Add '-fpermissive' to the CXXFLAGS
2963 (("-Wall") "-Wall -fpermissive")) ; CImageLoaderJPG.cpp
2964 ;; The Makefile assumes these directories exist.
2965 (mkdir-p (string-append out "/lib"))
2966 (mkdir-p (string-append out "/include")))))
2967 (delete 'configure)) ; no configure script
2968 #:tests? #f ; no check target
2969 #:make-flags '("CC=gcc" "sharedlib")))
2970 (inputs
2971 `(("bzip2" ,bzip2)
2972 ("libjpeg" ,libjpeg-turbo)
2973 ("libpng" ,libpng)
2974 ("libx11" ,libx11)
2975 ("libxxf86vm" ,libxxf86vm)
2976 ("mesa" ,mesa)))
2977 (synopsis "3D game engine written in C++")
2978 (description
2979 "The Irrlicht Engine is a high performance realtime 3D engine written in
2980 C++. Features include an OpenGL renderer, extensible materials, scene graph
2981 management, character animation, particle and other special effects, support
2982 for common mesh file formats, and collision detection.")
2983 (home-page "http://irrlicht.sourceforge.net/")
2984 (license license:zlib)))
2985
2986 (define-public mars
2987 ;; The latest release on SourceForge relies on an unreleased version of SFML
2988 ;; with a different API, so we take the latest version from the official
2989 ;; repository on Github.
2990 (let ((commit "c855d044094a1d92317e38935d81ba938946132e")
2991 (revision "1"))
2992 (package
2993 (name "mars")
2994 (version (string-append "0.7.5." revision "." (string-take commit 7) ))
2995 (source (origin
2996 (method git-fetch)
2997 (uri (git-reference
2998 (url "https://github.com/thelaui/M.A.R.S.")
2999 (commit commit)))
3000 (file-name (git-file-name name version))
3001 (sha256
3002 (base32
3003 "1r4c5gap1z2zsv4yjd34qriqkxaq4lb4rykapyzkkdf4g36lc3nh"))
3004 (patches (search-patches "mars-sfml-2.3.patch"
3005 "mars-install.patch"))))
3006 (build-system cmake-build-system)
3007 (arguments
3008 `(#:tests? #f ; There are no tests
3009 #:phases
3010 (modify-phases %standard-phases
3011 (add-after 'unpack 'fix-install-path
3012 (lambda _
3013 (substitute* "src/CMakeLists.txt"
3014 (("\\$\\{CMAKE_INSTALL_PREFIX\\}/games")
3015 "${CMAKE_INSTALL_PREFIX}/bin"))
3016 #t))
3017 (add-after 'unpack 'fix-data-path
3018 (lambda* (#:key outputs #:allow-other-keys)
3019 (substitute* "src/System/settings.cpp"
3020 (("C_dataPath = \"./data/\";")
3021 (string-append "C_dataPath = \""
3022 (assoc-ref outputs "out")
3023 "/share/games/marsshooter/\";")))
3024 #t)))))
3025 (inputs
3026 `(("mesa" ,mesa)
3027 ("fribidi" ,fribidi)
3028 ("taglib" ,taglib)
3029 ("sfml" ,sfml)))
3030 (home-page "http://mars-game.sourceforge.net/")
3031 (synopsis "2D space shooter")
3032 (description
3033 "M.A.R.S. is a 2D space shooter with pretty visual effects and
3034 attractive physics. Players can battle each other or computer controlled
3035 enemies in different game modes such as space ball, death match, team death
3036 match, cannon keep, and grave-itation pit.")
3037 (license license:gpl3+))))
3038
3039 (define-public minetest
3040 (package
3041 (name "minetest")
3042 (version "5.3.0")
3043 (source (origin
3044 (method git-fetch)
3045 (uri (git-reference
3046 (url "https://github.com/minetest/minetest")
3047 (commit version)))
3048 (file-name (git-file-name name version))
3049 (sha256
3050 (base32
3051 "03ga3j3cg38w4lg4d4qxasmnjdl8n3lbizidrinanvyfdyvznyh6"))
3052 (modules '((guix build utils)))
3053 (snippet
3054 '(begin
3055 ;; Delete bundled libraries.
3056 (delete-file-recursively "lib")
3057 #t))))
3058 (build-system cmake-build-system)
3059 (arguments
3060 '(#:configure-flags
3061 (list "-DRUN_IN_PLACE=0"
3062 "-DENABLE_FREETYPE=1"
3063 "-DENABLE_GETTEXT=1"
3064 "-DENABLE_SYSTEM_JSONCPP=TRUE"
3065 (string-append "-DIRRLICHT_INCLUDE_DIR="
3066 (assoc-ref %build-inputs "irrlicht")
3067 "/include/irrlicht")
3068 (string-append "-DCURL_INCLUDE_DIR="
3069 (assoc-ref %build-inputs "curl")
3070 "/include/curl"))
3071 #:tests? #f)) ;no check target
3072 (native-search-paths
3073 (list (search-path-specification
3074 (variable "MINETEST_SUBGAME_PATH")
3075 (files '("share/minetest/games")))))
3076 (native-inputs
3077 `(("pkg-config" ,pkg-config)))
3078 (inputs
3079 `(("curl" ,curl)
3080 ("freetype" ,freetype)
3081 ("gettext" ,gettext-minimal)
3082 ("gmp" ,gmp)
3083 ("irrlicht" ,irrlicht)
3084 ("jsoncpp" ,jsoncpp)
3085 ("libjpeg" ,libjpeg-turbo)
3086 ("libpng" ,libpng)
3087 ("libogg" ,libogg)
3088 ("libvorbis" ,libvorbis)
3089 ("libxxf86vm" ,libxxf86vm)
3090 ("luajit" ,luajit)
3091 ("mesa" ,mesa)
3092 ("ncurses" ,ncurses)
3093 ("openal" ,openal)
3094 ("sqlite" ,sqlite)))
3095 (propagated-inputs
3096 `(("minetest-data" ,minetest-data)))
3097 (synopsis "Infinite-world block sandbox game")
3098 (description
3099 "Minetest is a sandbox construction game. Players can create and destroy
3100 various types of blocks in a three-dimensional open world. This allows
3101 forming structures in every possible creation, on multiplayer servers or as a
3102 single player. Mods and texture packs allow players to personalize the game
3103 in different ways.")
3104 (home-page "https://www.minetest.net/")
3105 (license license:lgpl2.1+)))
3106
3107 (define minetest-data
3108 (package
3109 (name "minetest-data")
3110 (version (package-version minetest))
3111 (source (origin
3112 (method git-fetch)
3113 (uri (git-reference
3114 (url "https://github.com/minetest/minetest_game")
3115 (commit version)))
3116 (file-name (git-file-name name version))
3117 (sha256
3118 (base32
3119 "1liciwlh013z5h08ib0psjbwn5wkvlr937ir7kslfk4vly984cjx"))))
3120 (build-system trivial-build-system)
3121 (native-inputs
3122 `(("source" ,source)))
3123 (arguments
3124 `(#:modules ((guix build utils))
3125 #:builder (begin
3126 (use-modules (guix build utils))
3127 (let ((install-dir (string-append
3128 %output
3129 "/share/minetest/games/minetest_game")))
3130 (mkdir-p install-dir)
3131 (copy-recursively
3132 (assoc-ref %build-inputs "source")
3133 install-dir)
3134 #t))))
3135 (synopsis "Main game data for the Minetest game engine")
3136 (description
3137 "Game data for the Minetest infinite-world block sandbox game.")
3138 (home-page "https://www.minetest.net/")
3139 (license license:lgpl2.1+)))
3140
3141 (define-public minetest-mineclone
3142 (package
3143 (name "minetest-mineclone")
3144 (version "0.66.2")
3145 (source (origin
3146 (method git-fetch)
3147 (uri (git-reference
3148 (url "https://git.minetest.land/Wuzzy/MineClone2")
3149 (commit version)))
3150 (file-name (git-file-name name version))
3151 (sha256
3152 (base32
3153 "0miszzlzplpvaj0j1yii9867ydr42wsaqa9g6grxdrci75p05g00"))))
3154 (build-system copy-build-system)
3155 (arguments
3156 `(#:install-plan
3157 '(("." "share/minetest/games/mineclone"))))
3158 (synopsis "Minecraft clone based on Minetest engine")
3159 (description
3160 "MineClone is a Minetest subgame, that aims to recreate Minecraft as
3161 closely as the engine allows.")
3162 (home-page "https://content.minetest.net/packages/Wuzzy/mineclone2/")
3163 (license license:gpl3+)))
3164
3165 (define glkterm
3166 (package
3167 (name "glkterm")
3168 (version "1.0.4")
3169 (source
3170 (origin
3171 (method url-fetch)
3172 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
3173 "glk/implementations/glkterm-104.tar.gz"))
3174 (sha256
3175 (base32
3176 "0zlj9nlnkdlvgbiliczinirqygiq8ikg5hzh5vgcmnpg9pvnwga7"))))
3177 (build-system gnu-build-system)
3178 (propagated-inputs `(("ncurses" ,ncurses))) ; required by Make.glkterm
3179 (arguments
3180 '(#:tests? #f ; no check target
3181 #:phases
3182 (modify-phases %standard-phases
3183 (replace 'install
3184 (lambda* (#:key outputs #:allow-other-keys)
3185 (let* ((out (assoc-ref outputs "out"))
3186 (inc (string-append out "/include"))
3187 (lib (string-append out "/lib")))
3188 (for-each
3189 (lambda (file)
3190 (install-file file inc))
3191 '("glk.h" "glkstart.h" "gi_blorb.h" "gi_dispa.h" "Make.glkterm"))
3192 (install-file "libglkterm.a" lib))
3193 #t))
3194 (delete 'configure)))) ; no configure script
3195 (home-page "http://www.eblong.com/zarf/glk/")
3196 (synopsis "Curses Implementation of the Glk API")
3197 (description
3198 "Glk defines a portable API for applications with text UIs. It was
3199 primarily designed for interactive fiction, but it should be suitable for many
3200 interactive text utilities, particularly those based on a command line.
3201 This is an implementation of the Glk library which runs in a terminal window,
3202 using the @code{curses.h} library for screen control.")
3203 (license (license:fsf-free "file://README"))))
3204
3205 (define-public glulxe
3206 (package
3207 (name "glulxe")
3208 (version "0.5.4")
3209 (source
3210 (origin
3211 (method url-fetch)
3212 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
3213 "glulx/interpreters/glulxe/glulxe-054.tar.gz"))
3214 (sha256
3215 (base32
3216 "0vipydg6ra90yf9b3ipgppwxyb2xdhcxwvirgjy0v20wlf56zhhz"))))
3217 (build-system gnu-build-system)
3218 (inputs `(("glk" ,glkterm)))
3219 (arguments
3220 '(#:tests? #f ; no check target
3221 #:make-flags
3222 (let* ((glk (assoc-ref %build-inputs "glk")))
3223 (list (string-append "GLKINCLUDEDIR=" glk "/include")
3224 (string-append "GLKLIBDIR=" glk "/lib")
3225 (string-append "GLKMAKEFILE=" "Make.glkterm")))
3226 #:phases
3227 (modify-phases %standard-phases
3228 (replace 'install
3229 (lambda* (#:key outputs #:allow-other-keys)
3230 (let* ((out (assoc-ref outputs "out"))
3231 (bin (string-append out "/bin")))
3232 (install-file "glulxe" bin))
3233 #t))
3234 (delete 'configure)))) ; no configure script
3235 (home-page "https://www.eblong.com/zarf/glulx/")
3236 (synopsis "Interpreter for Glulx VM")
3237 (description
3238 "Glulx is a 32-bit portable virtual machine intended for writing and
3239 playing interactive fiction. It was designed by Andrew Plotkin to relieve
3240 some of the restrictions in the venerable Z-machine format. This is the
3241 reference interpreter, using the Glk API.")
3242 (license license:expat)))
3243
3244 (define-public fifechan
3245 (package
3246 (name "fifechan")
3247 (version "0.1.5")
3248 (source (origin
3249 (method url-fetch)
3250 (uri (string-append "https://codeload.github.com/fifengine/"
3251 "fifechan/tar.gz/" version))
3252 (file-name (string-append name "-" version ".tar.gz"))
3253 (sha256
3254 (base32
3255 "0wxs9vz5x9y8chghd8vp7vfk089lfb0qnzggi17zrqkrngs5zgi9"))))
3256 (build-system cmake-build-system)
3257 (inputs
3258 `(("sdl2" ,sdl2)
3259 ("sdl2-image" ,sdl2-image)
3260 ("mesa" ,mesa)))
3261 (arguments
3262 '(#:tests? #f)) ; No included tests
3263 (home-page "https://fifengine.github.io/fifechan/")
3264 (synopsis "Cross platform GUI library specifically for games")
3265 (description
3266 "Fifechan is a lightweight cross platform GUI library written in C++
3267 specifically designed for games. It has a built in set of extendable GUI
3268 Widgets, and allows users to create more.")
3269 (license license:lgpl2.1+)))
3270
3271 (define-public fifengine
3272 (package
3273 (name "fifengine")
3274 (version "0.4.2")
3275 (source (origin
3276 (method url-fetch)
3277 (uri (string-append "https://codeload.github.com/fifengine/"
3278 "fifengine/tar.gz/" version))
3279 (file-name (string-append name "-" version ".tar.gz"))
3280 (patches (search-patches "fifengine-swig-compat.patch"))
3281 (sha256
3282 (base32
3283 "1y4grw25cq5iqlg05rnbyxw1njl11ypidnlsm3qy4sm3xxdvb0p8"))))
3284 (build-system cmake-build-system)
3285 (arguments
3286 `(#:tests? #f ; TODO The test running fails to run some tests.
3287 #:modules ((srfi srfi-1)
3288 (guix build cmake-build-system)
3289 (guix build utils))
3290 #:configure-flags
3291 (list
3292 (string-append "-DOPENALSOFT_INCLUDE_DIR="
3293 (assoc-ref %build-inputs "openal")
3294 "/include/AL")
3295 (string-append "-DPYTHON_SITE_PACKAGES="
3296 (assoc-ref %outputs "out")
3297 "/lib/python"
3298 ,(version-major+minor (package-version python))
3299 "/site-packages"))
3300 #:phases
3301 (modify-phases %standard-phases
3302 (add-after 'unpack 'patch-run_tests.py
3303 (lambda _
3304 ;; Patch the test runner to exit with a status of 1 if any test
3305 ;; fails, to allow detecting failures.
3306 (substitute* "run_tests.py"
3307 (("ERROR\\. One or more tests failed!'\\)")
3308 "ERROR. One or more tests failed!')
3309 \t\texit(1)"))
3310 #t))
3311 ;; Run tests after installation so that we can make use of the built
3312 ;; python modules.
3313 (delete 'check)
3314 (add-after 'install 'check
3315 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
3316 (define python-version
3317 (let* ((version (last (string-split
3318 (assoc-ref inputs "python")
3319 #\-)))
3320 (components (string-split version #\.))
3321 (major+minor (take components 2)))
3322 (string-join major+minor ".")))
3323
3324 (when tests?
3325 ;; Set PYTHONPATH so that python finds the installed modules.
3326 (setenv "PYTHONPATH"
3327 (string-append (getenv "PYTHONPATH") ":"
3328 (assoc-ref outputs "out")
3329 "/lib/python"
3330 python-version
3331 "/site-packages"))
3332 ;; The tests require an X server.
3333 (system "Xvfb :1 &")
3334 (setenv "DISPLAY" ":1")
3335 (setenv "XDG_RUNTIME_DIR" "/tmp")
3336 ;; Run tests
3337 (chdir ,(string-append "../" name "-" version))
3338 (invoke "python3" "run_tests.py" "-a"))
3339 #t)))))
3340 (inputs
3341 `(("sdl2" ,sdl2)
3342 ("sdl2-image" ,sdl2-image)
3343 ("sdl2-ttf" ,sdl2-ttf)
3344 ("tinyxml" ,tinyxml)
3345 ("openal" ,openal)
3346 ("libogg" ,libogg)
3347 ("glew" ,glew)
3348 ("libvorbis" ,libvorbis)
3349 ("boost" ,boost)
3350 ("fifechan" ,fifechan)
3351 ("swig" ,swig)
3352 ("python" ,python)))
3353 (native-inputs
3354 `(("python" ,python)
3355 ("swig" ,swig)
3356 ("xvfb" ,xorg-server)))
3357 (propagated-inputs
3358 `(("python-future" ,python-future)))
3359 (home-page "https://www.fifengine.net/")
3360 (synopsis "FIFE is a multi-platform isometric game engine written in C++")
3361 (description
3362 "@acronym{FIFE, Flexible Isometric Free Engine} is a multi-platform
3363 isometric game engine. Python bindings are included allowing users to create
3364 games using Python as well as C++.")
3365 (license license:lgpl2.1+)))
3366
3367 (define-public fizmo
3368 (package
3369 (name "fizmo")
3370 (version "0.8.5")
3371 (source (origin
3372 (method url-fetch)
3373 (uri (string-append "https://fizmo.spellbreaker.org/source/"
3374 "fizmo-" version ".tar.gz"))
3375 (sha256
3376 (base32
3377 "1amyc4n41jf08kxmdgkk30bzzx54miaxa97w28f417qwn8lrl98w"))))
3378 (build-system gnu-build-system)
3379 (arguments
3380 '(#:configure-flags
3381 (let ((libjpeg (assoc-ref %build-inputs "libjpeg"))
3382 (ncurses (assoc-ref %build-inputs "ncurses")))
3383 (list (string-append "--with-jpeg-includedir=" libjpeg "/include")))))
3384 (native-inputs
3385 `(("pkg-config" ,pkg-config)))
3386 (inputs
3387 `(("freetype" ,freetype)
3388 ("libjpeg" ,libjpeg-turbo)
3389 ("libpng" ,libpng)
3390 ("libsndfile" ,libsndfile)
3391 ("libxml2" ,libxml2)
3392 ("ncurses" ,ncurses)
3393 ("sdl2" ,sdl2)))
3394 (home-page "https://fizmo.spellbreaker.org/")
3395 (synopsis "Z-machine interpreter")
3396 (description
3397 "Fizmo is a console-based Z-machine interpreter. It is used to play
3398 interactive fiction, also known as text adventures, which were implemented
3399 either by Infocom or created using the Inform compiler.")
3400 (license license:bsd-3)))
3401
3402 (define-public gnugo
3403 (package
3404 (name "gnugo")
3405 (version "3.8")
3406 (source (origin
3407 (method url-fetch)
3408 (uri (string-append "mirror://gnu/gnugo/gnugo-" version
3409 ".tar.gz"))
3410 (sha256
3411 (base32
3412 "0wkahvqpzq6lzl5r49a4sd4p52frdmphnqsfdv7gdp24bykdfs6s"))))
3413 (build-system gnu-build-system)
3414 (inputs `(("readline" ,readline)))
3415 (synopsis "Play the game of Go")
3416 (description
3417 "GNU Go is a program that plays the game of Go, in which players
3418 place stones on a grid to form territory or capture other stones. While
3419 it can be played directly from the terminal, rendered in ASCII characters,
3420 it is also possible to play GNU Go with 3rd party graphical interfaces or
3421 even in Emacs. It supports the standard game storage format (SGF, Smart
3422 Game Format) and inter-process communication format (GMP, Go Modem
3423 Protocol).")
3424 (home-page "https://www.gnu.org/software/gnugo/")
3425 (license license:gpl3+)))
3426
3427 (define-public extremetuxracer
3428 (package
3429 (name "extremetuxracer")
3430 (version "0.8.0")
3431 (source (origin
3432 (method url-fetch)
3433 (uri (string-append
3434 "mirror://sourceforge/extremetuxracer/releases/"
3435 version "/etr-" version ".tar.xz"))
3436 (sha256
3437 (base32
3438 "05ysaxvsgps9fxc421kdifsxmc1sn6n79cjaa0k0i3fs9qqrja2b"))))
3439 (build-system gnu-build-system)
3440 (native-inputs
3441 `(("pkg-config" ,pkg-config)))
3442 (inputs
3443 `(("glu" ,glu)
3444 ("sfml" ,sfml)))
3445 (synopsis "High-speed arctic racing game based on Tux Racer")
3446 ;; Snarfed straight from Debian.
3447 (description "Extreme Tux Racer, or etracer as it is called for short, is
3448 a simple OpenGL racing game featuring Tux, the Linux mascot. The goal of the
3449 game is to slide down a snow- and ice-covered mountain as quickly as possible,
3450 avoiding the trees and rocks that will slow you down.
3451
3452 Collect herrings and other goodies while sliding down the hill, but avoid fish
3453 bones.
3454
3455 This game is based on the GPL version of the famous game TuxRacer.")
3456 (home-page "https://sourceforge.net/projects/extremetuxracer/")
3457 (license license:gpl2+)))
3458
3459 (define-public supertuxkart
3460 (package
3461 (name "supertuxkart")
3462 (version "1.1")
3463 (source
3464 (origin
3465 (method url-fetch)
3466 (uri (string-append "mirror://sourceforge/supertuxkart/SuperTuxKart/"
3467 version "/supertuxkart-" version "-src.tar.xz"))
3468 (sha256
3469 (base32
3470 "1s0ai07g3sswck9mr0142989mrgzzq1njc1qxk5als5b245jpc79"))
3471 (modules '((guix build utils)))
3472 (snippet
3473 ;; Delete bundled library sources
3474 '(begin
3475 ;; Supertuxkart uses modified versions of the Irrlicht engine
3476 ;; and the bullet library. The developers gave an explanation
3477 ;; here: http://forum.freegamedev.net/viewtopic.php?f=17&t=3906
3478 ;; FIXME: try to unbundle angelscript and libraqm
3479 (for-each delete-file-recursively
3480 '("lib/zlib"
3481 "lib/libpng"
3482 "lib/jpeglib"
3483 "lib/glew"
3484 "lib/wiiuse"
3485 "lib/enet"))
3486 #t))))
3487 (build-system cmake-build-system)
3488 (arguments
3489 `(#:tests? #f ; no check target
3490 #:configure-flags
3491 (list "-DUSE_WIIUSE=0"
3492 ;; Do not use the bundled zlib, glew and enet.
3493 "-DNO_IRR_COMPILE_WITH_ZLIB_=TRUE"
3494 "-DUSE_SYSTEM_GLEW=TRUE"
3495 "-DUSE_SYSTEM_ENET=TRUE"
3496 ;; In order to use the system ENet library, IPv6 support (added in
3497 ;; SuperTuxKart version 1.1) must be disabled.
3498 "-DUSE_IPV6=FALSE"
3499 ;; FIXME: needs libopenglrecorder
3500 "-DBUILD_RECORDER=0"
3501 ;; Irrlicht returns an integer instead of a boolean
3502 "-DCMAKE_C_FLAGS=-fpermissive")))
3503 (inputs
3504 `(("glew" ,glew)
3505 ("zlib" ,zlib)
3506 ("openal" ,openal)
3507 ("libvorbis" ,libvorbis)
3508 ("freetype" ,freetype)
3509 ("fribidi" ,fribidi)
3510 ("harfbuzz" ,harfbuzz)
3511 ("mesa" ,mesa)
3512 ("libx11" ,libx11)
3513 ("libxrandr" ,libxrandr)
3514 ("curl" ,curl)
3515 ;; The following input is needed to build the bundled and modified
3516 ;; version of irrlicht.
3517 ("libjpeg" ,libjpeg-turbo)
3518 ("openssl" ,openssl)
3519 ("enet" ,enet)))
3520 (native-inputs
3521 `(("pkg-config" ,pkg-config)))
3522 (home-page "https://supertuxkart.net/Main_Page")
3523 (synopsis "3D kart racing game")
3524 (description "SuperTuxKart is a 3D kart racing game, with a focus on
3525 having fun over realism. You can play with up to 4 friends on one PC, racing
3526 against each other or just trying to beat the computer; single-player mode is
3527 also available.")
3528 (license license:gpl3+)))
3529
3530 (define-public unknown-horizons
3531 (package
3532 (name "unknown-horizons")
3533 (version "2019.1")
3534 (source (origin
3535 (method url-fetch)
3536 (uri (string-append "https://codeload.github.com/unknown-horizons/"
3537 "unknown-horizons/tar.gz/" version))
3538 (file-name (string-append name "-" version ".tar.gz"))
3539 (sha256
3540 (base32
3541 "1n747p7h0qp48szgp262swg0xh8kxy1bw8ag1qczs4i26hyzs5x4"))
3542 (patches (search-patches "unknown-horizons-python-3.8-distro.patch"))))
3543 (build-system python-build-system)
3544 (arguments
3545 '(#:phases
3546 (modify-phases %standard-phases
3547 (add-before 'build 'set-HOME
3548 (lambda _
3549 (setenv "HOME" "/tmp")
3550 #t))
3551 (add-after 'build 'build-extra
3552 (lambda _
3553 (invoke "python3" "./setup.py" "build_i18n")
3554 (invoke "python3" "horizons/engine/generate_atlases.py" "2048")
3555 #t))
3556 (add-after 'install 'patch
3557 (lambda* (#:key outputs #:allow-other-keys)
3558 (let ((out (assoc-ref outputs "out")))
3559 (substitute* (string-append out "/bin/unknown-horizons")
3560 (("os\\.chdir\\(get\\_content\\_dir\\_parent_path\\(\\)\\)")
3561 (string-append "os.chdir(\""
3562 (assoc-ref outputs "out")
3563 "/share/unknown-horizons\")"))))
3564 #t))
3565 (add-before 'check 'fix-tests-with-pytest>=4
3566 (lambda _
3567 (substitute* "tests/conftest.py"
3568 (("pytest_namespace")
3569 "pytest_configure")
3570 (("get_marker")
3571 "get_closest_marker"))
3572 #t))
3573 ;; TODO: Run GUI tests as well
3574 (replace 'check
3575 (lambda _
3576 (substitute* "horizons/constants.py"
3577 (("IS_DEV_VERSION = False")
3578 "IS_DEV_VERSION = True"))
3579 (invoke "pytest" "tests")
3580 (substitute* "horizons/constants.py"
3581 (("IS_DEV_VERSION = True")
3582 "IS_DEV_VERSION = False"))
3583 #t)))))
3584 (inputs
3585 `(("fifengine" ,fifengine)
3586 ("python:tk" ,python "tk")
3587 ("python-pillow" ,python-pillow)
3588 ("python-pyyaml" ,python-pyyaml)))
3589 (native-inputs
3590 `(("intltool" ,intltool)
3591 ("python-distro" ,python-distro)
3592
3593 ;; Required for tests
3594 ("python-greenlet" ,python-greenlet)
3595 ("python-polib" ,python-polib)
3596 ("python-pytest" ,python-pytest)
3597 ("python-pytest-mock" ,python-pytest-mock)))
3598 (home-page "http://unknown-horizons.org/")
3599 (synopsis "Isometric realtime strategy, economy and city building simulation")
3600 (description
3601 "Unknown Horizons is a 2D realtime strategy simulation with an emphasis
3602 on economy and city building. Expand your small settlement to a strong and
3603 wealthy colony, collect taxes and supply your inhabitants with valuable
3604 goods. Increase your power with a well balanced economy and with strategic
3605 trade and diplomacy.")
3606 (license (list
3607 license:gpl2+ ; Covers code
3608 license:expat ; tests/dummy.py, ext/polib.py
3609 license:cc-by-sa3.0 ; Covers some media content
3610 license:cc-by3.0 ; Covers some media content
3611 license:bsd-3)))) ; horizons/ext/speaklater.py
3612
3613 (define-public gnujump
3614 (package
3615 (name "gnujump")
3616 (version "1.0.8")
3617 (source (origin
3618 (method url-fetch)
3619 (uri (string-append "mirror://gnu/gnujump/gnujump-"
3620 version ".tar.gz"))
3621 (sha256
3622 (base32
3623 "05syy9mzbyqcfnm0hrswlmhwlwx54f0l6zhcaq8c1c0f8dgzxhqk"))))
3624 (build-system gnu-build-system)
3625 (arguments
3626 '(#:phases
3627 (modify-phases %standard-phases
3628 (add-before
3629 'configure 'link-libm
3630 (lambda _ (setenv "LIBS" "-lm")))
3631 (add-after 'install 'create-desktop-entry
3632 (lambda* (#:key outputs #:allow-other-keys)
3633 (let* ((out (assoc-ref outputs "out"))
3634 (apps (string-append out "/share/applications")))
3635 (mkdir-p apps)
3636 (with-output-to-file
3637 (string-append apps "/gnujump.desktop")
3638 (lambda _
3639 (format #t
3640 "[Desktop Entry]~@
3641 Name=GNUjump~@
3642 Comment=Jump up the tower to survive~@
3643 Exec=~a/bin/gnujump~@
3644 Terminal=false~@
3645 Type=Application~@
3646 Categories=Game;ArcadeGame~%"
3647 out)))))))))
3648 (inputs
3649 `(("glu" ,glu)
3650 ("mesa" ,mesa)
3651 ("sdl" ,sdl)
3652 ("sdl-image" ,sdl-image)
3653 ("sdl-mixer" ,sdl-mixer)))
3654 (home-page "http://gnujump.es.gnu.org/")
3655 (synopsis
3656 "Game of jumping to the next floor, trying not to fall")
3657 (description
3658 "GNUjump is a simple, yet addictive game in which you must jump from
3659 platform to platform to avoid falling, while the platforms drop at faster rates
3660 the higher you go. The game features multiplayer, unlimited FPS, smooth floor
3661 falling, themeable graphics and sounds, and replays.")
3662 (license license:gpl3+)))
3663
3664 (define-public wesnoth
3665 (package
3666 (name "wesnoth")
3667 (version "1.14.14")
3668 (source (origin
3669 (method url-fetch)
3670 (uri (string-append "mirror://sourceforge/wesnoth/wesnoth-"
3671 (version-major+minor version)
3672 "/wesnoth-" version "/"
3673 "wesnoth-" version ".tar.bz2"))
3674 (sha256
3675 (base32
3676 "1l7mdxn4kw938qz824057rqh99b7y9439a54s64n1xz95w77lp0r"))))
3677 (build-system cmake-build-system)
3678 (arguments
3679 `(#:tests? #f)) ;no check target
3680 (native-inputs
3681 `(("gettext" ,gettext-minimal)
3682 ("pkg-config" ,pkg-config)))
3683 (inputs
3684 `(("boost" ,boost)
3685 ("dbus" ,dbus)
3686 ("fribidi" ,fribidi)
3687 ("libvorbis" ,libvorbis)
3688 ("openssl" ,openssl)
3689 ("pango" ,pango)
3690 ("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
3691 (home-page "https://www.wesnoth.org/")
3692 (synopsis "Turn-based strategy game")
3693 (description
3694 "The Battle for Wesnoth is a fantasy, turn based tactical strategy game,
3695 with several single player campaigns, and multiplayer games (both networked and
3696 local).
3697
3698 Battle for control on a range of maps, using variety of units which have
3699 advantages and disadvantages against different types of attacks. Units gain
3700 experience and advance levels, and are carried over from one scenario to the
3701 next campaign.")
3702 (license license:gpl2+)))
3703
3704 (define-public wesnoth-server
3705 (package
3706 (inherit wesnoth)
3707 (name "wesnoth-server")
3708 (inputs
3709 `(("boost" ,boost)
3710 ("icu4c" ,icu4c)
3711 ("openssl" ,openssl)
3712 ("sdl2" ,sdl2)))
3713 (arguments
3714 `(#:configure-flags '("-DENABLE_GAME=OFF")
3715 ,@(package-arguments wesnoth)))
3716 (synopsis "Dedicated @emph{Battle for Wesnoth} server")
3717 (description "This package contains a dedicated server for @emph{The
3718 Battle for Wesnoth}.")))
3719
3720 (define-public gamine
3721 (package
3722 (name "gamine")
3723 (version "1.6")
3724 (source (origin
3725 (method url-fetch)
3726 (uri (string-append "mirror://sourceforge/gamine-game/"
3727 "gamine-" version ".tar.gz"))
3728 (sha256
3729 (base32
3730 "1sc6f4445ciigd6yw0ri92746k4hk6ps0bvj9fm1gbp3c3fslk5n"))))
3731 (build-system gnu-build-system)
3732 (native-inputs
3733 `(("pkg-config" ,pkg-config)
3734 ("intltool" ,intltool)))
3735 (inputs
3736 `(("gstreamer" ,gstreamer)
3737 ("gst-plugins-base" ,gst-plugins-base) ; playbin plugin
3738 ("gst-plugins-good" ,gst-plugins-good) ; for wav playback
3739 ("gtk+" ,gtk+)))
3740 (arguments
3741 `(#:tests? #f
3742 #:make-flags
3743 (let ((out (assoc-ref %outputs "out")))
3744 (list (string-append "PREFIX=" out)
3745 (string-append "SYSCONFDIR=" out "/etc")))
3746 #:phases
3747 (modify-phases %standard-phases
3748 (delete 'configure)
3749 (add-after
3750 'install 'wrap-gamine
3751 (lambda* (#:key outputs #:allow-other-keys)
3752 (let ((out (assoc-ref outputs "out"))
3753 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
3754 (wrap-program (string-append out "/bin/gamine")
3755 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))))
3756 #t)))))
3757 (home-page "http://gamine-game.sourceforge.net/")
3758 (synopsis "Mouse and keyboard discovery for children")
3759 (description
3760 "Gamine is a game designed for young children who are learning to use the
3761 mouse and keyboard. The child uses the mouse to draw colored dots and lines
3762 on the screen and keyboard to display letters.")
3763 ;; Most files under gpl2+ or gpl3+, but eat.wav under gpl3
3764 (license license:gpl3)))
3765
3766 (define-public manaplus
3767 (package
3768 (name "manaplus")
3769 (version "1.9.3.23")
3770 (source (origin
3771 (method url-fetch)
3772 (uri (string-append
3773 "https://repo.manaplus.org/manaplus/download/"
3774 version "/manaplus-" version ".tar.xz"))
3775 (sha256
3776 (base32
3777 "1ky182p4svwdqm6cf7jbns85hidkhkhq4s17cs2p381f0klapfjz"))))
3778 (build-system gnu-build-system)
3779 (arguments
3780 '(#:configure-flags
3781 (list (string-append "CPPFLAGS=-I"
3782 (assoc-ref %build-inputs "sdl-union")
3783 "/include/SDL"))))
3784 (native-inputs
3785 `(("pkg-config" ,pkg-config)))
3786 (inputs
3787 `(("glu" ,glu)
3788 ("curl" ,curl)
3789 ("libxml2" ,libxml2)
3790 ("mesa" ,mesa)
3791 ("sdl-union" ,(sdl-union))))
3792 (home-page "https://manaplus.org")
3793 (synopsis "Client for 'The Mana World' and similar games")
3794 (description
3795 "ManaPlus is a 2D MMORPG client for game servers. It is the only
3796 fully supported client for @uref{http://www.themanaworld.org, The mana
3797 world}, @uref{http://evolonline.org, Evol Online} and
3798 @uref{http://landoffire.org, Land of fire}.")
3799 ;; "src/debug/*" and "src/sdl2gfx/*" are under Zlib.
3800 ;; "data/themes/{golden-delicious,jewelry}/*" are under CC-BY-SA.
3801 ;; The rest is under GPL2+.
3802 (license (list license:gpl2+ license:zlib license:cc-by-sa4.0))))
3803
3804 (define openttd-engine
3805 (package
3806 (name "openttd-engine")
3807 (version "1.10.0")
3808 (source
3809 (origin (method url-fetch)
3810 (uri (string-append "https://cdn.openttd.org/openttd-releases/"
3811 version "/openttd-" version "-source.tar.xz"))
3812 (sha256
3813 (base32
3814 "0lz2y2rjc23k0d97y65cqhy2splw9cmrbvhgz0iqps8xkan1m8hv"))))
3815 (build-system gnu-build-system)
3816 (arguments
3817 `(#:tests? #f ; no "check" target
3818 #:phases
3819 (modify-phases %standard-phases
3820 ;; The build process fails if the configure script is passed the
3821 ;; option "--enable-fast-install".
3822 (replace 'configure
3823 (lambda* (#:key inputs outputs (configure-flags '())
3824 #:allow-other-keys)
3825 (let ((out (assoc-ref outputs "out"))
3826 (lzo (assoc-ref inputs "lzo")))
3827 (apply invoke "./configure"
3828 (string-append "--prefix=" out)
3829 ;; Provide the "lzo" path.
3830 (string-append "--with-liblzo2="
3831 lzo "/lib/liblzo2.a")
3832 ;; Put the binary in 'bin' instead of 'games'.
3833 "--binary-dir=bin"
3834 configure-flags)))))))
3835 (native-inputs `(("pkg-config" ,pkg-config)))
3836 (inputs
3837 `(("allegro" ,allegro)
3838 ("fontconfig" ,fontconfig)
3839 ("freetype" ,freetype)
3840 ("icu4c" ,icu4c)
3841 ("libpng" ,libpng)
3842 ("lzo" ,lzo)
3843 ("sdl" ,sdl)
3844 ("xz" ,xz)
3845 ("zlib" ,zlib)))
3846 (synopsis "Transportation economics simulator game")
3847 (description "OpenTTD is a game in which you transport goods and
3848 passengers by land, water and air. It is a re-implementation of Transport
3849 Tycoon Deluxe with many enhancements including multiplayer mode,
3850 internationalization support, conditional orders and the ability to clone,
3851 autoreplace and autoupdate vehicles. This package only includes the game
3852 engine. When you start it you will be prompted to download a graphics set.")
3853 (home-page "https://www.openttd.org/")
3854 ;; This package is GPLv2, except for a few files located in
3855 ;; "src/3rdparty/" which are under the 3-clause BSD, LGPLv2.1+ and Zlib
3856 ;; licenses. In addition, this software contains an in-game downloader
3857 ;; from which the user may find non-functional data licensed under
3858 ;; different terms.
3859 (license (list license:bsd-3 license:gpl2 license:lgpl2.1+ license:zlib))))
3860
3861 (define openttd-opengfx
3862 (package
3863 (name "openttd-opengfx")
3864 (version "0.6.0")
3865 (source
3866 (origin
3867 (method url-fetch)
3868 (uri (string-append "https://cdn.openttd.org/opengfx-releases/"
3869 version "/opengfx-" version "-source.tar.xz"))
3870 (sha256
3871 (base32
3872 "0qxc6gl2gxcrn1np88dnjgbaaakkkx96b13rcmy1spryc8c09hyr"))))
3873 (build-system gnu-build-system)
3874 (arguments
3875 '(#:make-flags (list "CC=gcc"
3876 (string-append "INSTALL_DIR="
3877 (assoc-ref %outputs "out")
3878 "/share/games/openttd/baseset/opengfx"))
3879 #:phases
3880 (modify-phases %standard-phases
3881 (replace 'configure
3882 (lambda _
3883 ;; Make sure HOME is writable for GIMP.
3884 (setenv "HOME" (getcwd))
3885
3886 ;; Redirect stdout, not stderr, to /dev/null. This prevents
3887 ;; dos2unix from receiving its version information as a flag.
3888 (substitute* "Makefile"
3889 (("\\$\\(UNIX2DOS\\) -q --version 2>/dev/null")
3890 "$(UNIX2DOS) -q --version 1>/dev/null")))))
3891 ;; The check phase for this package only checks the md5sums of the built
3892 ;; GRF files against the md5sums of the release versions. Because we use
3893 ;; different software versions than upstream does, some of the md5sums
3894 ;; are different. However, the package is still reproducible, it's safe
3895 ;; to disable this test.
3896 #:tests? #f
3897 #:parallel-build? #f))
3898 (native-inputs `(("dos2unix" ,dos2unix)
3899 ("gimp" ,gimp)
3900 ("grfcodec" ,grfcodec)
3901 ("nml" ,nml)
3902 ("which" ,which)
3903 ("python" ,python-2)))
3904 (home-page "http://dev.openttdcoop.org/projects/opengfx")
3905 (synopsis "Base graphics set for OpenTTD")
3906 (description
3907 "The OpenGFX projects is an implementation of the OpenTTD base grahics
3908 set that aims to ensure the best possible out-of-the-box experience.
3909
3910 OpenGFX provides you with...
3911 @enumerate
3912 @item All graphics you need to enjoy OpenTTD.
3913 @item Uniquely drawn rail vehicles for every climate.
3914 @item Completely snow-aware rivers.
3915 @item Different river and sea water.
3916 @item Snow-aware buoys.
3917 @end enumerate")
3918 (license license:gpl2)))
3919
3920 (define openttd-opensfx
3921 (package
3922 (name "openttd-opensfx")
3923 (version "0.2.3")
3924 (source
3925 (origin
3926 (method url-fetch)
3927 (uri (string-append
3928 "https://binaries.openttd.org/extra/opensfx/"
3929 version "/opensfx-" version "-source.tar.gz"))
3930 (sha256
3931 (base32
3932 "03jxgp02ks31hmsdh4xh0xcpkb70ds8jakc9pfc1y9vdrdavh4p5"))))
3933 (build-system gnu-build-system)
3934 (native-inputs
3935 `(("catcodec" ,catcodec)
3936 ("python" ,python-2)))
3937 (arguments
3938 `(#:make-flags
3939 (list (string-append "INSTALL_DIR=" %output
3940 "/share/games/openttd/baseset/opensfx"))
3941 #:phases
3942 (modify-phases %standard-phases
3943 (add-after 'unpack 'make-reproducible
3944 (lambda _
3945 ;; Remove the time dependency of the installed tarball by setting
3946 ;; the modification times if its members to 0.
3947 (substitute* "scripts/Makefile.def"
3948 (("-cf") " --mtime=@0 -cf"))
3949 #t))
3950 (delete 'configure))))
3951 (home-page "http://dev.openttdcoop.org/projects/opensfx")
3952 (synopsis "Base sounds for OpenTTD")
3953 (description "OpenSFX is a set of free base sounds for OpenTTD which make
3954 it possible to play OpenTTD without requiring the proprietary sound files from
3955 the original Transport Tycoon Deluxe.")
3956 (license license:cc-sampling-plus-1.0)))
3957
3958 (define openttd-openmsx
3959 (package
3960 (name "openttd-openmsx")
3961 (version "0.3.1")
3962 (source
3963 (origin
3964 (method url-fetch)
3965 (uri (string-append
3966 "https://binaries.openttd.org/extra/openmsx/"
3967 version "/openmsx-" version "-source.tar.gz"))
3968 (sha256
3969 (base32
3970 "0nskq97a6fsv1v6d62zf3yb8whzhqnlh3lap3va3nzvj7csjgf7c"))))
3971 (build-system gnu-build-system)
3972 (native-inputs
3973 `(("python" ,python-2)))
3974 (arguments
3975 `(#:make-flags
3976 (list (string-append "INSTALL_DIR=" %output
3977 "/share/games/openttd/baseset"))
3978 #:phases
3979 (modify-phases %standard-phases
3980 (delete 'configure)
3981 (add-after 'install 'post-install
3982 ;; Rename openmsx-version to openmsx
3983 (lambda* (#:key outputs #:allow-other-keys)
3984 (let ((install-directory (string-append (assoc-ref outputs "out")
3985 "/share/games/openttd/baseset")))
3986 (rename-file (string-append install-directory "/openmsx-" ,version)
3987 (string-append install-directory "/openmsx"))
3988 #t))))))
3989 (home-page "http://dev.openttdcoop.org/projects/openmsx")
3990 (synopsis "Music set for OpenTTD")
3991 (description "OpenMSX is a music set for OpenTTD which makes it possible
3992 to play OpenTTD without requiring the proprietary music from the original
3993 Transport Tycoon Deluxe.")
3994 (license license:gpl2)))
3995
3996 (define-public openttd
3997 (package
3998 (inherit openttd-engine)
3999 (name "openttd")
4000 (arguments
4001 `(#:configure-flags
4002 (list (string-append "--with-midi=" (assoc-ref %build-inputs "timidity++")
4003 "/bin/timidity"))
4004 ,@(substitute-keyword-arguments (package-arguments openttd-engine)
4005 ((#:phases phases)
4006 `(modify-phases ,phases
4007 (add-after 'install 'install-data
4008 (lambda* (#:key inputs outputs #:allow-other-keys)
4009 (for-each
4010 (lambda (input)
4011 (copy-recursively (assoc-ref inputs input)
4012 (assoc-ref outputs "out")))
4013 (list "opengfx" "openmsx" "opensfx"))
4014 #t)))))))
4015 (inputs
4016 `(("timidity++" ,timidity++)
4017 ,@(package-inputs openttd-engine)))
4018 (native-inputs
4019 `(("opengfx" ,openttd-opengfx)
4020 ("openmsx" ,openttd-openmsx)
4021 ("opensfx" ,openttd-opensfx)
4022 ,@(package-native-inputs openttd-engine)))))
4023
4024 (define openrct2-title-sequences
4025 (package
4026 (name "openrct2-title-sequences")
4027 (version "0.1.2")
4028 (source
4029 (origin
4030 (method url-fetch)
4031 (uri (string-append "https://github.com/OpenRCT2/title-sequences/releases/download/v"
4032 version "/title-sequence-v" version ".zip"))
4033 (file-name (string-append name "-" version ".zip"))
4034 (sha256
4035 (base32
4036 "0qbyxrsw8hlgaq0r5d7lx7an3idy4qbfv7yiw9byhldk763n9cfw"))))
4037 (build-system trivial-build-system)
4038 (native-inputs
4039 `(("bash" ,bash)
4040 ("coreutils" ,coreutils)
4041 ("unzip" ,unzip)))
4042 (arguments
4043 `(#:modules ((guix build utils))
4044 #:builder
4045 (begin
4046 (use-modules (guix build utils))
4047 (let* ((out (assoc-ref %outputs "out"))
4048 (openrct2-title-sequences (string-append out
4049 "/share/openrct2/title-sequences"))
4050 (source (assoc-ref %build-inputs "source"))
4051 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
4052 (copy-file source (string-append ,name "-" ,version ".zip"))
4053 (invoke unzip (string-append ,name "-" ,version ".zip"))
4054 (delete-file (string-append ,name "-" ,version ".zip"))
4055 (mkdir-p openrct2-title-sequences)
4056 (copy-recursively "."
4057 openrct2-title-sequences)
4058 #t))))
4059 (home-page "https://github.com/OpenRCT2/OpenRCT2")
4060 (synopsis "Title sequences for OpenRCT2")
4061 (description
4062 "openrct2-title-sequences is a set of title sequences for OpenRCT2.")
4063 (license license:gpl3+)))
4064
4065 (define openrct2-objects
4066 (package
4067 (name "openrct2-objects")
4068 (version "1.0.9")
4069 (source
4070 (origin
4071 (method url-fetch)
4072 (uri (string-append "https://github.com/OpenRCT2/objects/releases/download/v"
4073 version "/objects.zip"))
4074 (file-name (string-append name "-" version ".zip"))
4075 (sha256
4076 (base32 "02apb8h553m7d6jvysgb1zahvxc1yzyygfca2iclb21b3fhpsas4"))))
4077 (build-system trivial-build-system)
4078 (native-inputs
4079 `(("bash" ,bash)
4080 ("coreutils" ,coreutils)
4081 ("unzip" ,unzip)))
4082 (arguments
4083 `(#:modules ((guix build utils))
4084 #:builder
4085 (begin
4086 (use-modules (guix build utils))
4087 (let* ((out (assoc-ref %outputs "out"))
4088 (openrct2-objects (string-append out
4089 "/share/openrct2/objects"))
4090 (source (assoc-ref %build-inputs "source"))
4091 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
4092 (copy-file source (string-append ,name "-" ,version ".zip"))
4093 (invoke unzip (string-append ,name "-" ,version ".zip"))
4094 (delete-file (string-append ,name "-" ,version ".zip"))
4095 (mkdir-p openrct2-objects)
4096 (copy-recursively "."
4097 openrct2-objects)
4098 #t))))
4099 (home-page "https://github.com/OpenRCT2/OpenRCT2")
4100 (synopsis "Objects for OpenRCT2")
4101 (description
4102 "openrct2-objects is a set of objects for OpenRCT2.")
4103 (license license:gpl3+)))
4104
4105 (define-public openrct2
4106 (package
4107 (name "openrct2")
4108 (version "0.2.6")
4109 (source
4110 (origin
4111 (method git-fetch)
4112 (uri (git-reference
4113 (url "https://github.com/OpenRCT2/OpenRCT2")
4114 (commit (string-append "v" version))))
4115 (file-name (git-file-name name version))
4116 (sha256
4117 (base32 "1vikbkg3wh5ngzdfilb6irbh6nqinf138qpdz8wz9izlvl8s36k4"))))
4118 (build-system cmake-build-system)
4119 (arguments
4120 `(#:configure-flags (list "-DDOWNLOAD_OBJECTS=OFF"
4121 "-DDOWNLOAD_TITLE_SEQUENCES=OFF")
4122 #:tests? #f ; tests require network access
4123 #:phases
4124 (modify-phases %standard-phases
4125 (add-after 'unpack 'fix-usr-share-paths&add-data
4126 (lambda* (#:key inputs outputs #:allow-other-keys)
4127 (let ((titles (assoc-ref inputs "openrct2-title-sequences"))
4128 (objects (assoc-ref inputs "openrct2-objects")))
4129 ;; Fix some references to /usr/share.
4130 (substitute* "src/openrct2/platform/Platform.Linux.cpp"
4131 (("/usr/share")
4132 (string-append (assoc-ref %outputs "out") "/share")))
4133 (copy-recursively
4134 (string-append titles "/share/openrct2/title-sequences")
4135 "data/title")
4136 (copy-recursively
4137 (string-append objects "/share/openrct2/objects")
4138 "data/object"))))
4139 (add-before 'configure 'get-rid-of-errors
4140 (lambda _
4141 ;; Don't treat warnings as errors.
4142 (substitute* "CMakeLists.txt"
4143 (("-Werror") ""))
4144 #t)))))
4145 (inputs `(("curl" ,curl)
4146 ("fontconfig" ,fontconfig)
4147 ("freetype" ,freetype)
4148 ("icu4c" ,icu4c)
4149 ("jansson" ,jansson)
4150 ("libpng" ,libpng)
4151 ("libzip" ,libzip)
4152 ("mesa" ,mesa)
4153 ("openrct2-objects" ,openrct2-objects)
4154 ("openrct2-title-sequences" ,openrct2-title-sequences)
4155 ("openssl" ,openssl)
4156 ("sdl2" ,sdl2)
4157 ("speexdsp" ,speexdsp)
4158 ("zlib" ,zlib)))
4159 (native-inputs
4160 `(("pkg-config" ,pkg-config)))
4161 (home-page "https://github.com/OpenRCT2/OpenRCT2")
4162 (synopsis "Free software re-implementation of RollerCoaster Tycoon 2")
4163 (description "OpenRCT2 is a free software re-implementation of
4164 RollerCoaster Tycoon 2 (RCT2). The gameplay revolves around building and
4165 maintaining an amusement park containing attractions, shops and facilities.
4166
4167 Note that this package does @emph{not} provide the game assets (sounds,
4168 images, etc.)")
4169 ;; See <https://github.com/OpenRCT2/OpenRCT2/wiki/Required-RCT2-files>
4170 ;; regarding assets.
4171 (license license:gpl3+)))
4172
4173 (define-public pinball
4174 (package
4175 (name "pinball")
4176 (version "0.3.1")
4177 (source
4178 (origin (method url-fetch)
4179 (uri (string-append "mirror://sourceforge/pinball/pinball/"
4180 "pinball-" version "/"
4181 "pinball-" version ".tar.gz"))
4182 (sha256
4183 (base32
4184 "1f2whlrfidwfh8lvr8cspcyirc6840r5d1ajm7x99qmngygrhixs"))
4185 (patches (search-patches "pinball-const-fix.patch"
4186 "pinball-cstddef.patch"
4187 "pinball-missing-separators.patch"
4188 "pinball-src-deps.patch"
4189 "pinball-system-ltdl.patch"))))
4190 (build-system gnu-build-system)
4191 (inputs
4192 `(("glu" ,glu)
4193 ("mesa" ,mesa)
4194 ("sdl" ,sdl)
4195 ("sdl-image" ,sdl-image)
4196 ("sdl-mixer" ,sdl-mixer)))
4197 (arguments
4198 '(#:configure-flags
4199 (list (string-append "CPPFLAGS=-I"
4200 (assoc-ref %build-inputs "sdl-image")
4201 "/include/SDL -I"
4202 (assoc-ref %build-inputs "sdl-mixer")
4203 "/include/SDL"))))
4204 (home-page "http://pinball.sourceforge.net")
4205 (synopsis "Pinball simulator")
4206 (description "The Emilia Pinball Project is a pinball simulator. There
4207 are only two levels to play with, but they are very addictive.")
4208 (license license:gpl2)))
4209
4210 (define-public pioneers
4211 (package
4212 (name "pioneers")
4213 (version "15.6")
4214 (source (origin
4215 (method url-fetch)
4216 (uri (string-append "https://downloads.sourceforge.net/pio/"
4217 "pioneers-" version ".tar.gz"))
4218 (sha256
4219 (base32
4220 "07b3xdd81n8ybsb4fzc5lx0813y9crzp1hj69khncf4faj48sdcs"))))
4221 (build-system gnu-build-system)
4222 (inputs `(("avahi" ,avahi)
4223 ("gtk+" ,gtk+)
4224 ("librsvg" ,librsvg)))
4225 (native-inputs `(("intltool" ,intltool)
4226 ("itstool" ,itstool)
4227 ("libxml2" ,libxml2)
4228 ("pkg-config" ,pkg-config)))
4229 (synopsis "Board game inspired by The Settlers of Catan")
4230 (description "Pioneers is an emulation of the board game The Settlers of
4231 Catan. It can be played on a local network, on the internet, and with AI
4232 players.")
4233 (home-page "http://pio.sourceforge.net/")
4234 (license license:gpl2+)))
4235
4236 (define-public einstein
4237 (package
4238 (name "einstein")
4239 (version "2.0")
4240 (source (origin
4241 (method url-fetch)
4242 (uri (string-append "mirror://debian/pool/main/e/"
4243 "einstein/einstein_2.0.dfsg.2.orig.tar.gz"))
4244 (sha256
4245 (base32
4246 "1hxrlv6n8py48j487i6wbb4n4vd55w0na69r7ccmmr9vmrsw5mlk"))
4247 (patches (search-patches "einstein-build.patch"))))
4248 (build-system gnu-build-system)
4249 (inputs
4250 `(("freetype" ,freetype)
4251 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf)))
4252 ("zlib" ,zlib)))
4253 (native-inputs
4254 `(("font-dejavu" ,font-dejavu)))
4255 (arguments
4256 `(#:tests? #f ; no check target
4257 #:phases
4258 (modify-phases %standard-phases
4259 (replace 'configure
4260 (lambda* (#:key outputs inputs #:allow-other-keys)
4261 (let ((out (assoc-ref outputs "out"))
4262 (dejavu (string-append (assoc-ref inputs "font-dejavu")
4263 "/share/fonts/truetype/DejaVuSans.ttf")))
4264 (substitute* "Makefile"
4265 (("PREFIX=/usr/local") (string-append "PREFIX=" out)))
4266 ;; The patch above registers a free font for use by the binary,
4267 ;; but the font is copied during the compile phase into a
4268 ;; resources file, so we need to make the ttf file available.
4269 (symlink dejavu "res/DejaVuSans.ttf")
4270 #t))))))
4271 (synopsis "Logic puzzle game")
4272 (description "The goal of this logic game is to open all cards in a 6x6
4273 grid, using a number of hints as to their relative position. The game idea
4274 is attributed to Albert Einstein.")
4275 ;; The original home page has disappeared.
4276 (home-page (string-append "http://web.archive.org/web/20120521062745/"
4277 "http://games.flowix.com/en/index.html"))
4278 ;; License according to
4279 ;; http://web.archive.org/web/20150222180355/http://www.babichev.info/en/projects/index.html
4280 ;; The source code is a DFSG-sanitized tarball and does not contain any
4281 ;; license information.
4282 (license license:gpl3+)))
4283
4284 (define-public powwow
4285 (package
4286 (name "powwow")
4287 (version "1.2.19")
4288 (source (origin
4289 (method url-fetch)
4290 (uri (string-append
4291 "https://www.hoopajoo.net/static/projects/powwow-"
4292 version ".tar.gz"))
4293 (sha256
4294 (base32
4295 "10rjl63hmf62qslyhzqrbw3i2zf09dgxv65avhj0iiz0m4pbc9wy"))))
4296 (inputs
4297 `(("ncurses" ,ncurses)))
4298 (build-system gnu-build-system)
4299 (home-page "https://www.hoopajoo.net/projects/powwow.html")
4300 (synopsis "MUD and telnet client")
4301 (description
4302 "POWWOW is a client software which can be used for telnet as well as for
4303 @dfn{Multi-User Dungeon} (MUD). Additionally it can serve as a nice client for
4304 the chat server psyced with the specific config located at
4305 http://lavachat.symlynx.com/unix/")
4306 (license license:gpl2+)))
4307
4308 (define-public red-eclipse
4309 (let ((release "2.0.0")
4310 (revision 0))
4311 (package
4312 (name "red-eclipse")
4313 (version (if (zero? revision)
4314 release
4315 (string-append release "-"
4316 (number->string revision))))
4317 (source
4318 (origin
4319 (method git-fetch)
4320 (uri (git-reference
4321 (url "https://github.com/redeclipse/base")
4322 (commit (string-append "v" release))
4323 (recursive? #t))) ; for game data
4324 (file-name (git-file-name name version))
4325 (sha256
4326 (base32 "0sz0mqhwx8r9n4mk3qrxw420nlsm3y0n48gd0lazgd64lfqjh3ab"))
4327 (modules '((guix build utils)))
4328 (snippet
4329 ;; Remove proprietary libraries and other pre-compiled binaries.
4330 '(begin
4331 (delete-file-recursively "bin")
4332 #t))))
4333 (build-system gnu-build-system)
4334 (arguments
4335 `(#:tests? #f ; no check target
4336 #:make-flags (list "CC=gcc" "-Csrc"
4337 (string-append "INSTDIR="
4338 (assoc-ref %outputs "out") "/bin")
4339 (string-append "prefix="
4340 (assoc-ref %outputs "out")))
4341 #:phases
4342 (modify-phases %standard-phases
4343 (add-after 'unpack 'add-store-data-package-path-as-default
4344 (lambda* (#:key outputs #:allow-other-keys)
4345 (substitute* "src/engine/server.cpp"
4346 (("data = \"data\"")
4347 (string-append "data = \""
4348 (assoc-ref outputs "out")
4349 "/share/redeclipse/data\"")))
4350 #t))
4351 (delete 'configure) ; no configure script
4352 (add-after 'set-paths 'set-sdl-paths
4353 (lambda* (#:key inputs #:allow-other-keys)
4354 (setenv "CPATH"
4355 (string-append (assoc-ref inputs "sdl-union")
4356 "/include/SDL2:"
4357 (or (getenv "CPATH") "")))
4358 #t))
4359 (add-after 'install 'copy-data
4360 (lambda* (#:key outputs #:allow-other-keys)
4361 (let ((out (assoc-ref outputs "out")))
4362 (copy-recursively "config"
4363 (string-append out "/config"))
4364 (copy-file "doc/examples/servinit.cfg"
4365 (string-append out "/config/servinit.cfg"))
4366 (copy-recursively "data"
4367 (string-append out "/share/redeclipse/data"))
4368 (mkdir-p (string-append out "/lib/redeclipse"))
4369 (symlink (string-append out "/share/redeclipse/data")
4370 (string-append out "/lib/redeclipse/data")))
4371 #t))
4372 (add-after 'copy-data 'wrap-program
4373 (lambda* (#:key inputs outputs #:allow-other-keys)
4374 (let* ((out (assoc-ref outputs "out"))
4375 (bin (string-append out "/bin")))
4376 (with-directory-excursion bin
4377 (rename-file "redeclipse_linux"
4378 ".redeclipse_linux-real")
4379 (rename-file "redeclipse_server_linux"
4380 ".redeclipse_server_linux-real")
4381 (call-with-output-file "redeclipse_linux"
4382 (lambda (port)
4383 (format port "#!~a/bin/sh
4384 # Run the thing from its home, otherwise it just bails out.
4385 cd \"~a\"
4386 exec -a \"$0\" ~a/.redeclipse_linux-real~%"
4387 (assoc-ref inputs "bash") ;implicit input
4388 (string-append out)
4389 (string-append bin))))
4390 (call-with-output-file "redeclipse_server_linux"
4391 (lambda (port)
4392 (format port "#!~a/bin/sh
4393 # Run the thing from its home, otherwise it just bails out.
4394 cd \"~a\"
4395 exec -a \"$0\" ~a/.redeclipse_server_linux-real~%"
4396 (assoc-ref inputs "bash") ;implicit input
4397 (string-append out)
4398 (string-append bin))))
4399 (chmod "redeclipse_linux" #o555)
4400 (chmod "redeclipse_server_linux" #o555)))
4401 #t)))))
4402 (native-inputs
4403 `(("pkg-config" ,pkg-config)))
4404 (inputs
4405 `(("curl" ,curl)
4406 ("freetype" ,freetype)
4407 ("glu" ,glu)
4408 ("sdl-union" ,(sdl-union (list sdl2
4409 sdl2-image
4410 sdl2-mixer)))))
4411 (home-page "https://redeclipse.net/")
4412 (synopsis "Arena shooter derived from the Cube 2 engine")
4413 (description
4414 "Red Eclipse is an arena shooter, created from the Cube2 engine.
4415 Offering an innovative parkour system and distinct but all potent weapons,
4416 Red Eclipse provides fast paced and accessible gameplay.")
4417 ;; The engine is under Zlib; data files are covered by the other
4418 ;; licenses. More details at file:///doc/all-licenses.txt.
4419 (license (list license:expat
4420 license:zlib
4421 license:cc-by-sa4.0
4422 license:cc-by-sa3.0
4423 license:cc-by3.0
4424 license:cc0
4425 license:public-domain
4426 license:silofl1.1)))))
4427
4428 (define-public grue-hunter
4429 (package
4430 (name "grue-hunter")
4431 (version "1.0")
4432 (source (origin
4433 (method url-fetch)
4434 (uri (string-append "https://jxself.org/grue-hunter.tar.gz"))
4435 (sha256
4436 (base32
4437 "1hjcpy5439qs3v2zykis7hsi0i17zjs62gks3zd8mnfw9ni4i2h3"))))
4438 (build-system trivial-build-system) ; no Makefile.PL
4439 (arguments `(#:modules ((guix build utils))
4440 #:builder
4441 (begin
4442 (use-modules (guix build utils))
4443 (use-modules (srfi srfi-1))
4444
4445 (let* ((tarball (assoc-ref %build-inputs "tarball"))
4446 (perl (string-append (assoc-ref %build-inputs
4447 "perl")
4448 "/bin"))
4449 (gzip (string-append (assoc-ref %build-inputs
4450 "gzip")
4451 "/bin/gzip"))
4452 (tar (string-append (assoc-ref %build-inputs
4453 "tar")
4454 "/bin/tar"))
4455 (out (assoc-ref %outputs "out"))
4456 (bin (string-append out "/bin"))
4457 (doc (string-append out
4458 "/share/doc/grue-hunter")))
4459 (copy-file tarball "grue-hunter.tar.gz")
4460 (invoke gzip "-d" "grue-hunter.tar.gz")
4461 (invoke tar "xvf" "grue-hunter.tar")
4462
4463 (mkdir-p bin)
4464 (copy-file "grue-hunter/gh.pl"
4465 (string-append bin "/grue-hunter"))
4466 (patch-shebang (string-append bin "/grue-hunter")
4467 (list perl))
4468
4469 (install-file "grue-hunter/AGPLv3.txt" doc)
4470
4471 #t))))
4472 (inputs `(("perl" ,perl)
4473 ("tar" ,tar)
4474 ("gzip" ,gzip)
4475 ("tarball" ,source)))
4476 (home-page "https://jxself.org/grue-hunter.shtml")
4477 (synopsis "Text adventure game")
4478 (description
4479 "Grue Hunter is a text adventure game written in Perl. You must make
4480 your way through an underground cave system in search of the Grue. Can you
4481 capture it and get out alive?")
4482 (license license:agpl3+)))
4483
4484 (define-public lierolibre
4485 (package
4486 (name "lierolibre")
4487 (version "0.5")
4488 (source (origin
4489 (method url-fetch)
4490 (uri (string-append "https://launchpad.net/lierolibre/trunk/"
4491 version "/+download/lierolibre-"
4492 version ".tar.xz"))
4493 (sha256
4494 (base32
4495 "1cf1gvsn4qq190lrf9k5bpjnqwlcfw7pajvdnh7z5r4jqw0rsbl9"))
4496 (patches
4497 (search-patches "lierolibre-check-unaligned-access.patch"
4498 "lierolibre-try-building-other-arch.patch"
4499 "lierolibre-remove-arch-warning.patch"
4500 "lierolibre-newer-libconfig.patch"
4501 "lierolibre-is-free-software.patch"))
4502 (modules '((guix build utils)))
4503 (snippet
4504 '(begin
4505 ;; Delete pre-compiled files.
4506 (delete-file "data/LIERO.CHR")
4507 (delete-file "data/LIERO.SND")
4508 #t))))
4509 (build-system gnu-build-system)
4510 (native-inputs
4511 `(("imagemagick" ,imagemagick)
4512 ("pkg-config" ,pkg-config)
4513 ("util-linux" ,util-linux)
4514 ("sox" ,sox)))
4515 (inputs
4516 `(("boost" ,boost)
4517 ("libconfig" ,libconfig)
4518 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
4519 ("zlib" ,zlib)))
4520 (home-page "https://gitlab.com/lierolibre/lierolibre")
4521 (synopsis "Old-school earthworm action game")
4522 (description
4523 "lierolibre is an earthworm action game where you fight another player
4524 (or the computer) underground using a wide array of weapons.
4525
4526 Features:
4527 @itemize
4528 @item 2 worms, 40 weapons, great playability, two game modes: Kill'em All
4529 and Game of Tag, plus AI-players without true intelligence!
4530 @item Dat nostalgia.
4531 @item Extensions via a hidden F1 menu:
4532 @itemize
4533 @item Replays
4534 @item Game controller support
4535 @item Powerlevel palettes
4536 @end itemize
4537 @item Ability to write game variables to plain text files.
4538 @item Ability to load game variables from both EXE and plain text files.
4539 @item Scripts to extract and repack graphics, sounds and levels.
4540 @end itemize
4541
4542 To switch between different window sizes, use F6, F7 and F8, to switch to
4543 fullscreen, use F5 or Alt+Enter.")
4544 ;; Code mainly BSD-2, some parts under Boost 1.0. All assets are WTFPL2.
4545 (license (list license:bsd-2 license:boost1.0 license:wtfpl2))))
4546
4547 (define-public tennix
4548 (package
4549 (name "tennix")
4550 (version "1.3.1")
4551 (source
4552 (origin
4553 (method git-fetch)
4554 (uri (git-reference
4555 (url "https://repo.or.cz/tennix.git")
4556 (commit (string-append "tennix-" version))))
4557 (file-name (git-file-name name version))
4558 (sha256
4559 (base32 "02cj4lrdrisal5s9pnbf2smx7qz9czczjzndfkhfx0qy67b957sk"))
4560 ;; Remove non-free images.
4561 (modules '((guix build utils)))
4562 (snippet
4563 '(begin
4564 (for-each delete-file
4565 '("data/loc_training_camp.png"
4566 "data/loc_austrian_open.png"
4567 "data/loc_olympic_green_tennis.png"))
4568 #t))))
4569 (build-system gnu-build-system)
4570 (arguments
4571 `(#:tests? #f ;no test
4572 #:phases
4573 (modify-phases %standard-phases
4574 (add-after 'unpack 'fix-include
4575 (lambda _
4576 (substitute* '("src/graphics.h" "src/sound.h")
4577 (("#include \"(SDL_(image|ttf|mixer)\\.h)\"" _ header)
4578 (string-append "#include \"SDL/" header "\"")))
4579 (substitute* '("src/tennix.h" "src/network.h" "src/SDL_rotozoom.h")
4580 (("#include <SDL.h>") "#include <SDL/SDL.h>")
4581 (("#include <SDL_net.h>") "#include <SDL/SDL_net.h>"))
4582 #t))
4583 (add-after 'unpack 'locate-install
4584 ;; Build process cannot expand "$(INSTALL)" in Makefile.
4585 (lambda _
4586 (substitute* "makefile"
4587 (("^CONFIGURE_OUTPUT :=.*" all)
4588 (string-append "INSTALL := install -c\n" all)))
4589 #t))
4590 (replace 'configure
4591 ;; The "configure" script is picky about the arguments it
4592 ;; gets. Call it ourselves.
4593 (lambda _
4594 (invoke "./configure" "--prefix" (assoc-ref %outputs "out")))))))
4595 (native-inputs
4596 `(("which" ,which)))
4597 (inputs
4598 `(("python" ,python-wrapper)
4599 ("sdl" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf sdl-net)))))
4600 (home-page "http://icculus.org/tennix/")
4601 (synopsis "Play tennis against the computer or a friend")
4602 (description "Tennix is a 2D tennis game. You can play against the
4603 computer or against another player using the keyboard. The game runs
4604 in-window at 640x480 resolution or fullscreen.")
4605 ;; Project is licensed under GPL2+ terms. It includes images
4606 ;; released under Public Domain terms, and SDL_rotozoom, released
4607 ;; under LGPL2.1 terms.
4608 (license (list license:gpl2+ license:public-domain license:lgpl2.1))))
4609
4610 (define-public warzone2100
4611 (package
4612 (name "warzone2100")
4613 (version "3.4.1")
4614 (source
4615 (origin
4616 (method url-fetch)
4617 (uri (string-append "mirror://sourceforge/warzone2100/releases/"
4618 version
4619 "/warzone2100_src.tar.xz"))
4620 (sha256
4621 (base32 "0savalmw1kp1sf8vg5aqrl5hc77p4jacxy5y9qj8k2hi2vqdfb7a"))
4622 (modules '((guix build utils)))
4623 (snippet
4624 '(begin
4625 (with-directory-excursion "3rdparty"
4626 (for-each
4627 delete-file-recursively
4628 '("discord-rpc"
4629 "miniupnp"
4630 "utfcpp")))
4631 #t))))
4632 (build-system cmake-build-system)
4633 (arguments
4634 `(#:configure-flags '("-DWZ_DISTRIBUTOR=Guix"
4635 "-DENABLE_DISCORD=off")
4636 #:tests? #f ; TODO: Tests seem to be broken, configure.ac is missing.
4637 #:phases
4638 (modify-phases %standard-phases
4639 (add-after 'unpack 'fix-utfcpp-include
4640 (lambda _
4641 (substitute* "lib/framework/wzstring.cpp"
4642 (("<utfcpp/source/utf8.h>") "<utf8.h>"))
4643 #t))
4644 (add-after 'unpack 'link-tests-with-qt
4645 (lambda _
4646 (substitute* "tests/Makefile.am"
4647 (("(framework_linktest_LDADD|maptest_LDADD) = " prefix)
4648 (string-append prefix "$(QT5_LIBS) ")))
4649 #t))
4650 (add-after 'unpack 'fix-ivis-linktest
4651 (lambda _
4652 (substitute* "tests/ivis_linktest.cpp"
4653 (("iV_DrawTextRotated.*;")
4654 (string-append "iV_DrawTextRotated(\"Press ESC to exit.\", "
4655 "100, 100, 0.0f, font_regular);")))
4656 #t)))))
4657 (native-inputs `(("asciidoc" ,asciidoc)
4658 ("asciidoctor" ,ruby-asciidoctor)
4659 ("gettext" ,gettext-minimal)
4660 ("pkg-config" ,pkg-config)
4661 ("unzip" ,unzip)
4662 ;; 7z is used to create .zip archive, not `zip' as in version 3.2.*.
4663 ("p7zip" ,p7zip)))
4664 (inputs `(("curl" ,curl)
4665 ("fontconfig" ,fontconfig)
4666 ("freetype" ,freetype)
4667 ("glew" ,glew)
4668 ("harfbuzz" ,harfbuzz)
4669 ("libtheora" ,libtheora)
4670 ("libvorbis" ,libvorbis)
4671 ("libxrandr" ,libxrandr)
4672 ("libsodium" ,libsodium)
4673 ("miniupnpc" ,miniupnpc)
4674 ("openal" ,openal)
4675 ("physfs" ,physfs)
4676 ("qtbase" ,qtbase)
4677 ("qtscript" ,qtscript)
4678 ("openssl" ,openssl)
4679 ("sdl2" ,sdl2)
4680 ("utfcpp" ,utfcpp)))
4681 (home-page "https://wz2100.net")
4682 (synopsis "3D Real-time strategy and real-time tactics game")
4683 (description
4684 "Warzone 2100 offers campaign, multi-player, and single-player skirmish
4685 modes. An extensive tech tree with over 400 different technologies, combined
4686 with the unit design system, allows for a wide variety of possible units and
4687 tactics.")
4688 ;; Everything is GPLv2+ unless otherwise specified in COPYING.NONGPL
4689 (license (list license:bsd-3
4690 license:cc0
4691 license:cc-by-sa3.0
4692 license:expat
4693 license:gpl2+
4694 license:lgpl2.1+))))
4695
4696 (define-public widelands
4697 (package
4698 (name "widelands")
4699 (version "21")
4700 (source
4701 (origin
4702 (method url-fetch)
4703 (uri (string-append "https://launchpad.net/widelands/"
4704 "build" version "/build" version "/+download/"
4705 "widelands-build" version "-source.tar.gz"))
4706 (sha256
4707 (base32 "0mz3jily0w1zxxqbnkqrp6hl88xhrwzbil9crq7gpcwidx60w7k0"))
4708 (modules '((guix build utils)))
4709 (snippet
4710 '(begin
4711 (delete-file-recursively "src/third_party/minizip")
4712 #t))
4713 (patches
4714 ;; Use system Minizip. Patch is provided by Debian, and discussed
4715 ;; upstream at <https://github.com/widelands/widelands/issues/399>.
4716 (search-patches "widelands-system-wide_minizip.patch"))))
4717 (build-system cmake-build-system)
4718 (arguments
4719 `(#:configure-flags
4720 (let* ((out (assoc-ref %outputs "out"))
4721 (share (string-append out "/share")))
4722 (list (string-append "-DCMAKE_INSTALL_PREFIX=" out "/bin")
4723 (string-append "-DWL_INSTALL_BASEDIR=" share "/widelands")
4724 (string-append "-DWL_INSTALL_DATADIR=" share "/widelands")
4725 "-DOPTION_BUILD_WEBSITE_TOOLS=OFF"
4726 ;; CMakeLists.txt does not handle properly RelWithDebInfo build
4727 ;; type. When used, no game data is installed!
4728 "-DCMAKE_BUILD_TYPE=Release"))
4729 #:phases
4730 (modify-phases %standard-phases
4731 (add-after 'unpack 'unbundle-fonts
4732 ;; Unbundle fonts already packaged in Guix. XXX: missing fonts are
4733 ;; amiri, Culmus, mmrCensus, Nakula, and Sinhala.
4734 (lambda* (#:key inputs #:allow-other-keys)
4735 (with-directory-excursion "data/i18n/fonts"
4736 (for-each (lambda (font)
4737 (delete-file-recursively font)
4738 (symlink (string-append (assoc-ref inputs font)
4739 "/share/fonts/truetype")
4740 font))
4741 '("DejaVu" "MicroHei")))
4742 #t)))))
4743 (native-inputs
4744 `(("gettext" ,gettext-minimal)
4745 ("python" ,python-wrapper)))
4746 (inputs
4747 `(("boost" ,boost)
4748 ("glew" ,glew)
4749 ("icu4c" ,icu4c)
4750 ("libpng" ,libpng)
4751 ("minizip" ,minizip)
4752 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
4753 ("zlib" ,zlib)
4754 ;; Fonts for the ‘unbundle-fonts’ phase. Case matters in name!
4755 ("DejaVu" ,font-dejavu)
4756 ("MicroHei" ,font-wqy-microhei)))
4757 (home-page "https://www.widelands.org/")
4758 (synopsis "Fantasy real-time strategy game")
4759 (description
4760 "In Widelands, you are the regent of a small clan. You start out with
4761 nothing but your headquarters, where all your resources are stored.
4762
4763 In the course of the game, you will build an ever growing settlement. Every
4764 member of your clan will do his or her part to produce more resources---wood,
4765 food, iron, gold and more---to further this growth. The economic network is
4766 complex and different in the four tribes (Barbarians, Empire, Atlanteans, and
4767 Frisians).
4768
4769 As you are not alone in the world, you will meet other clans sooner or later.
4770 Some of them may be friendly and you may eventually trade with them. However,
4771 if you want to rule the world, you will have to train soldiers and fight.
4772
4773 Widelands offers single-player mode with different campaigns; the campaigns
4774 all tell stories of tribes and their struggle in the Widelands universe!
4775 However, settling really starts when you unite with friends over the Internet
4776 or LAN to build up new empires together---or to crush each other in the dusts
4777 of war. Widelands also offers an Artificial Intelligence to challenge you.")
4778 ;; Game is released as GPL2+. Some parts, e.g., art, are released under
4779 ;; different licenses.
4780 (license (list license:gpl2+
4781 license:expat ;src/third_party/eris
4782 license:silofl1.1 ;Widelands.ttf
4783 license:cc-by-sa3.0)))) ;some music files
4784
4785 (define-public starfighter
4786 (package
4787 (name "starfighter")
4788 (version "2.3.2")
4789 (source (origin
4790 (method url-fetch)
4791 (uri (string-append
4792 "https://github.com/pr-starfighter/starfighter/releases"
4793 "/download/v" version "/starfighter-"
4794 version "-src.tar.gz"))
4795 (sha256
4796 (base32
4797 "1nvi277cazsw36b6nhd5nmk0cjvm71rlxasy24mf18j7fsvq9vp8"))))
4798 (build-system gnu-build-system)
4799 (native-inputs
4800 `(("pkg-config" ,pkg-config)))
4801 (inputs
4802 `(("pango" ,pango)
4803 ("sdl2" ,sdl2)
4804 ("sdl2-image" ,sdl2-image)
4805 ("sdl2-mixer" ,sdl2-mixer)
4806 ("sdl2-ttf" ,sdl2-ttf)))
4807 (home-page "https://pr-starfighter.github.io/")
4808 (synopsis "2D scrolling shooter game")
4809 (description
4810 "In the year 2579, the intergalactic weapons corporation, WEAPCO, has
4811 dominated the galaxy. Guide Chris Bainfield and his friend Sid Wilson on
4812 their quest to liberate the galaxy from the clutches of WEAPCO. Along the
4813 way, you will encounter new foes, make new allies, and assist local rebels
4814 in strikes against the evil corporation.")
4815 ;; gfx and music are under CC-BY 3.0, CC-BY-SA 3.0, CC0 or Public Domain.
4816 (license (list license:gpl3+
4817 license:cc-by3.0
4818 license:cc-by-sa3.0
4819 license:cc0
4820 license:public-domain))))
4821
4822 (define-public chromium-bsu
4823 (package
4824 (name "chromium-bsu")
4825 (version "0.9.16.1")
4826 (source (origin
4827 (method url-fetch)
4828 (uri (string-append "mirror://sourceforge/chromium-bsu"
4829 "/Chromium B.S.U. source code/"
4830 "chromium-bsu-" version ".tar.gz"))
4831 (sha256
4832 (base32
4833 "0jk2w5b6s6nkzri585bbz16cif2fhqcnl5l1mq3rd98r9nil3hd1"))))
4834 (build-system gnu-build-system)
4835 (native-inputs `(("pkg-config" ,pkg-config)))
4836 (inputs `(("gettext" ,gettext-minimal)
4837 ("glu" ,glu)
4838 ("quesoglc" ,quesoglc)
4839 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))))
4840 (home-page "http://chromium-bsu.sourceforge.net/")
4841 (synopsis "Fast-paced, arcade-style, top-scrolling space shooter")
4842 (description
4843 "In this game you are the captain of the cargo ship Chromium B.S.U. and
4844 are responsible for delivering supplies to the troops on the front line. Your
4845 ship has a small fleet of robotic fighters which you control from the relative
4846 safety of the Chromium vessel.")
4847 ;; Clarified Artistic License for everything but sound, which is covered
4848 ;; by the Expat License.
4849 (license (list license:clarified-artistic license:expat))))
4850
4851 (define-public tuxpaint
4852 (package
4853 (name "tuxpaint")
4854 (version "0.9.23") ;keep VER_DATE below in sync
4855 (source
4856 (origin
4857 (method url-fetch)
4858 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint/"
4859 version "/tuxpaint-" version ".tar.gz"))
4860 (sha256
4861 (base32
4862 "09k9pxi88r3dx6dyjwf9h85d4qpva4i29qz63dc558hg9v21k69l"))
4863 (modules '((guix build utils)))
4864 (snippet
4865 '(begin
4866 ;; Remove win32 directory which contains binary dll's and the
4867 ;; deprecated visualc directory.
4868 (for-each delete-file-recursively '("win32" "visualc"))
4869 (substitute* "Makefile"
4870 ;; Do not rely on $(GPERF) being an absolute file name
4871 (("\\[ -x \\$\\(GPERF\\) \\]")
4872 "$(GPERF) --version >/dev/null 2>&1"))
4873 #t))
4874 (patches (search-patches "tuxpaint-stamps-path.patch"))))
4875 (build-system gnu-build-system)
4876 (native-inputs
4877 `(("gperf" ,gperf)
4878 ("pkg-config" ,pkg-config)))
4879 (inputs
4880 `(("cairo" ,cairo)
4881 ("fribidi" ,fribidi)
4882 ("gettext" ,gettext-minimal)
4883 ("libpng" ,libpng)
4884 ("librsvg" ,librsvg)
4885 ("libpaper" ,libpaper)
4886 ("netpbm" ,netpbm)
4887 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf sdl-image)))))
4888 ;; TODO: Use system fonts rather than those in data/fonts
4889 (arguments
4890 `(#:make-flags `("VER_DATE=2018-09-02"
4891 "GPERF=gperf" "CC=gcc"
4892 "SDL_PCNAME=sdl SDL_image SDL_mixer SDL_ttf"
4893 ,(string-append "PREFIX=" %output)
4894 "KDE_PREFIX=$(PREFIX)/share/applications"
4895 "KDE_ICON_PREFIX=$(PREFIX)/share/icons/"
4896 "COMPLETIONDIR=$(PREFIX)/etc/bash_completion.d")
4897 #:parallel-build? #f ;fails on some systems
4898 #:tests? #f ;No tests
4899 #:phases (modify-phases %standard-phases
4900 (delete 'configure) ;no configure phase
4901 (add-before 'install 'no-sys-cache
4902 (lambda _ ;do not rebuild system conf cache
4903 (substitute* "Makefile"
4904 (("kbuildsycoca4") ""))
4905 #t))
4906 (add-after 'install 'fix-import
4907 (lambda* (#:key inputs outputs #:allow-other-keys)
4908 (let* ((out (assoc-ref outputs "out"))
4909 (net (assoc-ref inputs "netpbm"))
4910 (tpi (string-append out "/bin/tuxpaint-import")))
4911 (substitute* tpi
4912 ;; Point to installation prefix so that the default
4913 ;; configure file is found.
4914 (("/usr/local") out))
4915 ;; tuxpaint-import uses a bunch of programs from
4916 ;; netpbm, so make sure it knows where those are
4917 (wrap-program tpi
4918 `("PATH" ":" prefix
4919 (,(string-append net "/bin"))))))))))
4920 (native-search-paths
4921 (list (search-path-specification
4922 (variable "TUXPAINT_STAMPS_PATH")
4923 (files '("share/tuxpaint/stamps")))))
4924 (home-page "http://www.tuxpaint.org")
4925 (synopsis "Drawing software for children")
4926 (description
4927 "Tux Paint is a free drawing program designed for young children (kids
4928 ages 3 and up). It has a simple, easy-to-use interface; fun sound effects;
4929 and an encouraging cartoon mascot who helps guide children as they use the
4930 program. It provides a blank canvas and a variety of drawing tools to help
4931 your child be creative.")
4932 (license license:gpl2+)))
4933
4934 (define-public tuxpaint-stamps
4935 (package
4936 (name "tuxpaint-stamps")
4937 (version "2018.09.01")
4938 (source
4939 (origin
4940 (method url-fetch)
4941 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-stamps/"
4942 (string-map (λ (x) (if (eq? x #\.) #\- x)) version)
4943 "/tuxpaint-stamps-" version ".tar.gz"))
4944 (sha256
4945 (base32
4946 "1skr23k27yj3vgwfazpzxp90lb2a278gxrkr3bxw7az6zpkmb3yp"))))
4947 (build-system trivial-build-system)
4948 (native-inputs
4949 `(("tar" ,tar)
4950 ("gzip" ,gzip)))
4951 (arguments
4952 `(#:modules ((guix build utils))
4953 #:builder (begin
4954 (use-modules (guix build utils))
4955 (setenv "PATH"
4956 (string-append
4957 (assoc-ref %build-inputs "tar") "/bin" ":"
4958 (assoc-ref %build-inputs "gzip") "/bin"))
4959 (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
4960 (chdir (string-append ,name "-" ,version))
4961 (let ((dir (string-append %output "/share/tuxpaint/stamps")))
4962 (mkdir-p dir)
4963 (copy-recursively "stamps" dir))
4964 #t)))
4965 (home-page (package-home-page tuxpaint))
4966 (synopsis "Stamp images for Tux Paint")
4967 (description
4968 "This package contains a set of \"Rubber Stamp\" images which can be used
4969 with the \"Stamp\" tool within Tux Paint.")
4970 (license license:gpl2+)))
4971
4972 (define-public tuxpaint-config
4973 (package
4974 (name "tuxpaint-config")
4975 (version "0.0.14") ;keep VER_DATE below in sync
4976 (source
4977 (origin
4978 (method url-fetch)
4979 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-config/"
4980 version "/tuxpaint-config-" version ".tar.gz"))
4981 (sha256
4982 (base32
4983 "0zkgxk436nqcp43zghkfmh397c7dvh5bwn2as7gwvv208bzyij6g"))))
4984 (build-system gnu-build-system)
4985 (native-inputs
4986 `(("gettext" ,gettext-minimal)))
4987 (inputs
4988 `(("fltk" ,fltk)
4989 ("libpaper" ,libpaper)
4990 ;; TODO: Should the following be propagated by fltk?
4991 ("libx11" ,libx11)
4992 ("libxft" ,libxft)
4993 ("mesa" ,mesa)))
4994 (arguments
4995 `(#:make-flags `("VER_DATE=2018-09-01"
4996 "CONFDIR=/etc/tuxpaint" ;don't write to store
4997 ,(string-append "PREFIX=" %output)
4998 "GNOME_PREFIX=$(PREFIX)")
4999 #:parallel-build? #f ;race conditions
5000 #:tests? #f ;no tests
5001 #:phases (modify-phases %standard-phases
5002 (delete 'configure) ;no configure phase
5003 (add-before 'install 'gzip-no-name
5004 (lambda* _
5005 (substitute* "Makefile"
5006 ;; tuxpaint-config compresses its own documentation;
5007 ;; make sure it uses flags for reproducibility.
5008 (("gzip") "gzip --no-name"))))
5009 (add-before 'install 'make-install-dirs
5010 (lambda* (#:key outputs #:allow-other-keys)
5011 (let ((out (assoc-ref outputs "out")))
5012 (mkdir-p (string-append out "/bin"))
5013 #t))))))
5014 (home-page (package-home-page tuxpaint))
5015 (synopsis "Configure Tux Paint")
5016 (description
5017 "Tux Paint Config is a graphical configuration editor for Tux Paint.")
5018 (license license:gpl2))) ;no "or later" present
5019
5020 (define-public supertux
5021 (package
5022 (name "supertux")
5023 (version "0.6.2")
5024 (source (origin
5025 (method url-fetch)
5026 (uri (string-append "https://github.com/SuperTux/supertux/"
5027 "releases/download/v" version "/SuperTux-v"
5028 version "-Source.tar.gz"))
5029 (file-name (string-append name "-" version ".tar.gz"))
5030 (sha256
5031 (base32
5032 "167m3z4m8n76dvbv42m1fnvabpbpsxvr28zk9641916jl9pfba96"))
5033 (patches
5034 (search-patches "supertux-unbundle-squirrel.patch"))))
5035 (arguments
5036 '(#:tests? #f
5037 #:configure-flags '("-DINSTALL_SUBDIR_BIN=bin"
5038 "-DUSE_SYSTEM_PHYSFS=ON")
5039 #:phases
5040 (modify-phases %standard-phases
5041 (add-after 'unpack 'patch-squirrel-path
5042 (lambda* (#:key inputs #:allow-other-keys)
5043 (let ((squirrel (assoc-ref inputs "squirrel")))
5044 (substitute* "CMakeLists.txt"
5045 (("set\\(SQUIRREL_PREFIX.*")
5046 (string-append "set(SQUIRREL_PREFIX " squirrel ")"))
5047 (("add_dependencies\\(supertux2_lib squirrel\\)") "")
5048 (("\\$\\{SQUIRREL_PREFIX\\}/include")
5049 (string-append "${SQUIRREL_PREFIX}/include/squirrel"))))
5050 #t)))))
5051 (build-system cmake-build-system)
5052 (inputs `(("sdl2" ,sdl2)
5053 ("sdl2-image" ,sdl2-image)
5054 ("sdl2-mixer" ,sdl2-mixer)
5055 ("openal" ,openal)
5056 ("mesa" ,mesa)
5057 ("glew" ,glew)
5058 ("libvorbis" ,libvorbis)
5059 ("libogg" ,libogg)
5060 ("physfs" ,physfs)
5061 ("curl" ,curl)
5062 ("boost" ,boost)
5063 ("freetype" ,freetype)
5064 ("squirrel" ,squirrel)))
5065 (native-inputs
5066 `(("pkg-config" ,pkg-config)))
5067 (synopsis "2D platformer game")
5068 (description "SuperTux is a classic 2D jump'n run sidescroller game in
5069 a style similar to the original Super Mario games.")
5070 (home-page "https://supertux.org/")
5071 (license license:gpl3+)))
5072
5073 (define-public tintin++
5074 (package
5075 (name "tintin++")
5076 (version "2.02.02")
5077 (source
5078 (origin
5079 (method url-fetch)
5080 (uri (string-append "mirror://sourceforge/tintin/TinTin++ Source Code/"
5081 (string-drop-right version 1)
5082 "/tintin-" version ".tar.gz"))
5083 (sha256
5084 (base32 "11ylbp8ip7dwmh4gzb53z147pcfxkl3lwhyy8ngyn2zc634vdn65"))))
5085 (inputs
5086 `(("gnutls" ,gnutls)
5087 ("pcre" ,pcre)
5088 ("readline" ,readline)
5089 ("zlib" ,zlib)))
5090 (arguments
5091 '(#:tests? #f ; no test suite
5092 #:phases
5093 (modify-phases %standard-phases
5094 ;; The source is in tt/src.
5095 (add-before 'configure 'chdir
5096 (lambda _
5097 (chdir "src")
5098 #t)))))
5099 (build-system gnu-build-system)
5100 (home-page "https://tintin.mudhalla.net/")
5101 (synopsis "MUD client")
5102 (description
5103 "TinTin++ is a MUD client which supports MCCP (Mud Client Compression
5104 Protocol), MMCP (Mud Master Chat Protocol), xterm 256 colors, most TELNET
5105 options used by MUDs, as well as those required to login via telnet on
5106 Linux / Mac OS X servers, and an auto mapper with a VT100 map display.")
5107 (license license:gpl3+)))
5108
5109 (define-public laby
5110 (package
5111 (name "laby")
5112 (version "0.6.4")
5113 (source
5114 (origin (method git-fetch)
5115 (uri (git-reference
5116 (url "https://github.com/sgimenez/laby")
5117 (commit (string-append name "-" version))))
5118 (file-name (git-file-name name version))
5119 (sha256
5120 (base32
5121 "12fq9hhrxpzgfinmj9ra9ckss9yficwdlrmgjvvsq7agvh3sgyl1"))
5122 (patches (search-patches "laby-make-install.patch"))))
5123 (build-system gnu-build-system)
5124 (inputs
5125 `(("lablgtk" ,lablgtk)
5126 ("ocaml" ,ocaml)
5127 ("ocaml-findlib" ,ocaml-findlib)
5128 ("ocamlbuild" ,ocamlbuild)))
5129 (arguments
5130 '(#:phases
5131 (modify-phases %standard-phases
5132 (delete 'configure)
5133 (add-before 'build 'allow-unsafe-strings
5134 ;; Fix a build failure with ocaml >=4.06.0.
5135 ;; See <https://github.com/sgimenez/laby/issues/53>.
5136 (lambda _
5137 (setenv "OCAMLPARAM" "safe-string=0,_")
5138 #t))
5139 (add-before 'build 'set-library-path
5140 (lambda* (#:key inputs #:allow-other-keys)
5141 (let ((lablgtk (assoc-ref inputs "lablgtk")))
5142 (setenv "LD_LIBRARY_PATH"
5143 (string-append lablgtk "/lib/ocaml/stublibs"))))))
5144 #:tests? #f ; no 'check' target
5145 #:make-flags
5146 (list (string-append "PREFIX=" (assoc-ref %outputs "out")) "all")))
5147 (home-page "https://sgimenez.github.io/laby/")
5148 (synopsis "Programming game")
5149 (description "Learn programming, playing with ants and spider webs ;-)
5150 Your robot ant can be programmed in many languages: OCaml, Python, C, C++,
5151 Java, Ruby, Lua, JavaScript, Pascal, Perl, Scheme, Vala, Prolog. Experienced
5152 programmers may also add their own favorite language.")
5153 (license license:gpl3+)))
5154
5155 (define-public bambam
5156 (package
5157 (name "bambam")
5158 (version "1.0.0")
5159 (source
5160 (origin
5161 (method git-fetch)
5162 (uri (git-reference
5163 (url "https://github.com/porridge/bambam")
5164 (commit (string-append "v" version))))
5165 (file-name (git-file-name name version))
5166 (sha256
5167 (base32 "18cwd1wpyyx8y61cags9bkdhx9x858xicc4y1c9c2s0xjmgzhl3i"))))
5168 (build-system python-build-system)
5169 (arguments
5170 `(#:tests? #f ; no tests
5171 #:phases
5172 (modify-phases %standard-phases
5173 (delete 'build) ; nothing to build
5174 (replace 'install
5175 (lambda* (#:key outputs #:allow-other-keys)
5176 (let* ((out (assoc-ref outputs "out"))
5177 (bin (string-append out "/bin"))
5178 (share (string-append out "/share")))
5179 (mkdir-p bin)
5180 (copy-file "bambam.py" (string-append bin "/bambam"))
5181 (install-file "bambam.6" (string-append share "/man/man6"))
5182 (copy-recursively "data" (string-append share "/bambam/data")))
5183 #t)))))
5184 (inputs
5185 `(("python-pygame" ,python-pygame)))
5186 (home-page "https://github.com/porridge/bambam")
5187 (synopsis "Keyboard mashing and doodling game for babies")
5188 (description "Bambam is a simple baby keyboard (and gamepad) masher
5189 application that locks the keyboard and mouse and instead displays bright
5190 colors, pictures, and sounds.")
5191 (license license:gpl3+)))
5192
5193 (define-public mrrescue
5194 (package
5195 (name "mrrescue")
5196 (version "1.02e")
5197 (source (origin
5198 (method url-fetch)
5199 (uri (string-append
5200 "https://github.com/SimonLarsen/mrrescue/releases/"
5201 "download/" version "/mrrescue" version ".love"))
5202 (file-name (string-append name "-" version ".love"))
5203 (sha256
5204 (base32
5205 "0jwzbwkgp1l5ia6c7s760gmdirbsncp6nfqp7vqdqsfb63la9gl2"))))
5206 (build-system trivial-build-system)
5207 (arguments
5208 `(#:modules ((guix build utils))
5209 #:builder
5210 (begin
5211 (use-modules (guix build utils))
5212 (let* ((out (assoc-ref %outputs "out"))
5213 (script (string-append out "/bin/" ,name))
5214 (data (string-append out "/share/" ,name))
5215 (source (assoc-ref %build-inputs "source"))
5216 (unzip (string-append (assoc-ref %build-inputs "unzip")
5217 "/bin/unzip"))
5218 (patch (string-append (assoc-ref %build-inputs "patch")
5219 "/bin/patch"))
5220 (bash (string-append (assoc-ref %build-inputs "bash")
5221 "/bin/bash"))
5222 (love (string-append (assoc-ref %build-inputs "love")
5223 "/bin/love")))
5224
5225 (mkdir-p (dirname script))
5226 (with-output-to-file script
5227 (lambda ()
5228 (format #t "#!~a~%" bash)
5229 (format #t "exec -a ~a \"~a\" \"~a\"~%" ,name love data)))
5230 (chmod script #o755)
5231
5232 ;; The better way to package this game would be to install *only* the
5233 ;; script above, pointing to the unextracted .love file in the store.
5234 ;; However, mrrescue 1.02e needs to be patched to work with Love 11.
5235 ;; Instead of extracting the .love file, patching it, and re-zipping
5236 ;; it to the store, simply point the script to the extracted patched
5237 ;; data directory directly.
5238 (mkdir-p data)
5239 (with-directory-excursion data
5240 (invoke unzip source)
5241 (invoke patch "-p1" "-i"
5242 (assoc-ref %build-inputs "love-11.patch")))
5243 #t))))
5244 (native-inputs
5245 `(("unzip" ,unzip)
5246 ("patch" ,patch)
5247 ("love-11.patch" ,(search-patch "mrrescue-support-love-11.patch"))))
5248 (inputs
5249 `(("bash" ,bash)
5250 ("love" ,love)))
5251 (home-page "https://tangramgames.dk/games/mrrescue")
5252 (synopsis "Arcade-style fire fighting game")
5253 (description
5254 "Mr. Rescue is an arcade styled 2d action game centered around evacuating
5255 civilians from burning buildings. The game features fast-paced fire
5256 extinguishing action, intense boss battles, a catchy soundtrack, and lots of
5257 throwing people around in pseudo-randomly generated buildings.")
5258 (license (list license:zlib ; for source code
5259 license:cc-by-sa3.0)))) ; for graphics and music assets
5260
5261 (define-public hyperrogue
5262 (package
5263 (name "hyperrogue")
5264 (version "11.3a")
5265 ;; When updating this package, be sure to update the "hyperrogue-data"
5266 ;; origin in native-inputs.
5267 (source (origin
5268 (method url-fetch)
5269 (uri (string-append
5270 "https://www.roguetemple.com/z/hyper/hyperrogue"
5271 (string-join (string-split version #\.) "")
5272 "-src.tgz"))
5273 (sha256
5274 (base32
5275 "1yxabbswq02fc5frigvs43f83m5vlxybc7n5mynkwzj2c70lfp2k"))))
5276 (build-system gnu-build-system)
5277 (arguments
5278 `(#:tests? #f ; no check target
5279 #:make-flags '("HYPERROGUE_USE_GLEW=1"
5280 "HYPERROGUE_USE_PNG=1")
5281 #:phases
5282 (modify-phases %standard-phases
5283 (add-after 'set-paths 'set-sdl-paths
5284 (lambda* (#:key inputs #:allow-other-keys)
5285 (setenv "CPATH"
5286 (string-append (or (getenv "CPATH") "") ":"
5287 (assoc-ref inputs "sdl-union")
5288 "/include/SDL"))))
5289 (replace 'configure
5290 (lambda* (#:key inputs outputs #:allow-other-keys)
5291 (let* ((out (assoc-ref outputs "out"))
5292 (share-dir (string-append out "/share/hyperrogue"))
5293 (dejavu-dir (string-append
5294 (assoc-ref inputs "font-dejavu")
5295 "/share/fonts/truetype"))
5296 (dejavu-font "DejaVuSans-Bold.ttf")
5297 (music-file "hyperrogue-music.txt"))
5298 ;; Fix font and music paths.
5299 (substitute* "basegraph.cpp"
5300 ((dejavu-font)
5301 (string-append dejavu-dir "/" dejavu-font)))
5302 (substitute* music-file
5303 (("\\*/")
5304 (string-append share-dir "/sounds/")))
5305 (substitute* "sound.cpp"
5306 (("musicfile = \"\"")
5307 (string-append "musicfile = \""
5308 share-dir "/" music-file "\"")))
5309 ;; Disable build machine CPU optimizations and warnings treated
5310 ;; as errors.
5311 (substitute* "Makefile"
5312 (("-march=native") "")
5313 (("-Werror") "")))
5314 #t))
5315 (replace 'install
5316 (lambda* (#:key inputs outputs #:allow-other-keys)
5317 (let* ((out (assoc-ref outputs "out"))
5318 (bin (string-append out "/bin"))
5319 (share-dir (string-append out "/share/hyperrogue")))
5320 (mkdir-p bin)
5321 (install-file "hyperrogue" bin)
5322 (install-file "hyperrogue-music.txt" share-dir))
5323 #t))
5324 (add-after 'install 'install-data
5325 (lambda* (#:key inputs outputs #:allow-other-keys)
5326 (let* ((data (assoc-ref inputs "hyperrogue-data"))
5327 (out (assoc-ref outputs "out"))
5328 (sounds (string-append out "/share/hyperrogue/sounds"))
5329 (unzip (string-append (assoc-ref inputs "unzip") "/bin/unzip")))
5330 ;; Extract media license information into sounds directory.
5331 (invoke unzip "-j" data
5332 (string-append
5333 "hyperrogue"
5334 (string-join (string-split ,version #\.) "")
5335 "/sounds/credits.txt") "-d" sounds)
5336 ;; Extract sounds and music into sounds directory.
5337 (invoke "unzip" "-j" data
5338 (string-append
5339 "hyperrogue"
5340 (string-join (string-split ,version #\.) "")
5341 "/*.ogg") "-d" sounds)))))))
5342 (native-inputs
5343 `(("hyperrogue-data"
5344 ,(origin
5345 (method url-fetch)
5346 (uri
5347 (string-append
5348 "https://www.roguetemple.com/z/hyper/hyperrogue"
5349 (string-join (string-split version #\.) "")
5350 "-win.zip"))
5351 (sha256
5352 (base32
5353 "11yhbia45f1w9z0j67h9nynwjqmvakr9l6rnrmdrdkzin6lvzzj4"))))
5354 ("unzip" ,unzip)))
5355 (inputs
5356 `(("font-dejavu" ,font-dejavu)
5357 ("glew" ,glew)
5358 ("libpng" ,libpng)
5359 ("sdl-union" ,(sdl-union (list sdl
5360 sdl-gfx
5361 sdl-mixer
5362 sdl-ttf)))))
5363 (home-page "https://www.roguetemple.com/z/hyper/")
5364 (synopsis "Non-euclidean graphical rogue-like game")
5365 (description
5366 "HyperRogue is a game in which the player collects treasures and fights
5367 monsters -- rogue-like but for the fact that it is played on the hyperbolic
5368 plane and not in euclidean space.
5369
5370 In HyperRogue, the player can move through different parts of the world, which
5371 are home to particular creatures and may be subject to their own rules of
5372 \"physics\".
5373
5374 While the game can use ASCII characters to display the the classical rogue
5375 symbols, it still needs graphics to render the non-euclidean world.")
5376 (license (list license:bsd-3 ; glew.c, mtrand.*
5377 license:cc-by-sa3.0 ; music
5378 license:cc-by-sa4.0 ; sounds
5379 license:cc0
5380 license:public-domain ; direntx.*, some sounds
5381 license:zlib ; savepng.*
5382 license:gpl2+)))) ; remaining files
5383
5384 (define-public kobodeluxe
5385 (package
5386 (name "kobodeluxe")
5387 (version "0.5.1")
5388 (source (origin
5389 (method url-fetch)
5390 (uri (string-append "http://olofson.net/kobodl/download/KoboDeluxe-"
5391 version ".tar.bz2"))
5392 (sha256
5393 (base32
5394 "0b2wvdpnmaibsy419c16dfwj5kvd3pccby2aaqvm964x74592yqg"))
5395 (patches (search-patches
5396 "kobodeluxe-const-charp-conversion.patch"
5397 "kobodeluxe-enemies-pipe-decl.patch"
5398 "kobodeluxe-graphics-window-signed-char.patch"
5399 "kobodeluxe-manpage-minus-not-hyphen.patch"
5400 "kobodeluxe-midicon-segmentation-fault.patch"
5401 "kobodeluxe-paths.patch"))))
5402 (build-system gnu-build-system)
5403 (arguments
5404 '(#:configure-flags
5405 (list (string-append "CPPFLAGS=-I"
5406 (assoc-ref %build-inputs "sdl-union")
5407 "/include/SDL"))))
5408 (inputs
5409 `(("glu" ,glu)
5410 ("sdl-union" ,(sdl-union (list sdl sdl-image)))))
5411 (synopsis "Shooter with space station destruction")
5412 (description
5413 "Kobo Deluxe is an enhanced version of Akira Higuchi's XKobo graphical game
5414 for Un*x systems with X11.")
5415 (home-page "http://olofson.net/kobodl/")
5416 (license license:gpl2+)))
5417
5418 (define-public freeciv
5419 (package
5420 (name "freeciv")
5421 (version "2.6.2")
5422 (source
5423 (origin
5424 (method url-fetch)
5425 (uri (list (string-append
5426 "http://files.freeciv.org/stable/freeciv-"
5427 version ".tar.bz2")
5428 (string-append
5429 "mirror://sourceforge/freeciv/Freeciv%20"
5430 (version-major+minor version) "/" version
5431 "/freeciv-" version ".tar.bz2")))
5432 (sha256
5433 (base32 "13vc2xg1cf19rhbnr7k38b56b2hdapqymq5vma1l69kn7hyyz0b1"))))
5434 (build-system gnu-build-system)
5435 (inputs
5436 `(("curl" ,curl)
5437 ("cyrus-sasl" ,cyrus-sasl)
5438 ("gtk+" ,gtk+)
5439 ("sdl-mixer" ,sdl-mixer)
5440 ("zlib" ,zlib)))
5441 (native-inputs
5442 `(("pkg-config" ,pkg-config)))
5443 (home-page "http://www.freeciv.org/")
5444 (synopsis "Turn-based empire building strategy game")
5445 (description "Freeciv is a turn-based empire building strategy game
5446 inspired by the history of human civilization. The game commences in
5447 prehistory and your mission is to lead your tribe from the Stone Age
5448 into the Space Age.")
5449 (license license:gpl2+)))
5450
5451 (define-public no-more-secrets
5452 (package
5453 (name "no-more-secrets")
5454 (version "0.3.3")
5455 (source
5456 (origin
5457 (method git-fetch)
5458 (uri (git-reference
5459 (url "https://github.com/bartobri/no-more-secrets")
5460 (commit (string-append "v" version))))
5461 (file-name (git-file-name name version))
5462 (sha256
5463 (base32 "1zfv4qabikf8w9winsr4brxrdvs3f0d7xvydksyx8bydadsm2v2h"))))
5464 (build-system gnu-build-system)
5465 (arguments
5466 `(#:tests? #f
5467 #:make-flags (list "CC=gcc" "all-ncurses"
5468 (string-append "prefix="
5469 (assoc-ref %outputs "out")))
5470 #:phases
5471 (modify-phases %standard-phases
5472 (delete 'configure))))
5473 (inputs
5474 `(("ncurses" ,ncurses)))
5475 (home-page "https://github.com/bartobri/no-more-secrets")
5476 (synopsis "Recreation of data decryption effect in \"Sneakers\"")
5477 (description
5478 "@code{No More Secrets} provides a command line tool called \"nms\"
5479 that recreates the famous data decryption effect seen on screen in the 1992
5480 movie \"Sneakers\".
5481
5482 This command works on piped data. Pipe any ASCII or UTF-8 text to nms, and
5483 it will apply the hollywood effect, initially showing encrypted data, then
5484 starting a decryption sequence to reveal the original plaintext characters.")
5485 (license license:expat)))
5486
5487 (define-public megaglest-data
5488 (package
5489 (name "megaglest-data")
5490 (version "3.13.0")
5491 (source
5492 (origin
5493 (method url-fetch)
5494 (uri (string-append
5495 "https://github.com/MegaGlest/megaglest-data"
5496 "/releases/download/" version "/megaglest-data-"
5497 version ".tar.xz"))
5498 (sha256
5499 (base32
5500 "0ipgza33z89fw3si32iafm981f3fvm0zldvbxj29whghd2k3rpj3"))))
5501 (build-system cmake-build-system)
5502 (arguments
5503 `(#:tests? #f))
5504 (home-page "https://megaglest.org/")
5505 (synopsis "Data files for MegaGlest")
5506 (description "This package contains the data files required for MegaGlest.")
5507 (license license:cc-by-sa3.0)))
5508
5509 (define-public megaglest
5510 (package
5511 (name "megaglest")
5512 (version "3.13.0")
5513 (source
5514 (origin
5515 (method url-fetch)
5516 (uri (string-append
5517 "https://github.com/MegaGlest/megaglest-source"
5518 "/releases/download/" version "/megaglest-source-"
5519 version ".tar.xz"))
5520 (sha256
5521 (base32
5522 "1ffck3ii1wp5k3nn5p0ga06jgp7pzk4zw0xln3xim2w7qrxzdzh9"))))
5523 (build-system cmake-build-system)
5524 (inputs
5525 `(("curl" ,curl)
5526 ("fontconfig" ,fontconfig)
5527 ("ftgl" ,ftgl)
5528 ("glew" ,glew)
5529 ("libjpeg-turbo" ,libjpeg-turbo)
5530 ("megaglest-data" ,megaglest-data)
5531 ("mesa" ,mesa)
5532 ("miniupnpc" ,miniupnpc)
5533 ("openal" ,openal)
5534 ("libircclient" ,libircclient)
5535 ("libpng" ,libpng)
5536 ("libvorbis" ,libvorbis)
5537 ("lua" ,lua)
5538 ("sdl2" ,sdl2)
5539 ("wxwidgets" ,wxwidgets)))
5540 (native-inputs
5541 `(("cppunit" ,cppunit)
5542 ("pkg-config" ,pkg-config)))
5543 (arguments
5544 `(#:configure-flags
5545 (list (string-append "-DCUSTOM_DATA_INSTALL_PATH="
5546 (assoc-ref %build-inputs "megaglest-data")
5547 "/share/megaglest")
5548 "-DBUILD_MEGAGLEST_TESTS=ON")
5549 #:phases
5550 (modify-phases %standard-phases
5551 (add-after 'unpack 'fix-ini-search-path
5552 (lambda* (#:key outputs #:allow-other-keys)
5553 (substitute* "source/glest_game/global/config.cpp"
5554 (("/usr/share/megaglest/")
5555 (string-append (assoc-ref outputs "out")
5556 "/share/megaglest/"))))))
5557 #:test-target "megaglest_tests"))
5558 (home-page "https://megaglest.org/")
5559 (synopsis "3D real-time strategy (RTS) game")
5560 (description "MegaGlest is a cross-platform 3D real-time strategy (RTS)
5561 game, where you control the armies of one of seven different factions: Tech,
5562 Magic, Egypt, Indians, Norsemen, Persian or Romans.")
5563 (license license:gpl2+)))
5564
5565 (define-public freegish
5566 (let ((commit "8795cd7adc95957883f2d3465eb9036a774667a7")
5567 (revision "1"))
5568 (package
5569 (name "freegish")
5570 (version (string-append "0-" revision "." (string-take commit 9)))
5571 (source (origin
5572 (method git-fetch)
5573 (uri (git-reference
5574 (url "https://github.com/freegish/freegish")
5575 (commit commit)))
5576 (file-name (git-file-name name version))
5577 (sha256
5578 (base32
5579 "1p1zf5qqagmcpi1db2bs02cnalpy3qiymp6yzan7k1bhmv859gsx"))
5580 (modules '((guix build utils)))
5581 ;; The audio files in the "music" directory are licensed under
5582 ;; CC-BY-NC, so we delete them.
5583 (snippet
5584 '(begin
5585 (delete-file-recursively "music")
5586 #t))))
5587 (build-system cmake-build-system)
5588 (arguments
5589 `(#:tests? #f ; no tests included
5590 #:configure-flags
5591 (list "-DCMAKE_INSTALL_FHS=ON")
5592 #:phases
5593 (modify-phases %standard-phases
5594 (add-after 'unpack 'set-DATAPATH
5595 (lambda* (#:key outputs #:allow-other-keys)
5596 (substitute* "CMakeLists.txt"
5597 (("^option\\(INSTALL_FHS" line)
5598 (string-append "add_definitions(-DDATAPATH=\""
5599 (assoc-ref outputs "out") "/share/freegish\")\n"
5600 line)))
5601 #t)))))
5602 (inputs
5603 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))
5604 ("openal" ,openal)
5605 ("libvorbis" ,libvorbis)
5606 ("libogg" ,libogg)
5607 ("mesa" ,mesa)
5608 ("libpng" ,libpng)
5609 ("zlib" ,zlib)))
5610 (home-page "https://github.com/freegish/freegish")
5611 (synopsis "Side-scrolling physics platformer with a ball of tar")
5612 (description "In FreeGish you control Gish, a ball of tar who lives
5613 happily with his girlfriend Brea, until one day a mysterious dark creature
5614 emerges from a sewer hole and pulls her below ground.")
5615 ;; The textures are available under the Expat license. All other assets
5616 ;; (including levels) are covered under CC-BY-SA or public domain. The
5617 ;; source code is under GPLv2+.
5618 (license (list license:gpl2+
5619 license:expat
5620 license:public-domain
5621 license:cc-by-sa3.0)))))
5622
5623 (define-public cdogs-sdl
5624 (package
5625 (name "cdogs-sdl")
5626 (version "0.8.0")
5627 (source
5628 (origin
5629 (method git-fetch)
5630 (uri (git-reference
5631 (url "https://github.com/cxong/cdogs-sdl")
5632 (commit version)))
5633 (file-name (git-file-name name version))
5634 (sha256
5635 (base32 "0vx37zb2iw7sfw5a2bs97ydlmb301nvy485ybdm8g46c5hn9s13c"))))
5636 (build-system cmake-build-system)
5637 (arguments
5638 `(#:configure-flags
5639 (list (string-append "-DCDOGS_DATA_DIR="
5640 (assoc-ref %outputs "out")
5641 "/share/cdogs-sdl/"))))
5642 (native-inputs
5643 `(("pkg-config" ,pkg-config)))
5644 (inputs
5645 `(("gtk+" ,gtk+)
5646 ("mesa" ,mesa)
5647 ("sdl2" ,sdl2)
5648 ("sdl2-image" ,sdl2-image)
5649 ("sdl2-mixer" ,sdl2-mixer)))
5650 (home-page "https://cxong.github.io/cdogs-sdl/")
5651 (synopsis "Classic overhead run-and-gun game")
5652 (description "C-Dogs SDL is a classic overhead run-and-gun game,
5653 supporting up to 4 players in co-op and deathmatch modes. Customize your
5654 player, choose from many weapons, and blast, slide and slash your way through
5655 over 100 user-created campaigns.")
5656 ;; GPLv2+ for code (includes files under BSD-2 and BSD-3),
5657 ;; CC0/CC-BY/CC-BY-SA for assets.
5658 (license (list license:gpl2+
5659 license:bsd-2
5660 license:bsd-3
5661 license:cc0
5662 license:cc-by3.0
5663 license:cc-by-sa3.0))))
5664
5665 (define-public kiki
5666 (package
5667 (name "kiki")
5668 (version "1.0.2")
5669 (source (origin
5670 (method url-fetch)
5671 (uri (string-append "mirror://sourceforge/kiki/kiki-src/"
5672 version "/kiki-" version "-src.tgz"))
5673 (sha256
5674 (base32
5675 "0ihjdsxbn8z3cz0gpcprafiipcqaiskgdnh1rhmw4qff8dszalbn"))
5676 (modules '((guix build utils)))
5677 (snippet
5678 '(begin
5679 (for-each delete-file (find-files "." "\\.dll$"))
5680 #t))
5681 (patches
5682 (search-patches "kiki-level-selection-crash.patch"
5683 "kiki-makefile.patch"
5684 "kiki-missing-includes.patch"
5685 "kiki-portability-64bit.patch"))))
5686 (build-system gnu-build-system)
5687 (arguments
5688 `(#:tests? #f ; there are no tests
5689 #:make-flags '("CXX=g++")
5690 #:phases
5691 (modify-phases %standard-phases
5692 (replace 'configure
5693 (lambda* (#:key inputs outputs #:allow-other-keys)
5694 (setenv "CPLUS_INCLUDE_PATH"
5695 (string-append (assoc-ref inputs "sdl-union")
5696 "/include/SDL:"
5697 (assoc-ref inputs "python")
5698 "/include/python2.7:"
5699 (or (getenv "CPLUS_INCLUDE_PATH") "")))
5700 (substitute* "src/main/main.cpp"
5701 (("#include <SDL.h>" line)
5702 (string-append line "
5703 #define K_INCLUDE_GLUT
5704 #include \"KIncludeTools.h\""))
5705 (("// initialize SDL" line)
5706 (string-append "glutInit(&argc,argv);\n" line)))
5707 (substitute* "src/main/KikiController.cpp"
5708 (("getenv\\(\"KIKI_HOME\"\\)")
5709 (string-append "\"" (assoc-ref outputs "out") "/share/kiki/\"")))
5710 (substitute* "linux/Makefile"
5711 (("CXXOPTS =" line)
5712 (string-append line " -fpermissive"))
5713 (("PYTHON_VERSION=.*") "PYTHON_VERSION=2.7")
5714 (("PYTHONHOME =.*")
5715 (string-append "PYTHONHOME = "
5716 (assoc-ref inputs "python")
5717 "/lib/python2.7/"))
5718 (("\\$\\(GLLIBS\\)" line)
5719 (string-append line " -lm -lpython2.7")))
5720 (substitute* "src/main/KikiPythonWidget.h"
5721 (("#define __KikiPythonWidget" line)
5722 (string-append line "\n#include \"KikiPython.h\"")))
5723 #t))
5724 (add-before 'build 'build-kodilib
5725 (lambda* (#:key make-flags #:allow-other-keys)
5726 (with-directory-excursion "kodilib/linux"
5727 (apply invoke "make" make-flags))))
5728 (add-after 'build-kodilib 'chdir
5729 (lambda _ (chdir "linux") #t))
5730 (replace 'install
5731 (lambda* (#:key outputs #:allow-other-keys)
5732 (let* ((out (assoc-ref outputs "out"))
5733 (bin (string-append out "/bin"))
5734 (share (string-append out "/share/kiki")))
5735 (mkdir-p bin)
5736 (mkdir-p share)
5737 (install-file "kiki" bin)
5738 (copy-recursively "../py" (string-append share "/py"))
5739 (copy-recursively "../sound" (string-append share "/sound"))
5740 #t))))))
5741 (inputs
5742 `(("glu" ,glu)
5743 ;; Kiki builds fine with freeglut 3.0.0 but segfaults on start.
5744 ("freeglut" ,freeglut-2.8)
5745 ("sdl-union" ,(sdl-union (list sdl
5746 sdl-mixer
5747 sdl-image)))
5748 ("python" ,python-2)))
5749 (native-inputs
5750 `(("swig" ,swig)))
5751 (home-page "http://kiki.sourceforge.net/")
5752 (synopsis "3D puzzle game")
5753 (description "Kiki the nano bot is a 3D puzzle game. It is basically a
5754 mixture of the games Sokoban and Kula-World. Your task is to help Kiki, a
5755 small robot living in the nano world, repair its maker.")
5756 ;; See <http://metadata.ftp-master.debian.org/changelogs/main/k/
5757 ;; kiki-the-nano-bot/kiki-the-nano-bot_1.0.2+dfsg1-4_copyright>
5758 ;; for a statement from the author.
5759 (license license:public-domain)))
5760
5761 (define-public teeworlds
5762 (package
5763 (name "teeworlds")
5764 (version "0.7.5")
5765 (source (origin
5766 (method git-fetch)
5767 (uri (git-reference
5768 (url "https://github.com/teeworlds/teeworlds")
5769 (commit version)))
5770 (file-name (git-file-name name version))
5771 (sha256
5772 (base32
5773 "169dl83q08zl4h813az8hjs4rs3dms9yjn6bnsld4fjcj0imvvc6"))
5774 (modules '((guix build utils)
5775 (ice-9 ftw)
5776 (ice-9 regex)
5777 (srfi srfi-1)
5778 (srfi srfi-26)))
5779 (snippet ; remove bundled libraries except md5
5780 '(let ((base-dir "src/engine/external/"))
5781 (for-each (compose (cut delete-file-recursively <>)
5782 (cut string-append base-dir <>))
5783 (remove (cut string-match "(^.)|(^md5$)" <>)
5784 (scandir base-dir)))
5785 #t))))
5786 (build-system gnu-build-system)
5787 (arguments
5788 `(#:tests? #f ; no tests included
5789 #:modules ((guix build gnu-build-system)
5790 (guix build utils)
5791 (srfi srfi-26))
5792 #:phases
5793 (modify-phases %standard-phases
5794 (replace 'configure
5795 (lambda* (#:key outputs #:allow-other-keys)
5796 ;; Embed path to assets.
5797 (substitute* "src/engine/shared/storage.cpp"
5798 (("#define DATA_DIR.*")
5799 (string-append "#define DATA_DIR \""
5800 (assoc-ref outputs "out")
5801 "/share/teeworlds/data"
5802 "\"")))
5803
5804 ;; Bam expects all files to have a recent time stamp.
5805 (for-each (cut utime <> 1 1)
5806 (find-files "."))
5807
5808 ;; Do not use bundled libraries.
5809 (substitute* "bam.lua"
5810 (("local json = Compile.+$")
5811 "local json = nil
5812 settings.link.libs:Add(\"jsonparser\")")
5813 (("local png = Compile.+$")
5814 "local png = nil
5815 settings.link.libs:Add(\"pnglite\")")
5816 (("local wavpack = Compile.+$")
5817 "local wavpack = nil
5818 settings.link.libs:Add(\"wavpack\")")
5819 (("if config\\.zlib\\.value == 1")
5820 "if config.zlib.value"))
5821 (substitute* "src/engine/client/graphics_threaded.cpp"
5822 (("engine/external/pnglite/pnglite\\.h")
5823 "pnglite.h"))
5824 (substitute* "src/engine/client/sound.cpp"
5825 (("engine/external/wavpack/wavpack\\.h")
5826 "wavpack/wavpack.h"))
5827 #t))
5828 (replace 'build
5829 (lambda _
5830 (invoke "bam" "-a" "-v" "conf=release")))
5831 (replace 'install
5832 (lambda* (#:key outputs #:allow-other-keys)
5833 (let* ((arch ,(system->linux-architecture
5834 (or (%current-target-system)
5835 (%current-system))))
5836 (build (string-append "build/" (if (string=? arch "i386")
5837 "x86" arch)
5838 "/release/"))
5839 (data-built (string-append build "data/"))
5840 (out (assoc-ref outputs "out"))
5841 (bin (string-append out "/bin/"))
5842 (data (string-append out "/share/teeworlds/data/")))
5843 (for-each (cut install-file <> bin)
5844 (map (cut string-append build <>)
5845 '("teeworlds" "teeworlds_srv")))
5846 (copy-recursively data-built data)
5847 #t))))))
5848 (inputs
5849 `(("freetype" ,freetype)
5850 ("glu" ,glu)
5851 ("json-parser" ,json-parser)
5852 ("mesa" ,mesa)
5853 ("pnglite" ,pnglite)
5854 ("sdl2" ,sdl2)
5855 ("sdl2-image" ,sdl2-image)
5856 ("sdl2-mixer" ,sdl2-mixer)
5857 ("wavpack" ,wavpack)
5858 ("zlib" ,zlib)))
5859 (native-inputs
5860 `(("bam" ,bam)
5861 ("python" ,python-wrapper)
5862 ("pkg-config" ,pkg-config)))
5863 (home-page "https://www.teeworlds.com")
5864 (synopsis "2D retro multiplayer shooter game")
5865 (description "Teeworlds is an online multiplayer game. Battle with up to
5866 16 players in a variety of game modes, including Team Deathmatch and Capture
5867 The Flag. You can even design your own maps!")
5868 (license license:bsd-3)))
5869
5870 (define-public enigma
5871 (package
5872 (name "enigma")
5873 (version "1.21")
5874 (source (origin
5875 (method url-fetch)
5876 (uri (string-append "mirror://sourceforge/enigma-game/"
5877 "Release%20" version "/enigma-"
5878 version ".tar.gz"))
5879 (sha256
5880 (base32
5881 "00ffh9pypj1948pg3q9sjp1nmiabh52p5c8wpg9n1dcfgl3cywnq"))))
5882 (build-system gnu-build-system)
5883 (arguments
5884 `(#:configure-flags
5885 (list "--with-system-enet")
5886 #:phases
5887 (modify-phases %standard-phases
5888 (add-after 'unpack 'fix-build-with-new-gcc
5889 (lambda _
5890 ;; Fix build with GCC6 and later by avoiding comparing ifstream
5891 ;; to NULL. Can be removed for versions > 1.21.
5892 (substitute* "src/lev/Proxy.cc"
5893 (("ifs != NULL")
5894 "ifs"))
5895 #t))
5896 (add-after 'unpack 'find-sdl
5897 (lambda _
5898 (substitute* "configure"
5899 (("SDL_ttf.h") "SDL/SDL_ttf.h"))
5900 (substitute* '("tools/ttf2bmf.cc"
5901 "lib-src/enigma-core/ecl_font.cc"
5902 "lib-src/enigma-core/ecl_video.cc"
5903 "lib-src/enigma-core/ecl_buffer.hh"
5904 "src/SoundEngine.cc"
5905 "src/SoundEngine.hh"
5906 "src/MusicManager.cc"
5907 "src/MusicManager.hh"
5908 "src/d_models.cc"
5909 "src/main.cc"
5910 "src/network.cc")
5911 (("#include \"SDL_(image|ttf|mixer|types|syswm|mutex).h\"" line header)
5912 (string-append "#include \"SDL/SDL_" header ".h\"")))
5913 (substitute* "src/main.cc"
5914 (("#include <SDL_(image|ttf|mixer).h>" line header)
5915 (string-append "#include \"SDL/SDL_" header ".h\"")))
5916 #t)))))
5917 (inputs
5918 `(("xerces-c" ,xerces-c)
5919 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
5920 ("curl" ,curl)
5921 ("enet" ,enet)))
5922 (native-inputs
5923 `(("pkg-config" ,pkg-config)
5924 ("imagemagick" ,imagemagick)))
5925 (home-page "https://www.nongnu.org/enigma")
5926 (synopsis "Puzzle game with a dexterity component")
5927 (description "Enigma is a puzzle game with 550 unique levels. The object
5928 of the game is to find and uncover pairs of identically colored ‘Oxyd’ stones.
5929 Simple? Yes. Easy? Certainly not! Hidden traps, vast mazes, laser beams,
5930 and most of all, countless hairy puzzles usually block your direct way to the
5931 Oxyd stones. Enigma’s game objects (and there are hundreds of them, lest you
5932 get bored) interact in many unexpected ways, and since many of them follow the
5933 laws of physics (Enigma’s special laws of physics, that is), controlling them
5934 with the mouse isn’t always trivial.")
5935 (license license:gpl2+)))
5936
5937 (define-public chroma
5938 (package
5939 (name "chroma")
5940 (version "1.17")
5941 (source (origin
5942 (method url-fetch)
5943 (uri (string-append "http://level7.org.uk/chroma/download/chroma-"
5944 version ".tar.bz2"))
5945 (sha256
5946 (base32
5947 "047sf00x71xbmi8bqrhfbmr9bk89l2gbykkqsfpw4wz6yfjscs6y"))))
5948 (build-system gnu-build-system)
5949 (arguments
5950 `(#:tests? #f ; no tests included
5951 #:configure-flags '("CFLAGS=-fgnu89-inline"))) ; fix inlines
5952 (inputs
5953 `(("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
5954 ("freetype" ,freetype)
5955 ("ncurses" ,ncurses)
5956 ("fontconfig" ,fontconfig)
5957 ("libxft" ,libxft)))
5958 (native-inputs
5959 `(("pkg-config" ,pkg-config)))
5960 (home-page "http://level7.org.uk/chroma/")
5961 (synopsis "Abstract puzzle game")
5962 (description "Chroma is an abstract puzzle game. A variety of colourful
5963 shapes are arranged in a series of increasingly complex patterns, forming
5964 fiendish traps that must be disarmed and mysterious puzzles that must be
5965 manipulated in order to give up their subtle secrets. Initially so
5966 straightforward that anyone can pick it up and begin to play, yet gradually
5967 becoming difficult enough to tax even the brightest of minds.")
5968 (license license:gpl2+)))
5969
5970 (define-public fillets-ng
5971 (package
5972 (name "fillets-ng")
5973 (version "1.0.1")
5974 (source (origin
5975 (method url-fetch)
5976 (uri (string-append "mirror://sourceforge/fillets/"
5977 "Fish%20Fillets%20-%20Next%20Generation/"
5978 version "/fillets-ng-" version ".tar.gz"))
5979 (sha256
5980 (base32
5981 "1nljp75aqqb35qq3x7abhs2kp69vjcj0h1vxcpdyn2yn2nalv6ij"))))
5982 (build-system gnu-build-system)
5983 (arguments
5984 `(#:configure-flags
5985 (list (string-append "--with-lua="
5986 (assoc-ref %build-inputs "lua")))
5987 #:make-flags
5988 (list (string-append "CFLAGS=-I"
5989 (assoc-ref %build-inputs "sdl-union")
5990 "/include/SDL")
5991 (string-append "CXXFLAGS=-I"
5992 (assoc-ref %build-inputs "sdl-union")
5993 "/include/SDL"))
5994 #:phases
5995 (modify-phases %standard-phases
5996 ;; Lua 5.1 does not provide it.
5997 (add-after 'unpack 'do-not-link-with-lualib
5998 (lambda _
5999 (substitute* "configure"
6000 (("-llualib") ""))
6001 #t))
6002 (add-after 'install 'install-data
6003 (lambda* (#:key inputs outputs #:allow-other-keys)
6004 (let ((data (string-append (assoc-ref outputs "out")
6005 "/share/games/fillets-ng")))
6006 (mkdir-p data)
6007 (invoke "tar" "-xvf"
6008 (assoc-ref inputs "fillets-ng-data")
6009 "--strip-components=1"
6010 "-C" data)))))))
6011 (inputs
6012 `(("sdl-union" ,(sdl-union (list sdl
6013 sdl-mixer
6014 sdl-image
6015 sdl-ttf)))
6016 ("fribidi" ,fribidi)
6017 ("libx11" ,libx11)
6018 ("lua" ,lua-5.1)))
6019 (native-inputs
6020 `(("pkg-config" ,pkg-config)
6021 ("fillets-ng-data"
6022 ,(origin
6023 (method url-fetch)
6024 (uri (string-append "mirror://sourceforge/fillets/"
6025 "Fish%20Fillets%20-%20Next%20Generation/"
6026 version "/fillets-ng-data-" version ".tar.gz"))
6027 (sha256
6028 (base32
6029 "169p0yqh2gxvhdilvjc2ld8aap7lv2nhkhkg4i1hlmgc6pxpkjgh"))))))
6030 (home-page "http://fillets.sourceforge.net/")
6031 (synopsis "Puzzle game")
6032 (description "Fish Fillets NG is strictly a puzzle game. The goal in
6033 every of the seventy levels is always the same: find a safe way out. The fish
6034 utter witty remarks about their surroundings, the various inhabitants of their
6035 underwater realm quarrel among themselves or comment on the efforts of your
6036 fish. The whole game is accompanied by quiet, comforting music.")
6037 (license license:gpl2+)))
6038
6039 (define-public crawl
6040 (package
6041 (name "crawl")
6042 (version "0.25.0")
6043 (source
6044 (origin
6045 (method url-fetch)
6046 (uri (list
6047 ;; Older releases get moved into a versioned directory
6048 (string-append "http://crawl.develz.org/release/"
6049 (version-major+minor version) "/stone_soup-"
6050 version "-nodeps.tar.xz")
6051 ;; Only the latest release is in this directory
6052 (string-append "http://crawl.develz.org/release/stone_soup-"
6053 version "-nodeps.tar.xz")))
6054 (sha256
6055 (base32 "0rn1wjxdqw33caiwisfypm1j8cid3c9pz01ahicl17144zs29z3d"))
6056 (patches (search-patches "crawl-upgrade-saves.patch"))
6057 ;; The 0.25.0 -nodeps.tar.xz was built from an OSX machine; normally
6058 ;; apparently it's built from a Debian machine before the Debian
6059 ;; packages are made. These ._* files are binary and have the string
6060 ;; "Mac OS X" in them... removing these seems to result in compilation
6061 ;; again.
6062 (modules '((guix build utils)))
6063 (snippet
6064 '(begin
6065 (for-each delete-file (find-files "." "^\\._"))
6066 #t))))
6067 (build-system gnu-build-system)
6068 (inputs
6069 `(("lua51" ,lua-5.1)
6070 ("ncurses" ,ncurses)
6071 ("sqlite" ,sqlite)
6072 ("zlib" ,zlib)))
6073 (native-inputs
6074 `(("bison" ,bison)
6075 ("flex" ,flex)
6076 ("perl" ,perl)
6077 ("python" ,python-wrapper)
6078 ("python-pyyaml" ,python-pyyaml)
6079 ("pkg-config" ,pkg-config)))
6080 (arguments
6081 `(#:make-flags
6082 (let* ((sqlite (assoc-ref %build-inputs "sqlite"))
6083 (out (assoc-ref %outputs "out")))
6084 (list (string-append "SQLITE_INCLUDE_DIR=" sqlite "/include")
6085 (string-append "prefix=" out)
6086 "SAVEDIR=~/.crawl"
6087 ;; Don't compile with SSE on systems which don't have it.
6088 ,@(match (%current-system)
6089 ((or "i686-linux" "x86_64-linux")
6090 '())
6091 (_ '("NOSSE=TRUE")))
6092 ;; don't build any bundled dependencies
6093 "BUILD_LUA="
6094 "BUILD_SQLITE="
6095 "BUILD_ZLIB="
6096 "-Csource"))
6097 #:phases
6098 (modify-phases %standard-phases
6099 (add-after 'unpack 'find-SDL-image
6100 (lambda _
6101 (substitute* "source/windowmanager-sdl.cc"
6102 (("SDL_image.h") "SDL2/SDL_image.h"))
6103 #t))
6104 (delete 'configure)
6105 (replace 'check
6106 (lambda* (#:key inputs outputs make-flags #:allow-other-keys)
6107 (setenv "HOME" (getcwd))
6108 ;; Fake a terminal for the test cases.
6109 (setenv "TERM" "xterm-256color")
6110 ;; Run the tests that don't require a debug build.
6111 (apply invoke "make" "nondebugtest"
6112 (format #f "-j~d" (parallel-job-count))
6113 ;; Force command line build for test cases.
6114 (append make-flags '("GAME=crawl" "TILES="))))))))
6115 (synopsis "Roguelike dungeon crawler game")
6116 (description "Dungeon Crawl Stone Soup (also known as \"Crawl\" or DCSS
6117 for short) is a roguelike adventure through dungeons filled with dangerous
6118 monsters in a quest to find the mystifyingly fabulous Orb of Zot.")
6119 (home-page "https://crawl.develz.org")
6120 (license (list license:gpl2+
6121 license:bsd-2
6122 license:bsd-3
6123 license:cc0
6124 license:expat
6125 license:zlib
6126 license:asl2.0))))
6127
6128 ;; The linter here claims that patch file names should start with the package
6129 ;; name. But, in this case, the patches are inherited from crawl with the
6130 ;; "crawl-" prefix instead of "crawl-tiles-".
6131 (define-public crawl-tiles
6132 (package
6133 (inherit crawl)
6134 (name "crawl-tiles")
6135 (arguments
6136 (substitute-keyword-arguments
6137 (package-arguments crawl)
6138 ((#:make-flags flags)
6139 `(let ((dejavu (assoc-ref %build-inputs "font-dejavu")))
6140 (cons*
6141 (string-append "PROPORTIONAL_FONT=" dejavu
6142 "/share/fonts/truetype/DejaVuSans.ttf")
6143 (string-append "MONOSPACED_FONT=" dejavu
6144 "/share/fonts/truetype/DejaVuSansMono.ttf")
6145 "TILES=y"
6146 ;; Rename the executable to allow parallel installation with crawl.
6147 "GAME=crawl-tiles"
6148 ,flags)))))
6149 (inputs
6150 `(,@(package-inputs crawl)
6151 ("font-dejavu" ,font-dejavu)
6152 ("freetype6" ,freetype)
6153 ("glu" ,glu)
6154 ("libpng" ,libpng)
6155 ("sdl2" ,sdl2)
6156 ("sdl2-image" ,sdl2-image)
6157 ("sdl2-mixer" ,sdl2-mixer)))
6158 (native-inputs
6159 `(,@(package-native-inputs crawl)
6160 ("pngcrush" ,pngcrush)
6161 ("which" ,which)))
6162 (synopsis "Graphical roguelike dungeon crawler game")))
6163
6164 (define-public lugaru
6165 (package
6166 (name "lugaru")
6167 (version "1.2")
6168 (source (origin
6169 (method url-fetch)
6170 (uri (string-append "https://bitbucket.org/osslugaru/lugaru/downloads/"
6171 "lugaru-" version ".tar.xz"))
6172 (sha256
6173 (base32
6174 "15zgcshy22q51rm72zi6y9z7qlgnz5iw3gczjdlir4bqmxy4gspk"))))
6175 (build-system cmake-build-system)
6176 (arguments
6177 `(#:configure-flags
6178 (list "-DSYSTEM_INSTALL=ON")
6179 ;; no test target
6180 #:tests? #f))
6181 (native-inputs
6182 `(("pkg-config" ,pkg-config)))
6183 (inputs
6184 `(("sdl2" ,sdl2)
6185 ("glu" ,glu)
6186 ("libjpeg" ,libjpeg-turbo)
6187 ("libpng" ,libpng)
6188 ("openal" ,openal)
6189 ("vorbis" ,libvorbis)
6190 ("zlib" ,zlib)))
6191 (home-page "https://osslugaru.gitlab.io")
6192 (synopsis "Cross-platform third-person action game")
6193 (description "Lugaru is a third-person action game. The main character,
6194 Turner, is an anthropomorphic rebel bunny rabbit with impressive combat skills.
6195 In his quest to find those responsible for slaughtering his village, he uncovers
6196 a far-reaching conspiracy involving the corrupt leaders of the rabbit republic
6197 and the starving wolves from a nearby den. Turner takes it upon himself to
6198 fight against their plot and save his fellow rabbits from slavery.")
6199 (license (list license:gpl2+ ; code
6200 ;; assets:
6201 license:cc-by-sa3.0
6202 license:cc-by-sa4.0))))
6203
6204 (define-public 0ad-data
6205 (package
6206 (name "0ad-data")
6207 (version "0.0.23b-alpha")
6208 (source
6209 (origin
6210 (method url-fetch)
6211 (uri (string-append "https://releases.wildfiregames.com/0ad-"
6212 version "-unix-data.tar.xz"))
6213 (file-name (string-append name "-" version ".tar.xz"))
6214 (sha256
6215 (base32
6216 "04x7729hk6zw1xj3n4s4lvaviijsnbjf5rhzvjxlr5fygvg4l6z1"))
6217 (modules '((guix build utils)))
6218 (snippet
6219 #~(begin
6220 (for-each (lambda (name)
6221 (let* ((dir (string-append "binaries/data/mods/" name))
6222 (file (string-append dir "/" name ".zip"))
6223 (unzip #$(file-append unzip "/bin/unzip")))
6224 (invoke unzip "-d" dir file)
6225 (delete-file file)))
6226 '("mod" "public"))
6227 #t))))
6228 (build-system trivial-build-system)
6229 (native-inputs `(("tar" ,tar)
6230 ("xz" ,xz)))
6231 (arguments
6232 `(#:modules ((guix build utils))
6233 #:builder
6234 (begin
6235 (use-modules (guix build utils))
6236 (let ((out (assoc-ref %outputs "out"))
6237 (source (assoc-ref %build-inputs "source"))
6238 (tar (string-append (assoc-ref %build-inputs "tar") "/bin/tar"))
6239 (xz-path (string-append (assoc-ref %build-inputs "xz") "/bin")))
6240 (setenv "PATH" xz-path)
6241 (mkdir out)
6242 (invoke tar "xvf" source "-C" out "--strip=3")))))
6243 (synopsis "Data files for 0ad")
6244 (description "0ad-data provides the data files required by the game 0ad.")
6245 (home-page "https://play0ad.com")
6246 (license (list (license:fsdg-compatible
6247 "http://tavmjong.free.fr/FONTS/ArevCopyright.txt"
6248 "Similar to the license of the Bitstream Vera fonts.")
6249 (license:fsdg-compatible
6250 "https://www.gnome.org/fonts/#Final_Bitstream_Vera_Fonts")
6251 license:cc-by-sa3.0
6252 license:expat
6253 license:gfl1.0
6254 license:gpl2+
6255 license:gpl3+))))
6256
6257 (define-public 0ad
6258 (package
6259 (name "0ad")
6260 (version "0.0.23b-alpha")
6261 (source
6262 (origin
6263 (method url-fetch)
6264 (uri (string-append "https://releases.wildfiregames.com/0ad-"
6265 version "-unix-build.tar.xz"))
6266 (file-name (string-append name "-" version ".tar.xz"))
6267 (sha256
6268 (base32
6269 "0draa53xg69i5qhqym85658m45xhwkbiimaldj4sr3703rjgggq1"))))
6270 ;; A snippet here would cause a build failure because of timestamps
6271 ;; reset. See https://bugs.gnu.org/26734.
6272 (inputs
6273 `(("0ad-data" ,0ad-data)
6274 ("curl" ,curl)
6275 ("enet" ,enet)
6276 ("gloox" ,gloox)
6277 ("icu4c" ,icu4c)
6278 ("libpng" ,libpng)
6279 ("libsodium" ,libsodium)
6280 ("libvorbis" ,libvorbis)
6281 ("libxcursor" ,libxcursor)
6282 ("libxml2" ,libxml2)
6283 ("miniupnpc" ,miniupnpc)
6284 ("mozjs-38" ,mozjs-38)
6285 ("openal" ,openal)
6286 ("sdl2" ,sdl2)
6287 ("wxwidgets" ,wxwidgets)
6288 ("zlib" ,zlib)))
6289 (native-inputs
6290 `(("boost" ,boost)
6291 ("cmake" ,cmake-minimal)
6292 ("mesa" ,mesa)
6293 ("pkg-config" ,pkg-config)
6294 ("python-2" ,python-2)))
6295 (build-system gnu-build-system)
6296 (arguments
6297 `(#:make-flags '("config=release" "verbose=1" "-C" "build/workspaces/gcc")
6298 #:phases
6299 (modify-phases %standard-phases
6300 (add-after 'unpack 'delete-bundles
6301 (lambda _
6302 (delete-file-recursively "libraries/source/spidermonkey")
6303 #t))
6304 (add-after 'unpack 'fix-x11-includes
6305 (lambda _
6306 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
6307 (("<Xlib.h>") "<X11/Xlib.h>"))
6308 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
6309 (("<Xatom.h>") "<X11/Xatom.h>"))
6310 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
6311 (("<Xcursor/Xcursor.h>") "<X11/Xcursor/Xcursor.h>"))
6312 #t))
6313 (replace 'configure
6314 (lambda* (#:key inputs outputs #:allow-other-keys)
6315 (let* ((jobs (number->string (parallel-job-count)))
6316 (out (assoc-ref outputs "out"))
6317 (lib (string-append out "/lib"))
6318 (data (string-append out "/share/0ad")))
6319 (setenv "JOBS" (string-append "-j" jobs))
6320 (setenv "CC" "gcc")
6321 (with-directory-excursion "build/workspaces"
6322 (invoke "./update-workspaces.sh"
6323 (string-append "--libdir=" lib)
6324 (string-append "--datadir=" data)
6325 ;; TODO: "--with-system-nvtt"
6326 "--with-system-mozjs38")))))
6327 (delete 'check)
6328 (replace 'install
6329 (lambda* (#:key inputs outputs #:allow-other-keys)
6330 (chdir "binaries")
6331 (let* ((out (assoc-ref outputs "out"))
6332 (bin (string-append out "/bin"))
6333 (lib (string-append out "/lib"))
6334 (data (string-append out "/share/0ad"))
6335 (applications (string-append out "/share/applications"))
6336 (pixmaps (string-append out "/share/pixmaps"))
6337 (0ad-data (assoc-ref inputs "0ad-data")))
6338 ;; data
6339 (copy-recursively "data" data)
6340 (for-each (lambda (file)
6341 (symlink (string-append 0ad-data "/" file)
6342 (string-append data "/" file)))
6343 '("config" "mods/mod" "mods/public" "tools"))
6344 ;; libraries
6345 (for-each (lambda (file)
6346 (install-file file lib))
6347 (find-files "system" "\\.so$"))
6348 ;; binaries
6349 (install-file "system/pyrogenesis" bin)
6350 (with-directory-excursion bin
6351 (symlink "pyrogenesis" "0ad"))
6352 ;; resources
6353 (with-directory-excursion "../build/resources"
6354 (install-file "0ad.desktop" applications)
6355 (install-file "0ad.png" pixmaps))
6356 #t)))
6357 (add-after 'install 'check
6358 (lambda _
6359 (with-directory-excursion "system"
6360 (invoke "./test")))))))
6361 (home-page "https://play0ad.com")
6362 (synopsis "3D real-time strategy game of ancient warfare")
6363 (description "0 A.D. is a real-time strategy (RTS) game of ancient
6364 warfare. It's a historically-based war/economy game that allows players to
6365 relive or rewrite the history of twelve ancient civilizations, each depicted
6366 at their peak of economic growth and military prowess.
6367
6368 0ad needs a window manager that supports 'Extended Window Manager Hints'.")
6369 (license (list license:bsd-2
6370 license:bsd-3
6371 license:expat
6372 license:gpl2+
6373 license:ibmpl1.0
6374 license:isc
6375 license:lgpl2.1
6376 license:lgpl3
6377 license:mpl2.0
6378 license:zlib))))
6379
6380 ;; There have been no official releases.
6381 (define-public open-adventure
6382 (let* ((commit "d43854f0f6bb8e9eea7fbce80348150e7e7fc34d")
6383 (revision "2"))
6384 (package
6385 (name "open-adventure")
6386 (version (string-append "2.5-" revision "." (string-take commit 7)))
6387 (source (origin
6388 (method git-fetch)
6389 (uri (git-reference
6390 (url "https://gitlab.com/esr/open-adventure")
6391 (commit commit)))
6392 (file-name (string-append name "-" version "-checkout"))
6393 (sha256
6394 (base32
6395 "08bwrvf4axb1rsfd6ia1fddsky9pc1p350vjskhaakg2czc6dsk0"))))
6396 (build-system gnu-build-system)
6397 (arguments
6398 `(#:make-flags (list "CC=gcc")
6399 #:parallel-build? #f ; not supported
6400 #:phases
6401 (modify-phases %standard-phases
6402 (replace 'configure
6403 (lambda* (#:key inputs outputs #:allow-other-keys)
6404 ;; Linenoise is meant to be included, so we have to
6405 ;; copy it into the working directory.
6406 (let* ((linenoise (assoc-ref inputs "linenoise"))
6407 (noisepath (string-append linenoise "/include/linenoise"))
6408 (out (assoc-ref outputs "out")))
6409 (copy-recursively noisepath "linenoise"))
6410 #t))
6411 (add-before 'build 'use-echo
6412 (lambda _
6413 (substitute* "tests/Makefile"
6414 (("/bin/echo") (which "echo")))
6415 #t))
6416 (add-after 'build 'build-manpage
6417 (lambda _
6418 ;; This target is missing a dependency
6419 (substitute* "Makefile"
6420 ((".adoc.6:" line)
6421 (string-append line " advent.adoc")))
6422 (invoke "make" ".adoc.6")))
6423 ;; There is no install target
6424 (replace 'install
6425 (lambda* (#:key outputs #:allow-other-keys)
6426 (let* ((out (assoc-ref outputs "out"))
6427 (bin (string-append out "/bin"))
6428 (man (string-append out "/share/man/man6")))
6429 (install-file "advent" bin)
6430 (install-file "advent.6" man))
6431 #t)))))
6432 (native-inputs
6433 `(("asciidoc" ,asciidoc)
6434 ("linenoise" ,linenoise)
6435 ("python" ,python)
6436 ("python-pyyaml" ,python-pyyaml)))
6437 (home-page "https://gitlab.com/esr/open-adventure")
6438 (synopsis "Colossal Cave Adventure")
6439 (description "The original Colossal Cave Adventure from 1976 was the
6440 origin of all text adventures, dungeon-crawl (computer) games, and
6441 computer-hosted roleplaying games. This is the last version released by
6442 Crowther & Woods, its original authors, in 1995. It has been known as
6443 \"adventure 2.5\" and \"430-point adventure\".")
6444 (license license:bsd-2))))
6445
6446 (define-public tome4
6447 (package
6448 (name "tome4")
6449 (version "1.6.7")
6450 (synopsis "Single-player, RPG roguelike game set in the world of Eyal")
6451 (source
6452 (origin
6453 (method url-fetch)
6454 (uri (string-append "https://te4.org/dl/t-engine/t-engine4-src-"
6455 version ".tar.bz2"))
6456 (sha256
6457 (base32 "0283hvms5hr29zr0grd6gq059k0hg8hcz3fsmwjmysiih8790i68"))
6458 (modules '((guix build utils)))
6459 (snippet
6460 '(begin
6461 (substitute* '("src/music.h" "src/tSDL.h")
6462 (("#elif defined(__FreeBSD__)" line)
6463 (string-append
6464 line " || defined(__GNUC__)")))
6465 (substitute* '("src/tgl.h")
6466 (("#include <GL/glext.h>") ""))
6467 #t))))
6468 (build-system gnu-build-system)
6469 (native-inputs
6470 `(("unzip" ,unzip)))
6471 (inputs
6472 `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
6473 ("glu" ,glu)
6474 ("premake4" ,premake4)
6475 ("openal" ,openal)
6476 ("vorbis" ,libvorbis)
6477 ("luajit" ,luajit)))
6478 (arguments
6479 `(#:make-flags '("CC=gcc" "config=release")
6480 ;; XXX: Building in parallel occasionally causes this build failure:
6481 ;; ../src/luajit2/src/host/buildvm.c:73:10: fatal error: buildvm_arch.h:
6482 ;; No such file or directory
6483 #:parallel-build? #f
6484 #:phases (modify-phases %standard-phases
6485 (delete 'bootstrap)
6486 (replace 'configure
6487 (lambda _
6488 (invoke "premake4" "gmake")
6489 #t))
6490 (add-after 'set-paths 'set-sdl-paths
6491 (lambda* (#:key inputs #:allow-other-keys)
6492 (setenv "CPATH"
6493 (string-append (assoc-ref inputs "sdl-union")
6494 "/include/SDL2:"
6495 (or (getenv "CPATH") "")))
6496 #t))
6497 (delete 'check)
6498 ;; premake doesn't provide install target
6499 (replace 'install
6500 (lambda* (#:key inputs outputs #:allow-other-keys)
6501 (let* ((out (assoc-ref outputs "out"))
6502 (usr (string-append out "/usr"))
6503 (bin (string-append out "/bin"))
6504 (licenses (string-append out "/share/licenses"))
6505 (documents (string-append out "/share/doc"))
6506 (pixmaps (string-append out "/share/pixmaps"))
6507 (icon "te4-icon.png")
6508 (data (string-append out "/share/" ,name))
6509 (applications (string-append
6510 out "/share/applications"))
6511 (unzip (string-append
6512 (assoc-ref inputs "unzip") "/bin/unzip"))
6513 (wrapper (string-append bin "/" ,name)))
6514 ;; icon
6515 (mkdir-p pixmaps)
6516 (invoke unzip "-j"
6517 (string-append
6518 "game/engines/te4-" ,version ".teae")
6519 (string-append
6520 "data/gfx/" icon) "-d" pixmaps)
6521 ;; game executable
6522 (install-file "t-engine" data)
6523 (mkdir-p bin)
6524 (with-output-to-file wrapper
6525 (lambda ()
6526 (display
6527 (string-append
6528 "#!/bin/sh\n"
6529 ;; No bootstrap code found,
6530 ;; defaulting to working directory
6531 ;; for engine code!
6532 "cd " data "\n"
6533 "exec -a tome4 ./t-engine \"$@\"\n"))))
6534 (chmod wrapper #o555)
6535 ;; licenses
6536 (for-each (lambda (file)
6537 (install-file file licenses))
6538 '("COPYING" "COPYING-MEDIA"))
6539 ;; documents
6540 (for-each (lambda (file)
6541 (install-file file documents))
6542 '("CONTRIBUTING" "CREDITS"))
6543 ;; data
6544 (copy-recursively "bootstrap" (string-append
6545 data "/bootstrap"))
6546 (copy-recursively "game" (string-append data "/game"))
6547 ;; launcher
6548 (mkdir-p applications)
6549 (make-desktop-entry-file
6550 (string-append applications "/" ,name ".desktop")
6551 #:name "ToME4"
6552 #:comment ,synopsis
6553 #:exec ,name
6554 #:icon icon
6555 #:categories '("Game" "RolePlaying")))
6556 #t)))))
6557 (home-page "https://te4.org")
6558 (description "Tales of Maj’Eyal (ToME) RPG, featuring tactical turn-based
6559 combat and advanced character building. Play as one of many unique races and
6560 classes in the lore-filled world of Eyal, exploring random dungeons, facing
6561 challenging battles, and developing characters with your own tailored mix of
6562 abilities and powers. With a modern graphical and customisable interface,
6563 intuitive mouse control, streamlined mechanics and deep, challenging combat,
6564 Tales of Maj’Eyal offers engaging roguelike gameplay for the 21st century.")
6565 (license license:gpl3+)))
6566
6567 (define-public quakespasm
6568 (package
6569 (name "quakespasm")
6570 (version "0.93.2")
6571 (source
6572 (origin
6573 (method url-fetch)
6574 (uri (string-append "mirror://sourceforge/quakespasm/Source/quakespasm-"
6575 version ".tgz"))
6576 (sha256
6577 (base32 "0qm0j5drybvvq8xadfyppkpk3rxqsxbywzm6iwsjwdf0iia3gss5"))))
6578 (arguments
6579 `(#:tests? #f
6580 #:make-flags '("CC=gcc"
6581 "MP3LIB=mpg123"
6582 "USE_CODEC_FLAC=1"
6583 "USE_CODEC_MIKMOD=1"
6584 "USE_SDL2=1"
6585 "-CQuake")
6586 #:phases (modify-phases %standard-phases
6587 (delete 'configure)
6588 (add-after 'unpack 'fix-makefile-paths
6589 (lambda* (#:key outputs #:allow-other-keys)
6590 (let ((out (assoc-ref outputs "out")))
6591 (mkdir-p (string-append out "/bin"))
6592 (substitute* "Quake/Makefile"
6593 (("/usr/local/games")
6594 (string-append out "/bin")))
6595 #t))))))
6596 (build-system gnu-build-system)
6597 (inputs `(("libmikmod" ,libmikmod)
6598 ("libvorbis" ,libvorbis)
6599 ("flac" ,flac)
6600 ("mesa" ,mesa)
6601 ("mpg123" ,mpg123)
6602 ("sdl2" ,sdl2)))
6603 (synopsis "First person shooter engine for Quake 1")
6604 (description "Quakespasm is a modern engine for id software's Quake 1.
6605 It includes support for 64 bit CPUs, custom music playback, a new sound driver,
6606 some graphical niceities, and numerous bug-fixes and other improvements.")
6607 (home-page "http://quakespasm.sourceforge.net/")
6608 (license license:gpl2+)))
6609
6610 (define-public vkquake
6611 (package
6612 (inherit quakespasm)
6613 (name "vkquake")
6614 (version "1.01.0")
6615 (source
6616 (origin
6617 (method git-fetch)
6618 (uri (git-reference
6619 (url "https://github.com/Novum/vkQuake")
6620 (commit version)))
6621 (file-name (git-file-name name version))
6622 (sha256
6623 (base32 "1iwin8j5kbyrknbkhjgpy8nmm7pxqzr0daa9gn7p38qhg2mh0a39"))))
6624 (arguments
6625 `(#:make-flags
6626 (let ((vulkanlib (string-append (assoc-ref %build-inputs
6627 "vulkan-loader") "/lib")))
6628 (list "CC=gcc"
6629 "MP3LIB=mpg123"
6630 "USE_CODEC_FLAC=1"
6631 "USE_CODEC_MIKMOD=1"
6632 "USE_SDL2=1"
6633 (string-append "LDFLAGS=-Wl,-rpath=" vulkanlib)
6634 "-CQuake"))
6635 #:phases (modify-phases %standard-phases
6636 (add-after 'unpack 'patch-for-new-vulkan
6637 (lambda _
6638 ;; Mimic upstream commit a869a22d9b51c68e for
6639 ;; compatibility with newer vulkan-headers.
6640 (substitute* "Quake/gl_rmisc.c"
6641 (("VK_DYNAMIC_STATE_RANGE_SIZE")
6642 "3"))
6643 #t))
6644 (delete 'configure)
6645 (add-after 'unpack 'fix-makefile-paths
6646 (lambda* (#:key outputs #:allow-other-keys)
6647 (let ((vulkan (assoc-ref %build-inputs
6648 "vulkan-loader"))
6649 (out (assoc-ref outputs "out")))
6650 (mkdir-p (string-append out "/bin"))
6651 (substitute* "Quake/Makefile" ((" /usr")
6652 (string-append " " out)))
6653 (substitute* "Quake/Makefile" (("/games")
6654 (string-append "/bin")))
6655 (substitute* "Quake/Makefile" (("..VULKAN_SDK.") vulkan))
6656 #t))))
6657 ,@(strip-keyword-arguments '(#:make-flags #:phases)
6658 (package-arguments quakespasm))))
6659 (inputs `(("vulkan-headers" ,vulkan-headers)
6660 ("vulkan-loader" ,vulkan-loader)
6661 ,@(package-inputs quakespasm)))
6662 (description "vkquake is a modern engine for id software's Quake 1.
6663 It includes support for 64 bit CPUs, custom music playback, a new sound driver,
6664 some graphical niceities, and numerous bug-fixes and other improvements.")
6665 (home-page "https://github.com/Novum/vkQuake")))
6666
6667 (define-public yamagi-quake2
6668 (package
6669 (name "yamagi-quake2")
6670 (version "7.10")
6671 (source
6672 (origin
6673 (method url-fetch)
6674 (uri (string-append "https://deponie.yamagi.org/quake2/quake2-"
6675 version ".tar.xz"))
6676 (sha256
6677 (base32
6678 "0psinbg25mysd58k99s1n34w31w5hj1vppb39gdjb0zqi6sl6cps"))))
6679 (build-system gnu-build-system)
6680 (arguments
6681 `(#:tests? #f
6682 #:make-flags
6683 (list "CC=gcc"
6684 ;; link openAL instead of using dlopen at runtime
6685 "DLOPEN_OPENAL=\"no\""
6686 ;; an optional directory where it will look for quake2 data files
6687 ;; in addition to the current working directory
6688 "WITH_SYSTEMWIDE=yes"
6689 "WITH_SYSTEMDIR=\"/opt/quake2\"")
6690 #:phases
6691 (modify-phases %standard-phases
6692 (delete 'configure)
6693 (replace 'install
6694 (lambda* (#:key outputs #:allow-other-keys)
6695 (let ((out (assoc-ref outputs "out")))
6696 (mkdir-p (string-append out "/lib"))
6697 (mkdir-p (string-append out "/bin"))
6698 ;; The yamagi-quake2 binary must be in the same directory
6699 ;; as it's engine libraries, but symlinking it to /bin is okay
6700 ;; https://github.com/yquake2/yquake2/blob/master/stuff/packaging.md
6701 (copy-recursively "release"
6702 (string-append out "/lib/yamagi-quake2"))
6703 (symlink (string-append out "/lib/yamagi-quake2/quake2")
6704 (string-append out "/bin/yamagi-quake2"))
6705 (symlink (string-append out "/lib/yamagi-quake2/q2ded")
6706 (string-append out "/bin/yamagi-q2ded"))))))))
6707 (inputs `(("sdl2" ,sdl2)
6708 ("mesa" ,mesa)
6709 ("libvorbis" ,libvorbis)
6710 ("zlib" ,zlib)
6711 ("openal" ,openal)))
6712 (native-inputs `(("pkg-config" ,pkg-config)))
6713 (synopsis "First person shooter engine based on quake2")
6714 (description "Yamagi Quake II is an enhanced client for id Software's Quake II.
6715 The main focus is an unchanged single player experience like back in 1997,
6716 thus the gameplay and the graphics are unaltered. However the user may use one
6717 of the unofficial retexturing packs. In comparison with the official client,
6718 over 1000 bugs were fixed and an extensive code audit done,
6719 making Yamagi Quake II one of the most solid Quake II implementations available.")
6720 (home-page "https://www.yamagi.org/quake2/")
6721 (license (list license:gpl2+ ; game and server
6722 (license:non-copyleft ; info-zip
6723 "file://LICENSE"
6724 "See Info-Zip section.")
6725 license:public-domain)))) ; stb
6726
6727 (define-public nudoku
6728 (package
6729 (name "nudoku")
6730 (version "1.0.0")
6731 (source (origin
6732 (method url-fetch)
6733 (uri (string-append "https://github.com/jubalh/nudoku/"
6734 "releases/download/" version
6735 "/nudoku-" version ".tar.xz"))
6736 (sha256
6737 (base32
6738 "0nr2j2z07nxk70s8xnmmpzccxicf7kn5mbwby2kg6aq8paarjm8k"))))
6739 (build-system gnu-build-system)
6740 (inputs `(("ncurses" ,ncurses)))
6741 (home-page "https://jubalh.github.io/nudoku/")
6742 (synopsis "Sudoku for your terminal")
6743 (description "Nudoku is a ncurses-based Sudoku game for your terminal.")
6744 (license license:gpl3+)))
6745
6746 (define-public the-butterfly-effect
6747 (package
6748 (name "the-butterfly-effect")
6749 (version "0.9.3.1")
6750 (source
6751 (origin
6752 (method git-fetch)
6753 (uri (git-reference
6754 (url "https://github.com/the-butterfly-effect/tbe")
6755 (commit (string-append "v" version))))
6756 (file-name (git-file-name name version))
6757 (sha256
6758 (base32
6759 "1ag2cp346f9bz9qy6za6q54id44d2ypvkyhvnjha14qzzapwaysj"))))
6760 (build-system gnu-build-system)
6761 (arguments
6762 `(#:phases
6763 (modify-phases %standard-phases
6764 (delete 'configure)
6765 ;; There is no "install" phase. By default, tbe is installed
6766 ;; in the build directory. Provide our own installation.
6767 (replace 'install
6768 (lambda* (#:key outputs #:allow-other-keys)
6769 (let* ((out (assoc-ref outputs "out"))
6770 (bin (string-append out "/bin"))
6771 (share (string-append out "/share")))
6772 (install-file "usr/games/tbe" bin)
6773 (mkdir-p share)
6774 (copy-recursively "usr/share" share)
6775 #t))))
6776 ;; Test suite requires a running Xorg server. Even when
6777 ;; provided, it fails with "D-Bus library appears to be
6778 ;; incorrectly set up; failed to read machine uuid: Failed to
6779 ;; open "/etc/machine-id": No such file or directory" along
6780 ;; with multiple "QPainter:: ... Painter not active" warnings.
6781 #:tests? #f))
6782 (inputs
6783 `(("qtbase" ,qtbase)
6784 ("qtsvg" ,qtsvg)))
6785 (native-inputs
6786 `(("cmake" ,cmake-minimal)
6787 ("gettext-minimal" ,gettext-minimal)
6788 ("qttools" ,qttools)))
6789 (synopsis "Realistic physics puzzle game")
6790 (description "The Butterfly Effect (tbe) is a game that uses
6791 realistic physics simulations to combine lots of simple mechanical
6792 elements to achieve a simple goal in the most complex way possible.")
6793 (home-page "http://the-butterfly-effect.org/")
6794 ;; Main license is GPL2-only. However, artwork is distributed
6795 ;; under various licenses, listed here.
6796 (license (list license:gpl2 license:public-domain license:expat
6797 license:cc-by-sa3.0 license:gpl3+ license:wtfpl2))))
6798
6799 (define-public pioneer
6800 (package
6801 (name "pioneer")
6802 (version "20200203")
6803 (source (origin
6804 (method git-fetch)
6805 (uri (git-reference
6806 (url "https://github.com/pioneerspacesim/pioneer")
6807 (commit version)))
6808 (file-name (git-file-name name version))
6809 (sha256
6810 (base32
6811 "1011xsi94jhw98mhm8kryq8ajig0qfbrdx5xdasi92bd4nk7lcp8"))))
6812 (build-system cmake-build-system)
6813 (native-inputs
6814 `(("pkg-config" ,pkg-config)))
6815 (inputs
6816 `(("assimp" ,assimp)
6817 ("curl" ,curl)
6818 ("freetype" ,freetype)
6819 ("glew" ,glew)
6820 ("glu" ,glu)
6821 ("libpng" ,libpng)
6822 ("libsigc++" ,libsigc++)
6823 ("libvorbis" ,libvorbis)
6824 ("lua" ,lua-5.2) ;not compatible with 5.3
6825 ("mesa" ,mesa)
6826 ("sdl" ,(sdl-union (list sdl2 sdl2-image)))))
6827 (arguments
6828 `(#:tests? #f ;tests are broken
6829 #:configure-flags (list "-DUSE_SYSTEM_LIBLUA:BOOL=YES"
6830 (string-append "-DPIONEER_DATA_DIR="
6831 %output "/share/games/pioneer"))))
6832 (home-page "https://pioneerspacesim.net")
6833 (synopsis "Game of lonely space adventure")
6834 (description
6835 "Pioneer is a space adventure game set in our galaxy at the turn of the
6836 31st century. The game is open-ended, and you are free to eke out whatever
6837 kind of space-faring existence you can think of. Look for fame or fortune by
6838 exploring the millions of star systems. Turn to a life of crime as a pirate,
6839 smuggler or bounty hunter. Forge and break alliances with the various
6840 factions fighting for power, freedom or self-determination. The universe is
6841 whatever you make of it.")
6842 (license license:gpl3)))
6843
6844 (define-public badass
6845 (let ((commit "3c3cd669b4fc8f73a102e3702788f7b28dc47dbb")
6846 (revision "0"))
6847 (package
6848 (name "badass")
6849 (version (git-version "0.0" revision commit))
6850 (source (origin
6851 (method git-fetch)
6852 (uri (git-reference
6853 (url "https://github.com/umayr/badass")
6854 (commit commit)))
6855 (file-name (git-file-name name version))
6856 (sha256
6857 (base32
6858 "05c9vdcb5ym3z0n5ll3v39mw4yl9jcjnlydmn0yl89ai9pv71zb6"))))
6859 (build-system go-build-system)
6860 (arguments
6861 '(#:import-path "github.com/umayr/badass"))
6862 (synopsis "Hacking contribution graphs in git")
6863 (description
6864 "Badass generates false commits for a range of dates, essentially
6865 hacking the gamification of contribution graphs on platforms such as
6866 Github or Gitlab.")
6867 (home-page "https://github.com/umayr/badass")
6868 (license license:expat))))
6869
6870 (define-public colobot
6871 (package
6872 (name "colobot")
6873 (version "0.1.12-alpha")
6874 (source
6875 (origin
6876 (method git-fetch)
6877 (uri (git-reference
6878 (url "https://github.com/colobot/colobot")
6879 (commit (string-append "colobot-gold-" version))
6880 (recursive? #t))) ;for "data/" subdir
6881 (file-name (git-file-name name version))
6882 (sha256
6883 (base32
6884 "1c181cclkrnspgs07lvndg2c81cjq3smkv7qim8c470cj88rcrp2"))))
6885 (build-system cmake-build-system)
6886 (arguments
6887 `(#:tests? #f ;no test
6888 #:phases
6889 (modify-phases %standard-phases
6890 (add-after 'unpack 'make-git-checkout-writable
6891 (lambda _
6892 (for-each make-file-writable (find-files "."))
6893 #t))
6894 (add-after 'unpack 'fix-directories
6895 (lambda _
6896 (substitute* "CMakeLists.txt"
6897 (("(\\$\\{CMAKE_INSTALL_PREFIX\\})/games" _ prefix)
6898 (string-append prefix "/bin"))
6899 (("(\\$\\{CMAKE_INSTALL_PREFIX\\}/share)/games/colobot" _ prefix)
6900 (string-append prefix "/colobot")))
6901 #t))
6902 (add-after 'fix-directories 'install-music
6903 ;; Retrieve and install music files.
6904 (lambda* (#:key inputs #:allow-other-keys)
6905 ;; Installation process tries to download music files using
6906 ;; "wget" if not already present. Since we are going another
6907 ;; route, skip "wget" command check.
6908 (substitute* "data/music/CMakeLists.txt"
6909 (("find_program\\(WGET wget\\)") ""))
6910 ;; Populate "music/" directory.
6911 (let ((data (assoc-ref inputs "colobot-music")))
6912 (invoke "tar" "-xvf" data "-Cdata/music"))
6913 #t)))))
6914 (native-inputs
6915 `(("colobot-music"
6916 ,(origin
6917 (method url-fetch)
6918 (uri (string-append "https://colobot.info/files/music/"
6919 "colobot-music_ogg_" version ".tar.gz"))
6920 (sha256
6921 (base32
6922 "1s86cd36rwkff329mb1ay1wi5qqyi35564ppgr3f4qqz9wj9vs2m"))))
6923 ("gettext" ,gettext-minimal)
6924 ("librsvg" ,librsvg)
6925 ("po4a" ,po4a)
6926 ("python" ,python-wrapper)))
6927 (inputs
6928 `(("boost" ,boost)
6929 ("glew" ,glew)
6930 ("libogg" ,libogg)
6931 ("libpng" ,libpng)
6932 ("libsndfile" ,libsndfile)
6933 ("libvorbis" ,libvorbis)
6934 ("openal" ,openal)
6935 ("physfs" ,physfs)
6936 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-ttf)))))
6937 (synopsis "Educational programming strategy game")
6938 (description "Colobot: Gold Edition is a real-time strategy game, where
6939 you can program your units (bots) in a language called CBOT, which is similar
6940 to C++ and Java. Your mission is to find a new planet to live and survive.
6941 You can save humanity and get programming skills!")
6942 (home-page "https://colobot.info")
6943 (license license:gpl3+)))
6944
6945 (define-public gzdoom
6946 (package
6947 (name "gzdoom")
6948 (version "4.3.2")
6949 (source
6950 (origin
6951 (method git-fetch)
6952 (uri (git-reference
6953 (url "https://github.com/coelckers/gzdoom")
6954 (commit (string-append "g" version))))
6955 (file-name (git-file-name name version))
6956 (sha256
6957 (base32 "0i4hyg72z84fc6ca2ic9q82q5cbgrbd7bynl3kpkypxvyasq08wz"))
6958 (patches (search-patches "gzdoom-search-in-installed-share.patch"
6959 "gzdoom-find-system-libgme.patch"))
6960 (modules '((guix build utils)))
6961 (snippet
6962 '(begin
6963 ;; Remove some bundled libraries. XXX There are more, but removing
6964 ;; them would require, at least, patching the build system.
6965 (with-directory-excursion "libraries"
6966 (delete-file-recursively "bzip2")
6967 (delete-file-recursively "game-music-emu")
6968 (delete-file-recursively "jpeg")
6969 (delete-file-recursively "zlib"))
6970 #t))))
6971 (arguments
6972 '(#:tests? #f
6973 #:configure-flags
6974 (let ((out (assoc-ref %outputs "out")))
6975 (list
6976 (string-append
6977 "-DCMAKE_CXX_FLAGS:="
6978 "-DSHARE_DIR=\\\"" out "/share/\\\" "
6979 "-DGUIX_OUT_PK3=\\\"" out "/share/games/doom\\\"")
6980
6981 ;; The build requires some extra convincing not to use the bundled
6982 ;; libgme previously deleted in the soure snippet.
6983 "-DFORCE_INTERNAL_GME=OFF"
6984
6985 ;; Link libraries at build time instead of loading them at run time.
6986 "-DDYN_OPENAL=OFF"
6987 "-DDYN_FLUIDSYNTH=OFF"
6988 "-DDYN_GTK=OFF"
6989 "-DDYN_MPG123=OFF"
6990 "-DDYN_SNDFILE=OFF"))
6991 #:phases
6992 (modify-phases %standard-phases
6993 (add-before 'configure 'fix-referenced-paths
6994 (lambda* (#:key inputs outputs #:allow-other-keys)
6995 (let ((fluid-3 (assoc-ref inputs "fluid-3"))
6996 (timidity++ (assoc-ref inputs "timidity++"))
6997 (out (assoc-ref outputs "out")))
6998
6999 (substitute*
7000 "src/CMakeLists.txt"
7001 (("COMMAND /bin/sh")
7002 (string-append "COMMAND " (which "sh"))))
7003
7004 (substitute*
7005 "libraries/zmusic/mididevices/music_fluidsynth_mididevice.cpp"
7006 (("/usr/share/sounds/sf2/FluidR3_GM.sf2")
7007 (string-append fluid-3 "/share/soundfonts/FluidR3Mono_GM.sf3")))
7008
7009 (substitute*
7010 "libraries/zmusic/mididevices/music_timiditypp_mididevice.cpp"
7011 (("exename = \"timidity\"")
7012 (string-append "exename = \"" timidity++ "/bin/timidity\"")))
7013 #t))))))
7014 (build-system cmake-build-system)
7015 (inputs `(("bzip2" ,bzip2)
7016 ("fluid-3" ,fluid-3)
7017 ("fluidsynth" ,fluidsynth)
7018 ("gtk+3" ,gtk+)
7019 ("libgme" ,libgme)
7020 ("libjpeg" ,libjpeg-turbo)
7021 ("libsndfile" ,libsndfile)
7022 ("mesa" ,mesa)
7023 ("mpg123" ,mpg123)
7024 ("openal" ,openal)
7025 ("sdl2" ,sdl2)
7026 ("timidity++" ,timidity++)
7027 ("zlib" ,zlib)))
7028 (native-inputs `(("pkg-config" ,pkg-config)
7029 ("unzip" ,unzip)))
7030 (synopsis "Modern Doom 2 source port")
7031 (description "GZdoom is a port of the Doom 2 game engine, with a modern
7032 renderer. It improves modding support with ZDoom's advanced mapping features
7033 and the new ZScript language. In addition to Doom, it supports Heretic, Hexen,
7034 Strife, Chex Quest, and fan-created games like Harmony, Hacx and Freedoom.")
7035 (home-page "https://zdoom.org/index")
7036 ;; The source uses x86 assembly
7037 (supported-systems '("x86_64-linux" "i686-linux"))
7038 (license (list license:gpl3+ ; gzdoom game
7039 license:lgpl3+ ; gzdoom renderer
7040 license:expat ; gdtoa
7041 (license:non-copyleft ; modified dumb
7042 "file://dumb/licence.txt"
7043 "Dumb license, explicitly GPL compatible.")))))
7044
7045 (define-public odamex
7046 (package
7047 (name "odamex")
7048 (version "0.8.3")
7049 (source
7050 (origin
7051 (method url-fetch)
7052 (uri (string-append
7053 "mirror://sourceforge/odamex/Odamex/" version "/"
7054 "odamex-src-" version ".tar.gz"))
7055 (sha256
7056 (base32 "0f887g87bmcq4dpcga7xc2mpxs947dkbc934ir9xs55gz6z13q96"))))
7057 (build-system cmake-build-system)
7058 (arguments `(#:tests? #f)) ; no tests
7059 (inputs
7060 `(("sdl" ,sdl)
7061 ("sdl-mixer" ,sdl-mixer)
7062 ("zlib" ,zlib)
7063 ("libpng" ,libpng)
7064 ("alsa-lib" ,alsa-lib)))
7065 (home-page "https://odamex.net/")
7066 (synopsis "Multiplayer Doom port")
7067 (description "Odamex is a modification of the Doom engine that
7068 allows players to easily join servers dedicated to playing Doom
7069 online.")
7070 (license license:gpl2+)))
7071
7072 (define-public chocolate-doom
7073 (package
7074 (name "chocolate-doom")
7075 (version "3.0.1")
7076 (source (origin
7077 (method url-fetch)
7078 (uri (string-append "https://www.chocolate-doom.org/downloads/"
7079 version
7080 "/chocolate-doom-"
7081 version
7082 ".tar.gz"))
7083 (sha256
7084 (base32
7085 "1iy8rx7kjvi1zjiw4zh77szzmd1sgpqajvbhprh1sj93fhbxcdfl"))))
7086 (build-system gnu-build-system)
7087 (inputs `(("sdl2-net" ,sdl2-net)
7088 ("sdl2-mixer" , sdl2-mixer)
7089 ("sdl2" ,sdl2)))
7090 (native-inputs
7091 `(("pkg-config" ,pkg-config)))
7092 (synopsis "Doom source port preserving the look, feel, and bugs of vanilla
7093 Doom")
7094 (description
7095 "Chocolate Doom takes a different approach to other source ports. Its
7096 aim is to accurately reproduce the experience of playing Vanilla Doom. It is
7097 a conservative, historically accurate Doom source port, which is compatible
7098 with the thousands of mods and levels that were made before the Doom source
7099 code was released. Rather than flashy new graphics, Chocolate Doom's main
7100 features are its accurate reproduction of the game as it was played in the
7101 1990s. The project is developed around a carefully-considered philosophy that
7102 intentionally restricts which features may be added (and rejects any that
7103 affect gameplay).")
7104 (home-page "https://www.chocolate-doom.org/wiki/index.php/Chocolate_Doom")
7105 (license license:gpl2)))
7106
7107 (define-public crispy-doom
7108 (package
7109 (inherit chocolate-doom)
7110 (name "crispy-doom")
7111 (version "5.8.0")
7112 (source (origin
7113 (method git-fetch)
7114 (uri (git-reference
7115 (url "https://github.com/fabiangreffrath/crispy-doom")
7116 (commit (string-append "crispy-doom-" version))))
7117 (file-name (git-file-name name version))
7118 (sha256
7119 (base32 "1b6gn0dysv631jynh769whww9xcss1gms78sz3nrn855q1dsvcb4"))))
7120 (native-inputs
7121 (append
7122 (package-native-inputs chocolate-doom)
7123 `(("automake" ,automake)
7124 ("autoreconf" ,autoconf))))
7125 (arguments
7126 `(#:phases
7127 (modify-phases %standard-phases
7128 (replace 'bootstrap
7129 ;; The bundled autogen.sh script unconditionally runs ./configure.
7130 (lambda _ (invoke "autoreconf" "-vif"))))))
7131 (synopsis "Limit-removing enhanced-resolution Doom source port based on
7132 Chocolate Doom")
7133 (description
7134 "Crispy Doom is a friendly fork of Chocolate Doom that provides a higher
7135 display resolution, removes the static limits of the Doom engine and offers
7136 further optional visual, tactical and physical enhancements while remaining
7137 entirely config file, savegame, netplay and demo compatible with the
7138 original.")
7139 (home-page "https://www.chocolate-doom.org/wiki/index.php/Crispy_Doom")))
7140
7141 (define shlomif-cmake-modules
7142 (origin
7143 (method url-fetch)
7144 (uri (string-append "https://bitbucket.org/shlomif/shlomif-cmake-modules/"
7145 "raw/c505713d7a7cda608f97f01577e5868a711b883e/"
7146 "shlomif-cmake-modules/Shlomif_Common.cmake"))
7147 (sha256
7148 (base32 "0kx9s1qqhhzprp1w3b67xmsns0n0v506bg5hgrshxaxpy6lqiwb2"))))
7149
7150 (define-public rinutils
7151 (package
7152 (name "rinutils")
7153 (version "0.2.0")
7154 (source (origin
7155 (method git-fetch)
7156 (uri (git-reference
7157 (url "https://github.com/shlomif/rinutils")
7158 (commit version)))
7159 (file-name (git-file-name name version))
7160 (sha256
7161 (base32
7162 "1fpxyg86ggv0h7j8aarjjxrvwlj7jycd3bw066c0dwkq2fszxsf2"))))
7163 (native-inputs
7164 `(("perl" ,perl)
7165 ;; The following is only needed for tests.
7166 ("perl-file-find-object" ,perl-file-find-object)
7167 ("perl-test-differences" ,perl-test-differences)
7168 ("perl-class-xsaccessor" ,perl-class-xsaccessor)
7169 ("perl-io-all" ,perl-io-all)
7170 ("perl-test-runvalgrind" ,perl-test-runvalgrind)
7171 ("cmake-rules" ,shlomif-cmake-modules)
7172 ("pkg-config" ,pkg-config)))
7173 (inputs
7174 `(("cmocka" ,cmocka)
7175 ("perl-env-path", perl-env-path)
7176 ("perl-inline" ,perl-inline)
7177 ("perl-inline-c" ,perl-inline-c)
7178 ("perl-string-shellquote" ,perl-string-shellquote)
7179 ("perl-test-trailingspace" ,perl-test-trailingspace)
7180 ("perl-file-find-object-rule" ,perl-file-find-object-rule)
7181 ("perl-text-glob" ,perl-text-glob)
7182 ("perl-number-compare" ,perl-number-compare)
7183 ("perl-moo" ,perl-moo)))
7184 (arguments
7185 `(#:phases
7186 (modify-phases %standard-phases
7187 (add-after 'unpack 'fix-build-env
7188 (lambda* (#:key inputs #:allow-other-keys)
7189 (use-modules (guix build utils))
7190 (let* ((cmake-rules (assoc-ref inputs "cmake-rules")))
7191 (copy-file cmake-rules
7192 (string-append "cmake/"
7193 (strip-store-file-name cmake-rules)))
7194 #t)))
7195 (replace 'check
7196 (lambda _
7197 (with-directory-excursion "../source"
7198 (setenv "FCS_TEST_BUILD" "1")
7199 (setenv "RINUTILS_TEST_BUILD" "1")
7200 ;; TODO: Run tests after setting RINUTILS_TEST_TIDY to `1',
7201 ;; which requires tidy-all.
7202 ;; (setenv "RINUTILS_TEST_TIDY" "1")
7203 (invoke "perl" "CI-testing/continuous-integration-testing.pl")))))))
7204 (build-system cmake-build-system)
7205 (home-page "https://www.shlomifish.org/open-source/projects/")
7206 (synopsis "C11 / gnu11 utilities C library")
7207 (description "This package provides C11 / gnu11 utilities C library")
7208 (license license:expat)))
7209
7210 (define-public fortune-mod
7211 (package
7212 (name "fortune-mod")
7213 (version "2.28.0")
7214 (source
7215 (origin
7216 (method git-fetch)
7217 (uri (git-reference
7218 (url "https://github.com/shlomif/fortune-mod")
7219 (commit (string-append "fortune-mod-" version))))
7220 (file-name (git-file-name name version))
7221 (sha256
7222 (base32 "1ppzgnffgdcmq6fq4gmdq2ig10ip2bnfgklkb3i8nc6bdxm7pb89"))))
7223 (build-system cmake-build-system)
7224 (arguments
7225 `(#:test-target "check"
7226 #:phases
7227 (modify-phases %standard-phases
7228 (add-after 'unpack 'fix-build-env
7229 (lambda* (#:key inputs #:allow-other-keys)
7230 (use-modules (guix build utils))
7231 (let* ((cmake-rules (assoc-ref inputs "cmake-rules")))
7232 (copy-file cmake-rules
7233 (string-append "fortune-mod/cmake/"
7234 (strip-store-file-name cmake-rules)))
7235 (chdir "fortune-mod")
7236 ;; TODO: Valgrind tests fail for some reason.
7237 ;; Similar issue: https://github.com/shlomif/fortune-mod/issues/21 (?)
7238 (delete-file "tests/t/valgrind.t")
7239 #t)))
7240 (add-after 'install 'fix-install-directory
7241 (lambda* (#:key outputs #:allow-other-keys)
7242 ;; Move binary from "games/" to "bin/" and remove the latter. This
7243 ;; is easier than patching CMakeLists.txt since the tests hard-code
7244 ;; the location as well.
7245 (let* ((out (assoc-ref outputs "out"))
7246 (bin (string-append out "/bin"))
7247 (games (string-append out "/games")))
7248 (rename-file (string-append games "/fortune")
7249 (string-append bin "/fortune"))
7250 (rmdir games)
7251 #t))))))
7252 (inputs `(("recode" ,recode)))
7253 (native-inputs
7254 `(("perl" ,perl)
7255 ;; The following is only needed for tests.
7256 ("perl-file-find-object" ,perl-file-find-object)
7257 ("perl-test-differences" ,perl-test-differences)
7258 ("perl-class-xsaccessor" ,perl-class-xsaccessor)
7259 ("perl-io-all" ,perl-io-all)
7260 ("perl-test-runvalgrind" ,perl-test-runvalgrind)
7261 ("cmake-rules" ,shlomif-cmake-modules)
7262 ("rinutils" ,rinutils)))
7263 (home-page "https://www.shlomifish.org/open-source/projects/fortune-mod/")
7264 (synopsis "The Fortune Cookie program from BSD games")
7265 (description "Fortune is a command-line utility which displays a random
7266 quotation from a collection of quotes.")
7267 (license license:bsd-4)))
7268
7269 (define xonotic-data
7270 (package
7271 (name "xonotic-data")
7272 (version "0.8.2")
7273 (source
7274 (origin
7275 (method url-fetch)
7276 (uri (string-append "http://dl.xonotic.org/xonotic-"
7277 version ".zip"))
7278 (file-name (string-append name "-" version ".zip"))
7279 (sha256
7280 (base32
7281 "1mcs6l4clvn7ibfq3q69k2p0z6ww75rxvnngamdq5ic6yhq74bx2"))))
7282 (build-system trivial-build-system)
7283 (native-inputs
7284 `(("unzip" ,unzip)))
7285 (arguments
7286 `(#:modules ((guix build utils))
7287 #:builder
7288 (begin
7289 (use-modules (guix build utils))
7290 (let* ((out (assoc-ref %outputs "out"))
7291 (xonotic (string-append out "/share/xonotic"))
7292 (source (assoc-ref %build-inputs "source"))
7293 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
7294 (copy-file source (string-append ,name "-" ,version ".zip"))
7295 (invoke unzip (string-append ,name "-" ,version ".zip"))
7296 (mkdir-p out)
7297 (mkdir-p xonotic)
7298 (chdir "Xonotic")
7299 (copy-recursively "data"
7300 (string-append xonotic "/data"))
7301 (copy-recursively "server"
7302 (string-append xonotic "/server"))
7303 (install-file "key_0.d0pk" xonotic)))))
7304 (home-page "http://xonotic.org")
7305 (synopsis "Data files for Xonotic")
7306 (description
7307 "Xonotic-data provides the data files required by the game Xonotic.")
7308 (license (list license:gpl2+
7309 (license:x11-style "file://server/rcon.pl")))))
7310
7311 (define-public xonotic
7312 (package
7313 (name "xonotic")
7314 (version "0.8.2")
7315 (source
7316 (origin
7317 (method url-fetch)
7318 (uri (string-append "http://dl.xonotic.org/xonotic-"
7319 version "-source.zip"))
7320 (file-name (string-append name "-" version ".zip"))
7321 (sha256
7322 (base32
7323 "0axxw04fyz6jlfqd0kp7hdrqa0li31sx1pbipf2j5qp9wvqicsay"))))
7324 (build-system gnu-build-system)
7325 (arguments
7326 `(#:configure-flags (list (string-append "--prefix="
7327 (assoc-ref %outputs "out"))
7328 "--disable-rijndael")
7329 #:phases
7330 (modify-phases %standard-phases
7331 (add-before 'configure 'make-darkplaces
7332 (lambda* (#:key outputs #:allow-other-keys)
7333 (let* ((out (assoc-ref outputs "out"))
7334 (sharedir (string-append out "/share/xonotic/")))
7335 (invoke "make" "-C" "source/darkplaces"
7336 (string-append "DP_FS_BASEDIR="
7337 sharedir)
7338 "DP_LINK_TO_LIBJPEG=1"
7339 "DP_SOUND_API=ALSA"
7340 "CC=gcc"
7341 "-f" "makefile"
7342 "cl-release")
7343 (invoke "make" "-C" "source/darkplaces"
7344 (string-append "DP_FS_BASEDIR="
7345 sharedir)
7346 "DP_LINK_TO_LIBJPEG=1"
7347 "DP_SOUND_API=ALSA"
7348 "CC=gcc"
7349 "-f" "makefile"
7350 "sdl-release")
7351 (invoke "make" "-C" "source/darkplaces"
7352 (string-append "DP_FS_BASEDIR="
7353 sharedir)
7354 "DP_LINK_TO_LIBJPEG=1"
7355 "DP_SOUND_API=ALSA"
7356 "CC=gcc"
7357 "-f" "makefile"
7358 "sv-release"))))
7359 (add-before 'configure 'bootstrap
7360 (lambda _
7361 (chdir "source/d0_blind_id")
7362 (invoke "sh" "autogen.sh")))
7363 (add-after 'build 'install-desktop-entry
7364 (lambda* (#:key outputs #:allow-other-keys)
7365 ;; Add .desktop files for the 2 variants and the symlink
7366 (let* ((output (assoc-ref outputs "out"))
7367 (apps (string-append output "/share/applications")))
7368 (mkdir-p apps)
7369 (with-output-to-file
7370 (string-append apps "/xonotic-glx.desktop")
7371 (lambda _
7372 (format #t
7373 "[Desktop Entry]~@
7374 Name=xonotic-glx~@
7375 Comment=Xonotic glx~@
7376 Exec=~a/bin/xonotic-glx~@
7377 TryExec=~@*~a/bin/xonotic-glx~@
7378 Icon=xonotic~@
7379 Categories=Game~@
7380 Type=Application~%"
7381 output)))
7382 (with-output-to-file
7383 (string-append apps "/xonotic-sdl.desktop")
7384 (lambda _
7385 (format #t
7386 "[Desktop Entry]~@
7387 Name=xonotic-sdl~@
7388 Comment=Xonotic sdl~@
7389 Exec=~a/bin/xonotic-sdl~@
7390 TryExec=~@*~a/bin/xonotic-sdl~@
7391 Icon=xonotic~@
7392 Categories=Game~@
7393 Type=Application~%"
7394 output)))
7395 (with-output-to-file
7396 (string-append apps "/xonotic.desktop")
7397 (lambda _
7398 (format #t
7399 "[Desktop Entry]~@
7400 Name=xonotic~@
7401 Comment=Xonotic~@
7402 Exec=~a/bin/xonotic-glx~@
7403 TryExec=~@*~a/bin/xonotic~@
7404 Icon=xonotic~@
7405 Categories=Game~@
7406 Type=Application~%"
7407 output)))
7408 #t)))
7409 (add-after 'install-desktop-entry 'install-icons
7410 (lambda* (#:key outputs #:allow-other-keys)
7411 (let ((out (assoc-ref outputs "out")))
7412 (with-directory-excursion "../../misc/logos/icons_png/"
7413 (for-each
7414 (lambda (file)
7415 (let* ((size (string-filter char-numeric? file))
7416 (icons (string-append out "/share/icons/hicolor/"
7417 size "x" size "/apps")))
7418 (mkdir-p icons)
7419 (copy-file file (string-append icons "/xonotic.png"))))
7420 '("xonotic_16.png" "xonotic_22.png" "xonotic_24.png"
7421 "xonotic_32.png" "xonotic_48.png" "xonotic_64.png"
7422 "xonotic_128.png" "xonotic_256.png" "xonotic_512.png"))))))
7423 (add-after 'install-icons 'install-binaries
7424 (lambda* (#:key outputs #:allow-other-keys)
7425 (let ((out (assoc-ref outputs "out")))
7426 (define (install src dst)
7427 (let ((dst (string-append out dst)))
7428 (mkdir-p (dirname dst))
7429 (copy-file src dst)))
7430 (mkdir-p (string-append out "/bin"))
7431 (install "../darkplaces/darkplaces-dedicated"
7432 "/bin/xonotic-dedicated")
7433 (install "../darkplaces/darkplaces-glx"
7434 "/bin/xonotic-glx")
7435 (install "../darkplaces/darkplaces-sdl"
7436 "/bin/xonotic-sdl")
7437 ;; Provide a default xonotic executable, defaulting to SDL.
7438 (symlink (string-append out "/bin/xonotic-sdl")
7439 (string-append out "/bin/xonotic"))
7440 #t)))
7441 (add-after 'install-binaries 'install-data
7442 (lambda* (#:key outputs inputs #:allow-other-keys)
7443 (let* ((out (assoc-ref outputs "out"))
7444 (data (assoc-ref inputs "xonotic-data")))
7445 (symlink (string-append data "/share/xonotic")
7446 (string-append out "/share/xonotic"))
7447 #t)))
7448 (add-after 'install-binaries 'wrap-binaries
7449 (lambda* (#:key outputs inputs #:allow-other-keys)
7450 ;; Curl and libvorbis need to be wrapped so that we get
7451 ;; sound and networking.
7452 (let* ((out (assoc-ref outputs "out"))
7453 (bin (string-append out "/bin/xonotic"))
7454 (bin-sdl (string-append out "/bin/xonotic-sdl"))
7455 (bin-glx (string-append out "/bin/xonotic-glx"))
7456 (bin-dedicated (string-append out "/bin/xonotic-dedicated"))
7457 (curl (assoc-ref inputs "curl"))
7458 (vorbis (assoc-ref inputs "libvorbis")))
7459 (wrap-program bin
7460 `("LD_LIBRARY_PATH" ":" prefix
7461 (,(string-append curl "/lib:" vorbis "/lib"))))
7462 (wrap-program bin-sdl
7463 `("LD_LIBRARY_PATH" ":" prefix
7464 (,(string-append curl "/lib:" vorbis "/lib"))))
7465 (wrap-program bin-glx
7466 `("LD_LIBRARY_PATH" ":" prefix
7467 (,(string-append curl "/lib:" vorbis "/lib"))))
7468 (wrap-program bin-dedicated
7469 `("LD_LIBRARY_PATH" ":" prefix
7470 (,(string-append curl "/lib:" vorbis "/lib"))))
7471 #t))))))
7472 (inputs
7473 `(("xonotic-data" ,xonotic-data)
7474 ("alsa-lib" ,alsa-lib)
7475 ("curl" ,curl)
7476 ("libjpeg" ,libjpeg-turbo)
7477 ("libmodplug" ,libmodplug)
7478 ("libvorbis" ,libvorbis)
7479 ("libogg" ,libogg)
7480 ("libxpm" ,libxpm)
7481 ("libxxf86dga" ,libxxf86dga)
7482 ("libxxf86vm" ,libxxf86vm)
7483 ("libx11" ,libx11)
7484 ("libxext" ,libxext)
7485 ("libxau" ,libxau)
7486 ("libxdmcp" ,libxdmcp)
7487 ("mesa" ,mesa)
7488 ("glu" ,glu)
7489 ("freetype" ,freetype)
7490 ("sdl2" ,sdl2)
7491 ("libpng" ,libpng)
7492 ("hicolor-icon-theme" ,hicolor-icon-theme)))
7493 (native-inputs
7494 `(("unzip" ,unzip)
7495 ("autoconf" ,autoconf)
7496 ("automake" ,automake)
7497 ("pkg-config" ,pkg-config)
7498 ("libtool" ,libtool)
7499 ("gmp" ,gmp)))
7500 (home-page "https://xonotic.org")
7501 (synopsis "Fast-paced first-person shooter game")
7502 (description
7503 "Xonotic is a free, fast-paced first-person shooter.
7504 The project is geared towards providing addictive arena shooter
7505 gameplay which is all spawned and driven by the community itself.
7506 Xonotic is a direct successor of the Nexuiz project with years of
7507 development between them, and it aims to become the best possible
7508 open-source FPS of its kind.")
7509 (license (list license:gpl2+
7510 license:bsd-3 ; /source/d0_blind_id folder and others
7511 (license:x11-style "" "See file rcon.pl.")))))
7512
7513 (define-public frotz
7514 (package
7515 (name "frotz")
7516 (version "2.44")
7517 (source (origin
7518 (method url-fetch)
7519 (uri (list (string-append
7520 "http://www.ifarchive.org/if-archive/infocom/interpreters/"
7521 "frotz/frotz-" version ".tar.gz")
7522 (string-append
7523 "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
7524 "frotz/frotz-" version ".tar.gz")))
7525 (sha256
7526 (base32
7527 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
7528 (build-system gnu-build-system)
7529 (arguments
7530 `(#:tests? #f ; there are no tests
7531 #:phases
7532 (modify-phases %standard-phases
7533 (delete 'configure)
7534 (add-before 'build 'curses
7535 (lambda _
7536 (substitute* "Makefile"
7537 (("lcurses") "lncurses"))
7538 #t))
7539 (replace 'install
7540 (lambda* (#:key outputs #:allow-other-keys)
7541 (let* ((out (assoc-ref outputs "out"))
7542 (bin (string-append out "/bin"))
7543 (man (string-append out "/share/man/man6")))
7544 (install-file "frotz" bin)
7545 (mkdir-p man)
7546 (install-file "doc/frotz.6" man)
7547 #t))))))
7548 (inputs `(("libmodplug" ,libmodplug)
7549 ("libsamplerate" ,libsamplerate)
7550 ("libsndfile" ,libsndfile)
7551 ("libvorbis" ,libvorbis)
7552 ("ncurses" ,ncurses)))
7553 (synopsis "Portable Z-machine interpreter (ncurses version) for text adventure games")
7554 (description "Frotz is an interpreter for Infocom games and other Z-machine
7555 games in the text adventure/interactive fiction genre. This version of Frotz
7556 complies with standard 1.0 of Graham Nelson's specification. It plays all
7557 Z-code games V1-V8, including V6, with sound support through libao, and uses
7558 ncurses for text display.")
7559 (home-page "http://frotz.sourceforge.net")
7560 (license license:gpl2+)))
7561
7562 (define-public frotz-dumb-terminal
7563 (package
7564 (name "frotz-dumb-terminal")
7565 (version "2.44")
7566 (source (origin
7567 (method url-fetch)
7568 (uri (list (string-append
7569 "http://www.ifarchive.org/if-archive/infocom/interpreters/"
7570 "frotz/frotz-" version ".tar.gz")
7571 (string-append
7572 "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
7573 "frotz/frotz-" version ".tar.gz")))
7574 (sha256
7575 (base32
7576 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
7577 (build-system gnu-build-system)
7578 (arguments
7579 `(#:tests? #f ; there are no tests
7580 #:phases
7581 (modify-phases %standard-phases
7582 (delete 'configure)
7583 (replace 'build
7584 (lambda _
7585 (invoke "make" "dumb")))
7586 (replace 'install
7587 (lambda* (#:key outputs #:allow-other-keys)
7588 (let* ((out (assoc-ref outputs "out"))
7589 (bin (string-append out "/bin"))
7590 (man (string-append out "/share/man/man6")))
7591 (install-file "dfrotz" bin)
7592 (mkdir-p man)
7593 (install-file "doc/dfrotz.6" man)
7594 #t))))))
7595 (synopsis "Portable Z-machine dumb interpreter for text adventure games")
7596 (description "Frotz is an interpreter for Infocom games and
7597 other Z-machine games in the text adventure/interactive fiction genre.
7598 dfrotz is the dumb interface version. You get no screen control; everything
7599 is just printed to the terminal line by line. The terminal handles all the
7600 scrolling. Maybe you'd like to experience what it's like to play Adventure on
7601 a teletype. A much cooler use for compiling Frotz with the dumb interface is
7602 that it can be wrapped in CGI scripting, PHP, and the like to allow people
7603 to play games on webpages. It can also be made into a chat bot.")
7604 (home-page "http://frotz.sourceforge.net")
7605 (license license:gpl2+)))
7606
7607 (define-public frotz-sdl
7608 (let* ((commit "4de8c34f2116fff554af6216c30ec9d41bf50b24"))
7609 (package
7610 (name "frotz-sdl")
7611 (version "2.45pre")
7612 (source (origin
7613 (method git-fetch)
7614 (uri (git-reference
7615 (url "https://gitlab.com/DavidGriffith/frotz")
7616 (commit commit)))
7617 (sha256
7618 (base32
7619 "18ms21pcrl7ipcnyqnf8janamkryzx78frsgd9kfk67jvbj0z2k8"))
7620 (file-name (git-file-name name version))))
7621 (build-system gnu-build-system)
7622 (arguments
7623 `(#:tests? #f ; there are no tests
7624 #:phases
7625 (modify-phases %standard-phases
7626 (delete 'configure)
7627 (add-before 'build 'patch-makefile
7628 (lambda _
7629 (substitute* "Makefile"
7630 (("lcurses") "lncurses")
7631 (("^BUILD_DATE_TIME =.*$")
7632 "BUILD_DATE_TIME = \"2.45pre-20180907.00000\"\n"))
7633 #t))
7634 (replace 'build
7635 (lambda _
7636 (invoke "make" "sdl")))
7637 (replace 'install
7638 (lambda* (#:key outputs #:allow-other-keys)
7639 (let* ((out (assoc-ref outputs "out"))
7640 (bin (string-append out "/bin"))
7641 (man (string-append out "/share/man/man6")))
7642 (install-file "sfrotz" bin)
7643 (mkdir-p man)
7644 (install-file "doc/sfrotz.6" man)
7645 #t))))))
7646 (native-inputs
7647 `(("pkg-config" ,pkg-config)
7648 ("which" ,which)
7649 ("perl" ,perl)))
7650 (inputs `(("sdl2" ,sdl2)
7651 ("sdl2-mixer" ,sdl2-mixer)
7652 ("libmodplug" ,libmodplug)
7653 ("libsamplerate" ,libsamplerate)
7654 ("libsndfile" ,libsndfile)
7655 ("libvorbis" ,libvorbis)
7656 ("ncurses" ,ncurses)
7657 ("freetype" ,freetype)
7658 ("libjpeg-turbo" ,libjpeg-turbo)))
7659 (synopsis "Portable Z-machine interpreter (SDL port) for text adventure games")
7660 (description "Frotz is an interpreter for Infocom games and other Z-machine
7661 games in the text adventure/interactive fiction genre. This version of Frotz
7662 using SDL fully supports all these versions of the Z-Machine including the
7663 graphical version 6. Graphics and sound are created through the use of the SDL
7664 libraries. AIFF sound effects and music in MOD and OGG formats are supported
7665 when packaged in Blorb container files or optionally from individual files.")
7666 (home-page "http://frotz.sourceforge.net")
7667 (license license:gpl2+))))
7668
7669 (define-public frozen-bubble
7670 ;; Last official release is very outdated (2010). Use latest commit (2017).
7671 (let ((commit "d6a029110ad6ab9e4960052e175addc98807fb7e")
7672 (revision "1"))
7673 (package
7674 (name "frozen-bubble")
7675 (version (git-version "2.2.1" revision commit))
7676 (source
7677 (origin
7678 (method git-fetch)
7679 (uri (git-reference
7680 (url "https://github.com/kthakore/frozen-bubble")
7681 (commit commit)))
7682 (file-name (git-file-name name version))
7683 (sha256
7684 (base32 "1rfrcym5lf4qac2qdklikb1ywijyxypq298azzxahy461dadl6cx"))))
7685 (build-system perl-build-system)
7686 (arguments
7687 `(#:phases
7688 (modify-phases %standard-phases
7689 ;; Build process needs to create files in the "server"
7690 ;; directory.
7691 (add-after 'unpack 'fix-permissions
7692 (lambda _
7693 (for-each make-file-writable
7694 (find-files "server" "." #:directories? #t))))
7695 ;; By default, build stops at warnings.
7696 (add-after 'unpack 'prevent-build-error
7697 (lambda _
7698 (substitute* "inc/My/Builder.pm"
7699 (("-Werror") ""))
7700 #t))
7701 (add-after 'install 'install-desktop-file-and-icons
7702 (lambda* (#:key outputs #:allow-other-keys)
7703 (let* ((share (string-append (assoc-ref outputs "out") "/share"))
7704 (hicolor (string-append share "/icons/hicolor")))
7705 ;; Create desktop entry.
7706 (make-desktop-entry-file
7707 (string-append share "/applications/" ,name ".desktop")
7708 #:name "Frozen Bubble"
7709 #:comment "Frozen Bubble arcade game"
7710 #:exec ,name
7711 #:icon ,name
7712 #:categories '("Game" "ArcadeGame"))
7713 ;; Add icons.
7714 (with-directory-excursion "share/icons"
7715 (for-each
7716 (lambda (size)
7717 (let* ((dim (string-append size "x" size))
7718 (dir (string-append hicolor "/" dim "/apps")))
7719 (mkdir-p dir)
7720 (copy-file
7721 (string-append "frozen-bubble-icon-" dim ".png")
7722 (string-append dir "/frozen-bubble.png"))))
7723 '("16" "32" "48" "64"))))
7724 #t))
7725 (add-after 'install 'wrap-perl-libs
7726 (lambda* (#:key outputs #:allow-other-keys)
7727 (let ((out (assoc-ref outputs "out"))
7728 (perl5lib (getenv "PERL5LIB")))
7729 (for-each (lambda (prog)
7730 (wrap-program (string-append out "/" prog)
7731 `("PERL5LIB" ":" prefix
7732 (,(string-append perl5lib ":" out
7733 "/lib/perl5/site_perl")))))
7734 (find-files "bin" ".")))
7735 #t)))))
7736 (native-inputs
7737 `(("perl-alien-sdl" ,perl-alien-sdl)
7738 ("perl-capture-tiny" ,perl-capture-tiny)
7739 ("perl-locale-maketext-lexicon" ,perl-locale-maketext-lexicon)
7740 ("perl-module-build" ,perl-module-build)
7741 ("pkg-config" ,pkg-config)))
7742 (inputs
7743 `(("glib" ,glib)
7744 ("perl-compress-bzip2" ,perl-compress-bzip2)
7745 ("perl-file-sharedir" ,perl-file-sharedir)
7746 ("perl-file-slurp" ,perl-file-slurp)
7747 ("perl-file-which" ,perl-file-which)
7748 ("perl-ipc-system-simple" ,perl-ipc-system-simple)
7749 ("perl-sdl" ,perl-sdl)
7750 ("sdl" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-pango sdl-ttf)))))
7751 (home-page "http://frozen-bubble.org/")
7752 (synopsis "Puzzle with bubbles")
7753 (description
7754 "Frozen-Bubble is a clone of the popular Puzzle Bobble game, in which
7755 you attempt to shoot bubbles into groups of the same color to cause them to
7756 pop.
7757
7758 Players compete as penguins and must use the arrow keys to aim a colored
7759 bubble at groups of bubbles. The objective is to clear all the bubbles off
7760 the screen before a bubble passes below a line at the bottom.
7761
7762 It features 100 single-player levels, a two-player mode, music and striking
7763 graphics. A level editor is also included to allow players to create and play
7764 their own levels.")
7765 (license license:gpl2))))
7766
7767 (define-public libmanette
7768 (package
7769 (name "libmanette")
7770 (version "0.2.4")
7771 (source (origin
7772 (method url-fetch)
7773 (uri (string-append "mirror://gnome/sources/libmanette/"
7774 (version-major+minor version) "/"
7775 "libmanette-" version ".tar.xz"))
7776 (sha256
7777 (base32
7778 "1xrc6rh73v5w3kbkflzv1yg8sbxk4wf06hfk95raxhxlssza9q2g"))))
7779 (build-system meson-build-system)
7780 (native-inputs
7781 `(("glib" ,glib "bin") ; for glib-compile-resources
7782 ("gobject-introspection" ,gobject-introspection)
7783 ("pkg-config" ,pkg-config)
7784 ("vala" ,vala)))
7785 (inputs
7786 `(("libevdev" ,libevdev)
7787 ("libgudev" ,libgudev)))
7788 (home-page "https://wiki.gnome.org/Apps/Games")
7789 (synopsis "Game controller library")
7790 (description "Libmanette is a small GObject library giving you simple
7791 access to game controllers. It supports the de-facto standard gamepads as
7792 defined by the W3C standard Gamepad specification or as implemented by the SDL
7793 GameController.")
7794 (license license:lgpl2.1+)))
7795
7796 (define-public quadrapassel
7797 (package
7798 (name "quadrapassel")
7799 (version "3.36.05")
7800 (source (origin
7801 (method url-fetch)
7802 (uri (string-append "mirror://gnome/sources/quadrapassel/"
7803 (version-major+minor version) "/"
7804 "quadrapassel-" version ".tar.xz"))
7805 (sha256
7806 (base32
7807 "04abxmimh5npw8rhz1sfi6wxilgc6i1wka9mlnfwp8v1p1cb00cv"))))
7808 (build-system meson-build-system)
7809 (arguments
7810 '(#:glib-or-gtk? #t
7811 #:phases
7812 (modify-phases %standard-phases
7813 (add-after 'unpack 'skip-gtk-update-icon-cache
7814 ;; Don't create 'icon-theme.cache'.
7815 (lambda _
7816 (substitute* "build-aux/meson_post_install.py"
7817 (("gtk-update-icon-cache") (which "true")))
7818 #t)))))
7819 (native-inputs
7820 `(("desktop-file-utils" ,desktop-file-utils) ;for desktop-file-validate
7821 ("gettext" ,gettext-minimal)
7822 ("glib" ,glib "bin") ;for glib-compile-resources
7823 ("itstool" ,itstool)
7824 ("libxml2" ,libxml2) ;for xmllint
7825 ("pkg-config" ,pkg-config)
7826 ("vala" ,vala)))
7827 (inputs
7828 `(("clutter" ,clutter)
7829 ("clutter-gtk" ,clutter-gtk)
7830 ("gsound" ,gsound)
7831 ("gtk+" ,gtk+)
7832 ("libcanberra" ,libcanberra)
7833 ("libmanette" ,libmanette)
7834 ("librsvg" ,librsvg)))
7835 (home-page "https://wiki.gnome.org/Apps/Quadrapassel")
7836 (synopsis "GNOME version of Tetris")
7837 (description "Quadrapassel comes from the classic falling-block game,
7838 Tetris. The goal of the game is to create complete horizontal lines of
7839 blocks, which will disappear. The blocks come in seven different shapes made
7840 from four blocks each: one straight, two L-shaped, one square, and two
7841 S-shaped. The blocks fall from the top center of the screen in a random
7842 order. You rotate the blocks and move them across the screen to drop them in
7843 complete lines. You score by dropping blocks fast and completing lines. As
7844 your score gets higher, you level up and the blocks fall faster.")
7845 (license license:gpl2+)))
7846
7847 (define-public endless-sky
7848 (package
7849 (name "endless-sky")
7850 (version "0.9.12")
7851 (source
7852 (origin
7853 (method git-fetch)
7854 (uri (git-reference
7855 (url "https://github.com/endless-sky/endless-sky")
7856 (commit (string-append "v" version))))
7857 (file-name (git-file-name name version))
7858 (sha256
7859 (base32 "18nkl4s3r5sy3sd9lhbdg9160c7fggklklprx0d5azifc8g6k0wj"))))
7860 (build-system scons-build-system)
7861 (arguments
7862 `(#:scons ,scons-python2
7863 #:scons-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
7864 #:tests? #f ; no tests
7865 #:phases
7866 (modify-phases %standard-phases
7867 (add-after 'unpack 'patch-resource-locations
7868 (lambda* (#:key outputs #:allow-other-keys)
7869 (substitute* "source/Files.cpp"
7870 (("/usr/local/")
7871 (string-append (assoc-ref outputs "out") "/")))
7872 #t))
7873 (add-after 'unpack 'patch-scons
7874 (lambda _
7875 (substitute* "SConstruct"
7876 ;; Keep environmental variables
7877 (("Environment\\(\\)")
7878 "Environment(ENV = os.environ)")
7879 ;; Install into %out/bin
7880 (("games\"") "bin\""))
7881 #t)))))
7882 (inputs
7883 `(("glew" ,glew)
7884 ("libjpeg" ,libjpeg-turbo)
7885 ("libmad" ,libmad)
7886 ("libpng" ,libpng)
7887 ("openal" ,openal)
7888 ("sdl2" ,sdl2)))
7889 (home-page "https://endless-sky.github.io/")
7890 (synopsis "2D space trading and combat game")
7891 (description "Endless Sky is a 2D space trading and combat game. Explore
7892 other star systems. Earn money by trading, carrying passengers, or completing
7893 missions. Use your earnings to buy a better ship or to upgrade the weapons and
7894 engines on your current one. Blow up pirates. Take sides in a civil war. Or
7895 leave human space behind and hope to find friendly aliens whose culture is more
7896 civilized than your own.")
7897 (license (list license:gpl3+
7898 license:cc-by-sa3.0
7899 license:cc-by-sa4.0
7900 license:public-domain))))
7901
7902 (define-public stepmania
7903 (package
7904 (name "stepmania")
7905 (version "5.1.0-b2")
7906 (source
7907 (origin
7908 (method git-fetch)
7909 (uri (git-reference
7910 (url "https://github.com/stepmania/stepmania")
7911 (commit (string-append "v" version))))
7912 (file-name (git-file-name name version))
7913 (sha256
7914 (base32
7915 "0a7y9l7xm510vgnpmj1is7p9m6d6yd0fcaxrjcickz295k5w3rdn"))
7916 (modules '((guix build utils)))
7917 (snippet
7918 '(begin
7919 ;; Remove song files, which are licensed under a non-commercial
7920 ;; clause, and a course pointing to them.
7921 (for-each delete-file-recursively
7922 '("Songs/StepMania 5/Goin' Under"
7923 "Songs/StepMania 5/MechaTribe Assault"
7924 "Songs/StepMania 5/Springtime"))
7925 (for-each delete-file '("Courses/Default/Jupiter.crs"
7926 "Courses/Default/Jupiter.png"))
7927 ;; Unbundle libpng.
7928 (substitute* "extern/CMakeLists.txt"
7929 (("include\\(CMakeProject-png.cmake\\)") ""))
7930 (delete-file-recursively "extern/libpng")
7931 #t))))
7932 (build-system cmake-build-system)
7933 (arguments
7934 `(#:tests? #f ;FIXME: couldn't find how to run tests
7935 #:build-type "Release"
7936 #:out-of-source? #f ;for the 'install-desktop' phase
7937 #:configure-flags
7938 (list "-DWITH_SYSTEM_FFMPEG=1"
7939 ;; SSE instructions are available on Intel systems only.
7940 ,@(if (any (cute string-prefix? <> (or (%current-target-system)
7941 (%current-system)))
7942 '("x86_64" "i686"))
7943 '()
7944 '("-DWITH_SSE2=NO"))
7945 ;; Configuration cannot find GTK2 without the two following
7946 ;; flags.
7947 (string-append "-DGTK2_GDKCONFIG_INCLUDE_DIR="
7948 (assoc-ref %build-inputs "gtk+")
7949 "/lib/gtk-2.0/include")
7950 (string-append "-DGTK2_GLIBCONFIG_INCLUDE_DIR="
7951 (assoc-ref %build-inputs "glib")
7952 "/lib/glib-2.0/include"))
7953 #:phases
7954 (modify-phases %standard-phases
7955 (add-after 'unpack 'ensure-application-files-can-be-found
7956 (lambda* (#:key outputs #:allow-other-keys)
7957 (let ((out (assoc-ref outputs "out")))
7958 (substitute* "src/arch/LoadingWindow/LoadingWindow_Gtk.cpp"
7959 (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\" \\+ \"GtkModule.so\"")
7960 (string-append "\"" out
7961 "/share/stepmania/GtkModule.so\"")))
7962 (substitute* "src/arch/ArchHooks/ArchHooks_Unix.cpp"
7963 (("Root = sDirOfExecutable")
7964 (string-append "Root = \"" out "/share/stepmania/\""))
7965 (("sDirOfExecutable \\+ \"/(Packages|Songs)\"" _ dir)
7966 (string-append "\"" out "/share/stepmania/" dir "\"")))
7967 (substitute* "src/RageFileManager.cpp"
7968 (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\"")
7969 (string-append "\"" out "/share/stepmania/\""))))
7970 #t))
7971 (add-after 'unpack 'fix-install-subdir
7972 ;; Installation would be done in "%out/stepmania-X.Y", but we
7973 ;; prefer the more common layout "%out/share/stepmania".
7974 (lambda _
7975 (substitute* "src/CMakeLists.txt"
7976 (("\"stepmania-.*?\"") "\"share/stepmania\""))
7977 #t))
7978 (add-after 'unpack 'unbundle-libpng
7979 (lambda* (#:key inputs #:allow-other-keys)
7980 (substitute* "src/CMakeLists.txt"
7981 (("\\$\\{SM_EXTERN_DIR\\}/libpng/include")
7982 (string-append (assoc-ref inputs "libpng") "/include")))
7983 #t))
7984 (add-after 'install 'install-executable
7985 (lambda* (#:key outputs #:allow-other-keys)
7986 (let* ((out (assoc-ref outputs "out"))
7987 (bin (string-append out "/bin"))
7988 (exe (string-append out "/share/stepmania/stepmania")))
7989 (mkdir-p bin)
7990 (symlink exe (string-append bin "/stepmania"))
7991 #t)))
7992 (add-after 'install-executable 'install-desktop
7993 (lambda* (#:key outputs #:allow-other-keys)
7994 (let* ((out (assoc-ref outputs "out"))
7995 (share (string-append out "/share"))
7996 (applications (string-append share "/applications"))
7997 (icons (string-append share "/icons")))
7998 (install-file "stepmania.desktop" applications)
7999 (mkdir-p icons)
8000 (copy-recursively "icons" icons)
8001 #t)))
8002 ;; Move documentation in a more usual place, i.e.,
8003 ;; "%out/share/doc/stepmania/".
8004 (add-after 'install-desktop 'install-doc
8005 (lambda* (#:key outputs #:allow-other-keys)
8006 (let* ((out (assoc-ref outputs "out"))
8007 (share (string-append out "/share")))
8008 (with-directory-excursion share
8009 (mkdir-p "doc")
8010 (symlink "../stepmania/Docs" "doc/stepmania"))
8011 #t))))))
8012 (native-inputs
8013 `(("pkg-config" ,pkg-config)
8014 ("yasm" ,yasm)))
8015 (inputs
8016 `(("alsa-lib" ,alsa-lib)
8017 ;; Per upstream, StepMania is only guaranteed to work with a very
8018 ;; specific FFmpeg version, which is included in the repository as
8019 ;; a Git submodule. This particular version requirement usually
8020 ;; changes every few years.
8021 ("ffmpeg" ,ffmpeg-for-stepmania)
8022 ("glib" ,glib)
8023 ("glew" ,glew)
8024 ("gtk+" ,gtk+-2)
8025 ("jsoncpp" ,jsoncpp)
8026 ("libpng" ,libpng)
8027 ("libjpeg" ,libjpeg-turbo)
8028 ("libmad" ,libmad)
8029 ("libogg" ,libogg)
8030 ("libva" ,libva)
8031 ("libvorbis" ,libvorbis)
8032 ("libxinerama" ,libxinerama)
8033 ("libxrandr" ,libxrandr)
8034 ("mesa" ,mesa)
8035 ("pcre" ,pcre)
8036 ("pulseaudio" ,pulseaudio)
8037 ("sdl" ,sdl2)
8038 ("udev" ,eudev)
8039 ("zlib" ,zlib)))
8040 (synopsis "Advanced rhythm game designed for both home and arcade use")
8041 (description "StepMania is a dance and rhythm game. It features 3D
8042 graphics, keyboard and dance pad support, and an editor for creating your own
8043 steps.
8044
8045 This package provides the core application, but no song is shipped. You need
8046 to download and install them in @file{$HOME/.stepmania-X.Y/Songs} directory.")
8047 (home-page "https://www.stepmania.com")
8048 (license license:expat)))
8049
8050 (define-public btanks
8051 (package
8052 (name "btanks")
8053 (version "0.9.8083")
8054 (source
8055 (origin
8056 (method url-fetch)
8057 (uri (string-append "mirror://sourceforge/btanks/btanks-source/"
8058 "btanks-" version ".tar.bz2"))
8059 (sha256
8060 (base32
8061 "0ha35kxc8xlbg74wsrbapfgxvcrwy6psjkqi7c6adxs55dmcxliz"))))
8062 (build-system scons-build-system)
8063 (arguments
8064 `(#:tests? #f ; there are none
8065 #:scons ,scons-python2
8066 #:scons-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
8067 #:phases
8068 (modify-phases %standard-phases
8069 (add-after 'unpack 'replace-removed-scons-syntax
8070 (lambda _
8071 (substitute* "SConstruct"
8072 (("Options") "Variables")
8073 (("opts.Add\\(BoolOption.*") "opts.Add('gcc_visibility', 'gcc visibility', 'true')")
8074 (("opts.Add\\(EnumOption.*") "opts.Add('mode', 'build mode', 'release')"))
8075 #t))
8076 (add-after 'set-paths 'set-sdl-paths
8077 (lambda* (#:key inputs #:allow-other-keys)
8078 (setenv "CPATH"
8079 (string-append (assoc-ref inputs "sdl")
8080 "/include/SDL:"
8081 (or (getenv "CPATH") "")))
8082 #t))
8083 (add-after 'unpack 'fix-compilation-errors
8084 (lambda _
8085 (substitute* "mrt/base_file.h"
8086 (("#include <string>" m)
8087 (string-append m "\n#include <sys/types.h>")))
8088 (substitute* '("engine/sl08/sl08.h"
8089 "engine/sl08/sl08.py")
8090 (("signal = NULL") "signal = 0")
8091 (("object\\(NULL\\)") "object(0)")
8092 (("func\\(NULL\\)") "func(0)")
8093 ((" connect\\(signal_ref\\)")
8094 " this->connect(signal_ref)"))
8095 (substitute* "math/range_list.h"
8096 ((" lower_bound\\(value\\)")
8097 " this->lower_bound(value)")
8098 ((" erase\\(i\\)")
8099 " this->erase(i)"))
8100 (substitute* "clunk/source.cpp"
8101 (("using namespace clunk" m)
8102 (string-append "# define pow10f(x) exp10f(x)\n" m)))
8103 #t))
8104 (add-after 'unpack 'find-lua
8105 (lambda _
8106 (substitute* "engine/SConscript"
8107 (("lua5.1") "lua-5.1")
8108 (("bt_libs.append\\(lua\\)")
8109 "bt_libs.append(\"lua\")"))
8110 #t)))))
8111 (inputs
8112 `(("expat" ,expat)
8113 ("glu" ,glu)
8114 ("libsmpeg" ,libsmpeg-with-sdl1)
8115 ("libvorbis" ,libvorbis)
8116 ("lua51" ,lua-5.1)
8117 ("sdl" ,(sdl-union (list sdl
8118 sdl-mixer
8119 sdl-image
8120 sdl-ttf)))
8121 ("zlib" ,zlib)))
8122 (native-inputs
8123 `(("pkg-config" ,pkg-config)
8124 ("zip" ,zip)))
8125 (home-page "http://btanks.sourceforge.net")
8126 (synopsis "Multiplayer tank battle game")
8127 (description "Battle Tanks (also known as \"btanks\") is a funny battle
8128 game, where you can choose one of three vehicles and eliminate your enemy
8129 using the whole arsenal of weapons. It has original cartoon-like graphics and
8130 cool music, it’s fun and dynamic, it has several network modes for deathmatch
8131 and cooperative.")
8132 ;; Some parts (e.g. mrt/b64.cpp) are LGPLv2.1+, but the whole package is
8133 ;; released under GPLv2 or later. It comes with extra exceptions for the
8134 ;; developers.
8135 (license (list license:gpl2+ license:lgpl2.1+))))
8136
8137 (define-public slingshot
8138 (package
8139 (name "slingshot")
8140 (version "0.9")
8141 (source
8142 (origin
8143 (method git-fetch)
8144 (uri (git-reference
8145 (url "https://github.com/ryanakca/slingshot")
8146 (commit version)))
8147 (file-name (git-file-name name version))
8148 (sha256
8149 (base32
8150 "19m8b6nsi786bc6gmkp185mwri3r5y249gjmqd5qsc23nnfhgrs1"))))
8151 (build-system python-build-system)
8152 (arguments
8153 `(#:python ,python-2))
8154 (inputs
8155 `(("python-pygame" ,python2-pygame)))
8156 (home-page "https://github.com/ryanakca/slingshot")
8157 (synopsis "Simple 2D shooting strategy game set in space")
8158 (description "Slingshot is a two-dimensional strategy game where two
8159 players attempt to shoot one another through a section of space populated by
8160 planets. The main feature of the game is that the shots, once fired, are
8161 affected by the gravity of the planets.")
8162 (license license:gpl2+)))
8163
8164 (define-public 4dtris
8165 (package
8166 (name "4dtris")
8167 (version "0.4.3")
8168 (source
8169 (origin
8170 (method url-fetch)
8171 (uri (string-append "https://launchpad.net/4dtris/"
8172 (version-major+minor version)
8173 "/" version "/+download/4dtris_"
8174 version ".orig.tar.gz"))
8175 (sha256
8176 (base32
8177 "1nfkhcm0l89jyw8yr65na97g4l385zhjf7whkyg47c3v5sdqq2g7"))))
8178 (build-system gnu-build-system)
8179 (arguments
8180 `(#:phases
8181 (modify-phases %standard-phases
8182 (add-after 'unpack 'fix-install-directories
8183 (lambda* (#:key outputs #:allow-other-keys)
8184 (let ((out (assoc-ref outputs "out")))
8185 (substitute* "Makefile.in"
8186 (("bindir = /usr/games")
8187 (string-append "bindir = " out "/bin"))
8188 (("/usr/share/applications")
8189 (string-append out "/share/applications"))
8190 (("/usr/share/games/4dtris")
8191 (string-append out "/share/4dtris"))))
8192 #t))
8193 (add-after 'set-paths 'set-sdl-paths
8194 (lambda* (#:key inputs #:allow-other-keys)
8195 (setenv "CPATH"
8196 (string-append (assoc-ref inputs "sdl")
8197 "/include/SDL:"
8198 (or (getenv "CPATH") "")))
8199 #t)))))
8200 (inputs
8201 `(("fontconfig" ,fontconfig)
8202 ("freeglut" ,freeglut)
8203 ("sdl" ,(sdl-union (list sdl sdl-ttf)))))
8204 (home-page "https://launchpad.net/4dtris/")
8205 (synopsis "4D Tetris")
8206 (description "4D-TRIS is an alteration of the well-known Tetris game. The
8207 game field is extended to 4D space, which has to filled up by the gamer with
8208 4D hyper cubes.")
8209 (license license:gpl3)))
8210
8211 (define-public arx-libertatis
8212 (package
8213 (name "arx-libertatis")
8214 (version "1.1.2")
8215 (source
8216 (origin
8217 (method url-fetch)
8218 (uri (string-append "http://arx-libertatis.org/files/arx-libertatis-"
8219 version ".tar.xz"))
8220 (sha256
8221 (base32
8222 "0hjfxlsmp8wwqr06snv2dlly2s79ra0d9aw49gkp6rn8m50b9bc2"))))
8223 (build-system cmake-build-system)
8224 (outputs '("out" "installer"))
8225 (arguments
8226 '(#:tests? #f ; No tests.
8227 #:phases
8228 (modify-phases %standard-phases
8229 (add-after 'unpack 'fix-install-helper-paths
8230 (lambda* (#:key inputs #:allow-other-keys)
8231 (let ((p7zip (assoc-ref inputs "p7zip"))
8232 (innoextract (assoc-ref inputs "innoextract"))
8233 (wget (assoc-ref inputs "wget"))
8234 (zenity (assoc-ref inputs "zenity")))
8235 (substitute* "scripts/arx-install-data"
8236 (("have innoextract")
8237 (string-append "have " innoextract "/bin/innoextract"))
8238 (("then innoextract")
8239 (string-append "then " innoextract "/bin/innoextract"))
8240 (("else innoextract")
8241 (string-append "else " innoextract "/bin/innoextract"))
8242 (("for _extract_zip_sz in 7za 7z")
8243 (string-append "for _extract_zip_sz in " p7zip "/bin/7za"))
8244 (("else if have 7z")
8245 (string-append "else if have " p7zip "/bin/7za"))
8246 (("7z x -tiso")
8247 (string-append p7zip "/bin/7z x -tiso"))
8248 (("if have wget")
8249 (string-append "if have " wget "/bin/wget"))
8250 (("wget -O")
8251 (string-append wget "/bin/wget -O"))
8252 (("for backend in \\$preferred zenity")
8253 (string-append "for backend in $preferred " zenity "/bin/zenity"))
8254 (("zenity +--title")
8255 (string-append zenity "/bin/zenity --title"))
8256 (("^zenity\\)")
8257 (string-append zenity "/bin/zenity)"))))
8258 #t))
8259 (add-after 'install 'move-installer
8260 (lambda* (#:key outputs #:allow-other-keys)
8261 (let ((out (assoc-ref outputs "out"))
8262 (installer (assoc-ref outputs "installer")))
8263 (mkdir-p (string-append installer "/bin"))
8264 (rename-file (string-append out "/bin/arx-install-data")
8265 (string-append installer "/bin/arx-install-data"))))))))
8266 (inputs
8267 `(("sdl" ,sdl) ; Switch to sdl2 in >1.1.2.
8268 ("mesa" ,mesa) ; Switch to libepoxy in >1.1.2.
8269 ("glew" ,glew)
8270 ("openal" ,openal)
8271 ("zlib" ,zlib)
8272 ("boost" ,boost)
8273 ("glm" ,glm)
8274 ("freetype" ,freetype)
8275 ;; The following are only needed by the arx-install-data script.
8276 ("p7zip" ,p7zip) ; Install-helper uses it to extract ISO and .cab archives.
8277 ("zenity" ,zenity) ; GUI for install-helper.
8278 ("wget" ,wget) ; Used by the install-helper to download the patch.
8279 ;; The install-helper needs it to extract the patch.
8280 ("innoextract" ,innoextract)))
8281 (home-page "https://arx-libertatis.org/")
8282 (synopsis "Port of Arx Fatalis, a first-person role-playing game")
8283 (description "Arx Libertatis is a cross-platform port of Arx Fatalis, a 2002
8284 first-person role-playing game / dungeon crawler developed by Arkane Studios.
8285 This port however does not include the game data, so you need to obtain a copy
8286 of the original Arx Fatalis or its demo to play Arx Libertatis. Arx Fatalis
8287 features crafting, melee and ranged combat, as well as a unique casting system
8288 where the player draws runes in real time to effect the desired spell.")
8289 (license license:gpl3+)))
8290
8291 (define-public edgar
8292 (package
8293 (name "edgar")
8294 (version "1.33")
8295 (source
8296 (origin
8297 (method url-fetch)
8298 (uri
8299 (string-append "https://github.com/riksweeney/edgar/releases/download/"
8300 version "/edgar-" version "-1.tar.gz"))
8301 (sha256
8302 (base32 "1mbx7dvizdca4g1blcv3bdh6yxd13k47rkya4rdzg0nvvz24m175"))))
8303 (build-system gnu-build-system)
8304 (arguments '(#:tests? #f ; there are no tests
8305 #:make-flags
8306 (list "CC=gcc"
8307 (string-append "PREFIX=" (assoc-ref %outputs "out"))
8308 (string-append "BIN_DIR=" (assoc-ref %outputs "out") "/bin/"))
8309 #:phases
8310 (modify-phases %standard-phases
8311 (delete 'configure)
8312 (add-before 'build 'fix-env
8313 (lambda* (#:key inputs #:allow-other-keys)
8314 (setenv "CPATH"
8315 (string-append (assoc-ref inputs "sdl2-union")
8316 "/include/SDL2:"
8317 (or (getenv "CPATH") "")))
8318 #t)))))
8319 (inputs
8320 `(("sdl2-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
8321 ("zlib" ,zlib)))
8322 (native-inputs
8323 `(("pkg-config" ,pkg-config)
8324 ("autoconf" ,autoconf)
8325 ("automake" ,automake)
8326 ("gnu-gettext" ,gettext-minimal)
8327 ("libtool" ,libtool)
8328 ("which" ,which)))
8329 (synopsis "2d action platformer game")
8330 (description "The Legend of Edgar is a 2D platform game with a persistent world.
8331 When Edgar's father fails to return home after venturing out one dark and stormy night,
8332 Edgar fears the worst: he has been captured by the evil sorcerer who lives in
8333 a fortress beyond the forbidden swamp.")
8334 (home-page "https://www.parallelrealities.co.uk/games/edgar/")
8335 (license license:gpl2+)))
8336
8337 (define-public openclonk
8338 (package
8339 (name "openclonk")
8340 (version "8.1")
8341 (source (origin
8342 (method url-fetch)
8343 (uri (string-append
8344 "https://www.openclonk.org/builds/release/" version "/"
8345 "openclonk-" version "-src.tar.bz2"))
8346 (sha256
8347 (base32
8348 "0imkqjp8lww5p0cnqf4k4mb2v682mnsas63qmiz17rspakr7fxik"))))
8349 (build-system cmake-build-system)
8350 (arguments
8351 `(#:configure-flags '("-DAudio_TK=OpenAL")
8352 #:test-target "tests"
8353 #:phases
8354 (modify-phases %standard-phases
8355 (add-after 'unpack 'prepare-gmock
8356 (lambda* (#:key inputs #:allow-other-keys)
8357 (mkdir "gmock")
8358 (copy-recursively (assoc-ref inputs "googlemock") "gmock")
8359 (substitute* "tests/CMakeLists.txt"
8360 (("/usr/src/gmock")
8361 (string-append (getcwd) "/gmock/googlemock"))
8362 (("/usr/src/gtest")
8363 (string-append (getcwd) "/gmock/googletest"))
8364 (("PATH_SUFFIXES \"src\" \"gtest\"")
8365 "PATH_SUFFIXES \"src\""))
8366 #t))
8367 (add-after 'unpack 'adjust-backward-cpp-includes
8368 (lambda _
8369 ;; XXX: The bundled backward-cpp exports a CMake "interface"
8370 ;; that includes external libraries such as libdl from glibc.
8371 ;; By default, CMake interface includes are treated as "system
8372 ;; headers", and GCC behaves poorly when glibc is passed as a
8373 ;; system header (causing #include_next failures).
8374
8375 ;; Here we prevent targets that consume the Backward::Backward
8376 ;; interface from treating it as "system includes".
8377 (substitute* "CMakeLists.txt"
8378 (("target_link_libraries\\((.+) Backward::Backward\\)" all target)
8379 (string-append "set_property(TARGET " target " PROPERTY "
8380 "NO_SYSTEM_FROM_IMPORTED true)\n"
8381 all)))
8382 #t))
8383 (add-after 'unpack 'add-libiberty
8384 ;; Build fails upon linking executables without this.
8385 (lambda _
8386 (substitute* "thirdparty/backward-cpp/BackwardConfig.cmake"
8387 (("set\\(LIBBFD_LIBRARIES (.*?)\\)" _ libraries)
8388 (string-append "set(LIBBFD_LIBRARIES " libraries " iberty)")))
8389 #t))
8390 (add-after 'add-libiberty 'lax-freealut-requirement
8391 ;; TODO: We provide freealut 1.1.0, but pkg-config somehow detects
8392 ;; it as 1.0.1. Force minimal version.
8393 (lambda _
8394 (substitute* "cmake/FindAudio.cmake"
8395 (("freealut>=1.1.0") "freealut>=1.0.1"))
8396 #t))
8397 (add-after 'lax-freealut-requirement 'fix-directories
8398 ;; Prefer "$out/share/openclonk" over
8399 ;; "$out/share/games/openclonk". Also install "openclonk"
8400 ;; binary in "bin/", not "games/".
8401 (lambda _
8402 (substitute* "CMakeLists.txt"
8403 (("share/games/openclonk") "share/openclonk")
8404 (("TARGETS openclonk DESTINATION games")
8405 "TARGETS openclonk DESTINATION bin"))
8406 #t)))))
8407 (native-inputs
8408 `(("googlemock" ,(package-source googletest))
8409 ("googletest" ,googletest)
8410 ("pkg-config" ,pkg-config)))
8411 (inputs
8412 `(("freealut" ,freealut)
8413 ("freetype" ,freetype)
8414 ("glew" ,glew)
8415 ("libiberty" ,libiberty)
8416 ("libjpeg" ,libjpeg-turbo)
8417 ("libogg" ,libogg)
8418 ("libpng" ,libpng)
8419 ("libvorbis" ,libvorbis)
8420 ("libxrandr" ,libxrandr)
8421 ("mesa" ,mesa)
8422 ("miniupnpc" ,miniupnpc)
8423 ("openal" ,openal)
8424 ("qtbase" ,qtbase)
8425 ("readline" ,readline)
8426 ("sdl" ,sdl2)
8427 ("tinyxml" ,tinyxml)
8428 ("zlib" ,zlib)))
8429 (home-page "https://www.openclonk.org/")
8430 (synopsis
8431 "Multiplayer action game where you control small and nimble humanoids")
8432 (description "OpenClonk is a multiplayer action/tactics/skill game. It is
8433 often referred to as a mixture of The Settlers and Worms. In a simple 2D
8434 antfarm-style landscape, the player controls a crew of Clonks, small but
8435 robust humanoid beings. The game encourages free play but the normal goal is
8436 to either exploit valuable resources from the earth by building a mine or
8437 fight each other on an arena-like map.")
8438 ;; Software as a whole is licensed under ISC, artwork under CC-BY.
8439 (license (list license:isc license:cc-by3.0))))
8440
8441 (define-public flare-engine
8442 (package
8443 (name "flare-engine")
8444 (version "1.11")
8445 (source (origin
8446 (method git-fetch)
8447 (uri (git-reference
8448 (url "https://github.com/flareteam/flare-engine")
8449 (commit (string-append "v" version))))
8450 (file-name (git-file-name name version))
8451 (sha256
8452 (base32
8453 "1mqr1s72p5bdh4kq2a8hg72dk8lwnddicjnd2cdp1sbfa9lmjym8"))))
8454 (build-system cmake-build-system)
8455 (arguments
8456 `(#:tests? #f ;no test
8457 #:configure-flags '("-DBINDIR=bin" "-DDATADIR=share/flare")))
8458 (inputs
8459 `(("hicolor-icon-theme" ,hicolor-icon-theme)
8460 ("python" ,python-wrapper)
8461 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
8462 (home-page "http://www.flarerpg.org/")
8463 (synopsis "Action Roleplaying Engine")
8464 (description "Flare (Free Libre Action Roleplaying Engine) is a simple
8465 game engine built to handle a very specific kind of game: single-player 2D
8466 action RPGs.")
8467 (license license:gpl3+)))
8468
8469 (define-public flare-game
8470 (package
8471 (name "flare-game")
8472 (version "1.11")
8473 (source (origin
8474 (method git-fetch)
8475 (uri (git-reference
8476 (url "https://github.com/flareteam/flare-game")
8477 (commit (string-append "v" version))))
8478 (file-name (git-file-name name version))
8479 (sha256
8480 (base32
8481 "0bd5g7sd89a9176ilr408hdqzdfv4j7wj0idd685c1n6s01c3h6p"))))
8482 (build-system cmake-build-system)
8483 (arguments
8484 `(#:tests? #f ;no test
8485 #:configure-flags '("-DDATADIR=share/flare")
8486 #:phases
8487 (modify-phases %standard-phases
8488 ;; Flare expects the mods to be located in the same folder.
8489 ;; Yet, "default" mod is in the engine, whereas the others
8490 ;; are in the current package. Merge everything here with
8491 ;; a symlink.
8492 (add-after 'install 'add-default-mod
8493 (lambda* (#:key inputs outputs #:allow-other-keys)
8494 (let* ((out (assoc-ref outputs "out"))
8495 (mods (string-append out "/share/flare/mods")))
8496 (with-directory-excursion mods
8497 (symlink (string-append (assoc-ref inputs "flare-engine")
8498 "/share/flare/mods/default")
8499 "default")))
8500 #t))
8501 (add-after 'install 'install-executable
8502 ;; The package only provides assets for the game, the
8503 ;; executable coming from "flare-engine". Since more than
8504 ;; one game may use the engine, we create a new executable,
8505 ;; "flare-game", which launches the engine with appropriate
8506 ;; parameters.
8507 (lambda* (#:key inputs outputs #:allow-other-keys)
8508 (let* ((out (assoc-ref outputs "out"))
8509 (bash (string-append (assoc-ref inputs "bash")
8510 "/bin/bash"))
8511 (flare (string-append (assoc-ref inputs "flare-engine")
8512 "/bin/flare"))
8513 (script (string-append out "/bin/flare-game")))
8514 (mkdir-p (dirname script))
8515 (call-with-output-file script
8516 (lambda (port)
8517 (format port
8518 "#!~a
8519 exec ~a --data-path=~a/share/flare --mods=empyrean_campaign~%"
8520 bash
8521 flare
8522 out)))
8523 (chmod script #o755))
8524 #t)))))
8525 (inputs
8526 `(("flare-engine" ,flare-engine)))
8527 (home-page "http://www.flarerpg.org/")
8528 (synopsis "Fantasy action RPG using the FLARE engine")
8529 (description "Flare is a single-player 2D action RPG with
8530 fast-paced action and a dark fantasy style.")
8531 (license license:cc-by-sa3.0)))
8532
8533 (define-public meritous
8534 (package
8535 (name "meritous")
8536 (version "1.5")
8537 (source (origin
8538 (method git-fetch)
8539 (uri (git-reference
8540 (url "https://gitlab.com/meritous/meritous.git")
8541 (commit (string-append "v" version))))
8542 (file-name (git-file-name name version))
8543 (sha256
8544 (base32
8545 "0n5jm4g0arjllgqmd2crv8h02i6hs3hlh1zyc7ng7yfpg1mbd8p8"))))
8546 (build-system gnu-build-system)
8547 (arguments
8548 `(#:tests? #f ;no test
8549 #:make-flags
8550 (list "CC=gcc"
8551 (string-append "prefix=" (assoc-ref %outputs "out")))
8552 #:phases
8553 (modify-phases %standard-phases
8554 (delete 'configure)
8555 (add-after 'unpack 'fix-sdl-path
8556 ;; XXX: For some reason, `sdl-config' reports stand-alone SDL
8557 ;; directory, not SDL-union provided as an input to the package.
8558 ;; We force the latter with "--prefix=" option.
8559 (lambda* (#:key inputs #:allow-other-keys)
8560 (substitute* "Makefile"
8561 (("sdl-config" command)
8562 (string-append command " --prefix=" (assoc-ref inputs "sdl"))))
8563 #t))
8564 (add-after 'unpack 'fix-crash
8565 ;; XXX: Songs are not present in the repository, due to licensing
8566 ;; issues. Yet, the game tries to load them, and, since it cannot
8567 ;; find them, crashes. Users cannot add them back, the store being
8568 ;; read-only, so we turn off background music altogether.
8569 (lambda _
8570 (substitute* "src/audio.c"
8571 (("PlayBackgroundMusic\\(new_track\\);" all)
8572 (string-append "// " all)))
8573 #t)))))
8574 (native-inputs
8575 `(("intltool" ,intltool)))
8576 (inputs
8577 `(("sdl" ,(sdl-union (list sdl sdl-image sdl-mixer)))
8578 ("zlib" ,zlib)))
8579 (home-page "https://gitlab.com/meritous/meritous")
8580 (synopsis "Action-adventure dungeon crawl game")
8581 (description "Far below the surface of the planet is a place of limitless
8582 power. Those that seek to control such a utopia will soon bring an end to
8583 themselves. Seeking an end to the troubles that plague him, PSI user Merit
8584 journeys into the hallowed Orcus Dome in search of answers.
8585
8586 Meritous is a action-adventure game with simple controls but a challenge to
8587 find a balance of power versus recovery time during real-time battles. Set in
8588 a procedurally generated world, the player can explore thousands of rooms in
8589 search of powerful artifacts, tools to help them, and to eventually free the
8590 Orcus Dome from evil.")
8591 (license license:gpl3+)))
8592
8593 (define-public marble-marcher
8594 (let ((commit "e580460a0c3826f9b28ab404607942a8ecb625d7")
8595 (revision "1"))
8596 (package
8597 (name "marble-marcher")
8598 (version (git-version "0" revision commit))
8599 (source (origin
8600 (method git-fetch)
8601 (uri (git-reference
8602 (url "https://github.com/HackerPoet/MarbleMarcher")
8603 (commit commit)))
8604 (file-name (git-file-name name version))
8605 (sha256
8606 (base32
8607 "0jjv832hl1v170n6gryp2sr3lgqndi9ab841qvgqk68bks8701mx"))))
8608 (build-system cmake-build-system)
8609 (arguments
8610 `(#:tests? #f ; there are none
8611 #:phases
8612 (modify-phases %standard-phases
8613 (add-after 'unpack 'embed-asset-directory
8614 (lambda* (#:key outputs #:allow-other-keys)
8615 (let ((assets (string-append (assoc-ref outputs "out")
8616 "/share/marble-marcher/assets/")))
8617 ;; Some of the files we're patching are
8618 ;; ISO-8859-1-encoded, so choose it as the default
8619 ;; encoding so the byte encoding is preserved.
8620 (with-fluids ((%default-port-encoding #f))
8621 (substitute* "src/Resource.rc"
8622 (("../assets/icon.ico")
8623 (string-append assets "icon.ico")))
8624 (substitute* "src/Res.h"
8625 (("assets/") assets))))
8626 #t))
8627 (replace 'install
8628 (lambda* (#:key outputs #:allow-other-keys)
8629 (let* ((out (assoc-ref outputs "out"))
8630 (assets (string-append out "/share/marble-marcher/assets"))
8631 (bin (string-append out "/bin/")))
8632 (mkdir-p bin)
8633 (mkdir-p assets)
8634 (copy-recursively "../source/assets" assets)
8635 (install-file "MarbleMarcher" bin))
8636 #t)))))
8637 (inputs
8638 `(("eigen" ,eigen)
8639 ("mesa" ,mesa)
8640 ("sfml" ,sfml)))
8641 (native-inputs
8642 `(("pkg-config" ,pkg-config)))
8643 (home-page "https://codeparade.itch.io/marblemarcher")
8644 (synopsis "Guide a marble across fractal landscapes")
8645 (description "Marble Marcher is a video game that uses a fractal physics
8646 engine and fully procedural rendering to produce beautiful and unique
8647 gameplay. The game is played on the surface of evolving fractals. The goal
8648 of the game is to get your marble to the flag as quickly as possible. But be
8649 careful not to fall off the level or get crushed by the fractal! There are 24
8650 levels to unlock.")
8651 ;; Code is under GPLv2+, assets are under CC-BY-SA 3.0 and OFL 1.1.
8652 (license (list license:gpl2+
8653 license:silofl1.1
8654 license:cc-by-sa3.0)))))
8655
8656 ;; This must be updated together with flightgear.
8657 (define simgear
8658 (package
8659 (name "simgear")
8660 (version "2018.3.5")
8661 (source
8662 (origin
8663 (method url-fetch)
8664 (uri (string-append "mirror://sourceforge/flightgear/release-"
8665 (version-major+minor version) "/"
8666 "simgear-" version ".tar.bz2"))
8667 (sha256
8668 (base32 "1vkqm66r1205k3hdjmx5wmx5kvmsb0dgfzrs8n5gqnxj8szs42dl"))))
8669 (build-system cmake-build-system)
8670 (arguments
8671 `(#:phases
8672 (modify-phases %standard-phases
8673 (replace 'check
8674 (lambda _
8675 ;; Skip tests that require internet access.
8676 (invoke "ctest" "-E" "(http|dns)"))))))
8677 (inputs
8678 `(("boost" ,boost-for-mysql) ; fails with 1.69
8679 ("curl" ,curl)
8680 ("expat" ,expat)
8681 ("mesa" ,mesa)
8682 ("openal" ,openal)
8683 ("openscenegraph" ,openscenegraph-3.4)
8684 ("zlib" ,zlib)))
8685 (home-page "https://home.flightgear.org/")
8686 (synopsis "Libraries for 3D simulations and games")
8687 (description "SimGear is a set of libraries designed to be used as
8688 building blocks for quickly assembling 3D simulations, games, and
8689 visualization applications. SimGear is developed by the FlightGear project
8690 and also provides the base for the FlightGear Flight Simulator.")
8691 (license license:lgpl2.0+)))
8692
8693 (define-public flightgear
8694 (package
8695 (name "flightgear")
8696 (version (package-version simgear))
8697 (source
8698 (origin
8699 (method url-fetch)
8700 (uri (string-append "mirror://sourceforge/flightgear/release-"
8701 (version-major+minor version) "/"
8702 "flightgear-" version ".tar.bz2"))
8703 (sha256
8704 (base32 "0ya3vb539kwi1qrifqhsj5j3k4w6s06hrllp2vdzxf6id7cgf0hc"))
8705 (modules '((guix build utils)))
8706 (snippet
8707 '(begin
8708 ;; There are some bundled libraries.
8709 (for-each delete-file-recursively
8710 '("3rdparty/sqlite3/"))
8711 #t))))
8712 (build-system cmake-build-system)
8713 (arguments
8714 `(#:configure-flags
8715 (list "-DSYSTEM_SQLITE=ON"
8716 (string-append "-DFG_DATA_DIR="
8717 (assoc-ref %outputs "out")
8718 "/share/flightgear"))
8719 ;; TODO: test cannot be run because the "run_test_suite" executable
8720 ;; does not seem to be built.
8721 #:tests? #f
8722 #:phases
8723 (modify-phases %standard-phases
8724 (add-after 'install 'wrap-executable
8725 (lambda* (#:key inputs outputs #:allow-other-keys)
8726 (let ((out (assoc-ref outputs "out")))
8727 (wrap-program (string-append out "/bin/fgfs")
8728 `("QT_PLUGIN_PATH" ":" prefix
8729 ,(map (lambda (label)
8730 (string-append (assoc-ref inputs label)
8731 "/lib/qt5/plugins"))
8732 '("qtbase" "qtdeclarative" "qtsvg")))
8733 `("QML2_IMPORT_PATH" ":" prefix
8734 ,(map (lambda (label)
8735 (string-append (assoc-ref inputs label)
8736 "/lib/qt5/qml"))
8737 '("qtdeclarative" "qtsvg"))))
8738 #t)))
8739 (add-after 'install 'install-data
8740 (lambda* (#:key inputs outputs #:allow-other-keys)
8741 (let ((share (string-append (assoc-ref outputs "out") "/share/flightgear")))
8742 (mkdir-p share)
8743 (with-directory-excursion share
8744 (invoke "tar" "xf" (assoc-ref inputs "flightgear-data")
8745 "--strip-components=1")))
8746 #t)))))
8747 (inputs
8748 `(("boost" ,boost-for-mysql) ; same as simgear
8749 ("dbus" ,dbus)
8750 ("eudev" ,eudev)
8751 ("freeglut" ,freeglut)
8752 ("freetype" ,freetype)
8753 ("glew" ,glew)
8754 ("libpng" ,libpng)
8755 ("openal" ,openal)
8756 ("openscenegraph" ,openscenegraph-3.4)
8757 ("plib" ,plib)
8758 ("qtbase" ,qtbase)
8759 ("qtdeclarative" ,qtdeclarative)
8760 ("qtsvg" ,qtsvg)
8761 ("simgear" ,simgear)
8762 ("speexdsp" ,speexdsp)
8763 ("sqlite" ,sqlite)
8764 ("zlib" ,zlib)))
8765 (native-inputs
8766 `(("cppunit" ,cppunit)
8767 ("pkg-config" ,pkg-config)
8768 ("qttools" ,qttools)
8769 ("flightgear-data"
8770 ,(origin
8771 (method url-fetch)
8772 (uri (string-append "mirror://sourceforge/flightgear/release-"
8773 (version-major+minor version) "/"
8774 "FlightGear-" version "-data.tar.bz2"))
8775 (sha256
8776 (base32
8777 "04fv9za5zlyxlyfh6jx78y42l3jazvzl9dq2y6rzxqlcc9g5swhk"))))))
8778 (home-page "https://home.flightgear.org/")
8779 (synopsis "Flight simulator")
8780 (description "The goal of the FlightGear project is to create a
8781 sophisticated flight simulator framework for use in research or academic
8782 environments, pilot training, as an industry engineering tool, for DIY-ers to
8783 pursue their favorite interesting flight simulation idea, and last but
8784 certainly not least as a fun, realistic, and challenging desktop flight
8785 simulator.")
8786 (license license:gpl2+)))
8787
8788 (define-public jumpnbump
8789 (package
8790 (name "jumpnbump")
8791 (version "1.61")
8792 (source (origin
8793 (method git-fetch)
8794 (uri (git-reference
8795 (url "https://gitlab.com/LibreGames/jumpnbump.git")
8796 (commit version)))
8797 (file-name (git-file-name name version))
8798 (sha256
8799 (base32
8800 "12lwl5sl5n009nb83r8l4lakb9286csqdf1ynpmwwydy17giqsdp"))))
8801 (build-system gnu-build-system)
8802 (arguments
8803 `(#:make-flags
8804 (list "CC=gcc"
8805 (string-append "PREFIX=" (assoc-ref %outputs "out")))
8806 #:tests? #f ;no test
8807 #:phases
8808 (modify-phases %standard-phases
8809 (delete 'configure) ;no configure script
8810 (add-after 'unpack 'fix-sdl-path
8811 ;; XXX: For some reason, `sdl2-config' reports stand-alone SDL
8812 ;; directory, not SDL-union provided as an input to the package.
8813 ;; We force the latter with "--prefix=" option.
8814 (lambda* (#:key inputs #:allow-other-keys)
8815 (substitute* "Makefile"
8816 (("sdl2-config" command)
8817 (string-append command " --prefix=" (assoc-ref inputs "sdl"))))
8818 #t)))))
8819 (inputs
8820 `(("bzip2" ,bzip2)
8821 ("sdl" ,(sdl-union (list sdl2 sdl2-mixer sdl2-net)))
8822 ("zlib" ,zlib)))
8823 (native-inputs
8824 `(("gettext" ,gettext-minimal))) ;for msgfmt
8825 (home-page "https://gitlab.com/LibreGames/jumpnbump")
8826 (synopsis "Multiplayer platform game with bunnies")
8827 (description "You, as a bunny, have to jump on your opponents to make them
8828 explode. It is a true multiplayer game; you cannot play this alone. You can
8829 play with up to four players simultaneously. It has network support.")
8830 (license license:gpl2+)))
8831
8832 (define-public hedgewars
8833 (package
8834 (name "hedgewars")
8835 (version "1.0.0")
8836 (source (origin
8837 (method url-fetch)
8838 (uri (string-append "https://www.hedgewars.org/download/releases/"
8839 "hedgewars-src-" version ".tar.bz2"))
8840 (sha256
8841 (base32
8842 "0nqm9w02m0xkndlsj6ys3wr0ik8zc14zgilq7k6fwjrf3zk385i1"))))
8843 (build-system cmake-build-system)
8844 (arguments
8845 ;; XXX: Engine is built as Pascal source code, requiring Free Pascal
8846 ;; Compiler, which we haven't packaged yet. With the flag below, we use
8847 ;; a Pascal to C translator and Clang instead.
8848 `(#:configure-flags (list "-DBUILD_ENGINE_C=ON"
8849 "-Dhaskell_flags=-dynamic;-fPIC")
8850 #:phases
8851 (modify-phases %standard-phases
8852 (replace 'check
8853 (lambda _ (invoke "ctest")))
8854 (add-after 'install 'install-icon
8855 (lambda _
8856 ;; Install icon for the desktop file.
8857 (let* ((out (assoc-ref %outputs "out"))
8858 (icons (string-append out "/share/icons/hicolor/512x512/apps")))
8859 (with-directory-excursion (string-append "../hedgewars-src-" ,version)
8860 (install-file "misc/hedgewars.png" icons)))
8861 #t)))))
8862 (inputs
8863 `(("ffmpeg" ,ffmpeg)
8864 ("freeglut" ,freeglut)
8865 ("ghc-entropy" ,ghc-entropy)
8866 ("ghc-hslogger" ,ghc-hslogger)
8867 ("ghc-network" ,ghc-network)
8868 ("ghc-random" ,ghc-random)
8869 ("ghc-regex-tdfa" ,ghc-regex-tdfa)
8870 ("ghc-sandi" ,ghc-sandi)
8871 ("ghc-sha" ,ghc-sha)
8872 ("ghc-utf8-string" ,ghc-utf8-string)
8873 ("ghc-vector" ,ghc-vector)
8874 ("ghc-zlib" ,ghc-zlib)
8875 ("glew" ,glew)
8876 ("libpng" ,libpng)
8877 ("lua" ,lua-5.1)
8878 ("physfs" ,physfs)
8879 ("qtbase" ,qtbase)
8880 ("sdl" ,(sdl-union
8881 (list sdl2 sdl2-mixer sdl2-net sdl2-ttf sdl2-image)))))
8882 (native-inputs
8883 `(("clang" ,clang)
8884 ("ghc" ,ghc)
8885 ("pkg-config" ,pkg-config)
8886 ("qttools" ,qttools)))
8887 (home-page "https://hedgewars.org/")
8888 (synopsis "Turn-based artillery game featuring fighting hedgehogs")
8889 (description
8890 "Hedgewars is a turn based strategy, artillery, action and comedy game,
8891 featuring the antics of pink hedgehogs with attitude as they battle from the
8892 depths of hell to the depths of space.
8893
8894 As commander, it's your job to assemble your crack team of hedgehog soldiers
8895 and bring the war to your enemy.")
8896 ;; Software as a whole is licensed under GPL-2 terms. Artwork and
8897 ;; scripts are distributed under various terms.
8898 (license (list license:gpl2
8899 license:bsd-2 license:bsd-3 license:cc-by3.0 license:cc0
8900 license:expat license:fdl1.3+ license:public-domain
8901 license:zlib))))
8902
8903 (define-public harmonist
8904 (package
8905 (name "harmonist")
8906 (version "0.3.0")
8907 (source (origin
8908 (method git-fetch)
8909 (uri (git-reference
8910 (url "https://git.tuxfamily.org/harmonist/harmonist.git")
8911 (commit (string-append "v" version))))
8912 (file-name (git-file-name name version))
8913 (sha256
8914 (base32
8915 "146wiyanag0zqj6fhyll2sw6sydnnll8mgxhhqf9sjqsl2rx4s5r"))))
8916 (build-system go-build-system)
8917 (arguments
8918 '(#:import-path "git.tuxfamily.org/harmonist/harmonist"))
8919 (inputs
8920 `(("go-github.com-nsf-termbox-go" ,go-github.com-nsf-termbox-go)))
8921 (home-page "https://harmonist.tuxfamily.org/")
8922 (synopsis "Stealth coffee-break roguelike game")
8923 (description "Harmonist: Dayoriah Clan Infiltration is a stealth
8924 coffee-break roguelike game. The game has a heavy focus on tactical
8925 positioning, light and noise mechanisms, making use of various terrain types
8926 and cones of view for monsters. Aiming for a replayable streamlined experience,
8927 the game avoids complex inventory management and character building, relying
8928 on items and player adaptability for character progression.")
8929 (license license:isc)))
8930
8931 (define-public harmonist-tk
8932 (package
8933 (inherit harmonist)
8934 (name "harmonist-tk")
8935 (arguments
8936 (append
8937 (package-arguments harmonist)
8938 `(#:phases
8939 (modify-phases %standard-phases
8940 (replace 'build
8941 (lambda _
8942 (invoke "go" "install" "-v" "-x" "--tags" "tk"
8943 "git.tuxfamily.org/harmonist/harmonist")))
8944 (replace 'check
8945 (lambda _
8946 (invoke "go" "test" "--tags" "tk"
8947 "git.tuxfamily.org/harmonist/harmonist")))))))
8948 (inputs
8949 `(("go-github.com-nsf-gothic" ,go-github.com-nsf-gothic)))))
8950
8951 (define-public drascula
8952 (package
8953 (name "drascula")
8954 (version "1.0")
8955 (source (origin
8956 (method url-fetch)
8957 (uri (string-append "mirror://sourceforge/scummvm/extras/"
8958 "Drascula_%20The%20Vampire%20Strikes%20Back/"
8959 "drascula-" version ".zip"))
8960 (sha256
8961 (base32
8962 "1pj29rpb754sn6a56f8brfv6f2m1p5qgaqik7d68pfi2bb5zccdp"))))
8963 (build-system trivial-build-system)
8964 (arguments
8965 `(#:modules ((guix build utils))
8966 #:builder
8967 (begin
8968 (use-modules (guix build utils)
8969 (ice-9 match))
8970 (let* ((out (assoc-ref %outputs "out"))
8971 (share (string-append out "/share/drascula"))
8972 (scummvm (assoc-ref %build-inputs "scummvm")))
8973 ;; Install data.
8974 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
8975 "/bin/unzip"))
8976 (doc (string-append out "/share/doc/" ,name "-" ,version)))
8977 (for-each
8978 (lambda (input)
8979 (invoke unzip
8980 "-j"
8981 (assoc-ref %build-inputs input)
8982 "-x" "__MACOSX")
8983 ;; Every input provides "readme.txt", and we want to
8984 ;; preserve them all. Therefore we rename them first.
8985 (match input
8986 ("drascula-int"
8987 (rename-file "readme.txt" "readme-international.txt"))
8988 ("drascula-audio"
8989 (rename-file "readme.txt" "readme-audio.txt"))
8990 (_ #f))
8991 ;; Install documentation.
8992 (for-each (lambda (f) (install-file f doc))
8993 (find-files "." "\\.(txt|doc)$"))
8994 ;; Install data.
8995 (for-each (lambda (f) (install-file f share))
8996 (find-files "." "\\.(ogg|00[0-9])$")))
8997 '("drascula-audio" "drascula-int" "source")))
8998 ;; Create standalone executable.
8999 (let* ((bin (string-append out "/bin"))
9000 (executable (string-append bin "/drascula"))
9001 (bash (string-append (assoc-ref %build-inputs "bash")
9002 "/bin/bash")))
9003 (mkdir-p bin)
9004 (with-output-to-file executable
9005 (lambda ()
9006 (format #t "#!~a~%" bash)
9007 (format #t
9008 "exec ~a/bin/scummvm --path=~a drascula~%"
9009 scummvm share)))
9010 (chmod executable #o755))
9011 ;; Create desktop file. There is no dedicated icon for the
9012 ;; game, so we borrow SCUMMVM's.
9013 (let ((apps (string-append out "/share/applications")))
9014 (mkdir-p apps)
9015 (make-desktop-entry-file
9016 (string-append apps "/drascula.desktop")
9017 #:name "Drascula: The Vampire Strikes Back"
9018 #:generic-name "Drascula"
9019 #:exec (string-append out "/bin/drascula")
9020 #:icon (string-append scummvm "/share/icons/hicolor/scalable/apps/scummvm.svg")
9021 #:categories '("AdventureGame" "Game" "RolePlaying")
9022 #:keywords '("game" "adventure" "roleplaying" "2D" "fantasy")
9023 #:comment '((#f "Classic 2D point and click adventure game")
9024 ("de" "Klassisches 2D-Abenteuerspiel in Zeigen-und-Klicken-Manier")
9025 ("fr" "Jeu classique d'aventure pointer-et-cliquer en 2D")
9026 ("it" "Gioco classico di avventura punta e clicca 2D"))))
9027 #t))))
9028 (native-inputs
9029 `(("bash" ,bash)
9030 ("unzip" ,unzip)))
9031 (inputs
9032 `(("scummvm" ,scummvm)
9033 ("drascula-int"
9034 ,(let ((version "1.1"))
9035 (origin
9036 (method url-fetch)
9037 (uri (string-append "mirror://sourceforge/scummvm/extras/"
9038 "Drascula_%20The%20Vampire%20Strikes%20Back/"
9039 "drascula-int-" version ".zip"))
9040 (sha256
9041 (base32
9042 "12236i7blamal92p1i8dgp3nhp2yicics4whsl63v682bj999n14")))))
9043 ("drascula-audio"
9044 ,(let ((version "2.0"))
9045 (origin
9046 (method url-fetch)
9047 (uri (string-append "mirror://sourceforge/scummvm/extras/"
9048 "Drascula_%20The%20Vampire%20Strikes%20Back/"
9049 "drascula-audio-" version ".zip"))
9050 (sha256
9051 (base32
9052 "00g4izmsqzxb8ry1vhfx6jrygl58lvlij09nw01ds4zddsiznsky")))))))
9053 (home-page "https://www.scummvm.org")
9054 (synopsis "Classic 2D point and click adventure game")
9055 (description "Drascula: The Vampire Strikes Back is a classic humorous 2D
9056 point and click adventure game.
9057
9058 In Drascula you play the role of John Hacker, a British estate agent, that
9059 gets to meet a gorgeous blond girl who is kidnapped by the notorious vampire
9060 Count Drascula and embark on a fun yet dangerous quest to rescue her.
9061 Unfortunately, Hacker is not aware of Drascula's real ambitions: DOMINATING
9062 the World and demonstrating that he is even more evil than his brother Vlad.")
9063 ;; Drascula uses a BSD-like license.
9064 (license (license:non-copyleft "file:///readme.txt"))))
9065
9066 (define (make-lure-package name language hash)
9067 (package
9068 (name name)
9069 (version "1.1")
9070 (source
9071 (origin
9072 (method url-fetch)
9073 (uri (string-append
9074 "mirror://sourceforge/scummvm/extras/"
9075 "Lure%20of%20the%20Temptress/"
9076 name "-" version ".zip"))
9077 (sha256
9078 (base32 hash))))
9079 (build-system trivial-build-system)
9080 (arguments
9081 `(#:modules ((guix build utils))
9082 #:builder
9083 (begin
9084 (use-modules (guix build utils))
9085 (let* ((out (assoc-ref %outputs "out"))
9086 (share (string-append out "/share"))
9087 (data (string-append share "/" ,name "/" ,language))
9088 (apps (string-append share "/applications"))
9089 (bin (string-append out "/bin"))
9090 (executable (string-append bin "/" ,name))
9091 (scummvm (assoc-ref %build-inputs "scummvm")))
9092 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
9093 "/bin/unzip")))
9094 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
9095 (let ((doc (string-append share "/doc/" ,name "-" ,version)))
9096 (for-each (lambda (f) (install-file f doc))
9097 (find-files "." "\\.(txt|PDF|pdf)$")))
9098 (for-each (lambda (f) (install-file f data))
9099 (find-files "." "\\.(vga|VGA)$"))
9100 ;; Build the executable.
9101 (mkdir-p bin)
9102 (let ((bash (assoc-ref %build-inputs "bash")))
9103 (with-output-to-file executable
9104 (lambda ()
9105 (format #t "#!~a/bin/bash~%" bash)
9106 (format #t "exec ~a/bin/scummvm -q ~a -p ~a lure~%"
9107 scummvm ,language data))))
9108 (chmod executable #o755)
9109 ;; Create desktop file. There is no dedicated
9110 ;; icon for the game, so we borrow SCUMMVM's.
9111 (mkdir-p apps)
9112 (with-output-to-file (string-append apps "/" ,name ".desktop")
9113 (lambda _
9114 (format #t
9115 "[Desktop Entry]~@
9116 Name=Lure of the Temptress~@
9117 GenericName=Lure~@
9118 Exec=~a~@
9119 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
9120 Categories=AdventureGame;Game;RolePlaying;~@
9121 Keywords=game;adventure;roleplaying;2D,fantasy;~@
9122 Comment=Classic 2D point and click adventure game~@
9123 Comment[de]=klassisches 2D-Abenteuerspiel in Zeigen-und-Klicken-Manier~@
9124 Comment[fr]=Jeu classique d'aventure pointer-et-cliquer en 2D~@
9125 Comment[it]=Gioco classico di avventura punta e clicca 2D~@
9126 Type=Application~%"
9127 executable scummvm)))
9128 #t))))
9129 (native-inputs
9130 `(("unzip" ,unzip)))
9131 (inputs
9132 `(("bash" ,bash)
9133 ("scummvm" ,scummvm)))
9134 (home-page "https://www.scummvm.org")
9135 (synopsis "2D point and click fantasy adventure game")
9136 (description
9137 "Lure of the Temptress is a classic 2D point and click adventure game.
9138
9139 You are Diermot, an unwilling hero who'd prefer a quiet life, and are, to all
9140 intents and purposes, a good man. After decades of unrest the King has united
9141 the warring factions in his kingdom and all his lands are at peace, except
9142 a remote region around a town called Turnvale. A revolt has recently taken
9143 place in Turnvale, a revolt orchestrated by an apprentice sorceress called
9144 Selena, the titular temptress. The king calls together his finest horsemen
9145 and heads off (with you in tow) to Turnvale just to witness how hellish
9146 mercenary monsters called Skorl are invading the town.
9147
9148 The king's men are defeated, the king is killed and you fall of your horse and
9149 bang your head heavily on the ground. You have been *unconscious for a while
9150 when you realize that you are in a dingy cell guarded by a not so friendly
9151 Skorl. Maybe it would be an idea to try and escape...")
9152 (license (license:non-copyleft "file:///README"))))
9153
9154 (define-public lure
9155 (make-lure-package
9156 "lure" "en" "0201i70qcs1m797kvxjx3ygkhg6kcl5yf49sihba2ga8l52q45zk"))
9157
9158 (define-public lure-de
9159 (make-lure-package
9160 "lure-de" "de" "0sqq7h5llml6rv85x0bfv4bgzwhs4c82p4w4zmfcaab6cjlad0sy"))
9161
9162 (define-public lure-es
9163 (make-lure-package
9164 "lure-es" "es" "1dvv5znvlsakw6w5r16calv9jkgw27aymgybsf4q22lcmpxbj1lk"))
9165
9166 (define-public lure-fr
9167 (make-lure-package
9168 "lure-fr" "fr" "1y51jjb7f8023832g44vd1jsb6ni85586pi2n5hjg9qjk6gi90r9"))
9169
9170 (define-public lure-it
9171 (make-lure-package
9172 "lure-it" "it" "1ks6n39r1cllisrrh6pcr39swsdv7ng3gx5c47vaw71zzfr70hjj"))
9173
9174 (define (make-queen-package name file-prefix release language hash)
9175 (package
9176 (name name)
9177 (version release)
9178 (source
9179 (origin
9180 (method url-fetch)
9181 (uri (string-append "mirror://sourceforge/scummvm/extras/"
9182 "Flight%20of%20the%20Amazon%20Queen/"
9183 file-prefix release ".zip"))
9184 (sha256
9185 (base32 hash))))
9186 (build-system trivial-build-system)
9187 (arguments
9188 `(#:modules ((guix build utils))
9189 #:builder
9190 (begin
9191 (use-modules (guix build utils))
9192 (let* ((out (assoc-ref %outputs "out"))
9193 (share (string-append out "/share"))
9194 (data (string-append share "/" ,name))
9195 (apps (string-append share "/applications"))
9196 (bin (string-append out "/bin"))
9197 (executable (string-append bin "/" ,name))
9198 (scummvm (assoc-ref %build-inputs "scummvm")))
9199 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
9200 "/bin/unzip")))
9201 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
9202 (let ((doc (string-append share "/doc/" ,name "-" ,version)))
9203 (install-file "readme.txt" doc))
9204 (install-file "queen.1c" data)
9205 (mkdir-p bin)
9206 (let ((bash (assoc-ref %build-inputs "bash")))
9207 (with-output-to-file executable
9208 (lambda ()
9209 (format #t "#!~a/bin/bash~%" bash)
9210 (format #t "exec ~a/bin/scummvm -q fr -p ~a queen~%"
9211 scummvm data))))
9212 (chmod executable #o755)
9213 ;; Create desktop file. There is no dedicated
9214 ;; icon for the game, so we borrow SCUMMVM's.
9215 (mkdir-p apps)
9216 (with-output-to-file (string-append apps "/" ,name ".desktop")
9217 (lambda _
9218 (format #t
9219 "[Desktop Entry]~@
9220 Name=Flight of the Amazon Queen~@
9221 GenericName=Queen~@
9222 Comment=Embark on a quest to rescue a kidnapped princess and in the process, discover the true sinister intentions of a suspiciously located Lederhosen company~@
9223 Comment[de]=Begib dich auf ein Abenteuer, um eine entführte Prinzessin zu retten und entdecke die wahren, finsteren Absichten eines verdächtig erscheinenden Lederhosen-Unternehmens~@
9224 Type=Application~@
9225 Exec=~a~@
9226 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
9227 Categories=AdventureGame;Game;RolePlaying;~@
9228 Keywords=adventure;game;roleplaying;fantasy;~%"
9229 executable scummvm))))
9230 #t)))
9231 (native-inputs
9232 `(("unzip" ,unzip)))
9233 (inputs
9234 `(("bash" ,bash)
9235 ("scummvm" ,scummvm)))
9236 (home-page "https://www.scummvm.org/")
9237 (synopsis "Classic 2D point and click adventure game")
9238 (description "Flight of the Amazon Queen is a 2D point-and-click
9239 adventure game set in the 1940s.
9240
9241 You assume the role of Joe King, a pilot for hire who is given the job
9242 of flying Faye Russell (a famous movie star) into the Amazon jungle
9243 for a photo shoot. Of course, things never go according to plans.
9244 After an unfortunate turn of events they find themselves stranded in
9245 the heart of the Amazon jungle, where Joe will embark on a quest to
9246 rescue a kidnapped princess and in the process, discover the true
9247 sinister intentions of a suspiciously located Lederhosen company. In
9248 a rich 2D environment, Joe will cross paths with a variety of unlikely
9249 jungle inhabitants including, but not limited to, a tribe of Amazon
9250 women and 6-foot-tall pygmies.")
9251 (license (license:non-copyleft "file:///readme.txt"))))
9252
9253 (define-public queen
9254 (make-queen-package
9255 "queen" "FOTAQ_Talkie-" "1.1" "en"
9256 "1a6q71q1dl9vvw2qqsxk5h1sv0gaqy6236zr5905w2is01gdsp52"))
9257
9258 (define-public queen-de
9259 (make-queen-package
9260 "queen-de" "FOTAQ_Ger_talkie-" "1.0" "de"
9261 "13vn43x7214vyprlpqabvv71k890nff3d6fjscflr1ll7acjca3f"))
9262
9263 (define-public queen-fr
9264 (make-queen-package
9265 "queen-fr" "FOTAQ_Fr_Talkie_" "1.0" "fr"
9266 "0hq5g4qrkcwm2kn5i4kv4hijs9hi7bw9xl1vrwd1l69qqn30crwy"))
9267
9268 (define-public queen-it
9269 (make-queen-package
9270 "queen-it" "FOTAQ_It_Talkie_" "1.0" "it"
9271 "1h76y70lrpzfjkm53n4nr364nhyka54vbz9r7sadzyzl7c7ilv4d"))
9272
9273 (define-public sky
9274 (package
9275 (name "sky")
9276 (version "1.2") ;1.3 is floppy version
9277 (source
9278 (origin
9279 (method url-fetch)
9280 (uri (string-append "mirror://sourceforge/scummvm/extras/"
9281 "Beneath%20a%20Steel%20Sky/"
9282 "bass-cd-" version ".zip"))
9283 (sha256
9284 (base32 "14s5jz67kavm8l15gfm5xb7pbpn8azrv460mlxzzvdpa02a9n82k"))))
9285 (build-system trivial-build-system)
9286 (arguments
9287 `(#:modules ((guix build utils))
9288 #:builder
9289 (begin
9290 (use-modules (guix build utils))
9291 (let* ((out (assoc-ref %outputs "out"))
9292 (share (string-append out "/share"))
9293 (data (string-append share "/" ,name))
9294 (apps (string-append share "/applications"))
9295 (bin (string-append out "/bin"))
9296 (executable (string-append bin "/" ,name))
9297 (scummvm (assoc-ref %build-inputs "scummvm")))
9298 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
9299 "/bin/unzip")))
9300 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
9301 (let ((doc (string-append share "/doc/bass-" ,version)))
9302 (install-file "readme.txt" doc))
9303 (for-each (lambda (f) (install-file f data))
9304 (find-files "." "^sky\\."))
9305 ;; Build the executable.
9306 (mkdir-p bin)
9307 (let ((bash (assoc-ref %build-inputs "bash")))
9308 (with-output-to-file executable
9309 (lambda ()
9310 (format #t "#!~a/bin/bash~%" bash)
9311 (format #t "exec ~a/bin/scummvm -p ~a sky~%" scummvm data))))
9312 (chmod executable #o755)
9313 ;; Create desktop file. There is no dedicated
9314 ;; icon for the game, so we borrow SCUMMVM's.
9315 (mkdir-p apps)
9316 (with-output-to-file (string-append apps "/" ,name ".desktop")
9317 (lambda _
9318 (format #t
9319 "[Desktop Entry]~@
9320 Name=Beneath a Steel Sky~@
9321 GenericName=Bass~@
9322 Exec=~a~@
9323 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
9324 Categories=AdventureGame;Game;RolePlaying;~@
9325 Keywords=adventure;game;roleplaying;cyberpunk;~@
9326 Comment=A science-fiction adventure game set in a bleak post-apocalyptic vision of the future~@
9327 Comment[de]=Ein Science-Fiction-Abenteuerspiel \
9328 angesiedelt in einer düsteren, postapokalyptischen Vision der Zukunft~@
9329 Type=Application~%"
9330 executable scummvm)))
9331 #t))))
9332 (native-inputs
9333 `(("unzip" ,unzip)))
9334 (inputs
9335 `(("bash" ,bash)
9336 ("scummvm" ,scummvm)))
9337 (home-page "https://www.scummvm.org/")
9338 (synopsis "Classic 2D point an click science-fiction adventure game")
9339 (description
9340 "Beneath a Steel Sky is a science-fiction thriller set in a bleak
9341 post-apocalyptic vision of the future. It revolves around Union City,
9342 where selfishness, rivalry, and corruption by its citizens seems to be
9343 all too common, those who can afford it live underground, away from
9344 the pollution and social problems which are plaguing the city.
9345
9346 You take on the role of Robert Foster, an outcast of sorts from the
9347 city since a boy who was raised in a remote environment outside of
9348 Union City simply termed ``the gap''. Robert's mother took him away
9349 from Union City as a child on their way to ``Hobart'' but the
9350 helicopter crashed on its way. Unfortunately, Robert's mother died,
9351 but he survived and was left to be raised by a local tribe from the
9352 gap.
9353
9354 Years later, Union City security drops by and abducts Robert, killing
9355 his tribe in the process; upon reaching the city the helicopter taking
9356 him there crashes with him escaping, high upon a tower block in the
9357 middle of the city. He sets out to discover the truth about his past,
9358 and to seek vengeance for the killing of his tribe.")
9359 (license (license:non-copyleft "file:///readme.txt"))))
9360
9361 (define-public gnurobots
9362 (package
9363 (name "gnurobots")
9364 (version "1.2.0")
9365 (source
9366 (origin
9367 (method url-fetch)
9368 (uri (string-append "mirror://gnu/gnurobots/gnurobots-"
9369 version ".tar.gz"))
9370 (sha256
9371 (base32
9372 "07gi3lsmbzzsjambgixj6xy79lh22km84z7bnzgwzxdy806lyvwb"))))
9373 (build-system gnu-build-system)
9374 (inputs
9375 `(("glib" ,glib)
9376 ("gtk+" ,gtk+-2)
9377 ("vte" ,vte/gtk+-2)
9378 ("readline" ,readline)
9379 ("guile" ,guile-1.8)))
9380 (native-inputs
9381 `(("pkg-config" ,pkg-config)))
9382 (arguments
9383 `(#:make-flags
9384 (list
9385 ;; Do not abort build on "deprecated-declarations" warnings.
9386 "CFLAGS=-Wno-error=deprecated-declarations"
9387 ;; Find readline headers in sub-directory.
9388 (string-append "READLINE_CFLAGS=-I"
9389 (assoc-ref %build-inputs "readline")
9390 "/include/readline/"))
9391 #:phases
9392 (modify-phases %standard-phases
9393 (add-after 'install 'install-doc
9394 (lambda* (#:key outputs #:allow-other-keys)
9395 (install-file "doc/Robots-HOWTO"
9396 (string-append (assoc-ref outputs "out")
9397 "/share/doc/gnurobots-"
9398 ,version))
9399 #t)))))
9400 (home-page "https://www.gnu.org/software/gnurobots/")
9401 (synopsis "Program a little robot and watch it explore a world")
9402 (description
9403 "GNU Robots is a game in which you program a robot to explore a world
9404 full of enemies that can hurt it, obstacles and food to be eaten. The goal of
9405 the game is to stay alive and collect prizes. The robot program conveniently
9406 may be written in a plain text file in the Scheme programming language.")
9407 (license license:gpl3+)))
9408
9409 (define-public ri-li
9410 (package
9411 (name "ri-li")
9412 (version "2.0.1")
9413 (source (origin
9414 (method url-fetch)
9415 (uri (string-append "mirror://sourceforge/ri-li/"
9416 "Ri-li%20Linux_Unix/Ri-li%20V" version "/"
9417 "Ri-li-" version ".tar.bz2"))
9418 (sha256
9419 (base32
9420 "1gcdsgnnbbn1mb1hkpwniv3fhkaj1nn8gq33v5c16q3wqchcq77p"))
9421 ;; Taken from
9422 ;; <https://github.com/NixOS/nixpkgs/blob/master/pkgs/games/rili/moderinze_cpp.patch>.
9423 ;; It doesn't build otherwise.
9424 (patches (search-patches "ri-li-modernize_cpp.patch"))))
9425 (build-system gnu-build-system)
9426 (arguments
9427 `(#:phases
9428 (modify-phases %standard-phases
9429 ;; Remove "gentoo" subdirectory from Makefile, as it is
9430 ;; missing a make file and generates a build failure.
9431 (add-after 'configure 'fix-build
9432 (lambda _
9433 (substitute* "Makefile"
9434 ((" gentoo") ""))
9435 #t))
9436 (add-after 'install 'install-desktop-file
9437 (lambda* (#:key outputs #:allow-other-keys)
9438 (let* ((out (assoc-ref outputs "out"))
9439 (apps (string-append out "/share/applications"))
9440 (pixmaps (string-append out "/share/pixmaps")))
9441 (for-each (lambda (f) (install-file f pixmaps))
9442 (find-files "data" "\\.(png|ico)$"))
9443 (mkdir-p apps)
9444 (with-output-to-file (string-append apps "/ri-li.desktop")
9445 (lambda _
9446 (format #t
9447 "[Desktop Entry]~@
9448 Name=Ri-li~@
9449 Exec=~a/bin/Ri_li~@
9450 Icon=~a/Ri-li-icon-32x32.png~@
9451 Categories=Game;ArcadeGame;~@
9452 Keywords=toy;train;wooden;snake-like;engine;~@
9453 Comment=a toy simulator game~@
9454 Comment[de]=Ein Spiel mit einem kleinen Zug~@
9455 Comment[fr]=un jeu de petit train~@
9456 Comment[ro_RO]=un joc cu un tren de jucărie~@
9457 Terminal=false~@
9458 Type=Application~%"
9459 out pixmaps))))
9460 #t))
9461 (add-after 'install-desktop-file 'remove-spurious-files
9462 ;; Delete redundant files already installed somewhere else.
9463 (lambda* (#:key outputs #:allow-other-keys)
9464 (let ((out (assoc-ref outputs "out")))
9465 (for-each delete-file
9466 (find-files (string-append out "/share/Ri-li")
9467 "\\.(png|ico)|COPYING"))
9468 #t))))))
9469 (inputs
9470 `(("sdl" ,(sdl-union (list sdl sdl-mixer)))))
9471 (home-page "http://www.ri-li.org")
9472 (synopsis "Toy train simulation game")
9473 (description "Ri-li is a game in which you drive a wooden toy
9474 steam locomotive across many levels and collect all the coaches to
9475 win.")
9476 ;; The project is dual-licensed GPL2+ and GPL3+.
9477 (license (list license:gpl2+ license:gpl3+))))
9478
9479 (define-public freeorion
9480 (package
9481 (name "freeorion")
9482 (version "0.4.10")
9483 (source
9484 (origin
9485 (method url-fetch)
9486 (uri (string-append "https://github.com/freeorion/freeorion/releases/"
9487 "download/v" version "/FreeOrion_v" version
9488 "_2020-07-10.f3d403e_Source.tar.gz"))
9489 (sha256
9490 (base32 "12xspixrkx6mmmsdqjha0hg02r4y73pk229l0wjq9s0yp8nb8ap7"))
9491 (modules '((guix build utils)))
9492 (snippet
9493 '(begin
9494 ;; There are some bundled fonts.
9495 (for-each delete-file-recursively '("default/data/fonts"))
9496 #t))))
9497 (build-system cmake-build-system)
9498 (arguments
9499 '(#:tests? #f ;no test
9500 #:phases
9501 (modify-phases %standard-phases
9502 (add-after 'unpack 'unbundle-fonts
9503 (lambda* (#:key inputs #:allow-other-keys)
9504 (let ((roboto-dir (string-append (assoc-ref inputs "font-roboto")
9505 "/share/fonts/truetype/")))
9506 (substitute* "UI/ClientUI.cpp"
9507 (("\\(GetRootDataDir.*?Roboto-(Bold|Regular)\\.ttf\"\\)\\.string\\(\\)\\);"
9508 all type)
9509 (string-append "\"" roboto-dir "Roboto-" type ".ttf\");")))
9510 #t))))))
9511 (inputs
9512 `(("boost" ,boost)
9513 ("boost_signals" ,boost-signals2)
9514 ("font-dejavu" ,font-dejavu)
9515 ("font-roboto" ,font-google-roboto)
9516 ("freetype2" ,freetype)
9517 ("glew" ,glew)
9518 ("glu" ,glu)
9519 ("libogg" ,libogg)
9520 ("libpng" ,libpng)
9521 ("libvorbis" ,libvorbis)
9522 ("openal" ,openal)
9523 ("python" ,python)
9524 ("sdl2" ,sdl2)
9525 ("zlib" ,zlib)))
9526 (home-page "https://www.freeorion.org/index.php/Main_Page")
9527 (synopsis "Turn-based space empire and galactic conquest computer game")
9528 (description
9529 "FreeOrion is a turn-based space empire and galactic conquest (4X)
9530 computer game being designed and built by the FreeOrion project. Control an
9531 empire with the goal of exploring the galaxy, expanding your territory,
9532 exploiting the resources, and exterminating rival alien empires. FreeOrion is
9533 inspired by the tradition of the Master of Orion games, but is not a clone or
9534 remake of that series or any other game.")
9535 ;; Source code is released under gpl2. Artwork, music and sounds, and
9536 ;; in-game text are released under cc-by-sa3.0. Game content scripts are
9537 ;; released under both gpl2 and cc-by-sa3.0. Bundled Gigi library is
9538 ;; released under lgpl2.1+.
9539 (license (list license:gpl2 license:cc-by-sa3.0 license:lgpl2.1+))))
9540
9541 (define-public leela-zero
9542 (package
9543 (name "leela-zero")
9544 (version "0.17")
9545 (source
9546 (origin
9547 (method git-fetch)
9548 (uri (git-reference
9549 (url "https://github.com/leela-zero/leela-zero")
9550 (commit (string-append "v" version))))
9551 (file-name (git-file-name name version))
9552 (sha256
9553 (base32
9554 "17px5iny8mql5c01bymcli7zfssswkzvb2i8gnsmjcck6i2n8srl"))
9555 (patches (search-patches "leela-zero-gtest.patch"))))
9556 (build-system cmake-build-system)
9557 (native-inputs
9558 `(("googletest" ,googletest)))
9559 (inputs
9560 `(("boost" ,boost)
9561 ("ocl-icd" ,ocl-icd)
9562 ("openblas" ,openblas)
9563 ("opencl-headers" ,opencl-headers)
9564 ("qtbase" ,qtbase)
9565 ("zlib" ,zlib)))
9566 (arguments
9567 '(#:configure-flags '("-DUSE_BLAS=YES")
9568 #:phases (modify-phases %standard-phases
9569 (add-before 'configure 'fix-tests
9570 (lambda* (#:key outputs #:allow-other-keys)
9571 (let ((home (getcwd)))
9572 (setenv "HOME" home)
9573 (substitute* "src/tests/gtests.cpp"
9574 (("\\.\\./src/tests/0k\\.txt")
9575 (string-append home "/src/tests/0k.txt"))
9576 (("cfg_gtp_mode = true;")
9577 "cfg_gtp_mode = true; cfg_cpu_only = true;")))
9578 #t))
9579 (replace 'check
9580 (lambda _
9581 (invoke "./tests"))))))
9582 (home-page "https://github.com/leela-zero/leela-zero")
9583 (synopsis "Program playing the game of Go")
9584 (description
9585 "Leela-zero is a Go engine with no human-provided knowledge, modeled after
9586 the AlphaGo Zero paper. The current best network weights file for the engine
9587 can be downloaded from @url{https://zero.sjeng.org/best-network}.")
9588 (license license:gpl3+)))
9589
9590 (define-public q5go
9591 (package
9592 (name "q5go")
9593 (version "1.0")
9594 (source (origin
9595 (method git-fetch)
9596 (uri (git-reference
9597 (url "https://github.com/bernds/q5Go")
9598 (commit (string-append "q5go-" version))))
9599 (file-name (git-file-name name version))
9600 (sha256
9601 (base32
9602 "1gdlfqcqkqv7vph3qwq78d0qz6dhmdsranxq9bmixiisbzkqby31"))))
9603 (build-system gnu-build-system)
9604 (native-inputs
9605 `(("pkg-config" ,pkg-config)))
9606 (inputs
9607 `(("qtbase" ,qtbase)
9608 ("qtmultimedia" ,qtmultimedia)
9609 ("qtsvg" ,qtsvg)))
9610 (arguments
9611 '(#:phases
9612 (modify-phases %standard-phases
9613 (add-after 'unpack 'fix-configure-script
9614 (lambda _
9615 ;; Bypass the unavailable qtchooser program.
9616 (substitute* "configure"
9617 (("test -z \"QTCHOOSER\"")
9618 "false")
9619 (("qtchooser -run-tool=(.*) -qt=qt5" _ command)
9620 command))
9621 #t))
9622 (add-after 'unpack 'fix-paths
9623 (lambda _
9624 (substitute* '("src/pics/Makefile.in"
9625 "src/translations/Makefile.in")
9626 (("\\$\\(datadir\\)/qGo/")
9627 "$(datadir)/q5go/"))
9628 #t))
9629 (add-after 'install 'install-desktop-file
9630 (lambda* (#:key outputs #:allow-other-keys)
9631 (let* ((out (assoc-ref outputs "out"))
9632 (apps (string-append out "/share/applications"))
9633 (pics (string-append out "/share/q5go/pics")))
9634 (delete-file-recursively (string-append out "/share/applnk"))
9635 (delete-file-recursively (string-append out "/share/mimelnk"))
9636 (install-file "../source/src/pics/Bowl.ico" pics)
9637 (mkdir-p apps)
9638 (with-output-to-file (string-append apps "/q5go.desktop")
9639 (lambda _
9640 (format #t
9641 "[Desktop Entry]~@
9642 Name=q5go~@
9643 Exec=~a/bin/q5go~@
9644 Icon=~a/Bowl.ico~@
9645 Categories=Game;~@
9646 Comment=Game of Go~@
9647 Comment[de]=Spiel des Go~@
9648 Comment[eo]=Goo~@
9649 Comment[es]=Juego de Go~@
9650 Comment[fr]=Jeu de Go~@
9651 Comment[ja]=囲碁~@
9652 Comment[ko]=바둑~@
9653 Comment[zh]=围棋~@
9654 Terminal=false~@
9655 Type=Application~%"
9656 out pics))))
9657 #t)))))
9658 (synopsis "Qt GUI to play the game of Go")
9659 (description
9660 "This a tool for Go players which performs the following functions:
9661 @itemize
9662 @item SGF editor,
9663 @item Analysis frontend for Leela Zero (or compatible engines),
9664 @item GTP interface (to play against an engine),
9665 @item IGS client (to play on the internet),
9666 @item Export games to a variety of formats.
9667 @end itemize")
9668 (home-page "https://github.com/bernds/q5Go")
9669 (license license:gpl2+)))
9670
9671 (define-public ktuberling
9672 (package
9673 (name "ktuberling")
9674 (version "19.08.3")
9675 (source
9676 (origin
9677 (method url-fetch)
9678 (uri (string-append "mirror://kde/stable/applications/" version
9679 "/src/ktuberling-" version ".tar.xz"))
9680 (sha256
9681 (base32 "1qdf4q6wjh1lnlqw5c8z4rpj9w5vbyjfri1dah6yjm3mwppbc12j"))))
9682 (build-system qt-build-system)
9683 (native-inputs
9684 `(("extra-cmake-modules" ,extra-cmake-modules)
9685 ("perl" ,perl)))
9686 (inputs
9687 `(("kcompletion" ,kcompletion)
9688 ("kconfigwidgets" ,kconfigwidgets)
9689 ("kcoreaddons" ,kcoreaddons)
9690 ("kcrash" ,kcrash)
9691 ("kdbusaddons" ,kdbusaddons)
9692 ("kdelibs4support" ,kdelibs4support)
9693 ("ki18n" ,ki18n)
9694 ("kwidgetsaddons" ,kwidgetsaddons)
9695 ("kxmlgui" ,kxmlgui)
9696 ("libkdegames" ,libkdegames)
9697 ("qtbase" ,qtbase)
9698 ("qtmultimedia" ,qtmultimedia)
9699 ("qtdeclarative" ,qtdeclarative)
9700 ("qtsvg" ,qtsvg)))
9701 (home-page "https://games.kde.org/")
9702 (synopsis "Stamp drawing toy")
9703 (description "KTuberling is a drawing toy intended for small children and
9704 adults who remain young at heart. The game has no winner; the only purpose is
9705 to make the funniest faces you can. Several activities are possible, e.g.:
9706
9707 @itemize
9708 @item Give the potato a funny face, clothes, and other goodies
9709 @item Build a small town, complete with school, zoo, and fire department
9710 @item Create a fantastic moonscape with spaceships and aliens
9711 @item Top a pizza
9712 @end itemize
9713
9714 KTuberling can speak the name of each the object in several languages,
9715 to assist in learning basic vocabulary.
9716
9717 This package is part of the KDE games module.")
9718 (license (list license:gpl2+ license:fdl1.2+))))
9719
9720 (define-public picmi
9721 (package
9722 (name "picmi")
9723 (version "19.08.3")
9724 (source
9725 (origin
9726 (method url-fetch)
9727 (uri (string-append "mirror://kde/stable/applications/" version
9728 "/src/picmi-" version ".tar.xz"))
9729 (sha256
9730 (base32 "0z9mpmv49w914gqdx274brdzl6d1bz9j9nkvbwgmr3iq1ba49m3f"))))
9731 (build-system qt-build-system)
9732 (native-inputs
9733 `(("extra-cmake-modules" ,extra-cmake-modules)
9734 ("kdoctools" ,kdoctools)))
9735 (inputs
9736 `(("kcoreaddons" ,kcoreaddons)
9737 ("kcrash" ,kcrash)
9738 ("kdbusaddons" ,kdbusaddons)
9739 ("kdeclarative" ,kdeclarative)
9740 ("ki18n" ,ki18n)
9741 ("kio" ,kio)
9742 ("knewstuff" ,knewstuff)
9743 ("kxmlgui" ,kxmlgui)
9744 ("libkdegames" ,libkdegames)
9745 ("qtbase" ,qtbase)
9746 ("qtdeclarative" ,qtdeclarative)
9747 ("qtsvg" ,qtsvg)))
9748 (home-page "https://games.kde.org/")
9749 (synopsis "Number logic game")
9750 (description "Picmi is a number logic game in which cells in a grid have
9751 to be colored or left blank according to numbers given at the side of the
9752 grid. The aim is to reveal a hidden picture.
9753
9754 This package is part of the KDE games module.")
9755 (license (list license:gpl2+ license:fdl1.2+))))
9756
9757 (define-public kolf
9758 (package
9759 (name "kolf")
9760 (version "19.08.3")
9761 (source
9762 (origin
9763 (method url-fetch)
9764 (uri (string-append "mirror://kde/stable/applications/" version
9765 "/src/kolf-" version ".tar.xz"))
9766 (sha256
9767 (base32 "06sfd0llr5cc3zf1vrpcxgw9bm009ky7y8822kynic9ipcd4z1hw"))))
9768 (build-system qt-build-system)
9769 (native-inputs
9770 `(("extra-cmake-modules" ,extra-cmake-modules)
9771 ("kdoctools" ,kdoctools)))
9772 (inputs
9773 `(("kcompletion" ,kcompletion)
9774 ("kconfigwidgets" ,kconfigwidgets)
9775 ("kcoreaddons" ,kcoreaddons)
9776 ("kcrash" ,kcrash)
9777 ("kdbusaddons" ,kdbusaddons)
9778 ("ki18n" ,ki18n)
9779 ("kio" ,kio)
9780 ("kwidgetsaddons" ,kwidgetsaddons)
9781 ("kxmlgui" ,kxmlgui)
9782 ("ktextwidgets" ,ktextwidgets)
9783 ("libkdegames" ,libkdegames)
9784 ("qtbase" ,qtbase)
9785 ("qtdeclarative" ,qtdeclarative)))
9786 (home-page "https://games.kde.org/")
9787 (synopsis "Miniature golf game")
9788 (description "Kolf is a miniature golf game for one to ten players. The
9789 game is played from an overhead view, with a short bar representing the golf
9790 club. Kolf features many different types of objects, such as water hazards,
9791 slopes, sand traps, and black holes (warps), among others.
9792
9793 Features are:
9794 @itemize
9795 @item Single and Multi-player (up to ten players) modes
9796 @item High scores table
9797 @item Dynamic courses
9798 @item Third-party courses
9799 @item Course editor
9800 @end itemize
9801
9802 This package is part of the KDE games module.")
9803 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
9804
9805 (define-public libkmahjongg
9806 (package
9807 (name "libkmahjongg")
9808 (version "19.08.3")
9809 (source
9810 (origin
9811 (method url-fetch)
9812 (uri (string-append "mirror://kde/stable/applications/"
9813 version "/src/libkmahjongg-" version ".tar.xz"))
9814 (sha256
9815 (base32 "0rdimk11hrc8qrmiv26z0ddjzi1k6806c0rfskx4cwmildmh6zgx"))))
9816 (build-system qt-build-system)
9817 (native-inputs
9818 `(("extra-cmake-modules" ,extra-cmake-modules)))
9819 (inputs
9820 `(("kauth" ,kauth)
9821 ("kcompletion" ,kcompletion)
9822 ;("kconfig" ,kconfig)
9823 ("kcodecs" ,kcodecs)
9824 ("kconfigwidgets" ,kconfigwidgets)
9825 ("kcoreaddons" ,kcoreaddons)
9826 ("ki18n" ,ki18n)
9827 ("kwidgetsaddons" ,kwidgetsaddons)
9828 ("qtbase" ,qtbase)
9829 ("qtsvg" ,qtsvg)))
9830 (home-page "https://games.kde.org/")
9831 (synopsis "Shared library for kmahjongg and kshisen")
9832 (description "Shared library and common files for kmahjongg, kshisen and
9833 other Mah Jongg like games.")
9834 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
9835
9836 (define-public kmahjongg
9837 (package
9838 (name "kmahjongg")
9839 (version "19.08.3")
9840 (source
9841 (origin
9842 (method url-fetch)
9843 (uri (string-append "mirror://kde/stable/applications/"
9844 version "/src/kmahjongg-" version ".tar.xz"))
9845 (sha256
9846 (base32 "08na845h0nhmfrszdmvfq5y1dy7kgbrlzjp0f5snvbbf7w44ci6p"))))
9847 (build-system qt-build-system)
9848 (native-inputs
9849 `(("extra-cmake-modules" ,extra-cmake-modules)
9850 ("kdoctools" ,kdoctools)))
9851 (inputs
9852 `(("kcompletion" ,kcompletion)
9853 ("kcrash" ,kcrash)
9854 ("kdbusaddons" ,kdbusaddons)
9855 ("kdeclarative" ,kdeclarative)
9856 ("ki18n" ,ki18n)
9857 ("knewstuff" ,knewstuff)
9858 ("kxmlgui" ,kxmlgui)
9859 ("libkdegames" ,libkdegames)
9860 ("libkmahjongg" ,libkmahjongg)
9861 ("qtbase" ,qtbase)
9862 ("qtdeclarative" ,qtdeclarative)
9863 ("qtsvg" ,qtsvg)))
9864 (home-page "https://games.kde.org/")
9865 (synopsis "Tile laying patience")
9866 (description "In KMahjongg the tiles are scrambled and staked on top of
9867 each other to resemble a certain shape. The player is then expected to remove
9868 all the tiles off the game board by locating each tile's matching pair.
9869
9870 A variety of tile layouts are included, as well as an editor to create new
9871 layouts.
9872
9873 This package is part of the KDE games module.")
9874 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
9875
9876 (define-public kshisen
9877 (package
9878 (name "kshisen")
9879 (version "19.08.3")
9880 (source
9881 (origin
9882 (method url-fetch)
9883 (uri (string-append "mirror://kde/stable/applications/"
9884 version "/src/kshisen-" version ".tar.xz"))
9885 (sha256
9886 (base32 "1bq5m48af4h5apfp3bfsp76nlpv6h5sc0gd544zv7cgpfznz1sds"))))
9887 (build-system qt-build-system)
9888 (native-inputs
9889 `(("extra-cmake-modules" ,extra-cmake-modules)
9890 ;("perl" ,perl)
9891 ;("pkg-config" ,pkg-config)
9892 ("kdoctools" ,kdoctools)))
9893 (inputs
9894 `(("kauth" ,kauth)
9895 ("kcompletion" ,kcompletion)
9896 ("kconfigwidgets" ,kconfigwidgets)
9897 ("kcoreaddons" ,kcoreaddons)
9898 ("kcrash" ,kcrash)
9899 ("kdbusaddons" ,kdbusaddons)
9900 ("ki18n" ,ki18n)
9901 ("kxmlgui" ,kxmlgui)
9902 ("libkdegames" ,libkdegames)
9903 ("libkmahjongg" ,libkmahjongg)
9904 ("qtbase" ,qtbase)
9905 ("qtdeclarative" ,qtdeclarative)))
9906 (home-page "https://games.kde.org/")
9907 (synopsis "Shisen-Sho solitaire game")
9908 (description "KShisen is a solitaire-like game played using the standard
9909 set of Mahjong tiles. Unlike Mahjong however, KShisen has only one layer of
9910 scrambled tiles
9911
9912 This package is part of the KDE games module.")
9913 (license license:gpl2+)))
9914
9915 (define-public kajongg
9916 (package
9917 (name "kajongg")
9918 (version "19.08.3")
9919 (source
9920 (origin
9921 (method url-fetch)
9922 (uri (string-append "mirror://kde/stable/applications/"
9923 version "/src/kajongg-" version ".tar.xz"))
9924 (sha256
9925 (base32 "0ql6p5zifdpdf65r7ki9ml123azpwwk9x3x8r9ij6xhjnf7p7x6w"))))
9926 (build-system qt-build-system)
9927 (native-inputs
9928 `(("extra-cmake-modules" ,extra-cmake-modules)
9929 ;("perl" ,perl)
9930 ("kdoctools" ,kdoctools)))
9931 (inputs
9932 `(("kconfig" ,kconfig)
9933 ("kconfigwidgets" ,kconfigwidgets)
9934 ("kcoreaddons" ,kcoreaddons)
9935 ("ki18n" ,ki18n)
9936 ("libkmahjongg" ,libkmahjongg)
9937 ("python" ,python)
9938 ("qtbase" ,qtbase)
9939 ("qtsvg" ,qtsvg)))
9940 (propagated-inputs
9941 `(("python-twisted" ,python-twisted)
9942 ("python-pyqt" ,python-pyqt)))
9943 ;; FIXME: Need to wrap PYTHONPATH
9944 (home-page "https://games.kde.org/")
9945 (synopsis "Classical Mah Jongg game for 4 players")
9946 (description "Kajongg is the ancient Chinese board game for 4 players.
9947
9948 If you are looking for the Mah Jongg solitaire please use the application
9949 kmahjongg.
9950
9951 Kajongg can be used in two different ways: Scoring a manual game where you
9952 play as always and use Kajongg for the computation of scores and for
9953 bookkeeping. Or you can use Kajongg to play against any combination of other
9954 human players or computer players.
9955
9956 This package is part of the KDE games module.")
9957 (license (list license:gpl2+ license:fdl1.2+))))
9958
9959 (define-public kbreakout
9960 (package
9961 (name "kbreakout")
9962 (version "19.08.3")
9963 (source
9964 (origin
9965 (method url-fetch)
9966 (uri (string-append "mirror://kde/stable/applications/" version
9967 "/src/kbreakout-" version ".tar.xz"))
9968 (sha256
9969 (base32 "0gwzx1z9mxrjlcjzglg8cxkyd6900whcar3b5j9laxxarc6xhj8w"))))
9970 (build-system qt-build-system)
9971 (native-inputs
9972 `(("extra-cmake-modules" ,extra-cmake-modules)
9973 ("kdoctools" ,kdoctools)))
9974 (inputs
9975 `(("kcompletion" ,kcompletion)
9976 ("kconfig" ,kconfig)
9977 ("kconfigwidgets" ,kconfigwidgets)
9978 ("kcoreaddons" ,kcoreaddons)
9979 ("kcrash" ,kcrash)
9980 ("kdbusaddons" ,kdbusaddons)
9981 ("ki18n" ,ki18n)
9982 ("kwidgetsaddons" ,kwidgetsaddons)
9983 ("kxmlgui" ,kxmlgui)
9984 ("libkdegames" ,libkdegames)
9985 ("qtbase" ,qtbase)
9986 ("qtdeclarative" ,qtdeclarative)))
9987 (home-page "https://games.kde.org/")
9988 (synopsis "Breakout like game")
9989 (description "KBreakout is similar to the classics breakout and xboing,
9990 featuring a number of added graphical enhancements and effects. You control a
9991 paddle at the bottom of the playing-field, and must destroy bricks at the top
9992 by bouncing balls against them.
9993
9994 This package is part of the KDE games module.")
9995 (license (list license:gpl2+ license:fdl1.2+))))
9996
9997 (define-public kmines
9998 (package
9999 (name "kmines")
10000 (version "19.08.3")
10001 (source
10002 (origin
10003 (method url-fetch)
10004 (uri (string-append "mirror://kde/stable/applications/" version
10005 "/src/kmines-" version ".tar.xz"))
10006 (sha256
10007 (base32 "0ac3za36lh8hpx6mqfic9amwmzhzhzplm9hg3pw12gxl5a9mvfsf"))))
10008 (build-system qt-build-system)
10009 (native-inputs
10010 `(("extra-cmake-modules" ,extra-cmake-modules)
10011 ("kdoctools" ,kdoctools)))
10012 (inputs
10013 `(("kcompletion" ,kcompletion)
10014 ("kconfig" ,kconfig)
10015 ("kconfigwidgets" ,kconfigwidgets)
10016 ("kcoreaddons" ,kcoreaddons)
10017 ("kcrash" ,kcrash)
10018 ("kdbusaddons" ,kdbusaddons)
10019 ("ki18n" ,ki18n)
10020 ("ktextwidgets" ,ktextwidgets)
10021 ("kwidgetsaddons" ,kwidgetsaddons)
10022 ("kxmlgui" ,kxmlgui)
10023 ("libkdegames" ,libkdegames)
10024 ("qtbase" ,qtbase)
10025 ("qtdeclarative" ,qtdeclarative)))
10026 (home-page "https://games.kde.org/")
10027 (synopsis "Classical mine sweeper game")
10028 (description "KMines is a classic Minesweeper game. The idea is to
10029 uncover all the squares without blowing up any mines. When a mine is blown
10030 up, the game is over.
10031
10032 This package is part of the KDE games module.")
10033 (license (list license:gpl2+ license:fdl1.2+))))
10034
10035 (define-public konquest
10036 (package
10037 (name "konquest")
10038 (version "19.08.3")
10039 (source
10040 (origin
10041 (method url-fetch)
10042 (uri (string-append "mirror://kde/stable/applications/"
10043 version "/src/konquest-" version ".tar.xz"))
10044 (sha256
10045 (base32 "02gjxskhi10a1sqh3skcild8zria7wncz1a4sbz7ax1p851q76k1"))))
10046 (build-system qt-build-system)
10047 (native-inputs
10048 `(("extra-cmake-modules" ,extra-cmake-modules)
10049 ("kdoctools" ,kdoctools)))
10050 (inputs
10051 `(("kcompletion" ,kcompletion)
10052 ("kconfig" ,kconfig)
10053 ("kcoreaddons" ,kcoreaddons)
10054 ("kcrash" ,kcrash)
10055 ("kdbusaddons" ,kdbusaddons)
10056 ("kguiaddons" ,kguiaddons)
10057 ("ki18n" ,ki18n)
10058 ("kwidgetsaddons" ,kwidgetsaddons)
10059 ("kxmlgui" ,kxmlgui)
10060 ("libkdegames" ,libkdegames)
10061 ("qtbase" ,qtbase)
10062 ("qtdeclarative" ,qtdeclarative)
10063 ("qtsvg" ,qtsvg)))
10064 (home-page "https://games.kde.org/")
10065 (synopsis "Simple turn-based strategy game")
10066 (description "Konquest is the KDE version of Gnu-Lactic Konquest. Players
10067 conquer other planets by sending ships to them. The goal is to build an
10068 interstellar empire and ultimately conquer all other player's planets. The
10069 game can be played with up to nine empires, commanded either by the computer
10070 or by puny earthlings.
10071
10072 This package is part of the KDE games module.")
10073 (license (list license:gpl2+ license:fdl1.2+))))
10074
10075 (define-public kbounce
10076 (package
10077 (name "kbounce")
10078 (version "19.08.3")
10079 (source
10080 (origin
10081 (method url-fetch)
10082 (uri (string-append "mirror://kde/stable/applications/"
10083 version "/src/kbounce-" version ".tar.xz"))
10084 (sha256
10085 (base32 "02rfv0qzz5cmyfx8f56a45hbm9gsp6m3dcy8ajwx88rw5wpbrr11"))))
10086 (build-system qt-build-system)
10087 (native-inputs
10088 `(("extra-cmake-modules" ,extra-cmake-modules)
10089 ("kdoctools" ,kdoctools)))
10090 (inputs
10091 `(("kcompletion" ,kcompletion)
10092 ("kconfigwidgets" ,kconfigwidgets)
10093 ("kcoreaddons" ,kcoreaddons)
10094 ("kcrash" ,kcrash)
10095 ("kdbusaddons" ,kdbusaddons)
10096 ("ki18n" ,ki18n)
10097 ("kio" ,kio)
10098 ("kwidgetsaddons" ,kwidgetsaddons)
10099 ("kxmlgui" ,kxmlgui)
10100 ("libkdegames" ,libkdegames)
10101 ("qtbase" ,qtbase)
10102 ("qtdeclarative" ,qtdeclarative)
10103 ("qtsvg" ,qtsvg)))
10104 (home-page "https://games.kde.org/")
10105 (synopsis "Jezzball arcade game")
10106 (description "KBounce is a single player arcade game with the elements of
10107 puzzle. It is played on a field, surrounded by wall, with two or more balls
10108 bouncing around within the walls. The object of the game is to build new
10109 walls to decrease the size of the active field.
10110
10111 This package is part of the KDE games module.")
10112 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
10113
10114 (define-public kblocks
10115 (package
10116 (name "kblocks")
10117 (version "19.08.3")
10118 (source
10119 (origin
10120 (method url-fetch)
10121 (uri (string-append "mirror://kde/stable/applications/"
10122 version "/src/kblocks-" version ".tar.xz"))
10123 (sha256
10124 (base32 "0qrm0dihzhkxsq9l49ndzms802x6jn92vvabb2zf2q9z593m69cx"))))
10125 (build-system qt-build-system)
10126 (native-inputs
10127 `(("extra-cmake-modules" ,extra-cmake-modules)
10128 ("kdoctools" ,kdoctools)))
10129 (inputs
10130 `(("kcompletion" ,kcompletion)
10131 ("kconfig" ,kconfig)
10132 ("kconfigwidgets" ,kconfigwidgets)
10133 ("kcoreaddons" ,kcoreaddons)
10134 ("kcrash" ,kcrash)
10135 ("kdbusaddons" ,kdbusaddons)
10136 ("ki18n" ,ki18n)
10137 ("kwidgetsaddons" ,kwidgetsaddons)
10138 ("kxmlgui" ,kxmlgui)
10139 ("libkdegames" ,libkdegames)
10140 ("qtbase" ,qtbase)
10141 ("qtdeclarative" ,qtdeclarative)
10142 ("qtsvg" ,qtsvg)))
10143 (home-page "https://games.kde.org/")
10144 (synopsis "Single player falling blocks puzzle game")
10145 (description "KBlocks is the classic Tetris-like falling blocks game.
10146
10147 The idea is to stack the falling blocks to create horizontal lines without any
10148 gaps. When a line is completed it is removed, and more space is available in
10149 the play area. When there is not enough space for blocks to fall, the game is
10150 over.
10151
10152 This package is part of the KDE games module.")
10153 (license (list license:gpl2+ license:fdl1.2+))))
10154
10155 (define-public ksudoku
10156 (package
10157 (name "ksudoku")
10158 (version "19.08.3")
10159 (source
10160 (origin
10161 (method url-fetch)
10162 (uri (string-append "mirror://kde/stable/applications/"
10163 version "/src/ksudoku-" version ".tar.xz"))
10164 (sha256
10165 (base32 "0rcscz91hilm7l3am5w02n0n8l7xhi4l0n4sskznh68kblw0ggw2"))))
10166 (build-system qt-build-system)
10167 (native-inputs
10168 `(("extra-cmake-modules" ,extra-cmake-modules)
10169 ("kdoctools" ,kdoctools)))
10170 (inputs
10171 `(("karchive", karchive)
10172 ("kconfig" ,kconfig)
10173 ("kconfigwidgets" ,kconfigwidgets)
10174 ("kcoreaddons" ,kcoreaddons)
10175 ("kcrash" ,kcrash)
10176 ("kguiaddons" ,kguiaddons)
10177 ("ki18n" ,ki18n)
10178 ("kiconthemes" ,kiconthemes)
10179 ("kio" ,kio)
10180 ("kwidgetsaddons" ,kwidgetsaddons)
10181 ("kxmlgui" ,kxmlgui)
10182 ("libkdegames" ,libkdegames)
10183 ("glu" ,glu)
10184 ("qtbase" ,qtbase)
10185 ("qtdeclarative" ,qtdeclarative)
10186 ("qtsvg" ,qtsvg)))
10187 (home-page "https://games.kde.org/")
10188 (synopsis "Sudoku puzzle game and solver")
10189 (description "KSudoku is a Sudoku game and solver, supporting a range of
10190 2D and 3D Sudoku variants. In addition to playing Sudoku, it can print Sudoku
10191 puzzle sheets and find the solution to any Sudoku puzzle.
10192
10193 The word Sudoku means \"single number in an allotted place\" in Japanese.
10194 These are the basic rules: Every Sudoku is a square divided into 3x3
10195 subsquares with 3x3 cells each.
10196
10197 Some cells are filled with a number at the beginning. The remaining ones are
10198 to be filled by the player using numbers from 1 to 9, without repeating a
10199 number twice on each column, row or subsquare (each of them must contain only
10200 one 1, one 2, one 3, and so on). The game requires logic and patience.
10201 Solving takes usually 10 to 30 minutes, depending on puzzle level, your skill
10202 and experience.
10203
10204 The numerals in Sudoku puzzles are used for convenience (for example in 16x16
10205 board we use letters): arithmetic relationships between numbers are
10206 irrelevant.
10207
10208 This program supports also 16x16 games with numbers from 1 to 16 and 256
10209 cells with 16 cols, rows and subsquares!
10210
10211 More information at http://en.wikipedia.org/wiki/Sudoku
10212
10213 This package is part of the KDE games module.")
10214 (license (list license:gpl2+ license:fdl1.2+))))
10215
10216 (define-public klines
10217 (package
10218 (name "klines")
10219 (version "19.08.3")
10220 (source
10221 (origin
10222 (method url-fetch)
10223 (uri (string-append "mirror://kde/stable/applications/" version
10224 "/src/klines-" version ".tar.xz"))
10225 (sha256
10226 (base32 "1g1f46jp0rb8gpqkgcf915ydpsscn1sxk3gjvm8bcqgx9ddq59xa"))))
10227 (build-system qt-build-system)
10228 (native-inputs
10229 `(("extra-cmake-modules" ,extra-cmake-modules)
10230 ("kdoctools" ,kdoctools)))
10231 (inputs
10232 `(("kcompletion" ,kcompletion)
10233 ("kconfigwidgets" ,kconfigwidgets)
10234 ("kcoreaddons" ,kcoreaddons)
10235 ("kcrash" ,kcrash)
10236 ("kdbusaddons" ,kdbusaddons)
10237 ("ki18n" ,ki18n)
10238 ("kwidgetsaddons" ,kwidgetsaddons)
10239 ("kxmlgui" ,kxmlgui)
10240 ("libkdegames" ,libkdegames)
10241 ("qtbase" ,qtbase)
10242 ("qtdeclarative" ,qtdeclarative)))
10243 (home-page "https://games.kde.org/")
10244 (synopsis "Place 5 equal pieces together, but wait, there are 3 new ones")
10245 (description "KLines is a simple but highly addictive one player game.
10246
10247 The player has to move the colored balls around the game board, gathering them
10248 into the lines of the same color by five. Once the line is complete it is
10249 removed from the board, therefore freeing precious space. In the same time
10250 the new balls keep arriving by three after each move, filling up the game
10251 board.
10252
10253 KLines is a single-player game where the player removes colored balls from the
10254 board by arranging them into lines of five or more. However, every time the
10255 player moves a ball, three more balls are added to the board.
10256
10257 This package is part of the KDE games module.")
10258 (license (list license:gpl2+ license:fdl1.2+))))
10259
10260 (define-public kgoldrunner
10261 (package
10262 (name "kgoldrunner")
10263 (version "19.08.3")
10264 (source
10265 (origin
10266 (method url-fetch)
10267 (uri (string-append "mirror://kde/stable/applications/" version "/src/kgoldrunner-"
10268 version ".tar.xz"))
10269 (sha256
10270 (base32 "16rcvq796r3asz4v4ap75xvwnxd3dd2nsq5r9vxvzl6rrf1w9bj4"))))
10271 (build-system qt-build-system)
10272 (native-inputs
10273 `(("extra-cmake-modules" ,extra-cmake-modules)
10274 ("kdoctools" ,kdoctools)))
10275 (inputs
10276 `(("kcompletion" ,kcompletion)
10277 ("kcoreaddons" ,kcoreaddons)
10278 ("kcrash" ,kcrash)
10279 ("kdbusaddons" ,kdbusaddons)
10280 ("ki18n" ,ki18n)
10281 ("kio" ,kio)
10282 ("kwidgetsaddons" ,kwidgetsaddons)
10283 ("kxmlgui" ,kxmlgui)
10284 ("libkdegames" ,libkdegames)
10285 ("qtbase" ,qtbase)
10286 ("qtdeclarative" ,qtdeclarative)))
10287 (home-page "https://games.kde.org/")
10288 (synopsis "Action and puzzle solving game")
10289 (description "KGoldrunner is an action game where the hero runs through a
10290 maze, climbs stairs, dig holes and dodges enemies in order to collect all the
10291 gold nuggets and escape to the next level. Your enemies are also after the
10292 gold. Worse still, they are after you!.
10293
10294 KGoldrunner is a fast-paced platform game where the player must navigate a
10295 maze while collecting gold nuggets and avoiding enemies. A variety of level
10296 packs are included, as well as an editor to create new levels.
10297
10298 This package is part of the KDE games module.")
10299 (license (list license:gpl2+ license:fdl1.2+))))
10300
10301 (define-public kdiamond
10302 (package
10303 (name "kdiamond")
10304 (version "19.08.3")
10305 (source
10306 (origin
10307 (method url-fetch)
10308 (uri (string-append "mirror://kde/stable/applications/" version
10309 "/src/kdiamond-" version ".tar.xz"))
10310 (sha256
10311 (base32 "1v5yb9hb26lk277zhw8d37ks829yfqr5anzx1qhms44gca5kqhva"))))
10312 (build-system qt-build-system)
10313 (native-inputs
10314 `(("extra-cmake-modules" ,extra-cmake-modules)
10315 ("kdoctools" ,kdoctools)))
10316 (inputs
10317 `(("kcompletion", kcompletion)
10318 ("kconfig" ,kconfig)
10319 ("kconfigwidgets" ,kconfigwidgets)
10320 ("kcoreaddons" ,kcoreaddons)
10321 ("kcrash" ,kcrash)
10322 ("kdbusaddons" ,kdbusaddons)
10323 ("ki18n" ,ki18n)
10324 ("knotifications" ,knotifications)
10325 ("knotifyconfig" ,knotifyconfig)
10326 ("kwidgetsaddons" ,kwidgetsaddons)
10327 ("kxmlgui" ,kxmlgui)
10328 ("libkdegames" ,libkdegames)
10329 ("qtbase" ,qtbase)
10330 ("qtdeclarative" ,qtdeclarative)))
10331 (home-page "https://games.kde.org/")
10332 (synopsis "Three-in-a-row game")
10333 (description "KDiamond is a three-in-a-row game like Bejeweled. It
10334 features unlimited fun with randomly generated games and five difficulty
10335 levels with varying number of diamond colors and board sizes.
10336
10337 This package is part of the KDE games module.")
10338 (license (list license:gpl2+ license:fdl1.2+))))
10339
10340 (define-public kfourinline
10341 (package
10342 (name "kfourinline")
10343 (version "19.08.3")
10344 (source
10345 (origin
10346 (method url-fetch)
10347 (uri (string-append "mirror://kde/stable/applications/" version
10348 "/src/kfourinline-" version ".tar.xz"))
10349 (sha256
10350 (base32 "1vprs6dc1ccn3g6k594i9s94xy4b91vzlqjysyc6fqcq2fs54ny3"))))
10351 (build-system qt-build-system)
10352 (native-inputs
10353 `(("extra-cmake-modules" ,extra-cmake-modules)
10354 ("kdoctools" ,kdoctools)))
10355 (inputs
10356 `(("kcompletion" ,kcompletion)
10357 ("kconfig" ,kconfig)
10358 ("kconfigwidgets" ,kconfigwidgets)
10359 ("kcoreaddons" ,kcoreaddons)
10360 ("kcrash" ,kcrash)
10361 ("kdelibs4support" ,kdelibs4support)
10362 ("kdnssd" ,kdnssd)
10363 ("ki18n" ,ki18n)
10364 ("kxmlgui" ,kxmlgui)
10365 ("libkdegames" ,libkdegames)
10366 ("qtbase" ,qtbase)
10367 ("qtdeclarative" ,qtdeclarative)
10368 ("qtsvg" ,qtsvg)))
10369 (home-page "https://games.kde.org/")
10370 (synopsis "Place 4 pieces in a row")
10371 (description "KFourInLine is a board game for two players based on the
10372 Connect-Four game.
10373
10374 KFourInLine is a game where two players take turns dropping pieces into a
10375 grid, the winner being the first to place four pieces in a line.
10376
10377 This package is part of the KDE games module.")
10378 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
10379
10380 (define-public kblackbox
10381 (package
10382 (name "kblackbox")
10383 (version "19.08.3")
10384 (source
10385 (origin
10386 (method url-fetch)
10387 (uri (string-append "mirror://kde/stable/applications/" version
10388 "/src/kblackbox-" version ".tar.xz"))
10389 (sha256
10390 (base32 "1x42sfpf75c6mavwkc7g7dm11y9s5dpj8igphly5kvm0pajqby0n"))))
10391 (build-system qt-build-system)
10392 (native-inputs
10393 `(("extra-cmake-modules" ,extra-cmake-modules)
10394 ("kdoctools" ,kdoctools)))
10395 (inputs
10396 `(("karchive" ,karchive)
10397 ("kcompletion" ,kcompletion)
10398 ("kconfig" ,kconfig)
10399 ("kcoreaddons" ,kcoreaddons)
10400 ("kcrash" ,kcrash)
10401 ("kdbusaddons" ,kdbusaddons)
10402 ("ki18n" ,ki18n)
10403 ("ktextwidgets" ,ktextwidgets)
10404 ("kxmlgui" ,kxmlgui)
10405 ("libkdegames" ,libkdegames)
10406 ("qtbase" ,qtbase)
10407 ("qtdeclarative" ,qtdeclarative)
10408 ("qtsvg" ,qtsvg)))
10409 (home-page "https://games.kde.org/")
10410 (synopsis "Find atoms in a grid by shooting electrons")
10411 (description "KBlackbox is a game of hide and seek played on a grid of
10412 boxes where the computer has hidden several balls. The position of the hidden
10413 balls can be deduced by shooting beams into the box
10414
10415 KBlackBox is a game of hide and seek played on an grid of boxes, where the
10416 player shoots rays into the grid to deduce the positions of hidden objects.
10417
10418 This package is part of the KDE games module.")
10419 (license (list license:gpl2+ license:fdl1.2+))))
10420
10421 (define-public knetwalk
10422 (package
10423 (name "knetwalk")
10424 (version "19.08.3")
10425 (source
10426 (origin
10427 (method url-fetch)
10428 (uri (string-append "mirror://kde/stable/applications/" version
10429 "/src/knetwalk-" version ".tar.xz"))
10430 (sha256
10431 (base32 "1i340salzgqdw8y33wrrydmpgx3pvwf5wrbljlh67cjf6s4csx7d"))))
10432 (build-system qt-build-system)
10433 (native-inputs
10434 `(("extra-cmake-modules" ,extra-cmake-modules)
10435 ("kdoctools" ,kdoctools)))
10436 (inputs
10437 `(("kcompletion" ,kcompletion)
10438 ("kconfig" ,kconfig)
10439 ("kconfigwidgets" ,kconfigwidgets)
10440 ("kcoreaddons" ,kcoreaddons)
10441 ("kcrash" ,kcrash)
10442 ("kdbusaddons" ,kdbusaddons)
10443 ("ki18n" ,ki18n)
10444 ("ktextwidgets" ,ktextwidgets)
10445 ("kwidgetsaddons" ,kwidgetsaddons)
10446 ("kxmlgui" ,kxmlgui)
10447 ("libkdegames" ,libkdegames)
10448 ("qtbase" ,qtbase)
10449 ("qtdeclarative" ,qtdeclarative)))
10450 (home-page "https://games.kde.org/")
10451 (synopsis "Turn the board pieces to get all computers connected")
10452 (description "KNetWalk is a small game where you have to build up a
10453 computer network by rotating the wires to connect the terminals to the server.
10454 When the network is build, a highscore-list comes up where competitions can be
10455 fought out.
10456
10457 KNetwalk is a puzzle game where the player arranges sections of wire to
10458 connect all the computers on the board.
10459
10460 This package is part of the KDE games module.")
10461 (license (list license:gpl2+ license:fdl1.2+))))
10462
10463 (define-public bomber
10464 (package
10465 (name "bomber")
10466 (version "19.08.3")
10467 (source
10468 (origin
10469 (method url-fetch)
10470 (uri (string-append "mirror://kde/stable/applications/" version
10471 "/src/bomber-" version ".tar.xz"))
10472 (sha256
10473 (base32 "1lvzd0mzgq25akvwvkm57l3plm65k731v2i1ahakn985bb5gc3is"))))
10474 (build-system qt-build-system)
10475 (native-inputs
10476 `(("extra-cmake-modules" ,extra-cmake-modules)
10477 ("kdoctools" ,kdoctools)))
10478 (inputs
10479 `(("kcompletiom" ,kcompletion)
10480 ("kconfig" ,kconfig)
10481 ("kcoreaddons" ,kcoreaddons)
10482 ("kcrash" ,kcrash)
10483 ("kdbusaddons" ,kdbusaddons)
10484 ("ki18n" ,ki18n)
10485 ("kxmlgui" ,kxmlgui)
10486 ("libkdegames" ,libkdegames)
10487 ("qtbase" ,qtbase)
10488 ("qtdeclarative" ,qtdeclarative)))
10489 (home-page "https://games.kde.org/")
10490 (synopsis "Arcade bombing game")
10491 (description "Bomber is a single player arcade game.
10492
10493 The player is invading various cities in a plane that is decreasing in height.
10494 The goal of the game is to destroy all the buildings and advance to the next
10495 level. Each level gets a bit harder by increasing the speed of the plane and
10496 the height of the buildings.
10497
10498 Bomber is a game where you fly a spaceship and attempt to bomb the buildings
10499 below you. Each pass the spaceship makes, it gets lower and lower. If you've
10500 not destroyed a building in your path, you will crash into it.
10501
10502 This package is part of the KDE games module.")
10503 (license (list license:gpl2+ license:fdl1.2+))))
10504
10505 (define-public granatier
10506 (package
10507 (name "granatier")
10508 (version "19.08.3")
10509 (source
10510 (origin
10511 (method url-fetch)
10512 (uri (string-append "mirror://kde/stable/applications/" version
10513 "/src/granatier-" version ".tar.xz"))
10514 (sha256
10515 (base32 "141qmdinz7ikbbrs8dq6cap3nl22sl7pw62r80pf3xxwn2q4phpa"))))
10516 (build-system qt-build-system)
10517 (native-inputs
10518 `(("extra-cmake-modules" ,extra-cmake-modules)
10519 ("kdoctools" ,kdoctools)))
10520 (inputs
10521 `(("kcompletion" ,kcompletion)
10522 ("kconfig" ,kconfig)
10523 ("kconfigwidgets" ,kconfigwidgets)
10524 ("kcoreaddons" ,kcoreaddons)
10525 ("kcrash" ,kcrash)
10526 ("kdbusaddons" ,kdbusaddons)
10527 ("ki18n" ,ki18n)
10528 ("knewstuff" ,knewstuff)
10529 ("kwidgetsaddons" ,kwidgetsaddons)
10530 ("kxmlgui" ,kxmlgui)
10531 ("libkdegames" ,libkdegames)
10532 ("qtbase" ,qtbase)
10533 ("qtdeclarative" ,qtdeclarative)
10534 ("qtsvg" ,qtsvg)))
10535 (home-page "https://games.kde.org/")
10536 (synopsis "Bomberman clone")
10537 (description "Granatier is a clone of the classic Bomberman game,
10538 inspired by the work of the Clanbomber clone.
10539
10540 This package is part of the KDE games module.")
10541 (license (list license:gpl2+ license:fdl1.2+))))
10542
10543 (define-public ksirk
10544 (package
10545 (name "ksirk")
10546 (version "19.08.3")
10547 (source
10548 (origin
10549 (method url-fetch)
10550 (uri (string-append "mirror://kde/stable/applications/" version
10551 "/src/ksirk-" version ".tar.xz"))
10552 (sha256
10553 (base32 "1b1wixs2hp5qnvdygfwa3kvy0kn94ysa4ifmx90q6r3yfr2lpfca"))))
10554 (build-system qt-build-system)
10555 (native-inputs
10556 `(("extra-cmake-modules" ,extra-cmake-modules)
10557 ("kdoctools" ,kdoctools)))
10558 (inputs
10559 `(("kcrash" ,kcrash)
10560 ("ki18n" ,ki18n)
10561 ("kiconthemes" ,kiconthemes)
10562 ("kio" ,kio)
10563 ("knewstuff" ,knewstuff)
10564 ("kwallet" ,kwallet)
10565 ("kxmlgui" ,kxmlgui)
10566 ("libkdegames" ,libkdegames)
10567 ("phonon" ,phonon)
10568 ("qca" ,qca)
10569 ("qtbase" ,qtbase)
10570 ("qtdeclarative" ,qtdeclarative)
10571 ("qtsvg" ,qtsvg)
10572 ("zlib" ,zlib)))
10573 (home-page "https://games.kde.org/")
10574 (synopsis "Computerized version of the well known strategy board game
10575 'Risk'")
10576 (description "KsirK is a multi-player network-enabled game. The goal of
10577 the game is simply to conquer the world by attacking your neighbors with your
10578 armies.
10579
10580 At the beginning of the game, countries are distributed to all the players.
10581 Each country contains one army represented by an infantryman. Each player has
10582 some armies to distribute to his countries. On each turn, each player can
10583 attack his neighbours, eventually conquering one or more countries. At the
10584 end of each turn, some bonus armies are distributed to the players in function
10585 of the number of countries they own. The winner is the player that conquered
10586 all the world.
10587
10588 Features:
10589 @itemize
10590 @item Support for 1-6 human or computer players
10591 @item Multi-player gaming over a network
10592 @item You can easily create new skins with SVG graphics and the skin editor
10593 @item Hot New Stuff support. You can easily download and install new skins
10594 @end itemize
10595
10596 This package is part of the KDE games module.")
10597 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
10598
10599 (define-public palapeli
10600 (package
10601 (name "palapeli")
10602 (version "19.08.3")
10603 (source
10604 (origin
10605 (method url-fetch)
10606 (uri (string-append "mirror://kde/stable/applications/" version
10607 "/src/palapeli-" version ".tar.xz"))
10608 (sha256
10609 (base32 "1g91ydbc0x2y2gn3lcb5w03mn7k78l5bq4cb1s59kx6yjbflv3pw"))))
10610 (build-system qt-build-system)
10611 (native-inputs
10612 `(("extra-cmake-modules" ,extra-cmake-modules)
10613 ("kdoctools" ,kdoctools)))
10614 (inputs
10615 `(("karchive" ,karchive)
10616 ("kcompletion" ,kcompletion)
10617 ("kconfig" ,kconfig)
10618 ("kconfigwidgets" ,kconfigwidgets)
10619 ("kcoreaddons" ,kcoreaddons)
10620 ("kcrash" ,kcrash)
10621 ("kcrash" ,kcrash)
10622 ("ki18n" ,ki18n)
10623 ("ki18n" ,ki18n)
10624 ("kio" ,kio)
10625 ("kitemviews" ,kitemviews)
10626 ("knotifications" ,knotifications)
10627 ("kservice" ,kservice)
10628 ("kwidgetsaddons" ,kwidgetsaddons)
10629 ("kxmlgui" ,kxmlgui)
10630 ("libkdegames" ,libkdegames)
10631 ("qtbase" ,qtbase)
10632 ("qtdeclarative" ,qtdeclarative)
10633 ("qtsvg" ,qtsvg)
10634 ("shared-mime-info" ,shared-mime-info)))
10635 (home-page "https://games.kde.org/")
10636 (synopsis "Jigsaw puzzle game")
10637 (description "Palapeli is a jigsaw puzzle game. Unlike other games in
10638 that genre, you are not limited to aligning pieces on imaginary grids. The
10639 pieces are freely moveable. Also, Palapeli features real persistency, i.e.
10640 everything you do is saved on your disk immediately.
10641
10642 Palapeli is the Finnish word for jigsaw puzzle.
10643
10644 This package is part of the KDE games module.")
10645 (license license:gpl2+)))
10646
10647 (define-public kiriki
10648 (package
10649 (name "kiriki")
10650 (version "19.08.3")
10651 (source
10652 (origin
10653 (method url-fetch)
10654 (uri (string-append "mirror://kde/stable/applications/" version
10655 "/src/kiriki-" version ".tar.xz"))
10656 (sha256
10657 (base32 "1xg25dj95g81dc5l7k47am4j52abrwwfx4h73lvsbn4lc8lfmshw"))))
10658 (build-system qt-build-system)
10659 (native-inputs
10660 `(("extra-cmake-modules" ,extra-cmake-modules)
10661 ("kdoctools" ,kdoctools)))
10662 (inputs
10663 `(("kcompletion" ,kcompletion)
10664 ("kconfig" ,kconfig)
10665 ("kconfigwidgets" ,kconfigwidgets)
10666 ("kcoreaddons" ,kcoreaddons)
10667 ("kcrash" ,kcrash)
10668 ("kdbusaddons" ,kdbusaddons)
10669 ("ki18n" ,ki18n)
10670 ("kiconthemes" ,kiconthemes)
10671 ("kxmlgui" ,kxmlgui)
10672 ("libkdegames" ,libkdegames)
10673 ("qtbase" ,qtbase)
10674 ("qtdeclarative" ,qtdeclarative)))
10675 (home-page "https://games.kde.org/")
10676 (synopsis "Yahtzee dice game")
10677 (description "Kiriki is an addictive and fun dice game, designed to be
10678 played by as many as six players.
10679
10680 Participants have to collect points by rolling five dice for up to three times
10681 per single turn to make combinations with the highest score.
10682
10683 This package is part of the KDE games module.")
10684 (license (list license:gpl2+ license:fdl1.2+))))
10685
10686 (define-public kigo
10687 (package
10688 (name "kigo")
10689 (version "19.08.3")
10690 (source
10691 (origin
10692 (method url-fetch)
10693 (uri (string-append "mirror://kde/stable/applications/" version
10694 "/src/kigo-" version ".tar.xz"))
10695 (sha256
10696 (base32 "00l5gcbi8xyj9c1lngkrddka3a4m4cd78prfplrpq32ma9xq681f"))))
10697 (build-system qt-build-system)
10698 (native-inputs
10699 `(("extra-cmake-modules" ,extra-cmake-modules)
10700 ("kdoctools" ,kdoctools)))
10701 (inputs
10702 `(("kconfig" ,kconfig)
10703 ("kconfigwidgets" ,kconfigwidgets)
10704 ("kcoreaddons" ,kcoreaddons)
10705 ("kcrash" ,kcrash)
10706 ("kdbusaddons" ,kdbusaddons)
10707 ("ki18n" ,ki18n)
10708 ("kio" ,kio)
10709 ("knewstuff", knewstuff)
10710 ("ktextwidgets" ,ktextwidgets)
10711 ("kxmlgui" ,kxmlgui)
10712 ("libkdegames" ,libkdegames)
10713 ("qtbase" ,qtbase)
10714 ("qtdeclarative" ,qtdeclarative)
10715 ("qtsvg" ,qtsvg)))
10716 (home-page "https://games.kde.org/")
10717 (synopsis "Go board game")
10718 (description "Kigo is an open-source implementation of the popular Go
10719 game.
10720
10721 Go is a strategic board game for two players. It is also known as
10722 igo (Japanese), weiqi or wei ch'i (Chinese) or baduk (Korean). Go is noted
10723 for being rich in strategic complexity despite its simple rules. The game is
10724 played by two players who alternately place black and white stones (playing
10725 pieces, now usually made of glass or plastic) on the vacant intersections of a
10726 grid of 19x19 lines (9x9 or 13x13 for easier games).
10727
10728 You also need to install a go engine, e.g. @code{gnugo}.
10729
10730 This package is part of the KDE games module.")
10731 (license license:gpl3+)))
10732
10733 (define-public kubrick
10734 (package
10735 (name "kubrick")
10736 (version "19.08.3")
10737 (source
10738 (origin
10739 (method url-fetch)
10740 (uri (string-append "mirror://kde/stable/applications/" version
10741 "/src/kubrick-" version ".tar.xz"))
10742 (sha256
10743 (base32 "0ma8wja4rqlsmsr8cyicfpkwlgqva4450ls4c0ql53p0kabf04gx"))))
10744 (build-system qt-build-system)
10745 (native-inputs
10746 `(("extra-cmake-modules" ,extra-cmake-modules)
10747 ("kdoctools" ,kdoctools)))
10748 (inputs
10749 `(("glu" ,glu)
10750 ("kconfig" ,kconfig)
10751 ("kconfigwidgets" ,kconfigwidgets)
10752 ("kcoreaddons" ,kcoreaddons)
10753 ("kcrash" ,kcrash)
10754 ("ki18n" ,ki18n)
10755 ("kio" ,kio)
10756 ("kwidgetsaddons" ,kwidgetsaddons)
10757 ("kxmlgui" ,kxmlgui)
10758 ("libkdegames" ,libkdegames)
10759 ("qtbase" ,qtbase)
10760 ("qtdeclarative" ,qtdeclarative)
10761 ("qtsvg" ,qtsvg)))
10762 (home-page "https://games.kde.org/")
10763 (synopsis "Game based on Rubik's Cube")
10764 (description "Kubrick is a game based on the Rubik's Cube puzzle.
10765
10766 The cube sizes range from 2x2x2 up to 6x6x6, or you can play with irregular
10767 \"bricks\" such as 5x3x2 or \"mats\" such as 6x4x1 or 2x2x1. The game has a
10768 selection of puzzles at several levels of difficulty, as well as demos of
10769 pretty patterns and solution moves, or you can make up your own puzzles. The
10770 game has unlimited undo, redo, save and reload capabilities.
10771
10772 This package is part of the KDE games module.")
10773 (license (list license:gpl2+ license:fdl1.2+))))
10774
10775 (define-public lskat
10776 (package
10777 (name "lskat")
10778 (version "19.08.3")
10779 (source
10780 (origin
10781 (method url-fetch)
10782 (uri (string-append "mirror://kde/stable/applications/" version
10783 "/src/lskat-" version ".tar.xz"))
10784 (sha256
10785 (base32 "1qk5hd27zb42pbcxq5wyzz62nj5f0qdmgy54r9rnk92pzzzk94s9"))))
10786 (build-system qt-build-system)
10787 (native-inputs
10788 `(("extra-cmake-modules" ,extra-cmake-modules)
10789 ("kdoctools" ,kdoctools)))
10790 (inputs
10791 `(("kcompletion" ,kcompletion)
10792 ("kconfig" ,kconfig)
10793 ("kcoreaddons" ,kcoreaddons)
10794 ("kcrash" ,kcrash)
10795 ("kguiaddons" ,kguiaddons)
10796 ("ki18n" ,ki18n)
10797 ("kwidgetsaddons" ,kwidgetsaddons)
10798 ("kxmlgui" ,kxmlgui)
10799 ("libkdegames" ,libkdegames)
10800 ("qtbase" ,qtbase)
10801 ("qtdeclarative" ,qtdeclarative)
10802 ("qtsvg" ,qtsvg)))
10803 (home-page "https://games.kde.org/")
10804 (synopsis "Lieutnant Skat card game")
10805 (description "Lieutnant Skat (from German \"Offiziersskat\") is a fun and
10806 engaging card game for two players, where the second player is either live
10807 opponent, or a built in artificial intelligence.
10808
10809 Lieutnant Skat is a simplified variant of the Skat card game for two players.
10810
10811 This package is part of the KDE games module.")
10812 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
10813
10814 (define-public kapman
10815 (package
10816 (name "kapman")
10817 (version "19.08.3")
10818 (source
10819 (origin
10820 (method url-fetch)
10821 (uri (string-append "mirror://kde/stable/applications/" version
10822 "/src/kapman-" version ".tar.xz"))
10823 (sha256
10824 (base32 "03pq38caam30q4bw14c045kayw2d87xq1yaa3s2jkrylylfq3p0f"))))
10825 (build-system qt-build-system)
10826 (native-inputs
10827 `(("extra-cmake-modules" ,extra-cmake-modules)
10828 ("kdoctools" ,kdoctools)))
10829 (inputs
10830 `(("kcompletion" ,kcompletion)
10831 ("kconfig" ,kconfig)
10832 ("kconfigwidgets" ,kconfigwidgets)
10833 ("kcoreaddons" ,kcoreaddons)
10834 ("kcrash" ,kcrash)
10835 ("kdbusaddons" ,kdbusaddons)
10836 ("ki18n" ,ki18n)
10837 ("kxmlgui" ,kxmlgui)
10838 ("libkdegames" ,libkdegames)
10839 ("qtbase" ,qtbase)
10840 ("qtdeclarative" ,qtdeclarative)
10841 ("qtsvg" ,qtsvg)))
10842 (home-page "https://games.kde.org/")
10843 (synopsis "Pac-Man clone")
10844 (description "Kapman is a clone of the well known game Pac-Man.
10845
10846 You must run through the maze to eat all pills without being captured by a
10847 ghost. By eating an energizer, Kapman gets the ability to eat ghosts for a
10848 few seconds. When a stage is cleared of pills and energizer the player is
10849 taken to the next stage with slightly increased game speed
10850
10851 This package is part of the KDE games module.")
10852 (license (list license:gpl2+ license:fdl1.2+))))
10853
10854 (define-public kspaceduel
10855 (package
10856 (name "kspaceduel")
10857 (version "19.08.3")
10858 (source
10859 (origin
10860 (method url-fetch)
10861 (uri (string-append "mirror://kde/stable/applications/" version
10862 "/src/kspaceduel-" version ".tar.xz"))
10863 (sha256
10864 (base32 "1hppni0ihs7psc0dly5rxyy2a38nzhlig9yfyhi3lkh36z05pql8"))))
10865 (build-system qt-build-system)
10866 (native-inputs
10867 `(("extra-cmake-modules" ,extra-cmake-modules)
10868 ("kdoctools" ,kdoctools)))
10869 (inputs
10870 `(("kcompletion" ,kcompletion)
10871 ("kconfig" ,kconfig)
10872 ("kconfigwidgets" ,kconfigwidgets)
10873 ("kcoreaddons" ,kcoreaddons)
10874 ("kcrash" ,kcrash)
10875 ("kdbusaddons" ,kdbusaddons)
10876 ("ki18n" ,ki18n)
10877 ("kxmlgui" ,kxmlgui)
10878 ("libkdegames" ,libkdegames)
10879 ("qtbase" ,qtbase)
10880 ("qtdeclarative" ,qtdeclarative)
10881 ("qtsvg" ,qtsvg)))
10882 (home-page "https://games.kde.org/")
10883 (synopsis "Two player game with shooting spaceships flying around a sun")
10884 (description "KSpaceduel is a space battle game for one or two players,
10885 where two ships fly around a star in a struggle to be the only survivor.
10886
10887 This package is part of the KDE games module.")
10888 (license (list license:gpl2+ license:fdl1.2+))))
10889
10890 (define-public bovo
10891 (package
10892 (name "bovo")
10893 (version "19.08.3")
10894 (source
10895 (origin
10896 (method url-fetch)
10897 (uri (string-append "mirror://kde/stable/applications/" version
10898 "/src/bovo-" version ".tar.xz"))
10899 (sha256
10900 (base32 "0dbpng0w52nahmx7brsll66zw23ql1g6pcvn2k4g2lnvxch0i59g"))))
10901 (build-system qt-build-system)
10902 (native-inputs
10903 `(("extra-cmake-modules" ,extra-cmake-modules)
10904 ("kdoctools" ,kdoctools)))
10905 (inputs
10906 `(("kcompletion" ,kcompletion)
10907 ("kcoreaddons" ,kcoreaddons)
10908 ("kcrash" ,kcrash)
10909 ("kdbusaddons" ,kdbusaddons)
10910 ("ki18n" ,ki18n)
10911 ("kxmlgui" ,kxmlgui)
10912 ("libkdegames" ,libkdegames)
10913 ("qtbase" ,qtbase)
10914 ("qtdeclarative" ,qtdeclarative)
10915 ("qtsvg" ,qtsvg)))
10916 (home-page "https://games.kde.org/")
10917 (synopsis "Classic pen and paper game: five in a line")
10918 (description "Bovo is a Gomoku (from Japanese 五目並べ - lit. \"five
10919 points\") like game for two players, where the opponents alternate in placing
10920 their respective pictogram on the game board. The winner is the first to
10921 complete a line of five markers. (Also known as: Connect Five, Five in a row,
10922 X and O, Naughts and Crosses)
10923
10924 This package is part of the KDE games module.")
10925 (license (list license:gpl2+ license:fdl1.2+))))
10926
10927 (define-public killbots
10928 (package
10929 (name "killbots")
10930 (version "19.08.3")
10931 (source
10932 (origin
10933 (method url-fetch)
10934 (uri (string-append "mirror://kde/stable/applications/" version
10935 "/src/killbots-" version ".tar.xz"))
10936 (sha256
10937 (base32 "1qi86q7diw7glkp9v33yim9nhz2da4balbxa1hjrdgjdv8zdbxbm"))))
10938 (build-system qt-build-system)
10939 (native-inputs
10940 `(("extra-cmake-modules" ,extra-cmake-modules)
10941 ("kdoctools" ,kdoctools)))
10942 (inputs
10943 `(("kcompletion" ,kcompletion)
10944 ("kconfig" ,kconfig)
10945 ("kconfigwidgets" ,kconfigwidgets)
10946 ("kcoreaddons" ,kcoreaddons)
10947 ("kcrash" ,kcrash)
10948 ("kdbusaddons" ,kdbusaddons)
10949 ("ki18n" ,ki18n)
10950 ("kwidgetsaddons" ,kwidgetsaddons)
10951 ("kxmlgui" ,kxmlgui)
10952 ("libkdegames" ,libkdegames)
10953 ("qtbase" ,qtbase)
10954 ("qtdeclarative" ,qtdeclarative)))
10955 (home-page "https://games.kde.org/")
10956 (synopsis "Port of the classic BSD console game robots")
10957 (description "Killbots is a simple game of evading killer robots.
10958
10959 Who created the robots and why they have been programmed to destroy, no one
10960 knows. All that is known is that the robots are numerous and their sole
10961 objective is to destroy you. Fortunately for you, their creator has focused
10962 on quantity rather than quality and as a result the robots are severely
10963 lacking in intelligence. Your superior wit and a fancy teleportation device
10964 are your only weapons against the never-ending stream of mindless automatons.
10965
10966 This package is part of the KDE games module.")
10967 (license (list license:gpl2+ license:fdl1.2+))))
10968
10969 (define-public ksnakeduel
10970 (package
10971 (name "ksnakeduel")
10972 (version "19.08.3")
10973 (source
10974 (origin
10975 (method url-fetch)
10976 (uri (string-append "mirror://kde/stable/applications/" version
10977 "/src/ksnakeduel-" version ".tar.xz"))
10978 (sha256
10979 (base32 "0mprrnpax8pv7ab36zwhvdfj8id52w8g6x76nnj8qvkdlkjiqdnn"))))
10980 (build-system qt-build-system)
10981 (native-inputs
10982 `(("extra-cmake-modules" ,extra-cmake-modules)
10983 ("kdoctools" ,kdoctools)))
10984 (inputs
10985 `(("kcompletion" ,kcompletion)
10986 ("kconfig" ,kconfig)
10987 ("kconfigwidgets" ,kconfigwidgets)
10988 ("kcoreaddons" ,kcoreaddons)
10989 ("kcrash" ,kcrash)
10990 ("kdbusaddons" ,kdbusaddons)
10991 ("kguiaddons" ,kguiaddons)
10992 ("ki18n" ,ki18n)
10993 ("kxmlgui" ,kxmlgui)
10994 ("libkdegames" ,libkdegames)
10995 ("qtbase" ,qtbase)
10996 ("qtdeclarative" ,qtdeclarative)
10997 ("qtsvg" ,qtsvg)))
10998 (home-page "https://games.kde.org/")
10999 (synopsis "Snake race played against the computer")
11000 (description "KSnakeDuel is a fast action game where you steer a snake
11001 which has to eat food. While eating the snake grows. But once a player
11002 collides with the other snake or the wall the game is lost. This becomes of
11003 course more and more difficult the longer the snakes grow.
11004
11005 This package is part of the KDE games module.")
11006 (license (list license:gpl2+ license:fdl1.2+))))
11007
11008 (define-public kollision
11009 (package
11010 (name "kollision")
11011 (version "19.08.3")
11012 (source
11013 (origin
11014 (method url-fetch)
11015 (uri (string-append "mirror://kde/stable/applications/" version
11016 "/src/kollision-" version ".tar.xz"))
11017 (sha256
11018 (base32 "1p7qrn3d0ybpvc9k6k5wzj54dsrp1rqh39844maz0ay2fhvmch12"))))
11019 (build-system qt-build-system)
11020 (native-inputs
11021 `(("extra-cmake-modules" ,extra-cmake-modules)
11022 ("kdoctools" ,kdoctools)))
11023 (inputs
11024 `(("kcompletion" ,kcompletion)
11025 ("kconfig" ,kconfig)
11026 ("kcoreaddons" ,kcoreaddons)
11027 ("kcrash" ,kcrash)
11028 ("kdbusaddons" ,kdbusaddons)
11029 ("ki18n" ,ki18n)
11030 ("kwidgetsaddons" ,kwidgetsaddons)
11031 ("kxmlgui" ,kxmlgui)
11032 ("libkdegames" ,libkdegames)
11033 ("qtbase" ,qtbase)
11034 ("qtdeclarative" ,qtdeclarative)))
11035 (home-page "https://games.kde.org/")
11036 (synopsis "Simple ball dodging game")
11037 (description "In Kollision you use mouse to control a small blue ball in a
11038 closed space environment filled with small red balls, which move about
11039 chaotically. Your goal is to avoid touching any of those red balls with your
11040 blue one, because the moment you do the game will be over. The longer you can
11041 stay in game the higher will your score be.
11042
11043 This package is part of the KDE games module.")
11044 (license (list license:gpl2+ license:fdl1.2+))))
11045
11046 (define-public knavalbattle
11047 (package
11048 (name "knavalbattle")
11049 (version "19.08.3")
11050 (source
11051 (origin
11052 (method url-fetch)
11053 (uri (string-append "mirror://kde/stable/applications/" version
11054 "/src/knavalbattle-" version ".tar.xz"))
11055 (sha256
11056 (base32 "0sdfjplqkb30x2mvh66pkzay6vn5px87779sh2s8lpl6fcw0v9g4"))))
11057 (build-system qt-build-system)
11058 (native-inputs
11059 `(("extra-cmake-modules" ,extra-cmake-modules)
11060 ("kdoctools" ,kdoctools)))
11061 (inputs
11062 `(("kauth" ,kauth)
11063 ("kcompletion" ,kcompletion)
11064 ("kconfig" ,kconfig)
11065 ("kconfigwidgets" ,kconfigwidgets)
11066 ("kcoreaddons" ,kcoreaddons)
11067 ("kcrash" ,kcrash)
11068 ("kdbusaddons" ,kdbusaddons)
11069 ("kdnssd" ,kdnssd)
11070 ("ki18n" ,ki18n)
11071 ("ktextwidgets" ,ktextwidgets)
11072 ("kxmlgui" ,kxmlgui)
11073 ("libkdegames" ,libkdegames)
11074 ("qtbase" ,qtbase)
11075 ("qtdeclarative" ,qtdeclarative)))
11076 (home-page "https://games.kde.org/")
11077 (synopsis "Battleship board game with built-in game server")
11078 (description "KBattleship is a Battle Ship game for KDE.
11079
11080 Ships are placed on a board which represents the sea. Players try to hit each
11081 others ships in turns without knowing where they are placed. The first player
11082 to destroy all ships wins the game.
11083
11084 This package is part of the KDE games module.")
11085 (license (list license:gpl2+ license:fdl1.2+))))
11086
11087 (define-public kreversi
11088 (package
11089 (name "kreversi")
11090 (version "19.08.3")
11091 (source
11092 (origin
11093 (method url-fetch)
11094 (uri (string-append "mirror://kde/stable/applications/" version
11095 "/src/kreversi-" version ".tar.xz"))
11096 (sha256
11097 (base32 "0b6q8df2bawgnrswhq59z37axad0q3zpvvzxdds7sz1lw505xw9h"))))
11098 (build-system qt-build-system)
11099 (native-inputs
11100 `(("extra-cmake-modules" ,extra-cmake-modules)
11101 ("kdoctools" ,kdoctools)))
11102 (inputs
11103 `(("kconfig" ,kconfig)
11104 ("kconfigwidgets" ,kconfigwidgets)
11105 ("kcoreaddons" ,kcoreaddons)
11106 ("kcrash" ,kcrash)
11107 ("kdbusaddons" ,kdbusaddons)
11108 ("kdeclarative" ,kdeclarative)
11109 ("ki18n" ,ki18n)
11110 ("kiconthemes" ,kiconthemes)
11111 ("kio" ,kio)
11112 ("kxmlgui" ,kxmlgui)
11113 ("libkdegames" ,libkdegames)
11114 ("qtbase" ,qtbase)
11115 ("qtdeclarative" ,qtdeclarative)
11116 ("qtsvg" ,qtsvg)))
11117 (home-page "https://games.kde.org/")
11118 (synopsis "Old reversi board game, also known as othello")
11119 (description "KReversi is a simple one player strategy game played
11120 against the computer.
11121
11122 If a player's piece is captured by an opposing player, that piece is turned
11123 over to reveal the color of that player. A winner is declared when one player
11124 has more pieces of his own color on the board and there are no more possible
11125 moves.
11126
11127 This package is part of the KDE games module.")
11128 (license (list license:gpl2+ license:fdl1.2+))))
11129
11130 (define-public ksquares
11131 (package
11132 (name "ksquares")
11133 (version "19.08.3")
11134 (source
11135 (origin
11136 (method url-fetch)
11137 (uri (string-append "mirror://kde/stable/applications/" version
11138 "/src/ksquares-" version ".tar.xz"))
11139 (sha256
11140 (base32 "0hv8hls5s627lys08nnw72rfzsafj3dmp49mh2afzmh6lgk9h5vy"))))
11141 (build-system qt-build-system)
11142 (native-inputs
11143 `(("extra-cmake-modules" ,extra-cmake-modules)
11144 ("kdoctools" ,kdoctools)))
11145 (inputs
11146 `(("kcompletion" ,kcompletion)
11147 ("kconfig" ,kconfig)
11148 ("kconfigwidgets" ,kconfigwidgets)
11149 ("kcoreaddons" ,kcoreaddons)
11150 ("kcrash" ,kcrash)
11151 ("kdbusaddons" ,kdbusaddons)
11152 ("ki18n" ,ki18n)
11153 ("kwidgetsaddons" ,kwidgetsaddons)
11154 ("kxmlgui" ,kxmlgui)
11155 ("libkdegames" ,libkdegames)
11156 ("qtbase" ,qtbase)
11157 ("qtdeclarative" ,qtdeclarative)))
11158 (home-page "https://games.kde.org/")
11159 (synopsis "Dots and Boxes game")
11160 (description "KSquares is an implementation of the popular paper based
11161 game Squares. Two players take turns connecting dots on a grid to complete
11162 squares, the player with the most squares wins.
11163
11164 This package is part of the KDE games module.")
11165 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
11166
11167 (define-public kjumpingcube
11168 (package
11169 (name "kjumpingcube")
11170 (version "19.08.3")
11171 (source
11172 (origin
11173 (method url-fetch)
11174 (uri (string-append "mirror://kde/stable/applications/" version
11175 "/src/kjumpingcube-" version ".tar.xz"))
11176 (sha256
11177 (base32 "0d67zqkf2xffjkj671gl2n6nj6jajyn6rgqqj5i6gm500mqi9rm1"))))
11178 (build-system qt-build-system)
11179 (native-inputs
11180 `(("extra-cmake-modules" ,extra-cmake-modules)
11181 ("kdoctools" ,kdoctools)))
11182 (inputs
11183 `(("kconfig" ,kconfig)
11184 ("kconfigwidgets" ,kconfigwidgets)
11185 ("kcoreaddons" ,kcoreaddons)
11186 ("kcrash" ,kcrash)
11187 ("kdbusaddons" ,kdbusaddons)
11188 ("ki18n" ,ki18n)
11189 ("kio" ,kio)
11190 ("kwidgetsaddons" ,kwidgetsaddons)
11191 ("kxmlgui" ,kxmlgui)
11192 ("libkdegames" ,libkdegames)
11193 ("qtbase" ,qtbase)
11194 ("qtdeclarative" ,qtdeclarative)
11195 ("qtsvg" ,qtsvg)))
11196 (home-page "https://games.kde.org/")
11197 (synopsis "Simple tactical game for number-crunchers")
11198 (description "KJumpingcube is a simple tactical game for one or two
11199 players, played on a grid of numbered squares. Each turn, players compete for
11200 control of the board by capturing or adding to one square.
11201
11202 This package is part of the KDE games module.")
11203 (license (list license:gpl2+ license:fdl1.2+))))
11204
11205 (define-public xmoto
11206 (package
11207 (name "xmoto")
11208 (version "0.6.1")
11209 (source
11210 (origin
11211 (method git-fetch)
11212 (uri (git-reference
11213 (url "https://github.com/xmoto/xmoto")
11214 (commit version)))
11215 (file-name (git-file-name name version))
11216 (sha256
11217 (base32 "00f5ha79lfa2iiaz66wl0hl5dapa1l15qdr7m7knzi0ll7j6z66n"))
11218 (modules '((guix build utils)
11219 (ice-9 ftw)
11220 (srfi srfi-1)))
11221 ;; XXX: Remove some bundled libraries. Guix provides Chipmunk, but
11222 ;; it appears to be incompatible with the (older) one bundled.
11223 (snippet
11224 `(begin
11225 (let ((keep '("chipmunk" "glad" "md5sum")))
11226 (with-directory-excursion "vendor"
11227 (for-each delete-file-recursively
11228 (lset-difference string=?
11229 (scandir ".")
11230 (cons* "." ".." keep))))
11231 (substitute* "src/CMakeLists.txt"
11232 (("add_subdirectory\\(.*?/vendor/(.+?)\".*" line library)
11233 (if (member library keep) line ""))))
11234 #t))))
11235 (build-system cmake-build-system)
11236 (arguments
11237 `(#:tests? #f ;no test
11238 #:phases
11239 (modify-phases %standard-phases
11240 (add-after 'unpack 'fix-hard-coded-directory
11241 (lambda* (#:key outputs #:allow-other-keys)
11242 (substitute* "src/common/VFileIO.cpp"
11243 (("/usr/share")
11244 (string-append (assoc-ref outputs "out") "/share")))
11245 #t))
11246 (add-before 'build 'set-SDL
11247 ;; Set correct environment for SDL.
11248 (lambda* (#:key inputs #:allow-other-keys)
11249 (setenv "CPATH"
11250 (string-append
11251 (assoc-ref inputs "sdl") "/include/SDL:"
11252 (or (getenv "CPATH") "")))
11253 #t))
11254 (add-after 'install 'unbundle-fonts
11255 ;; Unbundle DejaVuSans TTF files.
11256 (lambda* (#:key outputs inputs #:allow-other-keys)
11257 (let ((font-dir (string-append (assoc-ref inputs "font-dejavu")
11258 "/share/fonts/truetype/"))
11259 (target-dir (string-append (assoc-ref outputs "out")
11260 "/share/xmoto/Textures/Fonts/")))
11261 (for-each (lambda (f)
11262 (let ((font (string-append font-dir f))
11263 (target (string-append target-dir f)))
11264 (delete-file target)
11265 (symlink font target)))
11266 '("DejaVuSans.ttf" "DejaVuSansMono.ttf"))
11267 #t))))))
11268 (native-inputs
11269 `(("gettext" ,gettext-minimal)
11270 ("pkg-config" ,pkg-config)))
11271 (inputs
11272 `(("bzip2" ,bzip2)
11273 ("curl" ,curl)
11274 ("font-dejavu" ,font-dejavu)
11275 ("glu" ,glu)
11276 ("libjpeg" ,libjpeg-turbo)
11277 ("libpng" ,libpng)
11278 ("libxdg-basedir" ,libxdg-basedir)
11279 ("libxml2" ,libxml2)
11280 ("lua" ,lua-5.1)
11281 ("ode" ,ode)
11282 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-net sdl-ttf)))
11283 ("sqlite" ,sqlite)
11284 ("zlib" ,zlib)))
11285 (home-page "https://xmoto.tuxfamily.org/")
11286 (synopsis "2D motocross platform game")
11287 (description
11288 "X-Moto is a challenging 2D motocross platform game, where
11289 physics play an all important role in the gameplay. You need to
11290 control your bike to its limit, if you want to have a chance finishing
11291 the more difficult challenges.")
11292 (license (list license:gpl2+ ;whole project
11293 license:bsd-3 ;vendor/md5sum
11294 license:lgpl2.1+
11295 license:expat))))
11296
11297 (define-public eboard
11298 (package
11299 (name "eboard")
11300 (version "1.1.3")
11301 (source
11302 (origin
11303 (method git-fetch)
11304 (uri (git-reference
11305 (url "https://github.com/fbergo/eboard")
11306 (commit (string-append "v" version))))
11307 (file-name (git-file-name name version))
11308 (sha256
11309 (base32 "1z4pwpqyvxhlda99h6arh2rjk90fbms9q29fqizjblrdn01dlxn1"))))
11310 (build-system gnu-build-system)
11311 (native-inputs
11312 `(("perl" ,perl)
11313 ("pkg-config" ,pkg-config)))
11314 (inputs
11315 `(("gtk+" ,gtk+-2)
11316 ("libpng" ,libpng)
11317 ("gstreamer" ,gstreamer)))
11318 (arguments
11319 `(#:tests? #f
11320 #:phases
11321 (modify-phases %standard-phases
11322 (replace 'configure
11323 (lambda* (#:key outputs #:allow-other-keys)
11324 (make-file-writable "eboard-config")
11325 (setenv "CC" "gcc")
11326 (invoke "./configure"
11327 (string-append "--prefix=" (assoc-ref outputs "out")))
11328 #t))
11329 (add-before 'install 'make-required-directories
11330 (lambda* (#:key outputs #:allow-other-keys)
11331 (mkdir-p (string-append (assoc-ref outputs "out")
11332 "/share/eboard"))
11333 #t)))))
11334 (synopsis "Graphical user interface to play chess")
11335 (description
11336 "Eboard is a chess board interface for ICS (Internet Chess Servers)
11337 and chess engines.")
11338 (home-page "https://www.bergo.eng.br/eboard/")
11339 (license license:gpl2+)))
11340
11341 (define-public chessx
11342 (package
11343 (name "chessx")
11344 (version "1.5.4")
11345 (source
11346 (origin
11347 (method url-fetch)
11348 (uri (string-append "mirror://sourceforge/chessx/chessx/"
11349 version "/chessx-" version ".tgz"))
11350 (sha256
11351 (base32 "1a3541vl5hp6jllgx998w9kjh9kp3wrl80yfwkxmq1bc5bzsrnz2"))))
11352 (build-system qt-build-system)
11353 (native-inputs
11354 `(("qttools" ,qttools)))
11355 (inputs
11356 `(("qtbase" ,qtbase)
11357 ("qtmultimedia" ,qtmultimedia)
11358 ("qtspeech" ,qtspeech)
11359 ("qtsvg" ,qtsvg)
11360 ("zlib" ,zlib)))
11361 (arguments
11362 `(#:tests? #f
11363 #:phases
11364 (modify-phases %standard-phases
11365 (add-after 'unpack 'fix-paths
11366 (lambda* (#:key inputs #:allow-other-keys)
11367 (substitute* "chessx.pro"
11368 (("\\$\\$\\[QT_INSTALL_BINS\\]/lrelease")
11369 (string-append (assoc-ref inputs "qttools") "/bin/lrelease"))
11370 ;; Fix missing translations.
11371 (("TRANSLATIONS = i18n/chessx_de.ts")
11372 "TRANSLATIONS = i18n/chessx_de.ts i18n/chessx_da.ts \\
11373 i18n/chessx_fr.ts i18n/chessx_it.ts i18n/chessx_cz.ts i18n/chessx_ru.ts \\
11374 i18n/chessx_es.ts"))
11375 #t))
11376 (add-after 'fix-paths 'make-qt-deterministic
11377 (lambda _
11378 (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1")
11379 #t))
11380 (replace 'configure
11381 (lambda _
11382 (invoke "qmake")
11383 #t))
11384 (replace 'install
11385 (lambda* (#:key outputs #:allow-other-keys)
11386 (let ((out (assoc-ref outputs "out")))
11387 (install-file "release/chessx" (string-append out "/bin"))
11388 (install-file "unix/chessx.desktop"
11389 (string-append out "/share/applications")))
11390 #t)))))
11391 (synopsis "Chess game database")
11392 (description
11393 "ChessX is a chess database. With ChessX you can operate on your
11394 collection of chess games in many ways: browse, edit, add, organize, analyze,
11395 etc. You can also play games on FICS or against an engine.")
11396 (home-page "http://chessx.sourceforge.net/")
11397 (license license:gpl2+)))
11398
11399 (define-public stockfish
11400 (package
11401 (name "stockfish")
11402 (version "11")
11403 (source
11404 (origin
11405 (method git-fetch)
11406 (uri (git-reference
11407 (url "https://github.com/official-stockfish/Stockfish")
11408 (commit (string-append "sf_" version))))
11409 (file-name (git-file-name name version))
11410 (sha256
11411 (base32 "12mppipinymj8s1ipq9a7is453vncly49c32ym9wvyklsgyxfzlk"))))
11412 (build-system gnu-build-system)
11413 (arguments
11414 `(#:tests? #f
11415 #:make-flags (list "-C" "src"
11416 "build"
11417 (string-append "PREFIX="
11418 (assoc-ref %outputs "out"))
11419 (string-append "ARCH="
11420 ,(match (%current-system)
11421 ("x86_64-linux" "x86-64")
11422 ("i686-linux" "x86-32")
11423 ("aarch64-linux" "general-64")
11424 ("armhf-linux" "armv7")
11425 ("mips64el-linux" "general-64")
11426 (_ "general-32"))))
11427 #:phases (modify-phases %standard-phases
11428 (delete 'configure))))
11429 (synopsis "Strong chess engine")
11430 (description
11431 "Stockfish is a very strong chess engines. It is much stronger than the
11432 best human chess grandmasters. It can be used with UCI-compatible GUIs like
11433 ChessX.")
11434 (home-page "https://stockfishchess.org/")
11435 (license license:gpl3+)))
11436
11437 (define-public barrage
11438 (package
11439 (name "barrage")
11440 (version "1.0.5")
11441 (source
11442 (origin
11443 (method url-fetch)
11444 (uri (string-append "mirror://sourceforge/lgames/barrage/"
11445 "barrage-" version ".tar.gz"))
11446 (sha256
11447 (base32 "0139wxyrir10cbkvkjn548xgmp84wax8mfwk80yxbxlcdamrg257"))))
11448 (build-system gnu-build-system)
11449 (inputs
11450 `(("hicolor-icon-theme" ,hicolor-icon-theme)
11451 ("sdl" ,sdl)
11452 ("sdl-mixer" ,sdl-mixer)))
11453 (arguments
11454 `(#:configure-flags
11455 (list
11456 (string-append "CFLAGS="
11457 "-I" (assoc-ref %build-inputs "sdl-mixer")
11458 "/include/SDL"))))
11459 (home-page "http://lgames.sourceforge.net/Barrage/")
11460 (synopsis "Violent point-and-click shooting game with nice effects")
11461 (description
11462 "Barrage is a rather destructive action game that puts you on a shooting
11463 range with the objective to hit as many dummy targets as possible within
11464 3 minutes. You control a gun that may either fire small or large grenades at
11465 soldiers, jeeps and tanks. The gameplay is simple but it is not that easy to
11466 get high scores.")
11467 (license license:gpl2+)))
11468
11469 (define-public burgerspace
11470 (package
11471 (name "burgerspace")
11472 (version "1.9.3")
11473 (source
11474 (origin
11475 (method url-fetch)
11476 (uri (string-append "http://perso.b2b2c.ca/~sarrazip/dev/"
11477 "burgerspace-" version ".tar.gz"))
11478 (sha256
11479 (base32 "1005a04rbn4lzjrpfg0m394k2mfaji63fm2qhdqdsxila8a6kjbv"))))
11480 (build-system gnu-build-system)
11481 (native-inputs
11482 `(("pkg-config" ,pkg-config)))
11483 (inputs
11484 `(("flatzebra" ,flatzebra)))
11485 (home-page "http://perso.b2b2c.ca/~sarrazip/dev/burgerspace.html")
11486 (synopsis "Avoid evil foodstuffs and make burgers")
11487 (description
11488 "This is a clone of the classic game BurgerTime. In it, you play
11489 the part of a chef who must create burgers by stepping repeatedly on
11490 the ingredients until they fall into place. And to make things more
11491 complicated, you also must avoid evil animate food items while
11492 performing this task, with nothing but your trusty pepper shaker to
11493 protect you.")
11494 (license license:gpl2+)))
11495
11496 (define-public 7kaa
11497 (package
11498 (name "7kaa")
11499 (version "2.15.4p1")
11500 (source
11501 (origin
11502 (method url-fetch)
11503 (uri (string-append "https://github.com/the3dfxdude/7kaa/"
11504 "releases/download/v" version "/"
11505 "7kaa-" version ".tar.xz"))
11506 (sha256
11507 (base32 "1y7v0jhp3apb619p7asikqr1dnwb2yxbh40wbx1ppmr5f03mq9ph"))))
11508 (build-system gnu-build-system)
11509 (native-inputs
11510 `(("gettext" ,gettext-minimal)
11511 ("pkg-config" ,pkg-config)))
11512 (inputs
11513 `(("curl" ,curl)
11514 ("enet" ,enet)
11515 ("openal" ,openal)
11516 ("sdl2" ,sdl2)))
11517 (home-page "https://7kfans.com/")
11518 (synopsis "Seven Kingdoms Ancient Adversaries: real-time strategy game")
11519 (description
11520 "Seven Kingdoms, designed by Trevor Chan, brings a blend of Real-Time
11521 Strategy with the addition of trade, diplomacy, and espionage. The game
11522 enables players to compete against up to six other kingdoms allowing players
11523 to conquer opponents by defeating them in war (with troops or machines),
11524 capturing their buildings with spies, or offering opponents money for their
11525 kingdom.")
11526 (license license:gpl2+)))
11527
11528 (define-public neverball
11529 ;; Git version is 6-years younger than latest release.
11530 (let ((commit "760a25d32a5fb0661b99426d4ddcb9ac9f3d1644")
11531 (revision "1"))
11532 (package
11533 (name "neverball")
11534 (version (git-version "1.6.0" revision commit))
11535 (source
11536 (origin
11537 (method git-fetch)
11538 (uri (git-reference
11539 (url "https://github.com/Neverball/neverball")
11540 (commit commit)))
11541 (sha256
11542 (base32
11543 "0bwh67df3lyf33bv710y25l3frjdd34j9b7gsjadwxviz6r1vpj5"))
11544 (file-name (git-file-name name version))
11545 (modules '((guix build utils)))
11546 (snippet
11547 '(begin
11548 ;; Octocat seems to be non-free. Oddly, Debian doesn't strip it.
11549 (delete-file-recursively "data/ball/octocat")
11550 #t))))
11551 (build-system copy-build-system)
11552 (arguments
11553 `(#:install-plan
11554 '(("neverball" "bin/")
11555 ("neverputt" "bin/")
11556 ("mapc" "bin/")
11557 ("data" "share/games/neverball/")
11558 ("locale" "share/")
11559 ("dist/" "share/games/neverball" #:include ("neverball_replay.png"
11560 "neverlogos.svg"
11561 "svg readme.txt"))
11562 ("dist/" "share/applications" #:include ("neverball.desktop"
11563 "neverputt.desktop"))
11564 ("dist/neverball_16.png"
11565 "/share/icons/hicolor/16x16/apps/neverball.png")
11566 ("dist/neverball_24.png"
11567 "/share/icons/hicolor/24x24/apps/neverball.png")
11568 ("dist/neverball_32.png"
11569 "/share/icons/hicolor/32x32/apps/neverball.png")
11570 ("dist/neverball_48.png"
11571 "/share/icons/hicolor/48x48/apps/neverball.png")
11572 ("dist/neverball_64.png"
11573 "/share/icons/hicolor/64x64/apps/neverball.png")
11574 ("dist/neverball_128.png"
11575 "/share/icons/hicolor/128x128/apps/neverball.png")
11576 ("dist/neverball_256.png"
11577 "/share/icons/hicolor/256x256/apps/neverball.png")
11578 ("dist/neverball_512.png"
11579 "/share/icons/hicolor/512x512/apps/neverball.png")
11580 ("dist/neverputt_16.png"
11581 "/share/icons/hicolor/16x16/apps/neverputt.png")
11582 ("dist/neverputt_24.png"
11583 "/share/icons/hicolor/24x24/apps/neverputt.png")
11584 ("dist/neverputt_32.png"
11585 "/share/icons/hicolor/32x32/apps/neverputt.png")
11586 ("dist/neverputt_48.png"
11587 "/share/icons/hicolor/48x48/apps/neverputt.png")
11588 ("dist/neverputt_64.png"
11589 "/share/icons/hicolor/64x64/apps/neverputt.png")
11590 ("dist/neverputt_128.png"
11591 "/share/icons/hicolor/128x128/apps/neverputt.png")
11592 ("dist/neverputt_256.png"
11593 "/share/icons/hicolor/256x256/apps/neverputt.png")
11594 ("dist/neverputt_512.png"
11595 "/share/icons/hicolor/512x512/apps/neverputt.png")
11596 ("dist/" "share/man/man1" #:include ("mapc.1"))
11597 ("dist/" "share/man/man6" #:include ("neverball.6" "neverputt.6"))
11598 ("doc/" "share/doc/neverball")
11599 ("README.md" "share/doc/neverball/"))
11600 #:phases
11601 (modify-phases %standard-phases
11602 (add-before 'install 'build
11603 (lambda* (#:key inputs outputs #:allow-other-keys)
11604 (let* ((out (assoc-ref outputs "out"))
11605 (sdl (assoc-ref inputs "sdl")))
11606 (invoke "make" "-j" (number->string (parallel-job-count))
11607 "--environment-overrides"
11608 "CC=gcc" "BUILD=release"
11609 (string-append "DATADIR="
11610 out
11611 "/share/games/neverball/data")
11612 (string-append "LOCALEDIR=" out "/share/locale")
11613 (string-append "SDL_CPPFLAGS=-I"
11614 sdl
11615 "/include/SDL2/")))
11616 #t))
11617 (add-after 'install 'fix-some-broken-fonts
11618 (lambda* (#:key outputs #:allow-other-keys)
11619 (let* ((out (assoc-ref outputs "out")))
11620 (wrap-program (string-append out "/bin/neverball")
11621 `("LANG" = ("en_US.utf8")))
11622 (wrap-program (string-append out "/bin/neverputt")
11623 `("LANG" = ("en_US.utf8"))))
11624 #t)))))
11625 (native-inputs
11626 `(("gettext" ,gettext-minimal))) ;for msgfmt
11627 (inputs
11628 `(("libjpeg" ,libjpeg-turbo)
11629 ("libpng" ,libpng)
11630 ("libvorbis" ,libvorbis)
11631 ("physfs" ,physfs)
11632 ("sdl" ,(sdl-union (list sdl2 sdl2-ttf)))))
11633 (home-page "https://neverball.org/")
11634 (synopsis "3D floor-tilting game")
11635 (description
11636 "In the grand tradition of Marble Madness and Super Monkey Ball,
11637 Neverball has you guide a rolling ball through dangerous territory. Balance
11638 on narrow bridges, navigate mazes, ride moving platforms, and dodge pushers
11639 and shovers to get to the goal. Race against the clock to collect coins to
11640 earn extra balls. Also included is Neverputt, which is a 3D miniature golf
11641 game.") ;thanks to Debian for description
11642 (license license:gpl2+))))
11643
11644 (define-public pokerth
11645 (package
11646 (name "pokerth")
11647 (version "1.1.2")
11648 (source
11649 (origin
11650 (method url-fetch)
11651 (uri (string-append "mirror://sourceforge/pokerth/pokerth/"
11652 version "/pokerth-" version ".tar.gz"))
11653 (sha256
11654 (base32 "0yi9bj3k8yc1gkwmaf14zbbvvn13n54n1dli8k6j1pkph3p3vjq2"))
11655 (modules '((guix build utils)))
11656 (snippet
11657 '(begin
11658 ;; Remove bundled websocketpp.
11659 (delete-file-recursively "src/third_party/websocketpp")
11660 (substitute* "pokerth_lib.pro"
11661 (("src/third_party/websocketpp")
11662 ""))
11663 #t))))
11664 (build-system qt-build-system)
11665 (inputs
11666 `(("boost" ,boost)
11667 ("curl" ,curl)
11668 ("gsasl" ,gsasl)
11669 ("libgcrypt" ,libgcrypt)
11670 ("libircclient" ,libircclient)
11671 ("protobuf" ,protobuf-2) ; remove package when no longer needed
11672 ("qtbase" ,qtbase)
11673 ("sdl" ,(sdl-union (list sdl sdl-mixer)))
11674 ("sqlite" ,sqlite)
11675 ("tinyxml" ,tinyxml)
11676 ("websocketpp" ,websocketpp)
11677 ("zlib" ,zlib)))
11678 (arguments
11679 `(#:tests? #f ; No test suite
11680 #:phases
11681 (modify-phases %standard-phases
11682 (add-after 'unpack 'fix-paths
11683 (lambda* (#:key inputs #:allow-other-keys)
11684 (substitute* (find-files "." "\\.pro$")
11685 (("/opt/gsasl")
11686 (assoc-ref inputs "gsasl"))
11687 (("\\$\\$\\{PREFIX\\}/include/libircclient")
11688 (string-append (assoc-ref inputs "libircclient")
11689 "/include/libircclient"))
11690 (("LIB_DIRS =")
11691 (string-append "LIB_DIRS = "
11692 (assoc-ref inputs "boost") "/lib")))
11693 #t))
11694 (add-after 'unpack 'fix-build
11695 (lambda _
11696 ;; Fixes for Boost versions >= 1.66.
11697 (substitute* '("src/net/common/clientthread.cpp"
11698 "src/net/serveraccepthelper.h")
11699 (("boost::asio::socket_base::non_blocking_io command\\(true\\);")
11700 "")
11701 (("newSock->io_control\\(command\\);")
11702 "newSock->non_blocking(true);")
11703 (("acceptedSocket->io_control\\(command\\);")
11704 "acceptedSocket->non_blocking(true);"))
11705 #t))
11706 (replace 'configure
11707 (lambda* (#:key outputs #:allow-other-keys)
11708 (invoke "qmake" "pokerth.pro" "CONFIG+=client"
11709 (string-append "PREFIX=" (assoc-ref outputs "out"))))))))
11710 (home-page "https://www.pokerth.net")
11711 (synopsis "Texas holdem poker game")
11712 (description
11713 "With PokerTH you can play the Texas holdem poker game, either against
11714 computer opponents or against real players online.")
11715 (license license:agpl3+)))
11716
11717 (define-public azimuth
11718 (package
11719 (name "azimuth")
11720 ;; Not marked as latest release, but it fixes a compiling issue
11721 ;; and adds the install target.
11722 (version "1.0.3")
11723 (source
11724 (origin
11725 (method git-fetch)
11726 (uri (git-reference
11727 (url "https://github.com/mdsteele/azimuth")
11728 (commit (string-append "v" version))))
11729 (file-name (git-file-name name version))
11730 (sha256
11731 (base32
11732 "1znfvpmqiixd977jv748glk5zc4cmhw5813zp81waj07r9b0828r"))))
11733 (build-system gnu-build-system)
11734 (arguments
11735 `(#:test-target "test"
11736 #:phases
11737 (modify-phases %standard-phases
11738 (delete 'configure) ; no configure script
11739 ;; Build release version instead of debug version.
11740 (add-after 'unpack 'set-release
11741 (lambda _
11742 (setenv "BUILDTYPE" "release") #t))
11743 (add-after 'unpack 'fix-install ; set install directory
11744 (lambda* (#:key outputs #:allow-other-keys)
11745 (substitute* "Makefile" (("/usr") (assoc-ref outputs "out"))) #t)))))
11746 (inputs `(("sdl" ,sdl)))
11747 (home-page "https://mdsteele.games/azimuth/")
11748 (synopsis "Metroidvania game with vector graphics")
11749 (description
11750 "Pilot your ship inside a planet to find and rescue the colonists trapped
11751 inside the Zenith Colony.")
11752 (license license:gpl3+)))
11753
11754 (define-public paperview
11755 (let ((commit "9f8538eb6734c76877b878b8f1e52587f2ae19e6")
11756 (revision "1"))
11757 (package
11758 (name "paperview")
11759 (version (git-version "0.0.1" revision commit)) ;no upstream release
11760 (source (origin
11761 (method git-fetch)
11762 (uri (git-reference
11763 (url "https://github.com/glouw/paperview")
11764 (commit commit)))
11765 (file-name (git-file-name name version))
11766 (sha256
11767 (base32
11768 "09sb9sg44fvkgfdyycrm1ndpx7cnkrglxhci41y8f3gpagnvi7jk"))))
11769 (build-system gnu-build-system)
11770 (inputs
11771 `(("sdl2" ,sdl2)))
11772 (arguments
11773 '(#:tests? #f ;no tests
11774 #:make-flags
11775 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
11776 #:phases
11777 (modify-phases %standard-phases
11778 (delete 'configure))))
11779 (home-page "https://github.com/glouw/paperview/")
11780 (synopsis "High performance X11 animated wallpaper setter")
11781 (description "High performance animated desktop background setter for
11782 X11 that won't set your CPU on fire, drain your laptop battery, or lower video
11783 game FPS.")
11784 (license license:unlicense))))