1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2013 John Darrington <jmd@gnu.org>
3 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
4 ;;; Copyright © 2014, 2016 David Thompson <dthompson2@worcester.edu>
5 ;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020 Eric Bavier <bavier@posteo.net>
6 ;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com>
7 ;;; Copyright © 2014 Sylvain Beucler <beuc@beuc.net>
8 ;;; Copyright © 2014, 2015, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
9 ;;; Copyright © 2014, 2015, 2016 Sou Bunnbu <iyzsong@gmail.com>
10 ;;; Copyright © 2014, 2015, 2019 Mark H Weaver <mhw@netris.org>
11 ;;; Copyright © 2015, 2016 Andreas Enge <andreas@enge.fr>
12 ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
13 ;;; Copyright © 2015, 2017, 2018 Christopher Lemmer Webber <cwebber@dustycloud.org>
14 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
15 ;;; Copyright © 2015, 2016, 2017 Alex Kost <alezost@gmail.com>
16 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
17 ;;; Copyright © 2016, 2017 Rodger Fox <thylakoid@openmailbox.org>
18 ;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is>
19 ;;; Copyright © 2016 Albin Söderqvist <albin@fripost.org>
20 ;;; Copyright © 2016, 2017, 2018, 2019 Kei Kebreau <kkebreau@posteo.net>
21 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
22 ;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
23 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
24 ;;; Copyright © 2016 Steve Webber <webber.sl@gmail.com>
25 ;;; Copyright © 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@hyperbola.info>
26 ;;; Copyright © 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
27 ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
28 ;;; Copyright © 2017, 2019 nee <nee-git@hidamari.blue>
29 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
30 ;;; Copyright © 2017, 2019 Marius Bakke <mbakke@fastmail.com>
31 ;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
32 ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
33 ;;; Copyright © 2017, 2018, 2019, 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
34 ;;; Copyright © 2018 okapi <okapi@firemail.cc>
35 ;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
36 ;;; Copyright © 2018 Madalin Ionel-Patrascu <madalinionel.patrascu@mdc-berlin.de>
37 ;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net>
38 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
39 ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
40 ;;; Copyright © 2019, 2020 Oleg Pykhalov <go.wigust@gmail.com>
41 ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
42 ;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
43 ;;; Copyright © 2019 Jesse Gibbons <jgibbons2357+guix@gmail.com>
44 ;;; Copyright © 2019 Dan Frumin <dfrumin@cs.ru.nl>
45 ;;; Copyright © 2019, 2020 Guillaume Le Vaillant <glv@posteo.net>
46 ;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar@araneo.si>
47 ;;; Copyright © 2019 Josh Holland <josh@inv.alid.pw>
48 ;;; Copyright © 2017, 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
50 ;;; This file is part of GNU Guix.
52 ;;; GNU Guix is free software; you can redistribute it and/or modify it
53 ;;; under the terms of the GNU General Public License as published by
54 ;;; the Free Software Foundation; either version 3 of the License, or (at
55 ;;; your option) any later version.
57 ;;; GNU Guix is distributed in the hope that it will be useful, but
58 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
59 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
60 ;;; GNU General Public License for more details.
62 ;;; You should have received a copy of the GNU General Public License
63 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
65 (define-module (gnu packages games)
66 #:use-module (ice-9 match)
67 #:use-module ((guix licenses) #:prefix license:)
68 #:use-module (guix utils)
69 #:use-module (guix packages)
70 #:use-module (guix download)
71 #:use-module (guix git-download)
72 #:use-module (guix svn-download)
73 #:use-module (guix gexp)
74 #:use-module (gnu packages)
75 #:use-module (gnu packages algebra)
76 #:use-module (gnu packages autotools)
77 #:use-module (gnu packages backup)
78 #:use-module (gnu packages base)
79 #:use-module (gnu packages build-tools)
80 #:use-module (gnu packages admin)
81 #:use-module (gnu packages audio)
82 #:use-module (gnu packages avahi)
83 #:use-module (gnu packages assembly)
84 #:use-module (gnu packages bash)
85 #:use-module (gnu packages bison)
86 #:use-module (gnu packages boost)
87 #:use-module (gnu packages check)
88 #:use-module (gnu packages cmake)
89 #:use-module (gnu packages compression)
90 #:use-module (gnu packages curl)
91 #:use-module (gnu packages crypto)
92 #:use-module (gnu packages cyrus-sasl)
93 #:use-module (gnu packages documentation)
94 #:use-module (gnu packages docbook)
95 #:use-module (gnu packages emulators)
96 #:use-module (gnu packages flex)
97 #:use-module (gnu packages fltk)
98 #:use-module (gnu packages fonts)
99 #:use-module (gnu packages fontutils)
100 #:use-module (gnu packages freedesktop)
101 #:use-module (gnu packages fribidi)
102 #:use-module (gnu packages game-development)
103 #:use-module (gnu packages gcc)
104 #:use-module (gnu packages gettext)
105 #:use-module (gnu packages ghostscript)
106 #:use-module (gnu packages gimp)
107 #:use-module (gnu packages gl)
108 #:use-module (gnu packages glib)
109 #:use-module (gnu packages gnome)
110 #:use-module (gnu packages gnuzilla)
111 #:use-module (gnu packages gperf)
112 #:use-module (gnu packages graphics)
113 #:use-module (gnu packages gstreamer)
114 #:use-module (gnu packages gtk)
115 #:use-module (gnu packages guile)
116 #:use-module (gnu packages haskell)
117 #:use-module (gnu packages haskell-crypto)
118 #:use-module (gnu packages haskell-xyz)
119 #:use-module (gnu packages icu4c)
120 #:use-module (gnu packages image)
121 #:use-module (gnu packages imagemagick)
122 #:use-module (gnu packages kde)
123 #:use-module (gnu packages kde-frameworks)
124 #:use-module (gnu packages less)
125 #:use-module (gnu packages libcanberra)
126 #:use-module (gnu packages libedit)
127 #:use-module (gnu packages libunwind)
128 #:use-module (gnu packages linux)
129 #:use-module (gnu packages llvm)
130 #:use-module (gnu packages lua)
131 #:use-module (gnu packages man)
132 #:use-module (gnu packages maths)
133 #:use-module (gnu packages mp3)
134 #:use-module (gnu packages music)
135 #:use-module (gnu packages multiprecision)
136 #:use-module (gnu packages ncurses)
137 #:use-module (gnu packages netpbm)
138 #:use-module (gnu packages networking)
139 #:use-module (gnu packages ocaml)
140 #:use-module (gnu packages opencl)
141 #:use-module (gnu packages pcre)
142 #:use-module (gnu packages perl)
143 #:use-module (gnu packages perl-check)
144 #:use-module (gnu packages pkg-config)
145 #:use-module (gnu packages pulseaudio)
146 #:use-module (gnu packages python)
147 #:use-module (gnu packages python-xyz)
148 #:use-module (gnu packages qt)
149 #:use-module (gnu packages readline)
150 #:use-module (gnu packages shells)
151 #:use-module (gnu packages sdl)
152 #:use-module (gnu packages serialization)
153 #:use-module (gnu packages sqlite)
154 #:use-module (gnu packages squirrel)
155 #:use-module (gnu packages swig)
156 #:use-module (gnu packages tcl)
157 #:use-module (gnu packages terminals)
158 #:use-module (gnu packages texinfo)
159 #:use-module (gnu packages textutils)
160 #:use-module (gnu packages tls)
161 #:use-module (gnu packages upnp)
162 #:use-module (gnu packages video)
163 #:use-module (gnu packages vulkan)
164 #:use-module (gnu packages web)
165 #:use-module (gnu packages wget)
166 #:use-module (gnu packages wxwidgets)
167 #:use-module (gnu packages xdisorg)
168 #:use-module (gnu packages xorg)
169 #:use-module (gnu packages xiph)
170 #:use-module (gnu packages xml)
171 #:use-module (gnu packages messaging)
172 #:use-module (gnu packages networking)
173 #:use-module (guix build-system glib-or-gtk)
174 #:use-module (guix build-system gnu)
175 #:use-module (guix build-system go)
176 #:use-module (guix build-system meson)
177 #:use-module (guix build-system scons)
178 #:use-module (guix build-system python)
179 #:use-module (guix build-system cmake)
180 #:use-module (guix build-system qt)
181 #:use-module (guix build-system trivial)
182 #:use-module ((srfi srfi-1) #:hide (zip))
183 #:use-module (srfi srfi-26))
185 ;; Data package for adanaxisgpl.
186 (define adanaxis-mush
187 (let ((version "1.1.0"))
190 (uri (string-append "http://www.mushware.com/files/adanaxis-mush-"
193 (base32 "0mk9ibis5nkdcalcg1lkgnsdxxbw4g5w2i3icjzy667hqirsng03")))))
195 (define-public adanaxisgpl
202 (uri (string-append "http://www.mushware.com/files/adanaxisgpl-"
205 (base32 "0jkn637jaabvlhd6hpvzb57vvjph94l6fbf7qxbjlw9zpr19dw1f"))
206 (modules '((guix build utils)))
209 ;; Necessary for building with gcc >=4.7.
210 (substitute* "src/Mushcore/MushcoreSingleton.h"
211 (("SingletonPtrSet\\(new SingletonType\\);")
212 "MushcoreSingleton::SingletonPtrSet(new SingletonType);"))
213 ;; Avoid an "invalid conversion from const char* to char*" error.
214 (substitute* "src/Platform/X11/PlatformMiscUtils.cpp"
215 (("char \\*end, \\*result;")
216 (string-append "const char *end;"
220 (build-system gnu-build-system)
222 `(#:tests? #f ; no check target
224 (modify-phases %standard-phases
225 (add-after 'install 'install-data
226 (lambda* (#:key inputs outputs #:allow-other-keys)
227 (let ((data (assoc-ref inputs "adanaxis-mush"))
228 (share (string-append (assoc-ref outputs "out")
229 "/share/" ,name "-" ,version)))
231 (invoke "tar" "xvf" data "-C" share)))))))
233 `(("adanaxis-mush" ,adanaxis-mush))) ; game data
236 ("freeglut" ,freeglut)
241 ("libvorbis" ,libvorbis)
246 ("sdl-mixer" ,sdl-mixer)))
247 (home-page "https://www.mushware.com")
248 (synopsis "Action game in four spatial dimensions")
250 "Adanaxis is a fast-moving first person shooter set in deep space, where
251 the fundamentals of space itself are changed. By adding another dimension to
252 space this game provides an environment with movement in four directions and
253 six planes of rotation. Initially the game explains the 4D control system via
254 a graphical sequence, before moving on to 30 levels of gameplay with numerous
255 enemy, ally, weapon and mission types. Features include simulated 4D texturing,
256 mouse and joystick control, and original music.")
257 (license license:gpl2)))
267 (url "https://github.com/carstene1ns/alex4.git")
269 (file-name (git-file-name name version))
271 (base32 "098wy72mh4lsvq3gm0rhamjssf9l1hp6hhkpzrv7klpb97cwwc3h"))))
272 (build-system gnu-build-system)
274 `(#:tests? #f ; no check target
277 "CFLAGS=-D_FILE_OFFSET_BITS=64"
278 (string-append "PREFIX=" (assoc-ref %outputs "out")))
280 (modify-phases %standard-phases
281 (delete 'configure) ; no configure script
282 (add-after 'install 'install-data
283 (lambda* (#:key outputs #:allow-other-keys)
284 (let ((share (string-append (assoc-ref outputs "out")
286 (install-file "alex4.ini" share)
289 `(("allegro" ,allegro-4)
290 ("dumb" ,dumb-allegro4)))
291 (home-page "http://allegator.sourceforge.net/")
292 (synopsis "Retro platform game")
294 "Guide Alex the Allegator through the jungle in order to save his
295 girlfriend Lola from evil humans who want to make a pair of shoes out of her.
296 Plenty of classic platforming in four nice colors guaranteed!
298 The game includes a built-in editor so you can design and share your own maps.")
299 (license license:gpl2+)))
301 (define-public armagetronad
303 (name "armagetronad")
304 (version "0.2.8.3.4")
307 (uri (string-append "mirror://sourceforge/armagetronad/stable/"
308 version "/armagetronad-" version ".src.tar.gz"))
311 "1pgy0r80z702qdv94aw3ywdn4ynnr4cdi86ml558pljfc5ygasj4"))))
312 (build-system gnu-build-system)
314 `(("libxml2" ,libxml2)
316 ("sdl-image" ,sdl-image)
317 ("freeglut" ,freeglut)
319 ("libjpeg-turbo" ,libjpeg-turbo)))
320 (home-page "http://www.armagetronad.org")
321 (synopsis "Tron clone in 3D")
322 (description "Armagetron Advanced is a multiplayer game in 3d that
323 attempts to emulate and expand on the lightcycle sequence from the movie Tron.
324 It's an old school arcade game slung into the 21st century. Highlights
325 include a customizable playing arena, HUD, unique graphics, and AI bots. For
326 the more advanced player there are new game modes and a wide variety of
327 physics settings to tweak as well.")
328 (license license:gpl2+)))
330 (define-public armagetron-advanced
331 (deprecated-package "armagetron-advanced" armagetronad))
333 (define-public bastet
341 (url "https://github.com/fph/bastet.git")
343 (file-name (git-file-name name version))
345 (base32 "09kamxapm9jw9przpsgjfg33n9k94bccv65w95dakj0br33a75wn"))
347 (search-patches "bastet-change-source-of-unordered_set.patch"))))
348 (build-system gnu-build-system)
351 (list (string-append "CXXFLAGS=-I"
352 (assoc-ref %build-inputs "boost") "/include"))
354 (modify-phases %standard-phases
355 (delete 'configure) ; no configure script
357 ;; The 'Test' target builds the tests, but doesn't actually run them.
358 (lambda* (#:key make-flags #:allow-other-keys)
359 (apply invoke "make" "Test" make-flags)
363 (lambda* (#:key outputs #:allow-other-keys)
364 (let* ((out (assoc-ref outputs "out"))
365 (share (string-append out "/share"))
366 (hicolor (string-append share "/icons/hicolor")))
367 (install-file "bastet"
368 (string-append out "/bin"))
370 (install-file "bastet.desktop"
371 (string-append share "/applications"))
372 (install-file "bastet.svg"
373 (string-append hicolor "/scalable/apps"))
375 (install-file "bastet.appdata.xml"
376 (string-append share "/appdata"))
378 (install-file "bastet.6"
379 (string-append out "/share/man/man6"))
382 `(("hicolor-icon-theme" ,hicolor-icon-theme)))
385 ("ncurses" ,ncurses)))
386 (home-page "http://fph.altervista.org/prog/bastet.html")
387 (synopsis "Antagonistic Tetris-style falling brick game for text terminals")
389 "Bastet (short for Bastard Tetris) is a simple ncurses-based falling brick
390 game. Unlike normal Tetris, Bastet does not choose the next brick at random.
391 Instead, it uses a special algorithm to choose the worst brick possible.
393 Playing bastet can be a painful experience, especially if you usually make
394 canyons and wait for the long I-shaped block to clear four rows at a time.")
395 (license license:gpl3+)))
397 (define-public cataclysm-dda
398 (let ((commit "9c732a5de48928691ab863d3ab275ca7b0e522fc"))
400 (name "cataclysm-dda")
405 (url "https://github.com/CleverRaven/Cataclysm-DDA.git")
409 "00zzhx1mh1qjq668cga5nbrxp2qk6b82j5ak65skhgnlr6ii4ysc"))
410 (file-name (git-file-name name version))))
411 (build-system gnu-build-system)
413 '(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
414 "USE_HOME_DIR=1" "DYNAMIC_LINKING=1" "RELEASE=1"
415 "LOCALIZE=1" "LANGUAGES=all")
417 (modify-phases %standard-phases
419 (add-after 'build 'build-tiles
420 (lambda* (#:key make-flags outputs #:allow-other-keys)
421 ;; Change prefix directory and enable tile graphics and sound.
422 (apply invoke "make" "TILES=1" "SOUND=1"
423 (string-append "PREFIX="
424 (assoc-ref outputs "tiles"))
426 (add-after 'install 'install-tiles
427 (lambda* (#:key make-flags outputs #:allow-other-keys)
428 (apply invoke "make" "install" "TILES=1" "SOUND=1"
429 (string-append "PREFIX="
430 (assoc-ref outputs "tiles"))
432 ;; TODO: Add libtap++ from https://github.com/cbab/libtappp as a native
433 ;; input in order to support tests.
436 "tiles")) ; For tile graphics and sound support.
438 `(("gettext" ,gettext-minimal)
439 ("pkg-config" ,pkg-config)))
441 `(("freetype" ,freetype)
443 ("libvorbis" ,libvorbis)
446 ("sdl2-image" ,sdl2-image)
447 ("sdl2-ttf" ,sdl2-ttf)
448 ("sdl2-mixer" ,sdl2-mixer)))
449 (home-page "https://cataclysmdda.org/")
450 (synopsis "Survival horror roguelike video game")
452 "Cataclysm: Dark Days Ahead (or \"DDA\" for short) is a roguelike set
453 in a post-apocalyptic world. Struggle to survive in a harsh, persistent,
454 procedurally generated world. Scavenge the remnants of a dead civilization
455 for food, equipment, or, if you are lucky, a vehicle with a full tank of gas
456 to get you out of Dodge. Fight to defeat or escape from a wide variety of
457 powerful monstrosities, from zombies to giant insects to killer robots and
458 things far stranger and deadlier, and against the others like yourself, that
459 want what you have.")
460 (license license:cc-by-sa3.0))))
462 (define-public cataclysm-dark-days-ahead
463 (deprecated-package "cataclysm-dark-days-ahead" cataclysm-dda))
465 (define-public corsix-th
473 (url "https://github.com/CorsixTH/CorsixTH.git")
474 (commit (string-append "v" version))))
475 (file-name (git-file-name name version))
477 (base32 "1rkyk8g55xny276s0hr5k8mq6f4nzz56d3k2mp09dzfymrqb8hgi"))))
478 (build-system cmake-build-system)
481 (modify-phases %standard-phases
482 (add-after 'install 'wrap-binary
484 ;; Set Lua module paths and default MIDI soundfont on startup.
485 (let* ((out (assoc-ref %outputs "out"))
486 (fluid (assoc-ref %build-inputs "fluid-3"))
487 (lua-version ,(version-major+minor (package-version lua)))
491 (assoc-ref %build-inputs (string-append "lua-" lib))
492 "/lib/lua/" lua-version "/?.so"))
493 '("filesystem" "lpeg"))))
494 (wrap-program (string-append out "/bin/corsix-th")
495 `("LUA_CPATH" ";" = ,lua-cpath)
496 `("SDL_SOUNDFONTS" ":" suffix
497 (,(string-append fluid "/share/soundfonts/FluidR3Mono_GM.sf3")))))
499 #:tests? #f)) ; TODO need busted package to run tests
500 ;; Omit Lua-Socket dependency to disable automatic updates.
504 ("freetype" ,freetype)
506 ("lua-filesystem" ,lua-filesystem)
507 ("lua-lpeg" ,lua-lpeg)
509 ("sdl2-mixer" ,sdl2-mixer)))
510 (home-page "https://corsixth.com")
511 (synopsis "Implementation of the @i{Theme Hospital} game engine")
513 "This package provides a reimplementation of the 1997 Bullfrog business
514 simulation game @i{Theme Hospital}. As well as faithfully recreating the
515 original engine, CorsixTH adds support for high resolutions, custom levels and
516 more. This package does @emph{not} provide the game assets.")
518 license:expat ; main license
519 license:bsd-3)))) ; CorsixTH/Src/random.c
521 (define-public cowsay
528 (url "https://github.com/tnalpgge/rank-amateur-cowsay.git")
529 (commit (string-append name "-" version))))
530 (file-name (git-file-name name version))
533 "06455kq37hvq1xb7adyiwrx0djs50arsxvjgixyxks16lm1rlc7n"))))
534 (build-system gnu-build-system)
537 (modify-phases %standard-phases
538 (delete 'configure) ; no configure script
539 (delete 'build) ; nothing to be built
541 (lambda* (#:key outputs #:allow-other-keys)
542 (invoke "sh" "install.sh"
543 (assoc-ref outputs "out"))))
545 (add-after 'install 'check
546 (lambda* (#:key outputs #:allow-other-keys)
547 (invoke (string-append (assoc-ref outputs "out")
552 (home-page (string-append "https://web.archive.org/web/20071026043648/"
553 "http://www.nog.net:80/~tony/warez/cowsay.shtml"))
554 (synopsis "Speaking cow text filter")
555 (description "Cowsay is basically a text filter. Send some text into it,
556 and you get a cow saying your text. If you think a talking cow isn't enough,
557 cows can think too: all you have to do is run @command{cowthink}. If you're
558 tired of cows, a variety of other ASCII-art messengers are available.")
559 (license license:gpl3+)))
561 (define-public lolcat
562 (let ((commit "35dca3d0a381496d7195cd78f5b24aa7b62f2154")
566 (version (git-version "1.0" revision commit))
571 (url "https://github.com/jaseg/lolcat.git")
575 "0jjbkqcc2ikjxd1xgdyv4rb0vsw218181h89f2ywg29ffs3ypd8g"))
576 (file-name (git-file-name name version))))
577 (build-system gnu-build-system)
579 `(#:tests? #f ;; no check target
580 #:make-flags (list "CC=gcc")
582 (modify-phases %standard-phases
586 (lambda* (#:key outputs #:allow-other-keys)
587 (let* ((out (assoc-ref outputs "out"))
588 (dest (string-append out "/bin")))
590 (install-file "lolcat" dest)
591 (install-file "censor" dest)
593 (home-page "https://github.com/jaseg/lolcat")
594 (synopsis "Rainbow coloring effect for text console display")
595 (description "@command{lolcat} concatenates files and streams like
596 regular @command{cat}, but it also adds terminal escape codes between
597 characters and lines resulting in a rainbow effect.")
598 (license license:wtfpl2))))
600 (define-public freedoom
608 (url "https://github.com/freedoom/freedoom.git")
609 (commit (string-append "v" version))))
610 (file-name (git-file-name name version))
612 (base32 "1mq60lfwaaxmch7hsz8403pwafnlsmsd5z2df2j77ppwndwcrypb"))))
613 (build-system gnu-build-system)
616 (list (string-append "prefix=" (assoc-ref %outputs "out")))
617 #:tests? #f ; no check target
619 (modify-phases %standard-phases
622 (lambda* (#:key inputs outputs #:allow-other-keys)
623 (let* ((freedoom (assoc-ref outputs "out"))
624 (wad-dir (string-append freedoom "/share/games/doom")))
625 ;; Make sure that the install scripts know where to find
626 ;; the appropriate WAD files.
627 (substitute* "dist/freedoom"
629 (string-append "IWAD=" wad-dir "/freedm.wad"))
630 (("IWAD=freedoom1.wad")
631 (string-append "IWAD=" wad-dir "/freedoom1.wad"))
632 (("IWAD=freedoom2.wad")
633 (string-append "IWAD=" wad-dir "/freedoom2.wad")))
636 `(("asciidoc" ,asciidoc)
639 ("python-pillow" ,python-pillow)))
640 (home-page "https://freedoom.github.io/")
641 (synopsis "Free content game based on the Doom engine")
643 (list (search-path-specification
644 (variable "DOOMWADDIR")
645 (files '("share/games/doom")))
646 (search-path-specification
647 (variable "DOOMWADPATH")
648 (files '("share/games/doom")))))
650 "The Freedoom project aims to create a complete free content first person
651 shooter game. Freedoom by itself is just the raw material for a game: it must
652 be paired with a compatible game engine (such as @code{prboom-plus}) to be
653 played. Freedoom complements the Doom engine with free levels, artwork, sound
654 effects and music to make a completely free game.")
655 (license license:bsd-3)))
657 (define-public freedroidrpg
659 (name "freedroidrpg")
664 (uri (string-append "http://ftp.osuosl.org/pub/freedroid/"
665 "freedroidRPG-" (version-major+minor version) "/"
666 "freedroidRPG-" version ".tar.gz"))
668 (base32 "0n4kn38ncmcy3lrxmq8fjry6c1z50z4q1zcqfig0j4jb0dsz2va2"))))
669 (build-system gnu-build-system)
673 (string-append "CFLAGS="
674 "-I" (assoc-ref %build-inputs "sdl-gfx") "/include/SDL "
675 "-I" (assoc-ref %build-inputs "sdl-image") "/include/SDL "
676 "-I" (assoc-ref %build-inputs "sdl-mixer") "/include/SDL")
678 ;; FIXME: the test suite fails with the following error output:
679 ;; 4586 Segmentation fault env SDL_VIDEODRIVER=dummy \
680 ;; SDL_AUDIODRIVER=dummy ./src/freedroidRPG -nb text
683 `(("pkg-config" ,pkg-config)))
689 ("libvorbis" ,libvorbis)
691 ("python" ,python-wrapper)
694 ("sdl-image" ,sdl-image)
695 ("sdl-mixer" ,sdl-mixer)
697 (home-page "http://www.freedroid.org/")
698 (synopsis "Isometric role-playing game against killer robots")
700 "Freedroid RPG is an @dfn{RPG} (Role-Playing Game) with isometric graphics.
701 The game tells the story of a world destroyed by a conflict between robots and
702 their human masters. To restore peace to humankind, the player must complete
703 numerous quests while fighting off rebelling robots---either by taking control
704 of them, or by simply blasting them to pieces with melee and ranged weapons in
706 (license (list license:expat ; lua/
707 license:gpl3 ; src/gen_savestruct.py
708 license:gpl2+)))) ; the rest
716 (uri (string-append "mirror://sourceforge/golly/golly/golly-"
717 version "/golly-" version
721 "1j3ksnar4rdam4xiyspgyrs1pifbvxfxkrn65brkwxpx39mpgzc8"))))
722 (build-system gnu-build-system)
724 '(#:make-flags (list "CC=gcc"
725 (string-append "GOLLYDIR="
726 (assoc-ref %outputs "out")
728 #:tests? #f ; no check target
730 (modify-phases %standard-phases
732 (lambda* (#:key inputs #:allow-other-keys)
733 ;; For some reason, setting the PYTHON_SHLIB make flag doesn't
734 ;; properly set the path to the Python shared library. This
735 ;; substitution acheives the same end by different means.
736 (substitute* "gui-wx/wxprefs.cpp"
737 (("pythonlib = wxT\\(STRINGIFY\\(PYTHON_SHLIB\\)\\)")
738 (string-append "pythonlib = \""
739 (assoc-ref inputs "python")
740 "/lib/libpython-2.7.so\"")))
743 (lambda* (#:key make-flags outputs #:allow-other-keys)
744 (with-directory-excursion "gui-wx"
745 (apply invoke `("make" ,@make-flags "-f" "makefile-gtk")))))
747 (lambda* (#:key outputs #:allow-other-keys)
748 (let* ((out (assoc-ref outputs "out"))
749 (bin (string-append out "/bin"))
750 (doc (string-append out "/share/doc/golly"))
751 (pixmaps (string-append out "/share/pixmaps"))
752 (share (string-append out "/share/golly")))
753 (for-each (lambda (binary)
754 (install-file binary bin))
756 (for-each (lambda (document)
758 (string-append "docs/" document ".html")
760 '("License" "ReadMe" "ToDo"))
761 (install-file "gui-wx/icons/appicon.xpm" pixmaps)
762 (for-each (lambda (folder)
765 (string-append share "/" folder)))
766 '("Help" "Patterns" "Rules" "Scripts")))
774 ("wxwidgets" ,wxwidgets-gtk2)
776 (home-page "http://golly.sourceforge.net/")
777 (synopsis "Software for exploring cellular automata")
779 "Golly simulates Conway's Game of Life and many other types of cellular
780 automata. The following features are available:
782 @item Support for bounded and unbounded universes, with cells of up to 256
784 @item Support for multiple algorithms, including Bill Gosper's Hashlife
786 @item Loading patterns from BMP, PNG, GIF and TIFF image files.
787 @item Reading RLE, macrocell, Life 1.05/1.06, dblife and MCell files.
788 @item Scriptable via Lua or Python.
789 @item Extracting patterns, rules and scripts from zip files.
790 @item Downloading patterns, rules and scripts from online archives.
791 @item Pasting patterns from the clipboard.
792 @item Unlimited undo/redo.
793 @item Configurable keyboard shortcuts.
794 @item Auto fit option to keep patterns within the view.
796 (license license:gpl2+)))
798 (define-public julius
806 (url "https://github.com/bvschaik/julius.git")
807 (commit (string-append "v" version))))
808 (file-name (git-file-name name version))
810 (base32 "1ws5lmwdhla73676fj0w26v859n47s0wyxa0mgd0dmkx0x91qriy"))))
811 (build-system cmake-build-system)
814 ("sdl2-mixer" ,sdl2-mixer)))
815 (home-page "https://github.com/bvschaik/julius")
816 (synopsis "Re-implementation of Caesar III game engine")
818 "Engine for Caesar III, a city-building real-time strategy game.
819 Julius includes some UI enhancements while preserving the logic (including
820 bugs) of the original game, so that saved games are compatible. This package
821 does not include game data.")
822 (license (list license:agpl3
823 license:expat ; ext/dirent
824 license:zlib)))) ; ext/tinyfiledialogs
826 (define-public meandmyshadow
828 (name "meandmyshadow")
832 (uri (string-append "mirror://sourceforge/meandmyshadow/"
833 version "/meandmyshadow-" version
837 "0i98v6cgmpsxy7mbb0s2y6f6qq6mkwzk2nrv1nz39ncf948aky2h"))))
838 (build-system cmake-build-system)
840 `(#:tests? #f)) ; there are no tests
842 `(("pkg-config" ,pkg-config)))
845 ("libarchive" ,libarchive)
847 ("sdl" ,(sdl-union (list sdl2
851 (home-page "https://acmepjz.github.io/meandmyshadow/")
852 (synopsis "Puzzle/platform game")
853 (description "Me and My Shadow is a puzzle/platform game in which you try
854 to reach the exit by solving puzzles. Spikes, moving blocks, fragile blocks
855 and much more stand between you and the exit. Record your moves and let your
856 shadow mimic them to reach blocks you couldn't reach alone.")
857 (license license:gpl3+)))
859 (define-public opensurge
867 (url "https://github.com/alemart/opensurge.git")
868 (commit (string-append "v" version))))
869 (file-name (git-file-name name version))
871 (base32 "0ih7hlqjnp9rv0m4lqf7c0s1ai532way5i4pk45jq1gqm8325dbv"))))
872 (build-system cmake-build-system)
874 `(#:tests? #f ;there are no tests
876 (let* ((out (assoc-ref %outputs "out"))
877 (share (string-append out "/share")))
878 (list (string-append "-DCMAKE_INSTALL_PREFIX=" out "/bin")
879 (string-append "-DGAME_DATADIR=" share "/" ,name)
880 (string-append "-DDESKTOP_ENTRY_PATH=" share "/applications")
881 (string-append "-DDESKTOP_ICON_PATH=" share "/pixmaps")
882 (string-append "-DDESKTOP_METAINFO_PATH=" share "/metainfo")))
884 (modify-phases %standard-phases
885 (add-after 'unpack 'fix-xdg-open-path
886 (lambda* (#:key inputs #:allow-other-keys)
887 ;; Look for xdg-open in the store.
888 (substitute* "src/core/web.c"
889 (("/usr(/bin/xdg-open)" _ bin)
890 (string-append (assoc-ref inputs "xdg-utils") bin)))
892 (add-after 'unpack 'unbundle-fonts
893 (lambda* (#:key inputs #:allow-other-keys)
894 ;; Replace bundled Roboto fonts with links to the store.
895 (with-directory-excursion "fonts"
896 (let ((roboto-dir (string-append
897 (assoc-ref inputs "font-google-roboto")
898 "/share/fonts/truetype/")))
902 (symlink (string-append roboto-dir font) font))
903 '("Roboto-Black.ttf" "Roboto-Bold.ttf" "Roboto-Medium.ttf")))
906 `(("allegro" ,allegro)
907 ("font-google-roboto" ,font-google-roboto)
908 ("surgescript" ,surgescript)
909 ("xdg-utils" ,xdg-utils)))
910 (home-page "https://opensurge2d.org")
911 (synopsis "2D retro side-scrolling game")
912 (description "@code{Open Surge} is a 2D retro side-scrolling platformer
913 inspired by the Sonic games. The player runs at high speeds through each
914 level while collecting items and avoiding obstacles. The game includes a
915 built-in level editor.")
917 ;; Code is under GPL 3+, assets are under various licenses.
918 ;; See src/misc/credits.c for details.
924 license:public-domain
925 license:silofl1.1))))
927 (define-public knights
933 (uri (string-append "http://www.knightsgame.org.uk/files/knights_"
934 version "_src.tar.gz"))
937 "18vp2ygvn0s0jz8rm585jqf6hjqkam1ximq81k0r9hpmfj7wb88f"))))
938 (build-system gnu-build-system)
941 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
943 (modify-phases %standard-phases
944 ;; No configure script.
946 #:tests? #f)) ;; No check target.
949 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
950 ("freetype" ,freetype)
951 ("fontconfig" ,fontconfig)
954 `(("pkg-config" ,pkg-config)))
955 (home-page "http://www.knightsgame.org.uk/")
956 (synopsis "Multiplayer dungeon game involving knights and quests")
957 (description "Knights is a multiplayer game involving several knights who
958 must run around a dungeon and complete various quests. Each game revolves
959 around a quest – for example, you might have to find some items and carry them
960 back to your starting point. This may sound easy, but as there are only
961 enough items in the dungeon for one player to win, you may end up having to
962 kill your opponents to get their stuff! Other quests involve escaping from
963 the dungeon, fighting a duel to the death against the enemy knights, or
964 destroying an ancient book using a special wand.")
965 ;; This package includes modified sources of lua (X11), enet (Expat), and
966 ;; guichan (BSD-3). The "Coercri" library is released under the Boost
967 ;; license. The whole package is released under GPLv3+.
968 (license license:gpl3+)))
977 (uri (string-append "mirror://gnu/gnubg/gnubg-release-"
978 version "-sources.tar.gz"))
981 "11xwhcli1h12k6rnhhyq4jphzrhfik7i8ah3k32pqw803460n6yf"))))
982 (build-system gnu-build-system)
983 (inputs `(("glib" ,glib)
984 ("readline" ,readline)
988 ("gtkglext" ,gtkglext)
990 ("libcanberra" ,libcanberra)))
991 (native-inputs `(("python-2" ,python-2)
992 ("pkg-config" ,pkg-config)))
995 (modify-phases %standard-phases
996 (add-after 'install 'install-desktop-file
997 (lambda* (#:key outputs #:allow-other-keys)
998 (let* ((out (assoc-ref outputs "out"))
999 (apps (string-append out "/share/applications")))
1001 (with-output-to-file (string-append apps "/gnubg.desktop")
1005 Name=GNU Backgammon~@
1006 Exec=~a/bin/gnubg -w~@
1013 (home-page "https://www.gnu.org/software/gnubg/")
1014 (synopsis "Backgammon game")
1015 (description "The GNU backgammon application (also known as \"gnubg\") can
1016 be used for playing, analyzing and teaching the game. It has an advanced
1017 evaluation engine based on artificial neural networks suitable for both
1018 beginners and advanced players. In addition to a command-line interface, it
1019 also features an attractive, 3D representation of the playing board.")
1020 (license license:gpl3+)))
1022 (define-public gnubackgammon
1023 (deprecated-package "gnubackgammon" gnubg))
1025 (define-public gnubik
1032 (uri (string-append "mirror://gnu/gnubik/gnubik-"
1036 "1vlf924mq8hg93bsjj0rzvs0crc6psmlxyc6zn0fr7msnmpx6gib"))))
1037 (build-system gnu-build-system)
1038 (inputs `(("gtk+" ,gtk+-2)
1042 ("guile" ,guile-2.0)
1043 ("gtkglext" ,gtkglext)))
1044 (native-inputs `(("gettext" ,gettext-minimal)
1045 ("pkg-config" ,pkg-config)))
1046 (home-page "https://www.gnu.org/software/gnubik/")
1047 (synopsis "3d Rubik's cube game")
1049 "GNUbik is a puzzle game in which you must manipulate a cube to make
1050 each of its faces have a uniform color. The game is customizable, allowing
1051 you to set the size of the cube (the default is 3x3) or to change the colors.
1052 You may even apply photos to the faces instead of colors. The game is
1053 scriptable with Guile.")
1054 (license license:gpl3+)))
1056 (define-public gnushogi
1063 (uri (string-append "mirror://gnu/gnushogi/gnushogi-"
1067 "0a9bsl2nbnb138lq0h14jfc5xvz7hpb2bcsj4mjn6g1hcsl4ik0y"))))
1068 (arguments `(#:tests? #f)) ;; No check target.
1069 (build-system gnu-build-system)
1070 (home-page "https://www.gnu.org/software/gnushogi/")
1071 (synopsis "The game of Shogi (Japanese chess)")
1072 (description "GNU Shogi is a program that plays the game Shogi (Japanese
1073 Chess). It is similar to standard chess but this variant is far more complicated.")
1074 (license license:gpl3+)))
1076 (define-public ltris
1083 (uri (string-append "http://prdownloads.sourceforge.net/lgames/"
1084 "ltris-" version ".tar.gz"))
1087 "1895wv1fqklrj4apkz47rnkcfhfav7zjknskw6p0886j35vrwslg"))))
1088 (build-system gnu-build-system)
1090 '(;; The code in LTris uses traditional GNU semantics for inline functions
1091 #:configure-flags '("CFLAGS=-fgnu89-inline")
1093 (modify-phases %standard-phases
1094 (add-after 'set-paths 'set-sdl-paths
1095 (lambda* (#:key inputs #:allow-other-keys)
1097 (string-append (assoc-ref inputs "sdl-union")
1099 (or (getenv "CPATH") "")))
1102 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))))
1103 (home-page "http://lgames.sourceforge.net/LTris/")
1104 (synopsis "Tetris clone based on the SDL library")
1106 "LTris is a tetris clone: differently shaped blocks are falling down the
1107 rectangular playing field and can be moved sideways or rotated by 90 degree
1108 units with the aim of building lines without gaps which then disappear (causing
1109 any block above the deleted line to fall down). LTris has three game modes: In
1110 Classic you play until the stack of blocks reaches the top of the playing field
1111 and no new blocks can enter. In Figures the playing field is reset to a new
1112 figure each level and later on tiles and lines suddenly appear. In Multiplayer
1113 up to three players (either human or CPU) compete with each other sending
1114 removed lines to all opponents. There is also a Demo mode in which you can
1115 watch your CPU playing while enjoying a cup of tea!")
1116 (license license:gpl2+)))
1118 (define-public nethack
1126 (string-append "https://www.nethack.org/download/" version "/nethack-"
1127 (string-join (string-split version #\.) "") "-src.tgz"))
1129 (base32 "0xifs8pqfffnmkbpmrcd1xf14yakcj06nl2bbhy4dyacg8myysmv"))))
1131 `(("ncurses" ,ncurses)
1135 (build-system gnu-build-system)
1138 `(,(string-append "PREFIX=" (assoc-ref %outputs "out")))
1140 (modify-phases %standard-phases
1141 (add-before 'configure 'patch-paths
1143 (substitute* "sys/unix/nethack.sh"
1145 (substitute* "sys/unix/Makefile.utl"
1146 (("^YACC *=.*$") "YACC = bison -y\n")
1147 (("^LEX *=.*$") "LEX = flex\n")
1148 (("^# CC = gcc") "CC = gcc"))
1149 (substitute* "sys/unix/hints/linux"
1150 (("/bin/gzip") (string-append
1151 (assoc-ref %build-inputs "gzip")
1153 (("^WINTTYLIB=.*") "WINTTYLIB=-lncurses"))
1154 (substitute* "include/config.h"
1155 (("^.*define CHDIR.*$") "")
1156 (("^/\\* *#*define *REPRODUCIBLE_BUILD *\\*/")
1157 ;; Honor SOURCE_DATE_EPOCH.
1158 "#define REPRODUCIBLE_BUILD"))
1160 ;; Note: 'makedefs' rejects and ignores dates that are too old
1161 ;; or too new, so we must choose something reasonable here.
1162 (setenv "SOURCE_DATE_EPOCH" "1531865062")
1164 (substitute* "sys/unix/Makefile.src"
1165 (("^# CC = gcc") "CC = gcc"))
1169 (let ((bash (string-append
1170 (assoc-ref %build-inputs "bash")
1172 (with-directory-excursion "sys/unix"
1173 (substitute* "setup.sh" (("/bin/sh") bash))
1174 (invoke bash "setup.sh" "hints/linux"))
1176 (add-after 'install 'fixup-paths
1178 (let* ((output (assoc-ref %outputs "out"))
1179 (nethack-script (string-append output "/bin/nethack")))
1180 (mkdir-p (string-append output "/games/lib/nethackuserdir"))
1184 (string-append output "/games/lib/nethackdir/" file)
1185 (string-append output "/games/lib/nethackuserdir/"
1187 '("xlogfile" "logfile" "perm" "record" "save"))
1188 (mkdir-p (string-append output "/bin"))
1189 (call-with-output-file nethack-script
1191 (format port "#!~a/bin/sh
1193 if [ ! -d ~~/.config/nethack ]; then
1194 mkdir -p ~~/.config/nethack
1195 cp -r ~a/games/lib/nethackuserdir/* ~~/.config/nethack
1196 chmod -R +w ~~/.config/nethack
1207 for i in ~~/.config/nethack/*; do
1208 ln -s $i $(basename $i)
1210 for i in ~a/games/lib/nethackdir/*; do
1211 ln -s $i $(basename $i)
1214 (assoc-ref %build-inputs "bash")
1215 (list->search-path-as-string
1218 (assoc-ref %build-inputs "coreutils") "/bin")
1220 (assoc-ref %build-inputs "less") "/bin"))
1225 (chmod nethack-script #o555)
1228 (home-page "https://nethack.org")
1229 (synopsis "Classic dungeon crawl game")
1230 (description "NetHack is a single player dungeon exploration game that runs
1231 on a wide variety of computer systems, with a variety of graphical and text
1232 interfaces all using the same game engine. Unlike many other Dungeons &
1233 Dragons-inspired games, the emphasis in NetHack is on discovering the detail of
1234 the dungeon and not simply killing everything in sight - in fact, killing
1235 everything in sight is a good way to die quickly. Each game presents a
1236 different landscape - the random number generator provides an essentially
1237 unlimited number of variations of the dungeon and its denizens to be discovered
1238 by the player in one of a number of characters: you can pick your race, your
1239 role, and your gender.")
1241 (license:fsdg-compatible
1242 "https://nethack.org/common/license.html"))))
1244 (define-public pipewalker
1251 (uri (string-append "http://downloads.sourceforge.net/pipewalker/"
1252 "pipewalker-" version ".tar.gz"))
1254 (base32 "1x46wgk0s55562pd96cxagxkn6wpgglq779f9b64ff1k3xzp3myn"))))
1255 (build-system gnu-build-system)
1258 (list (string-append "--docdir=" (assoc-ref %outputs "out")
1259 "/share/doc/" ,name "-" ,version))
1261 (modify-phases %standard-phases
1262 (add-after 'configure 'patch-docdir
1263 ;; Makefile.in ignores configure's ‘--docdir=...’ option. Fix that.
1265 (substitute* "Makefile"
1266 (("(pkgdocdatadir = ).*" _ assignment)
1267 (string-append assignment "$(docdir)\n")))
1270 `(("libpng" ,libpng)
1273 (home-page "http://pipewalker.sourceforge.net/")
1274 (synopsis "Logical tile puzzle")
1276 "PipeWalker is a simple puzzle game with many diffent themes: connect all
1277 computers to one network server, bring water from a source to the taps, etc.
1278 The underlying mechanism is always the same: you must turn each tile in the
1279 grid in the right direction to combine all components into a single circuit.
1280 Every puzzle has a complete solution, although there may be more than one.")
1281 (license license:gpl3+)))
1283 (define-public prboom-plus
1285 (name "prboom-plus")
1289 (uri (string-append "mirror://sourceforge/prboom-plus/prboom-plus/"
1290 version "/prboom-plus-" version ".tar.gz"))
1292 (base32 "151v6nign86m1a2vqz27krsccpc9m4d1jax4y43v2fa82wfj9qp0"))
1293 (modules '((guix build utils)))
1296 (substitute* "src/version.c"
1300 (build-system gnu-build-system)
1302 '(#:configure-flags '("--disable-cpu-opt")
1303 #:make-flags `(,(string-append "gamesdir="
1304 (assoc-ref %outputs "out") "/bin"))
1306 (modify-phases %standard-phases
1307 (add-after 'set-paths 'set-sdl'paths
1308 (lambda* (#:key inputs #:allow-other-keys)
1310 (string-append (assoc-ref inputs "sdl-union")
1312 (or (getenv "CPATH") "")))
1315 `(("fluidsynth" ,fluidsynth)
1319 ("libvorbis" ,libvorbis)
1321 ("portmidi" ,portmidi)
1322 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-net)))))
1323 (home-page "http://prboom-plus.sourceforge.net/")
1324 (synopsis "Version of the classic 3D shoot'em'up game Doom")
1326 "PrBoom+ is a Doom source port developed from the original PrBoom project.")
1327 (license license:gpl2+)))
1329 (define-public retux
1335 (uri (string-append "mirror://savannah/retux/"
1336 (version-major+minor version) "/retux-"
1337 version "-src.tar.gz"))
1340 "01bidh4zisjp3nc436x0g85v60dvwb3ig37i7y01sa71j8fm4fmb"))))
1341 (build-system python-build-system)
1343 `(#:tests? #f ; no check target
1345 (modify-phases %standard-phases
1346 ;; no setup.py script
1349 (lambda* (#:key outputs #:allow-other-keys)
1350 (let* ((out (assoc-ref outputs "out"))
1351 (bin (string-append out "/bin"))
1352 (data (string-append out "/share/retux"))
1353 (doc (string-append out "/share/doc/retux")))
1356 (substitute* "retux.py"
1357 ;; Use the correct data directory.
1358 (("os\\.path\\.join\\(os\\.path\\.dirname\\(__file__\\), \"data\"\\),")
1359 (string-append "\"" data "\","))
1360 ;; Use Python 3 so the patch-shebangs phase works properly.
1361 ((".*python2.*") "#!/usr/bin/python3"))
1363 (copy-file "retux.py" (string-append bin "/retux"))
1365 (copy-recursively "data" data)
1367 (install-file "COPYING" doc)
1370 `(("python-sge-pygame" ,python-sge-pygame)
1371 ("python-six" ,python-six)
1372 ("python-xsge" ,python-xsge)))
1373 (home-page "http://retux.nongnu.org")
1374 (synopsis "Action platformer game")
1376 "ReTux is an action platformer loosely inspired by the Mario games,
1377 utilizing the art assets from the @code{SuperTux} project.")
1378 ;; GPL version 3 or later is the license for the code and some art.
1379 ;; The rest of the licenses are for the art exclusively, as listed in
1381 (license (list license:cc0
1388 (define-public roguebox-adventures
1390 (name "roguebox-adventures")
1396 "http://download.tuxfamily.org/rba/RogueBoxAdventures_v"
1397 (string-join (string-split version #\.) "_") "_Source.zip"))
1398 (file-name (string-append name "-" version ".zip"))
1401 "05zd03s5w9kcpklfgcggbaa6rwf59nm0q9vcj6gh9v2lh402k067"))))
1402 (build-system python-build-system)
1404 `(#:tests? #f ; no check target
1406 (modify-phases %standard-phases
1408 (lambda* (#:key source #:allow-other-keys)
1409 (and (invoke "unzip" source)
1410 ;; The actual source is buried a few directories deep.
1411 (chdir (string-append "RogueBoxAdventures_v"
1413 (string-split ,version #\.) "_")
1415 ;; no setup.py script
1417 (lambda* (#:key outputs #:allow-other-keys)
1418 (let* ((out (assoc-ref outputs "out"))
1419 (data (string-append
1420 out "/share/games/roguebox-adventures")))
1421 ;; Use the correct data directory.
1422 (substitute* '("main.py" "LIB/getch.py" "LIB/getch_gcwz.py")
1423 (("basic_path + os\\.sep + 'DATA'")
1424 (string-append "'" data "'"))
1426 (string-append "basic_path ='" data "'\n")))
1427 (substitute* "LIB/dialog.py"
1428 (("d_path = os\\.path\\.dirname\\(.*\\)\\)")
1429 (string-append "d_path = '" data "'")))
1430 (substitute* "LIB/gra_files.py"
1431 (("basic_path = b_path\\.replace\\('/LIB',''\\)")
1432 (string-append "basic_path ='" data "'\n")))
1434 ;; The game must save in the user's home directory because
1435 ;; the store is read-only.
1436 (substitute* "main.py"
1437 (("home_save = False") "home_save = True")
1438 (("'icon_small.png'")
1439 (string-append "'" data "/icon_small.png'"))))
1442 (lambda* (#:key outputs #:allow-other-keys)
1443 (let* ((out (assoc-ref outputs "out"))
1444 (bin (string-append out "/bin"))
1445 (roguebox-adventures
1446 (string-append bin "/roguebox-adventures"))
1447 (data (string-append
1448 out "/share/games/roguebox-adventures"))
1449 (lib (string-append data "/LIB"))
1451 out "/share/doc/roguebox-adventures")))
1455 (for-each (lambda (file)
1456 (copy-recursively file
1457 (string-append data "/" file)))
1458 '("AUDIO" "FONT" "GRAPHIC" "LIB" "LICENSE"
1459 "icon_big.png" "icon_small.png"))
1460 (for-each (lambda (file)
1462 (install-file file lib))
1463 '("main.py" "run.py"))
1465 (copy-recursively "DOC" doc)
1467 (call-with-output-file
1472 export PYTHONPATH=~a/LIB:~a
1473 exec -a \"~a\" ~a \"$@\"\n"
1474 (which "bash") data (getenv "PYTHONPATH")
1476 (string-append lib "/main.py"))))
1477 (chmod roguebox-adventures #o555))
1480 `(("unzip" ,unzip)))
1482 `(("python-pygame" ,python-pygame)
1483 ("python-tmx" ,python-tmx)))
1484 (home-page "https://rogueboxadventures.tuxfamily.org")
1485 (synopsis "A classical roguelike/sandbox game")
1487 "RogueBox Adventures is a graphical roguelike with strong influences
1488 from sandbox games like Minecraft or Terraria. The main idea of RogueBox
1489 Adventures is to offer the player a kind of roguelike toy-world. This world
1490 can be explored and changed freely.")
1491 ;; The GPL3+ is for code, the rest are for art.
1492 (license (list license:cc0
1495 license:silofl1.1))))
1497 (define-public xshogi
1504 (uri (string-append "mirror://gnu/gnushogi/xshogi-"
1508 "1dns0nhymak44by18sv48m4xb2skiwbi2i3nb9hl6w9iwd2i2brf"))))
1509 (build-system gnu-build-system)
1511 `(("libxaw" ,libxaw)
1513 (home-page "https://www.gnu.org/software/gnushogi/")
1514 (synopsis "User interface for gnushogi")
1515 (description "A graphical user interface for the package @code{gnushogi}.")
1516 ;; Contains a copy of GPLv3 but the licence notices simply
1517 ;; state "GNU General Public Licence" without specifying a version.
1518 (license license:gpl1+)))
1520 (define-public abbaye
1528 (url "https://github.com/nevat/abbayedesmorts-gpl.git")
1529 (commit (string-append "v" version))))
1530 (file-name (git-file-name name version))
1532 (base32 "1pwqf7r9bqb2p3xrw9i7y8pgr1401fy3mnnqpb1qkhmdl3gqi9hb"))
1533 (modules '((guix build utils)))
1537 (delete-file-recursively "fonts")
1539 (build-system gnu-build-system)
1541 '(#:make-flags '("CC=gcc")
1542 #:phases (modify-phases %standard-phases
1543 (add-after 'set-paths 'set-sdl-paths
1544 (lambda* (#:key inputs #:allow-other-keys)
1546 (string-append (assoc-ref inputs "sdl-union")
1548 (or (getenv "CPATH") "")))))
1549 (add-after 'patch-source-shebangs 'patch-makefile
1550 (lambda* (#:key outputs #:allow-other-keys)
1551 ;; Replace /usr with package output directory.
1552 (substitute* "Makefile"
1553 (("/usr") (assoc-ref outputs "out")))))
1554 (add-before 'install 'make-install-dirs
1555 (lambda* (#:key outputs #:allow-other-keys)
1556 (let ((prefix (assoc-ref outputs "out")))
1557 ;; Create directories that the makefile assumes exist.
1558 (mkdir-p (string-append prefix "/bin"))
1559 (mkdir-p (string-append prefix "/share/applications"))
1560 (mkdir-p (string-append prefix "/share/pixmaps")))))
1561 ;; No configure script.
1562 (delete 'configure))
1563 #:tests? #f)) ;; No check target.
1564 (native-inputs `(("pkg-config" ,pkg-config)))
1565 (inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer)))))
1566 (home-page "https://github.com/nevat/abbayedesmorts-gpl")
1567 (synopsis "GNU/Linux port of the indie game \"l'Abbaye des Morts\"")
1568 (description "L'Abbaye des Morts is a 2D platform game set in 13th century
1569 France. The Cathars, who preach about good Christian beliefs, were being
1570 expelled by the Catholic Church out of the Languedoc region in France. One of
1571 them, called Jean Raymond, found an old church in which to hide, not knowing
1572 that beneath its ruins lay buried an ancient evil.")
1573 (license license:gpl3)))
1575 (define-public l-abbaye-des-morts
1576 (deprecated-package "l-abbaye-des-morts" abbaye))
1578 (define-public angband
1585 (uri (string-append "http://rephial.org/downloads/"
1586 (version-major+minor version)
1587 "/angband-" version ".tar.gz"))
1590 "0vdm1ymm28wawp94nl1p5q3lhc0k7cnn2kkvvrkfx962gif4kqfk"))
1591 (modules '((guix build utils)))
1593 ;; So, some of the sounds/graphics/tilesets are under different
1594 ;; licenses... some of them even nonfree! This is a console-only
1595 ;; version of this package so we just remove them.
1596 ;; In the future, if someone tries to make a graphical variant of
1597 ;; this package, they can deal with that mess themselves. :)
1599 (for-each (lambda (subdir)
1600 (let ((lib-subdir (string-append "lib/" subdir)))
1601 (delete-file-recursively lib-subdir)))
1602 '("fonts" "icons" "sounds" "tiles"))
1603 (substitute* "lib/Makefile"
1604 ;; And don't try to invoke makefiles in the directories we removed.
1605 (("gamedata customize help screens fonts tiles sounds icons user")
1606 "gamedata customize help screens user"))
1608 (build-system gnu-build-system)
1610 `(#:tests? #f ; no check target
1611 #:configure-flags (list (string-append "--bindir=" %output "/bin"))
1613 (modify-phases %standard-phases
1616 (substitute* "acinclude.m4"
1617 (("ncursesw5-config") "ncursesw6-config"))
1618 (invoke "sh" "autogen.sh"))))))
1620 `(("autoconf" ,autoconf)
1621 ("automake" ,automake)))
1622 (inputs `(("ncurses" ,ncurses)))
1623 (home-page "http://rephial.org/")
1624 (synopsis "Dungeon exploration roguelike")
1625 (description "Angband is a Classic dungeon exploration roguelike. Explore
1626 the depths below Angband, seeking riches, fighting monsters, and preparing to
1627 fight Morgoth, the Lord of Darkness.")
1628 (license license:gpl2)))
1630 (define-public pingus
1638 (url "https://gitlab.com/pingus/pingus.git")
1639 (commit (string-append "v" version))))
1640 (file-name (git-file-name name version))
1643 "0wp06kcmknsnxz7bjnsndb8x062z7r23fb3yrnbfnj68qhz18y74"))
1644 (patches (search-patches "pingus-boost-headers.patch"
1645 "pingus-sdl-libs-config.patch"))
1646 (modules '((guix build utils)))
1649 (substitute* "src/pingus/screens/demo_session.cpp"
1650 (("#include <iostream>")
1651 ;; std::function moved to <functional> with C++ 11.
1652 ;; Remove this for versions newer than 0.7.6.
1653 "#include <iostream>\n#include <functional>"))
1655 (build-system gnu-build-system)
1656 (native-inputs `(("pkg-config" ,pkg-config)
1657 ("scons-python2" ,scons-python2)))
1658 (inputs `(("sdl" ,sdl)
1659 ("sdl-image" ,sdl-image)
1660 ("sdl-mixer" ,sdl-mixer)
1666 '(#:make-flags (list (string-append "PREFIX=" %output))
1667 #:tests? #f ; no check target
1669 (modify-phases %standard-phases
1670 (delete 'configure)))) ; no configure script
1671 (home-page "https://pingus.seul.org/")
1672 (synopsis "Lemmings clone")
1674 "Pingus is a free Lemmings-like puzzle game in which the player takes
1675 command of a bunch of small animals and has to guide them through levels.
1676 Since the animals walk on their own, the player can only influence them by
1677 giving them commands, like build a bridge, dig a hole, or redirect all animals
1678 in the other direction. Multiple such commands are necessary to reach the
1679 level's exit. The game is presented in a 2D side view.")
1680 ;; Some source files are under bsd-3 and gpl2+ licenses.
1681 (license license:gpl3+)))
1683 (define-public talkfilters
1685 (name "talkfilters")
1690 (uri (string-append "http://www.hyperrealm.com/" name "/"
1691 name "-" version ".tar.gz"))
1693 (base32 "19nc5vq4bnkjvhk8srqddzhcs93jyvpm9r6lzjzwc1mgf08yg0a6"))))
1694 (build-system gnu-build-system)
1695 (home-page "https://www.gnu.org/software/talkfilters/")
1696 (synopsis "Convert English text to humorous dialects")
1697 (description "The GNU Talk Filters are programs that convert English text
1698 into stereotyped or otherwise humorous dialects. The filters are provided as
1699 a C library, so they can easily be integrated into other programs.")
1700 (license license:gpl2+)))
1702 (define-public cmatrix
1710 (url "https://github.com/abishekvashok/cmatrix.git")
1711 (commit (string-append "v" version))))
1712 (file-name (git-file-name name version))
1715 "1h9jz4m4s5l8c3figaq46ja0km1gimrkfxm4dg7mf4s84icmasbm"))))
1716 (build-system gnu-build-system)
1718 `(("autoconf" ,autoconf)
1719 ("automake" ,automake)))
1722 (modify-phases %standard-phases
1724 (lambda* (#:key outputs #:allow-other-keys)
1725 ;; This old ‘configure’ script doesn't support
1726 ;; variables passed as arguments.
1727 (let ((out (assoc-ref outputs "out")))
1728 (setenv "CONFIG_SHELL" (which "bash"))
1729 (invoke "./configure"
1730 (string-append "--prefix=" out))))))))
1731 (inputs `(("ncurses" ,ncurses)))
1732 (home-page "http://www.asty.org/cmatrix")
1733 (synopsis "Simulate the display from \"The Matrix\"")
1734 (description "CMatrix simulates the display from \"The Matrix\" and is
1735 based on the screensaver from the movie's website. It works with terminal
1736 settings up to 132x300 and can scroll lines all at the same rate or
1737 asynchronously and at a user-defined speed.")
1738 (license license:gpl2+)))
1740 (define-public chess
1747 (uri (string-append "mirror://gnu/chess/gnuchess-" version
1751 "00j8s0npgfdi41a0mr5w9qbdxagdk2v41lcr42rwl1jp6miyk6cs"))))
1752 (build-system gnu-build-system)
1753 (home-page "https://www.gnu.org/software/chess/")
1754 (synopsis "Full chess implementation")
1755 (description "GNU Chess is a chess engine. It allows you to compete
1756 against the computer in a game of chess, either through the default terminal
1757 interface or via an external visual interface such as GNU XBoard.")
1758 (license license:gpl3+)))
1760 (define freedink-engine
1762 (name "freedink-engine")
1766 (uri (string-append "mirror://gnu/freedink/freedink-" version
1770 "00hhk1bjdrc1np2qz44sa5n1mb62qzwxbvsnws3vpms6iyn3a2sy"))))
1771 (build-system gnu-build-system)
1773 `(#:configure-flags '("--disable-embedded-resources")
1775 (modify-phases %standard-phases
1776 (add-after 'unpack 'disable-graphical-tests
1778 ;; These tests require a graphical interface.
1779 (substitute* "src/Makefile.am"
1780 (("test_gfx_fonts TestIOGfxDisplay") ""))
1782 (native-inputs `(("autoconf" ,autoconf)
1783 ("automake" ,automake)
1784 ("cxxtest" ,cxxtest)
1785 ("gettext" ,gettext-minimal)
1786 ("help2man" ,help2man)
1787 ("pkg-config" ,pkg-config)))
1788 (inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer
1789 sdl2-ttf sdl2-gfx)))
1790 ("fontconfig" ,fontconfig)
1792 (properties '((ftp-directory . "/freedink")
1793 (upstream-name . "freedink")))
1794 (home-page "https://www.gnu.org/software/freedink/")
1795 (synopsis "Twisted adventures of young pig farmer Dink Smallwood")
1797 "GNU FreeDink is a free and portable re-implementation of the engine
1798 for the role-playing game Dink Smallwood. It supports not only the original
1799 game data files but it also supports user-produced game mods or \"D-Mods\".
1800 To that extent, it also includes a front-end for managing all of your D-Mods.")
1801 (license license:gpl3+)))
1803 (define freedink-data
1805 (name "freedink-data")
1806 (version "1.08.20190120")
1809 (uri (string-append "mirror://gnu/freedink/freedink-data-"
1813 "17gvryadlxk172mblbsil7hina1z5wahwaxnr6g3mdq57dvl8pvi"))))
1814 (build-system gnu-build-system)
1817 (modify-phases %standard-phases
1818 (delete 'configure) ; no configure script
1819 (delete 'check)) ; no tests
1820 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))))
1821 (properties '((ftp-directory . "/freedink")))
1822 (home-page "https://www.gnu.org/software/freedink/")
1823 (synopsis "Game data for GNU Freedink")
1825 "This package contains the game data of GNU Freedink.")
1826 (license license:gpl3+)))
1828 (define-public freedink-dfarc
1830 (name "freedink-dfarc")
1834 (uri (string-append "mirror://gnu/freedink/dfarc-"
1838 "1yp8n3w426xnlp10xk06vfi2y3k9xrcfyck7s7qs1v0ys7n284d5"))))
1839 (build-system gnu-build-system)
1841 `(("intltool" ,intltool)))
1844 ("wxwidgets" ,wxwidgets)))
1845 (properties '((ftp-directory . "/freedink")
1846 (upstream-name . "dfarc")))
1847 (home-page "https://www.gnu.org/software/freedink/")
1848 (synopsis "Front-end for managing and playing Dink Modules")
1849 (description "DFArc makes it easy to play and manage the GNU FreeDink game
1850 and its numerous D-Mods.")
1851 (license license:gpl3+)))
1853 (define-public freedink
1854 ;; This is a wrapper that tells the engine where to find the data.
1855 (package (inherit freedink-engine)
1857 (build-system trivial-build-system)
1860 (use-modules (guix build utils))
1862 (let* ((output (assoc-ref %outputs "out"))
1863 (bin (string-append output "/bin"))
1864 (executable (string-append bin "/freedink")))
1866 (call-with-output-file executable
1868 (format port "#!~a/bin/sh
1869 exec ~a/bin/freedink -refdir ~a/share/dink\n"
1870 (assoc-ref %build-inputs "bash")
1871 (assoc-ref %build-inputs "engine")
1872 (assoc-ref %build-inputs "data"))
1873 (chmod port #o777)))
1875 #:modules ((guix build utils))))
1876 (inputs `(("engine" ,freedink-engine)
1877 ("data" ,freedink-data)
1879 (native-inputs '())))
1881 (define-public xboard
1888 (uri (string-append "mirror://gnu/xboard/xboard-" version
1892 "1mkh36xnnacnz9r00b5f9ld9309k32jv6mcavklbdnca8bl56bib"))))
1893 (build-system gnu-build-system)
1896 ("librsvg" ,librsvg)))
1898 `(("texinfo" ,texinfo)
1899 ("pkg-config" ,pkg-config)))
1900 (home-page "https://www.gnu.org/software/xboard/")
1901 (synopsis "Graphical user interface for chess programs")
1902 (description "GNU XBoard is a graphical board for all varieties of chess,
1903 including international chess, xiangqi (Chinese chess), shogi (Japanese chess)
1904 and Makruk. Several lesser-known variants are also supported. It presents a
1905 fully interactive graphical interface and it can load and save games in the
1906 Portable Game Notation.")
1907 (license license:gpl3+)))
1909 (define-public gtypist
1915 (uri (string-append "mirror://gnu/gtypist/gtypist-"
1919 "0xzrkkmj0b1dw3yr0m9hml2y634cc4h61im6zwcq57s7285z8fn1"))
1920 (modules '((guix build utils)))
1922 ;; We do not provide `ncurses.h' within an `ncursesw'
1923 ;; sub-directory, so patch the source accordingly. See
1924 ;; <http://bugs.gnu.org/19018>.
1926 (for-each (lambda (file)
1928 (("ncursesw/ncurses.h")
1930 (find-files "." "configure$|\\.c$"))
1932 (build-system gnu-build-system)
1933 (inputs `(("ncurses" ,ncurses)
1935 (home-page "https://www.gnu.org/software/gtypist/")
1936 (synopsis "Typing tutor")
1938 "GNU Typist is a universal typing tutor. It can be used to learn and
1939 practice touch-typing. Several tutorials are included; in addition to
1940 tutorials for the standard QWERTY layout, there are also tutorials for the
1941 alternative layouts Dvorak and Colemak, as well as for the numpad. Tutorials
1942 are primarily in English, however some in other languages are provided.")
1943 (license license:gpl3+)))
1945 (define-public irrlicht
1952 "mirror://sourceforge/irrlicht/Irrlicht%20SDK/"
1953 (version-major+minor version)
1954 "/" version "/irrlicht-" version ".zip"))
1957 "0cz4z4dwrv5ypl19ll67wl6jjpy5k6ly4vr042w4br88qq5jhazl"))
1958 (patches (search-patches "irrlicht-use-system-libs.patch"))
1959 (modules '((guix build utils)))
1962 (for-each delete-file-recursively
1963 '("bin" ; bundled compiled Windows binaries"
1964 "source/Irrlicht/MacOSX"
1965 "source/Irrlicht/bzip2"
1966 "source/Irrlicht/jpeglib"
1967 "source/Irrlicht/libpng"
1968 "source/Irrlicht/lzma"
1969 "source/Irrlicht/zlib"))
1970 (delete-file "source/Irrlicht/glext.h")
1971 (delete-file "source/Irrlicht/glxext.h")
1972 (delete-file "source/Irrlicht/wglext.h")
1974 (build-system gnu-build-system)
1977 (modify-phases %standard-phases
1978 (add-after 'unpack 'chdir-to-source
1980 ;; The actual source is buried a few directories deep.
1981 (chdir "source/Irrlicht/")
1983 (add-after 'chdir-to-source 'fix-build-env
1984 (lambda* (#:key outputs #:allow-other-keys)
1985 (let ((out (assoc-ref outputs "out")))
1986 (substitute* "Makefile"
1987 (("INSTALL_DIR = /usr/local/lib")
1988 (string-append "INSTALL_DIR = " out "/lib"))
1989 ;; Add '-fpermissive' to the CXXFLAGS
1990 (("-Wall") "-Wall -fpermissive")) ; CImageLoaderJPG.cpp
1991 ;; The Makefile assumes these directories exist.
1992 (mkdir-p (string-append out "/lib"))
1993 (mkdir-p (string-append out "/include")))))
1994 (delete 'configure)) ; no configure script
1995 #:tests? #f ; no check target
1996 #:make-flags '("CC=gcc" "sharedlib")))
1999 ("libjpeg" ,libjpeg)
2002 ("libxxf86vm" ,libxxf86vm)
2004 (synopsis "3D game engine written in C++")
2006 "The Irrlicht Engine is a high performance realtime 3D engine written in
2007 C++. Features include an OpenGL renderer, extensible materials, scene graph
2008 management, character animation, particle and other special effects, support
2009 for common mesh file formats, and collision detection.")
2010 (home-page "http://irrlicht.sourceforge.net/")
2011 (license license:zlib)))
2014 ;; The latest release on SourceForge relies on an unreleased version of SFML
2015 ;; with a different API, so we take the latest version from the official
2016 ;; repository on Github.
2017 (let ((commit "c855d044094a1d92317e38935d81ba938946132e")
2021 (version (string-append "0.7.5." revision "." (string-take commit 7) ))
2025 (url "https://github.com/thelaui/M.A.R.S..git")
2027 (file-name (git-file-name name version))
2030 "1r4c5gap1z2zsv4yjd34qriqkxaq4lb4rykapyzkkdf4g36lc3nh"))
2031 (patches (search-patches "mars-sfml-2.3.patch"
2032 "mars-install.patch"))))
2033 (build-system cmake-build-system)
2035 `(#:tests? #f ; There are no tests
2037 (modify-phases %standard-phases
2038 (add-after 'unpack 'fix-install-path
2040 (substitute* "src/CMakeLists.txt"
2041 (("\\$\\{CMAKE_INSTALL_PREFIX\\}/games")
2042 "${CMAKE_INSTALL_PREFIX}/bin"))
2044 (add-after 'unpack 'fix-data-path
2045 (lambda* (#:key outputs #:allow-other-keys)
2046 (substitute* "src/System/settings.cpp"
2047 (("C_dataPath = \"./data/\";")
2048 (string-append "C_dataPath = \""
2049 (assoc-ref outputs "out")
2050 "/share/games/marsshooter/\";")))
2054 ("fribidi" ,fribidi)
2057 (home-page "http://marsshooter.org")
2058 (synopsis "2D space shooter")
2060 "M.A.R.S. is a 2D space shooter with pretty visual effects and
2061 attractive physics. Players can battle each other or computer controlled
2062 enemies in different game modes such as space ball, death match, team death
2063 match, cannon keep, and grave-itation pit.")
2064 (license license:gpl3+))))
2066 (define minetest-data
2068 (name "minetest-data")
2073 (url "https://github.com/minetest/minetest_game")
2075 (file-name (git-file-name name version))
2078 "1r9fxz2j24q74a9injvbxbf2xk67fzabv616i676zw2cvgv9hn39"))))
2079 (build-system trivial-build-system)
2081 `(("source" ,source)))
2083 `(#:modules ((guix build utils))
2085 (use-modules (guix build utils))
2086 (let ((install-dir (string-append
2088 "/share/minetest/games/minetest_game")))
2089 (mkdir-p install-dir)
2091 (assoc-ref %build-inputs "source")
2094 (synopsis "Main game data for the Minetest game engine")
2096 "Game data for the Minetest infinite-world block sandbox game.")
2097 (home-page "https://www.minetest.net/")
2098 (license license:lgpl2.1+)))
2100 (define-public minetest
2107 (url "https://github.com/minetest/minetest")
2109 (file-name (git-file-name name version))
2112 "0cjj63333b7j4ydfq0h9yc6d2jvmyjd7n7zbd08yrf0rcibrj2k0"))
2113 (modules '((guix build utils)))
2116 ;; Delete bundled libraries.
2117 (delete-file-recursively "lib")
2119 (build-system cmake-build-system)
2122 (list "-DRUN_IN_PLACE=0"
2123 "-DENABLE_FREETYPE=1"
2124 "-DENABLE_GETTEXT=1"
2125 "-DENABLE_SYSTEM_JSONCPP=TRUE"
2126 (string-append "-DIRRLICHT_INCLUDE_DIR="
2127 (assoc-ref %build-inputs "irrlicht")
2128 "/include/irrlicht")
2129 (string-append "-DCURL_INCLUDE_DIR="
2130 (assoc-ref %build-inputs "curl")
2132 #:tests? #f)) ;no check target
2133 (native-search-paths
2134 (list (search-path-specification
2135 (variable "MINETEST_SUBGAME_PATH")
2136 (files '("share/minetest/games")))))
2138 `(("pkg-config" ,pkg-config)))
2141 ("freetype" ,freetype)
2142 ("gettext" ,gettext-minimal)
2144 ("irrlicht" ,irrlicht)
2145 ("jsoncpp" ,jsoncpp)
2146 ("libjpeg" ,libjpeg)
2149 ("libvorbis" ,libvorbis)
2150 ("libxxf86vm" ,libxxf86vm)
2153 ("ncurses" ,ncurses)
2155 ("sqlite" ,sqlite)))
2157 `(("minetest-data" ,minetest-data)))
2158 (synopsis "Infinite-world block sandbox game")
2160 "Minetest is a sandbox construction game. Players can create and destroy
2161 various types of blocks in a three-dimensional open world. This allows
2162 forming structures in every possible creation, on multiplayer servers or as a
2163 single player. Mods and texture packs allow players to personalize the game
2164 in different ways.")
2165 (home-page "https://www.minetest.net/")
2166 (license license:lgpl2.1+)))
2175 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
2176 "glk/implementations/glkterm-104.tar.gz"))
2179 "0zlj9nlnkdlvgbiliczinirqygiq8ikg5hzh5vgcmnpg9pvnwga7"))))
2180 (build-system gnu-build-system)
2181 (propagated-inputs `(("ncurses" ,ncurses))) ; required by Make.glkterm
2183 '(#:tests? #f ; no check target
2185 (modify-phases %standard-phases
2187 (lambda* (#:key outputs #:allow-other-keys)
2188 (let* ((out (assoc-ref outputs "out"))
2189 (inc (string-append out "/include"))
2190 (lib (string-append out "/lib")))
2193 (install-file file inc))
2194 '("glk.h" "glkstart.h" "gi_blorb.h" "gi_dispa.h" "Make.glkterm"))
2195 (install-file "libglkterm.a" lib))
2197 (delete 'configure)))) ; no configure script
2198 (home-page "http://www.eblong.com/zarf/glk/")
2199 (synopsis "Curses Implementation of the Glk API")
2201 "Glk defines a portable API for applications with text UIs. It was
2202 primarily designed for interactive fiction, but it should be suitable for many
2203 interactive text utilities, particularly those based on a command line.
2204 This is an implementation of the Glk library which runs in a terminal window,
2205 using the @code{curses.h} library for screen control.")
2206 (license (license:fsf-free "file://README"))))
2208 (define-public glulxe
2215 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
2216 "glulx/interpreters/glulxe/glulxe-054.tar.gz"))
2219 "0vipydg6ra90yf9b3ipgppwxyb2xdhcxwvirgjy0v20wlf56zhhz"))))
2220 (build-system gnu-build-system)
2221 (inputs `(("glk" ,glkterm)))
2223 '(#:tests? #f ; no check target
2225 (let* ((glk (assoc-ref %build-inputs "glk")))
2226 (list (string-append "GLKINCLUDEDIR=" glk "/include")
2227 (string-append "GLKLIBDIR=" glk "/lib")
2228 (string-append "GLKMAKEFILE=" "Make.glkterm")))
2230 (modify-phases %standard-phases
2232 (lambda* (#:key outputs #:allow-other-keys)
2233 (let* ((out (assoc-ref outputs "out"))
2234 (bin (string-append out "/bin")))
2235 (install-file "glulxe" bin))
2237 (delete 'configure)))) ; no configure script
2238 (home-page "https://www.eblong.com/zarf/glulx/")
2239 (synopsis "Interpreter for Glulx VM")
2241 "Glulx is a 32-bit portable virtual machine intended for writing and
2242 playing interactive fiction. It was designed by Andrew Plotkin to relieve
2243 some of the restrictions in the venerable Z-machine format. This is the
2244 reference interpreter, using the Glk API.")
2245 (license license:expat)))
2247 (define-public fifechan
2253 (uri (string-append "https://codeload.github.com/fifengine/"
2254 "fifechan/tar.gz/" version))
2255 (file-name (string-append name "-" version ".tar.gz"))
2258 "0wxs9vz5x9y8chghd8vp7vfk089lfb0qnzggi17zrqkrngs5zgi9"))))
2259 (build-system cmake-build-system)
2262 ("sdl2-image" ,sdl2-image)
2265 '(#:tests? #f)) ; No included tests
2266 (home-page "https://fifengine.github.io/fifechan/")
2267 (synopsis "Cross platform GUI library specifically for games")
2269 "Fifechan is a lightweight cross platform GUI library written in C++
2270 specifically designed for games. It has a built in set of extendable GUI
2271 Widgets, and allows users to create more.")
2272 (license license:lgpl2.1+)))
2274 (define-public fifengine
2280 (uri (string-append "https://codeload.github.com/fifengine/"
2281 "fifengine/tar.gz/" version))
2282 (file-name (string-append name "-" version ".tar.gz"))
2285 "1y4grw25cq5iqlg05rnbyxw1njl11ypidnlsm3qy4sm3xxdvb0p8"))))
2286 (build-system cmake-build-system)
2288 `(#:tests? #f ; TODO The test running fails to run some tests.
2289 #:modules ((srfi srfi-1)
2290 (guix build cmake-build-system)
2294 (string-append "-DOPENALSOFT_INCLUDE_DIR="
2295 (assoc-ref %build-inputs "openal")
2297 (string-append "-DPYTHON_SITE_PACKAGES="
2298 (assoc-ref %outputs "out")
2299 "/lib/python3.7/site-packages"))
2301 (modify-phases %standard-phases
2302 (add-after 'unpack 'patch-run_tests.py
2304 ;; Patch the test runner to exit with a status of 1 if any test
2305 ;; fails, to allow detecting failures.
2306 (substitute* "run_tests.py"
2307 (("ERROR\\. One or more tests failed!'\\)")
2308 "ERROR. One or more tests failed!')
2311 ;; Run tests after installation so that we can make use of the built
2314 (add-after 'install 'check
2315 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
2316 (define python-version
2317 (let* ((version (last (string-split
2318 (assoc-ref inputs "python")
2320 (components (string-split version #\.))
2321 (major+minor (take components 2)))
2322 (string-join major+minor ".")))
2325 ;; Set PYTHONPATH so that python finds the installed modules.
2326 (setenv "PYTHONPATH"
2327 (string-append (getenv "PYTHONPATH") ":"
2328 (assoc-ref outputs "out")
2332 ;; The tests require an X server.
2333 (system "Xvfb :1 &")
2334 (setenv "DISPLAY" ":1")
2335 (setenv "XDG_RUNTIME_DIR" "/tmp")
2337 (chdir ,(string-append "../" name "-" version))
2338 (invoke "python3" "run_tests.py" "-a"))
2342 ("sdl2-image" ,sdl2-image)
2343 ("sdl2-ttf" ,sdl2-ttf)
2344 ("tinyxml" ,tinyxml)
2348 ("libvorbis" ,libvorbis)
2350 ("fifechan" ,fifechan)
2352 ("python" ,python)))
2354 `(("python" ,python)
2356 ("xvfb" ,xorg-server)))
2358 `(("python-future" ,python-future)))
2359 (home-page "https://www.fifengine.net/")
2360 (synopsis "FIFE is a multi-platform isometric game engine written in C++")
2362 "@acronym{FIFE, Flexible Isometric Free Engine} is a multi-platform
2363 isometric game engine. Python bindings are included allowing users to create
2364 games using Python as well as C++.")
2365 (license license:lgpl2.1+)))
2367 (define-public fizmo
2373 (uri (string-append "https://fizmo.spellbreaker.org/source/"
2374 "fizmo-" version ".tar.gz"))
2377 "1amyc4n41jf08kxmdgkk30bzzx54miaxa97w28f417qwn8lrl98w"))))
2378 (build-system gnu-build-system)
2381 (let ((libjpeg (assoc-ref %build-inputs "libjpeg"))
2382 (ncurses (assoc-ref %build-inputs "ncurses")))
2383 (list (string-append "--with-jpeg-includedir=" libjpeg "/include")))))
2385 `(("pkg-config" ,pkg-config)))
2387 `(("freetype" ,freetype)
2388 ("libjpeg" ,libjpeg)
2390 ("libsndfile" ,libsndfile)
2391 ("libxml2" ,libxml2)
2392 ("ncurses" ,ncurses)
2394 (home-page "https://fizmo.spellbreaker.org/")
2395 (synopsis "Z-machine interpreter")
2397 "Fizmo is a console-based Z-machine interpreter. It is used to play
2398 interactive fiction, also known as text adventures, which were implemented
2399 either by Infocom or created using the Inform compiler.")
2400 (license license:bsd-3)))
2402 (define-public gnugo
2408 (uri (string-append "mirror://gnu/gnugo/gnugo-" version
2412 "0wkahvqpzq6lzl5r49a4sd4p52frdmphnqsfdv7gdp24bykdfs6s"))))
2413 (build-system gnu-build-system)
2414 (inputs `(("readline" ,readline)))
2415 (synopsis "Play the game of Go")
2417 "GNU Go is a program that plays the game of Go, in which players
2418 place stones on a grid to form territory or capture other stones. While
2419 it can be played directly from the terminal, rendered in ASCII characters,
2420 it is also possible to play GNU Go with 3rd party graphical interfaces or
2421 even in Emacs. It supports the standard game storage format (SGF, Smart
2422 Game Format) and inter-process communication format (GMP, Go Modem
2424 (home-page "https://www.gnu.org/software/gnugo/")
2425 (license license:gpl3+)))
2427 (define-public extremetuxracer
2429 (name "extremetuxracer")
2434 "mirror://sourceforge/extremetuxracer/releases/"
2435 version "/etr-" version ".tar.xz"))
2438 "1ly63316c07i0gyqqmyzsyvygsvygn0fpk3bnbg25fi6li99rlsg"))))
2439 (build-system gnu-build-system)
2441 `(("pkg-config" ,pkg-config)))
2445 (synopsis "High-speed arctic racing game based on Tux Racer")
2446 ;; Snarfed straight from Debian.
2447 (description "Extreme Tux Racer, or etracer as it is called for short, is
2448 a simple OpenGL racing game featuring Tux, the Linux mascot. The goal of the
2449 game is to slide down a snow- and ice-covered mountain as quickly as possible,
2450 avoiding the trees and rocks that will slow you down.
2452 Collect herrings and other goodies while sliding down the hill, but avoid fish
2455 This game is based on the GPL version of the famous game TuxRacer.")
2456 (home-page "https://sourceforge.net/projects/extremetuxracer/")
2457 (license license:gpl2+)))
2459 (define-public supertuxkart
2461 (name "supertuxkart")
2466 (uri (string-append "mirror://sourceforge/supertuxkart/SuperTuxKart/"
2467 version "/supertuxkart-" version "-src.tar.xz"))
2470 "1s0ai07g3sswck9mr0142989mrgzzq1njc1qxk5als5b245jpc79"))
2471 (modules '((guix build utils)))
2473 ;; Delete bundled library sources
2475 ;; Supertuxkart uses modified versions of the Irrlicht engine
2476 ;; and the bullet library. The developers gave an explanation
2477 ;; here: http://forum.freegamedev.net/viewtopic.php?f=17&t=3906
2478 ;; FIXME: try to unbundle angelscript and libraqm
2479 (for-each delete-file-recursively
2487 (build-system cmake-build-system)
2489 `(#:tests? #f ; no check target
2491 (list "-DUSE_WIIUSE=0"
2492 ;; Do not use the bundled zlib, glew and enet.
2493 "-DNO_IRR_COMPILE_WITH_ZLIB_=TRUE"
2494 "-DUSE_SYSTEM_GLEW=TRUE"
2495 "-DUSE_SYSTEM_ENET=TRUE"
2496 ;; In order to use the system ENet library, IPv6 support (added in
2497 ;; SuperTuxKart version 1.1) must be disabled.
2499 ;; FIXME: needs libopenglrecorder
2500 "-DBUILD_RECORDER=0"
2501 ;; Irrlicht returns an integer instead of a boolean
2502 "-DCMAKE_C_FLAGS=-fpermissive")))
2507 ("libvorbis" ,libvorbis)
2508 ("freetype" ,freetype)
2509 ("fribidi" ,fribidi)
2510 ("harfbuzz" ,harfbuzz)
2513 ("libxrandr" ,libxrandr)
2515 ;; The following input is needed to build the bundled and modified
2516 ;; version of irrlicht.
2517 ("libjpeg" ,libjpeg)
2518 ("openssl" ,openssl)
2521 `(("pkg-config" ,pkg-config)))
2522 (home-page "https://supertuxkart.net/Main_Page")
2523 (synopsis "3D kart racing game")
2524 (description "SuperTuxKart is a 3D kart racing game, with a focus on
2525 having fun over realism. You can play with up to 4 friends on one PC, racing
2526 against each other or just trying to beat the computer; single-player mode is
2528 (license license:gpl3+)))
2530 (define-public unknown-horizons
2532 (name "unknown-horizons")
2536 (uri (string-append "https://codeload.github.com/unknown-horizons/"
2537 "unknown-horizons/tar.gz/" version))
2538 (file-name (string-append name "-" version ".tar.gz"))
2541 "1n747p7h0qp48szgp262swg0xh8kxy1bw8ag1qczs4i26hyzs5x4"))))
2542 (build-system python-build-system)
2545 (modify-phases %standard-phases
2546 (add-before 'build 'set-HOME
2548 (setenv "HOME" "/tmp")))
2549 (add-after 'build 'build-extra
2551 (invoke "python3" "./setup.py" "build_i18n")
2552 (invoke "python3" "horizons/engine/generate_atlases.py" "2048")
2554 (add-after 'install 'patch
2555 (lambda* (#:key outputs #:allow-other-keys)
2556 (let ((out (assoc-ref outputs "out")))
2557 (substitute* (string-append out "/bin/unknown-horizons")
2558 (("os\\.chdir\\(get\\_content\\_dir\\_parent_path\\(\\)\\)")
2559 (string-append "os.chdir(\""
2560 (assoc-ref outputs "out")
2561 "/share/unknown-horizons\")"))))
2563 ;; TODO: Run GUI tests as well
2566 (substitute* "horizons/constants.py"
2567 (("IS_DEV_VERSION = False")
2568 "IS_DEV_VERSION = True"))
2569 (invoke "pytest" "tests")
2570 (substitute* "horizons/constants.py"
2571 (("IS_DEV_VERSION = True")
2572 "IS_DEV_VERSION = False"))
2575 `(("fifengine" ,fifengine)
2576 ("python:tk" ,python "tk")
2577 ("python-pillow" ,python-pillow)
2578 ("python-pyyaml" ,python-pyyaml)))
2580 `(("intltool" ,intltool)
2582 ;; Required for tests
2583 ("python-greenlet" ,python-greenlet)
2584 ("python-polib" ,python-polib)
2585 ("python-pytest" ,python-pytest)
2586 ("python-pytest-mock" ,python-pytest-mock)))
2587 (home-page "http://unknown-horizons.org/")
2588 (synopsis "Isometric realtime strategy, economy and city building simulation")
2590 "Unknown Horizons is a 2D realtime strategy simulation with an emphasis
2591 on economy and city building. Expand your small settlement to a strong and
2592 wealthy colony, collect taxes and supply your inhabitants with valuable
2593 goods. Increase your power with a well balanced economy and with strategic
2594 trade and diplomacy.")
2596 license:gpl2+ ; Covers code
2597 license:expat ; tests/dummy.py, ext/polib.py
2598 license:cc-by-sa3.0 ; Covers some media content
2599 license:cc-by3.0 ; Covers some media content
2600 license:bsd-3)))) ; horizons/ext/speaklater.py
2602 (define-public gnujump
2608 (uri (string-append "mirror://gnu/gnujump/gnujump-"
2612 "05syy9mzbyqcfnm0hrswlmhwlwx54f0l6zhcaq8c1c0f8dgzxhqk"))))
2613 (build-system gnu-build-system)
2616 (modify-phases %standard-phases
2618 'configure 'link-libm
2619 (lambda _ (setenv "LIBS" "-lm")))
2620 (add-after 'install 'create-desktop-entry
2621 (lambda* (#:key outputs #:allow-other-keys)
2622 (let* ((out (assoc-ref outputs "out"))
2623 (apps (string-append out "/share/applications")))
2625 (with-output-to-file
2626 (string-append apps "/gnujump.desktop")
2631 Comment=Jump up the tower to survive~@
2632 Exec=~a/bin/gnujump~@
2635 Categories=Game;ArcadeGame~%"
2641 ("sdl-image" ,sdl-image)
2642 ("sdl-mixer" ,sdl-mixer)))
2643 (home-page "http://gnujump.es.gnu.org/")
2645 "Game of jumping to the next floor, trying not to fall")
2647 "GNUjump is a simple, yet addictive game in which you must jump from
2648 platform to platform to avoid falling, while the platforms drop at faster rates
2649 the higher you go. The game features multiplayer, unlimited FPS, smooth floor
2650 falling, themeable graphics and sounds, and replays.")
2651 (license license:gpl3+)))
2653 (define-public wesnoth
2659 (uri (string-append "mirror://sourceforge/wesnoth/wesnoth-"
2660 (version-major+minor version)
2661 "/wesnoth-" version "/"
2662 "wesnoth-" version ".tar.bz2"))
2665 "1i8mz6gw3qar09bscczhki0g4scj8pl58v85rp0g55r4bcq41l5v"))))
2666 (build-system cmake-build-system)
2668 `(#:tests? #f ;no check target
2669 #:phases (modify-phases %standard-phases
2670 (add-before 'configure 'treat-boost-as-system-header
2671 (lambda* (#:key inputs #:allow-other-keys)
2672 (let ((boost (assoc-ref inputs "boost")))
2673 ;; Ensure Boost is treated as "system headers" to
2674 ;; pacify compiler warnings induced by Boost headers.
2675 (for-each (lambda (variable)
2677 (string-append boost "/include:"
2678 (or (getenv variable)
2680 '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"))
2683 `(("gettext" ,gettext-minimal)
2684 ("pkg-config" ,pkg-config)))
2688 ("fribidi" ,fribidi)
2689 ("libvorbis" ,libvorbis)
2690 ("openssl" ,openssl)
2692 ("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
2693 (home-page "https://www.wesnoth.org/")
2694 (synopsis "Turn-based strategy game")
2696 "The Battle for Wesnoth is a fantasy, turn based tactical strategy game,
2697 with several single player campaigns, and multiplayer games (both networked and
2700 Battle for control on a range of maps, using variety of units which have
2701 advantages and disadvantages against different types of attacks. Units gain
2702 experience and advance levels, and are carried over from one scenario to the
2704 (license license:gpl2+)))
2706 (define-public the-battle-for-wesnoth
2707 (deprecated-package "the-battle-for-wesnoth" wesnoth))
2709 (define-public wesnoth-server
2712 (name "wesnoth-server")
2716 ("openssl" ,openssl)
2719 `(#:configure-flags '("-DENABLE_GAME=OFF")
2720 ,@(package-arguments wesnoth)))
2721 (synopsis "Dedicated @emph{Battle for Wesnoth} server")
2722 (description "This package contains a dedicated server for @emph{The
2723 Battle for Wesnoth}.")))
2725 (define-public the-battle-for-wesnoth-server
2726 (deprecated-package "the-battle-for-wesnoth-server" wesnoth-server))
2728 (define-public gamine
2734 (uri (string-append "mirror://sourceforge/gamine-game/"
2735 "gamine-" version ".tar.gz"))
2738 "1sc6f4445ciigd6yw0ri92746k4hk6ps0bvj9fm1gbp3c3fslk5n"))))
2739 (build-system gnu-build-system)
2741 `(("pkg-config" ,pkg-config)
2742 ("intltool" ,intltool)))
2744 `(("gstreamer" ,gstreamer)
2745 ("gst-plugins-base" ,gst-plugins-base) ; playbin plugin
2746 ("gst-plugins-good" ,gst-plugins-good) ; for wav playback
2751 (let ((out (assoc-ref %outputs "out")))
2752 (list (string-append "PREFIX=" out)
2753 (string-append "SYSCONFDIR=" out "/etc")))
2755 (modify-phases %standard-phases
2758 'install 'wrap-gamine
2759 (lambda* (#:key outputs #:allow-other-keys)
2760 (let ((out (assoc-ref outputs "out"))
2761 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
2762 (wrap-program (string-append out "/bin/gamine")
2763 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))))
2765 (home-page "http://gamine-game.sourceforge.net/")
2766 (synopsis "Mouse and keyboard discovery for children")
2768 "Gamine is a game designed for young children who are learning to use the
2769 mouse and keyboard. The child uses the mouse to draw colored dots and lines
2770 on the screen and keyboard to display letters.")
2771 ;; Most files under gpl2+ or gpl3+, but eat.wav under gpl3
2772 (license license:gpl3)))
2774 (define-public manaplus
2777 (version "1.9.3.23")
2781 "https://repo.manaplus.org/manaplus/download/"
2782 version "/manaplus-" version ".tar.xz"))
2785 "1ky182p4svwdqm6cf7jbns85hidkhkhq4s17cs2p381f0klapfjz"))))
2786 (build-system gnu-build-system)
2789 (list (string-append "CPPFLAGS=-I"
2790 (assoc-ref %build-inputs "sdl-union")
2793 `(("pkg-config" ,pkg-config)))
2797 ("libxml2" ,libxml2)
2799 ("sdl-union" ,(sdl-union))))
2800 (home-page "https://manaplus.org")
2801 (synopsis "Client for 'The Mana World' and similar games")
2803 "ManaPlus is a 2D MMORPG client for game servers. It is the only
2804 fully supported client for @uref{http://www.themanaworld.org, The mana
2805 world}, @uref{http://evolonline.org, Evol Online} and
2806 @uref{http://landoffire.org, Land of fire}.")
2807 ;; "src/debug/*" and "src/sdl2gfx/*" are under Zlib.
2808 ;; "data/themes/{golden-delicious,jewelry}/*" are under CC-BY-SA.
2809 ;; The rest is under GPL2+.
2810 (license (list license:gpl2+ license:zlib license:cc-by-sa4.0))))
2812 (define openttd-engine
2814 (name "openttd-engine")
2817 (origin (method url-fetch)
2818 (uri (string-append "https://proxy.binaries.openttd.org/openttd-releases/"
2819 version "/openttd-" version "-source.tar.xz"))
2822 "0ijq72kgx997ggw40i5f4a3nf7y2g72z37l47i18yjvgbdzy320r"))
2823 (modules '((guix build utils)))
2825 ;; The DOS port contains proprietary software.
2827 (delete-file-recursively "os/dos")
2829 (build-system gnu-build-system)
2831 `(#:tests? #f ; no "check" target
2833 (modify-phases %standard-phases
2834 ;; The build process fails if the configure script is passed the
2835 ;; option "--enable-fast-install".
2837 (lambda* (#:key inputs outputs (configure-flags '())
2839 (let ((out (assoc-ref outputs "out"))
2840 (lzo (assoc-ref inputs "lzo")))
2841 (apply invoke "./configure"
2842 (string-append "--prefix=" out)
2843 ;; Provide the "lzo" path.
2844 (string-append "--with-liblzo2="
2845 lzo "/lib/liblzo2.a")
2846 ;; Put the binary in 'bin' instead of 'games'.
2848 configure-flags)))))))
2849 (native-inputs `(("pkg-config" ,pkg-config)))
2851 `(("allegro" ,allegro)
2852 ("fontconfig" ,fontconfig)
2853 ("freetype" ,freetype)
2860 (synopsis "Transportation economics simulator game")
2861 (description "OpenTTD is a game in which you transport goods and
2862 passengers by land, water and air. It is a re-implementation of Transport
2863 Tycoon Deluxe with many enhancements including multiplayer mode,
2864 internationalization support, conditional orders and the ability to clone,
2865 autoreplace and autoupdate vehicles. This package only includes the game
2866 engine. When you start it you will be prompted to download a graphics set.")
2867 (home-page "https://www.openttd.org/")
2868 ;; This package is GPLv2, except for a few files located in
2869 ;; "src/3rdparty/" which are under the 3-clause BSD, LGPLv2.1+ and Zlib
2870 ;; licenses. In addition, this software contains an in-game downloader
2871 ;; from which the user may find non-functional data licensed under
2873 (license (list license:bsd-3 license:gpl2 license:lgpl2.1+ license:zlib))))
2875 (define openttd-opengfx
2877 (name "openttd-opengfx")
2882 (uri (string-append "http://binaries.openttd.org/extra/opengfx/"
2883 version "/opengfx-" version "-source.tar.xz"))
2886 "009fa1bdin1bk0ynzhzc30hzkmmwzmwkk6j591ax3f6w75l28n49"))))
2887 (build-system gnu-build-system)
2889 '(#:make-flags (list "CC=gcc"
2890 (string-append "INSTALL_DIR="
2891 (assoc-ref %outputs "out")
2892 "/share/games/openttd/baseset/opengfx"))
2894 (modify-phases %standard-phases
2897 ;; Make sure HOME is writable for GIMP.
2898 (setenv "HOME" (getcwd))
2900 ;; Redirect stdout, not stderr, to /dev/null. This prevents
2901 ;; dos2unix from receiving its version information as a flag.
2902 (substitute* "Makefile"
2903 (("\\$\\(UNIX2DOS\\) -q --version 2>/dev/null")
2904 "$(UNIX2DOS) -q --version 1>/dev/null")))))
2905 ;; The check phase for this package only checks the md5sums of the built
2906 ;; GRF files against the md5sums of the release versions. Because we use
2907 ;; different software versions than upstream does, some of the md5sums
2908 ;; are different. However, the package is still reproducible, it's safe
2909 ;; to disable this test.
2911 #:parallel-build? #f))
2912 (native-inputs `(("dos2unix" ,dos2unix)
2914 ("grfcodec" ,grfcodec)
2916 ("python" ,python-2)))
2917 (home-page "http://dev.openttdcoop.org/projects/opengfx")
2918 (synopsis "Base graphics set for OpenTTD")
2920 "The OpenGFX projects is an implementation of the OpenTTD base grahics
2921 set that aims to ensure the best possible out-of-the-box experience.
2923 OpenGFX provides you with...
2925 @item All graphics you need to enjoy OpenTTD.
2926 @item Uniquely drawn rail vehicles for every climate.
2927 @item Completely snow-aware rivers.
2928 @item Different river and sea water.
2929 @item Snow-aware buoys.
2931 (license license:gpl2)))
2933 (define openttd-opensfx
2935 (name "openttd-opensfx")
2941 "https://binaries.openttd.org/extra/opensfx/"
2942 version "/opensfx-" version "-source.tar.gz"))
2945 "03jxgp02ks31hmsdh4xh0xcpkb70ds8jakc9pfc1y9vdrdavh4p5"))))
2946 (build-system gnu-build-system)
2948 `(("catcodec" ,catcodec)
2949 ("python" ,python-2)))
2952 (list (string-append "INSTALL_DIR=" %output
2953 "/share/games/openttd/baseset/opensfx"))
2955 (modify-phases %standard-phases
2956 (add-after 'unpack 'make-reproducible
2958 ;; Remove the time dependency of the installed tarball by setting
2959 ;; the modification times if its members to 0.
2960 (substitute* "scripts/Makefile.def"
2961 (("-cf") " --mtime=@0 -cf"))
2963 (delete 'configure))))
2964 (home-page "http://dev.openttdcoop.org/projects/opensfx")
2965 (synopsis "Base sounds for OpenTTD")
2966 (description "OpenSFX is a set of free base sounds for OpenTTD which make
2967 it possible to play OpenTTD without requiring the proprietary sound files from
2968 the original Transport Tycoon Deluxe.")
2969 (license license:cc-sampling-plus-1.0)))
2971 (define openttd-openmsx
2973 (name "openttd-openmsx")
2979 "https://binaries.openttd.org/extra/openmsx/"
2980 version "/openmsx-" version "-source.tar.gz"))
2983 "0nskq97a6fsv1v6d62zf3yb8whzhqnlh3lap3va3nzvj7csjgf7c"))))
2984 (build-system gnu-build-system)
2986 `(("python" ,python-2)))
2989 (list (string-append "INSTALL_DIR=" %output
2990 "/share/games/openttd/baseset"))
2992 (modify-phases %standard-phases
2994 (add-after 'install 'post-install
2995 ;; Rename openmsx-version to openmsx
2996 (lambda* (#:key outputs #:allow-other-keys)
2997 (let ((install-directory (string-append (assoc-ref outputs "out")
2998 "/share/games/openttd/baseset")))
2999 (rename-file (string-append install-directory "/openmsx-" ,version)
3000 (string-append install-directory "/openmsx"))
3002 (home-page "http://dev.openttdcoop.org/projects/openmsx")
3003 (synopsis "Music set for OpenTTD")
3004 (description "OpenMSX is a music set for OpenTTD which makes it possible
3005 to play OpenTTD without requiring the proprietary music from the original
3006 Transport Tycoon Deluxe.")
3007 (license license:gpl2)))
3009 (define-public openttd
3011 (inherit openttd-engine)
3015 (list (string-append "--with-midi=" (assoc-ref %build-inputs "timidity++")
3017 ,@(substitute-keyword-arguments (package-arguments openttd-engine)
3019 `(modify-phases ,phases
3020 (add-after 'install 'install-data
3021 (lambda* (#:key inputs outputs #:allow-other-keys)
3024 (copy-recursively (assoc-ref inputs input)
3025 (assoc-ref outputs "out")))
3026 (list "opengfx" "openmsx" "opensfx"))
3029 `(("timidity++" ,timidity++)
3030 ,@(package-inputs openttd-engine)))
3032 `(("opengfx" ,openttd-opengfx)
3033 ("openmsx" ,openttd-openmsx)
3034 ("opensfx" ,openttd-opensfx)
3035 ,@(package-native-inputs openttd-engine)))))
3037 (define openrct2-title-sequences
3039 (name "openrct2-title-sequences")
3044 (uri (string-append "https://github.com/OpenRCT2/title-sequences/releases/download/v"
3045 version "/title-sequence-v" version ".zip"))
3046 (file-name (string-append name "-" version ".zip"))
3049 "0qbyxrsw8hlgaq0r5d7lx7an3idy4qbfv7yiw9byhldk763n9cfw"))))
3050 (build-system trivial-build-system)
3053 ("coreutils" ,coreutils)
3056 `(#:modules ((guix build utils))
3059 (use-modules (guix build utils))
3060 (let* ((out (assoc-ref %outputs "out"))
3061 (openrct2-title-sequences (string-append out
3062 "/share/openrct2/title-sequences"))
3063 (source (assoc-ref %build-inputs "source"))
3064 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
3065 (copy-file source (string-append ,name "-" ,version ".zip"))
3066 (invoke unzip (string-append ,name "-" ,version ".zip"))
3067 (delete-file (string-append ,name "-" ,version ".zip"))
3068 (mkdir-p openrct2-title-sequences)
3069 (copy-recursively "."
3070 openrct2-title-sequences)
3072 (home-page "https://github.com/OpenRCT2/OpenRCT2")
3073 (synopsis "Title sequences for OpenRCT2")
3075 "openrct2-title-sequences is a set of title sequences for OpenRCT2.")
3076 (license license:gpl3+)))
3078 (define openrct2-objects
3080 (name "openrct2-objects")
3085 (uri (string-append "https://github.com/OpenRCT2/objects/releases/download/v"
3086 version "/objects.zip"))
3087 (file-name (string-append name "-" version ".zip"))
3089 (base32 "02apb8h553m7d6jvysgb1zahvxc1yzyygfca2iclb21b3fhpsas4"))))
3090 (build-system trivial-build-system)
3093 ("coreutils" ,coreutils)
3096 `(#:modules ((guix build utils))
3099 (use-modules (guix build utils))
3100 (let* ((out (assoc-ref %outputs "out"))
3101 (openrct2-objects (string-append out
3102 "/share/openrct2/objects"))
3103 (source (assoc-ref %build-inputs "source"))
3104 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
3105 (copy-file source (string-append ,name "-" ,version ".zip"))
3106 (invoke unzip (string-append ,name "-" ,version ".zip"))
3107 (delete-file (string-append ,name "-" ,version ".zip"))
3108 (mkdir-p openrct2-objects)
3109 (copy-recursively "."
3112 (home-page "https://github.com/OpenRCT2/OpenRCT2")
3113 (synopsis "Objects for OpenRCT2")
3115 "openrct2-objects is a set of objects for OpenRCT2.")
3116 (license license:gpl3+)))
3118 (define-public openrct2
3126 (url "https://github.com/OpenRCT2/OpenRCT2.git")
3127 (commit (string-append "v" version))))
3128 (file-name (git-file-name name version))
3130 (base32 "1rlw3w20llg36sj3bk50g661qw766ng8ma3p42sdkj8br9dw800h"))))
3131 (build-system cmake-build-system)
3133 `(#:configure-flags (list "-DDOWNLOAD_OBJECTS=OFF"
3134 "-DDOWNLOAD_TITLE_SEQUENCES=OFF")
3135 #:tests? #f ; tests require network access
3137 (modify-phases %standard-phases
3138 (add-after 'unpack 'fix-usr-share-paths&add-data
3139 (lambda* (#:key inputs outputs #:allow-other-keys)
3140 (let ((titles (assoc-ref inputs "openrct2-title-sequences"))
3141 (objects (assoc-ref inputs "openrct2-objects")))
3142 ;; Fix some references to /usr/share.
3143 (substitute* "src/openrct2/platform/Platform.Linux.cpp"
3145 (string-append (assoc-ref %outputs "out") "/share")))
3147 (string-append titles "/share/openrct2/title-sequences")
3150 (string-append objects "/share/openrct2/objects")
3152 (add-before 'configure 'get-rid-of-errors
3154 ;; Don't treat warnings as errors.
3155 (substitute* "CMakeLists.txt"
3158 (inputs `(("curl" ,curl)
3159 ("fontconfig" ,fontconfig)
3160 ("freetype" ,freetype)
3162 ("jansson" ,jansson)
3166 ("openrct2-objects" ,openrct2-objects)
3167 ("openrct2-title-sequences" ,openrct2-title-sequences)
3168 ("openssl" ,openssl)
3170 ("speexdsp" ,speexdsp)
3173 `(("pkg-config" ,pkg-config)))
3174 (home-page "https://github.com/OpenRCT2/OpenRCT2")
3175 (synopsis "Free software re-implementation of RollerCoaster Tycoon 2")
3176 (description "OpenRCT2 is a free software re-implementation of
3177 RollerCoaster Tycoon 2 (RCT2). The gameplay revolves around building and
3178 maintaining an amusement park containing attractions, shops and facilities.
3180 Note that this package does @emph{not} provide the game assets (sounds,
3182 ;; See <https://github.com/OpenRCT2/OpenRCT2/wiki/Required-RCT2-files>
3183 ;; regarding assets.
3184 (license license:gpl3+)))
3186 (define-public pinball
3191 (origin (method url-fetch)
3192 (uri (string-append "mirror://sourceforge/pinball/pinball/"
3193 "pinball-" version "/"
3194 "pinball-" version ".tar.gz"))
3197 "1f2whlrfidwfh8lvr8cspcyirc6840r5d1ajm7x99qmngygrhixs"))
3198 (patches (search-patches "pinball-const-fix.patch"
3199 "pinball-cstddef.patch"
3200 "pinball-missing-separators.patch"
3201 "pinball-src-deps.patch"
3202 "pinball-system-ltdl.patch"))))
3203 (build-system gnu-build-system)
3208 ("sdl-image" ,sdl-image)
3209 ("sdl-mixer" ,sdl-mixer)))
3212 (list (string-append "CPPFLAGS=-I"
3213 (assoc-ref %build-inputs "sdl-image")
3215 (assoc-ref %build-inputs "sdl-mixer")
3217 (home-page "http://pinball.sourceforge.net")
3218 (synopsis "Pinball simulator")
3219 (description "The Emilia Pinball Project is a pinball simulator. There
3220 are only two levels to play with, but they are very addictive.")
3221 (license license:gpl2)))
3223 (define-public pioneers
3229 (uri (string-append "http://downloads.sourceforge.net/pio/"
3230 "pioneers-" version ".tar.gz"))
3233 "037gdiiw690jw3wd1s9lxmkqx0caxyk0b4drpm7i9p28gig43q9y"))))
3234 (build-system gnu-build-system)
3235 (inputs `(("avahi" ,avahi)
3237 ("librsvg" ,librsvg)))
3238 (native-inputs `(("intltool" ,intltool)
3239 ("itstool" ,itstool)
3240 ("libxml2" ,libxml2)
3241 ("pkg-config" ,pkg-config)))
3242 (synopsis "Board game inspired by The Settlers of Catan")
3243 (description "Pioneers is an emulation of the board game The Settlers of
3244 Catan. It can be played on a local network, on the internet, and with AI
3246 (home-page "http://pio.sourceforge.net/")
3247 (license license:gpl2+)))
3249 (define-public einstein
3255 (uri (string-append "mirror://debian/pool/main/e/"
3256 "einstein/einstein_2.0.dfsg.2.orig.tar.gz"))
3259 "1hxrlv6n8py48j487i6wbb4n4vd55w0na69r7ccmmr9vmrsw5mlk"))
3260 (patches (search-patches "einstein-build.patch"))))
3261 (build-system gnu-build-system)
3263 `(("freetype" ,freetype)
3264 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf)))
3267 `(("font-dejavu" ,font-dejavu)))
3269 `(#:tests? #f ; no check target
3271 (modify-phases %standard-phases
3273 (lambda* (#:key outputs inputs #:allow-other-keys)
3274 (let ((out (assoc-ref outputs "out"))
3275 (dejavu (string-append (assoc-ref inputs "font-dejavu")
3276 "/share/fonts/truetype/DejaVuSans.ttf")))
3277 (substitute* "Makefile"
3278 (("PREFIX=/usr/local") (string-append "PREFIX=" out)))
3279 ;; The patch above registers a free font for use by the binary,
3280 ;; but the font is copied during the compile phase into a
3281 ;; resources file, so we need to make the ttf file available.
3282 (symlink dejavu "res/DejaVuSans.ttf")
3284 (synopsis "Logic puzzle game")
3285 (description "The goal of this logic game is to open all cards in a 6x6
3286 grid, using a number of hints as to their relative position. The game idea
3287 is attributed to Albert Einstein.")
3288 ;; The original home page has disappeared.
3289 (home-page (string-append "http://web.archive.org/web/20120521062745/"
3290 "http://games.flowix.com/en/index.html"))
3291 ;; License according to
3292 ;; http://web.archive.org/web/20150222180355/http://www.babichev.info/en/projects/index.html
3293 ;; The source code is a DFSG-sanitized tarball and does not contain any
3294 ;; license information.
3295 (license license:gpl3+)))
3297 (define-public powwow
3304 "https://www.hoopajoo.net/static/projects/powwow-"
3308 "10rjl63hmf62qslyhzqrbw3i2zf09dgxv65avhj0iiz0m4pbc9wy"))))
3310 `(("ncurses" ,ncurses)))
3311 (build-system gnu-build-system)
3312 (home-page "https://www.hoopajoo.net/projects/powwow.html")
3313 (synopsis "MUD and telnet client")
3315 "POWWOW is a client software which can be used for telnet as well as for
3316 @dfn{Multi-User Dungeon} (MUD). Additionally it can serve as a nice client for
3317 the chat server psyced with the specific config located at
3318 http://lavachat.symlynx.com/unix/")
3319 (license license:gpl2+)))
3321 (define-public red-eclipse
3322 (let ((release "2.0.0")
3325 (name "red-eclipse")
3326 (version (if (zero? revision)
3328 (string-append release "-"
3329 (number->string revision))))
3334 (url "https://github.com/redeclipse/base.git")
3335 (commit (string-append "v" release))
3336 (recursive? #t))) ; for game data
3337 (file-name (git-file-name name version))
3339 (base32 "0sz0mqhwx8r9n4mk3qrxw420nlsm3y0n48gd0lazgd64lfqjh3ab"))
3340 (modules '((guix build utils)))
3342 ;; Remove proprietary libraries and other pre-compiled binaries.
3344 (delete-file-recursively "bin")
3346 (build-system gnu-build-system)
3348 `(#:tests? #f ; no check target
3349 #:make-flags (list "CC=gcc" "-Csrc"
3350 (string-append "INSTDIR="
3351 (assoc-ref %outputs "out") "/bin")
3352 (string-append "prefix="
3353 (assoc-ref %outputs "out")))
3355 (modify-phases %standard-phases
3356 (add-after 'unpack 'add-store-data-package-path-as-default
3357 (lambda* (#:key outputs #:allow-other-keys)
3358 (substitute* "src/engine/server.cpp"
3359 (("data = \"data\"")
3360 (string-append "data = \""
3361 (assoc-ref outputs "out")
3362 "/share/redeclipse/data\"")))
3364 (delete 'configure) ; no configure script
3365 (add-after 'set-paths 'set-sdl-paths
3366 (lambda* (#:key inputs #:allow-other-keys)
3368 (string-append (assoc-ref inputs "sdl-union")
3370 (or (getenv "CPATH") "")))
3372 (add-after 'install 'copy-data
3373 (lambda* (#:key outputs #:allow-other-keys)
3374 (let ((out (assoc-ref outputs "out")))
3375 (copy-recursively "config"
3376 (string-append out "/config"))
3377 (copy-file "doc/examples/servinit.cfg"
3378 (string-append out "/config/servinit.cfg"))
3379 (copy-recursively "data"
3380 (string-append out "/share/redeclipse/data"))
3381 (mkdir-p (string-append out "/lib/redeclipse"))
3382 (symlink (string-append out "/share/redeclipse/data")
3383 (string-append out "/lib/redeclipse/data")))
3385 (add-after 'copy-data 'wrap-program
3386 (lambda* (#:key inputs outputs #:allow-other-keys)
3387 (let* ((out (assoc-ref outputs "out"))
3388 (bin (string-append out "/bin")))
3389 (with-directory-excursion bin
3390 (rename-file "redeclipse_linux"
3391 ".redeclipse_linux-real")
3392 (rename-file "redeclipse_server_linux"
3393 ".redeclipse_server_linux-real")
3394 (call-with-output-file "redeclipse_linux"
3396 (format port "#!~a/bin/sh
3397 # Run the thing from its home, otherwise it just bails out.
3399 exec -a \"$0\" ~a/.redeclipse_linux-real~%"
3400 (assoc-ref inputs "bash") ;implicit input
3402 (string-append bin))))
3403 (call-with-output-file "redeclipse_server_linux"
3405 (format port "#!~a/bin/sh
3406 # Run the thing from its home, otherwise it just bails out.
3408 exec -a \"$0\" ~a/.redeclipse_server_linux-real~%"
3409 (assoc-ref inputs "bash") ;implicit input
3411 (string-append bin))))
3412 (chmod "redeclipse_linux" #o555)
3413 (chmod "redeclipse_server_linux" #o555)))
3416 `(("pkg-config" ,pkg-config)))
3419 ("freetype" ,freetype)
3421 ("sdl-union" ,(sdl-union (list sdl2
3424 (home-page "https://redeclipse.net/")
3425 (synopsis "Arena shooter derived from the Cube 2 engine")
3427 "Red Eclipse is an arena shooter, created from the Cube2 engine.
3428 Offering an innovative parkour system and distinct but all potent weapons,
3429 Red Eclipse provides fast paced and accessible gameplay.")
3430 ;; The engine is under Zlib; data files are covered by the other
3431 ;; licenses. More details at file:///doc/all-licenses.txt.
3432 (license (list license:expat
3438 license:public-domain
3439 license:silofl1.1)))))
3441 (define-public grue-hunter
3443 (name "grue-hunter")
3447 (uri (string-append "https://jxself.org/grue-hunter.tar.gz"))
3450 "1hjcpy5439qs3v2zykis7hsi0i17zjs62gks3zd8mnfw9ni4i2h3"))))
3451 (build-system trivial-build-system) ; no Makefile.PL
3452 (arguments `(#:modules ((guix build utils))
3455 (use-modules (guix build utils))
3456 (use-modules (srfi srfi-1))
3458 (let* ((tarball (assoc-ref %build-inputs "tarball"))
3459 (perl (string-append (assoc-ref %build-inputs
3462 (gzip (string-append (assoc-ref %build-inputs
3465 (tar (string-append (assoc-ref %build-inputs
3468 (out (assoc-ref %outputs "out"))
3469 (bin (string-append out "/bin"))
3470 (doc (string-append out
3471 "/share/doc/grue-hunter")))
3472 (copy-file tarball "grue-hunter.tar.gz")
3473 (invoke gzip "-d" "grue-hunter.tar.gz")
3474 (invoke tar "xvf" "grue-hunter.tar")
3477 (copy-file "grue-hunter/gh.pl"
3478 (string-append bin "/grue-hunter"))
3479 (patch-shebang (string-append bin "/grue-hunter")
3482 (install-file "grue-hunter/AGPLv3.txt" doc)
3485 (inputs `(("perl" ,perl)
3488 ("tarball" ,source)))
3489 (home-page "http://jxself.org/grue-hunter.shtml")
3490 (synopsis "Text adventure game")
3492 "Grue Hunter is a text adventure game written in Perl. You must make
3493 your way through an underground cave system in search of the Grue. Can you
3494 capture it and get out alive?")
3495 (license license:agpl3+)))
3497 (define-public lierolibre
3503 (uri (string-append "https://launchpad.net/lierolibre/trunk/"
3504 version "/+download/lierolibre-"
3508 "1cf1gvsn4qq190lrf9k5bpjnqwlcfw7pajvdnh7z5r4jqw0rsbl9"))
3510 (search-patches "lierolibre-check-unaligned-access.patch"
3511 "lierolibre-try-building-other-arch.patch"
3512 "lierolibre-remove-arch-warning.patch"
3513 "lierolibre-newer-libconfig.patch"
3514 "lierolibre-is-free-software.patch"))
3515 (modules '((guix build utils)))
3518 ;; Delete pre-compiled files.
3519 (delete-file "data/LIERO.CHR")
3520 (delete-file "data/LIERO.SND")
3522 (build-system gnu-build-system)
3524 `(("imagemagick" ,imagemagick)
3525 ("pkg-config" ,pkg-config)
3526 ("util-linux" ,util-linux)
3530 ("libconfig" ,libconfig)
3531 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
3533 (home-page "https://gitlab.com/lierolibre/lierolibre")
3534 (synopsis "Old-school earthworm action game")
3536 "lierolibre is an earthworm action game where you fight another player
3537 (or the computer) underground using a wide array of weapons.
3541 @item 2 worms, 40 weapons, great playability, two game modes: Kill'em All
3542 and Game of Tag, plus AI-players without true intelligence!
3543 @item Dat nostalgia.
3544 @item Extensions via a hidden F1 menu:
3547 @item Game controller support
3548 @item Powerlevel palettes
3550 @item Ability to write game variables to plain text files.
3551 @item Ability to load game variables from both EXE and plain text files.
3552 @item Scripts to extract and repack graphics, sounds and levels.
3555 To switch between different window sizes, use F6, F7 and F8, to switch to
3556 fullscreen, use F5 or Alt+Enter.")
3557 ;; Code mainly BSD-2, some parts under Boost 1.0. All assets are WTFPL2.
3558 (license (list license:bsd-2 license:boost1.0 license:wtfpl2))))
3560 (define-public warzone2100
3562 (name "warzone2100")
3567 (uri (string-append "mirror://sourceforge/warzone2100/archives/"
3568 "unsupported/Warzone2100-"
3569 (version-major+minor version) "/" version
3570 "/warzone2100-" version ".tar.xz"))
3572 (base32 "10kmpr4cby95zwqsl1zwx95d9achli6khq7flv6xmrq30a39xazw"))))
3573 (build-system gnu-build-system)
3575 `(#:configure-flags '("--with-distributor=Guix")
3577 (modify-phases %standard-phases
3578 (add-after 'unpack 'link-tests-with-qt
3580 (substitute* "tests/Makefile.in"
3581 (("(framework_linktest_LDADD|maptest_LDADD) = " prefix)
3582 (string-append prefix "$(QT5_LIBS) ")))
3584 (add-after 'unpack 'fix-ivis-linktest
3586 (substitute* "tests/ivis_linktest.cpp"
3587 (("iV_DrawTextRotated.*;")
3588 (string-append "iV_DrawTextRotated(\"Press ESC to exit.\", "
3589 "100, 100, 0.0f, font_regular);")))
3591 (native-inputs `(("gettext" ,gettext-minimal)
3592 ("pkg-config" ,pkg-config)
3595 (inputs `(("fontconfig" ,fontconfig)
3596 ("freetype" ,freetype)
3597 ("fribidi" ,fribidi)
3599 ("harfbuzz" ,harfbuzz)
3600 ("libtheora" ,libtheora)
3601 ("libvorbis" ,libvorbis)
3602 ("libxrandr" ,libxrandr)
3606 ("qtscript" ,qtscript)
3607 ("openssl" ,openssl)
3609 (home-page "https://wz2100.net")
3610 (synopsis "3D Real-time strategy and real-time tactics game")
3612 "Warzone 2100 offers campaign, multi-player, and single-player skirmish
3613 modes. An extensive tech tree with over 400 different technologies, combined
3614 with the unit design system, allows for a wide variety of possible units and
3616 ; Everything is GPLv2+ unless otherwise specified in COPYING.NONGPL
3617 (license (list license:bsd-3
3622 license:lgpl2.1+))))
3624 (define-public starfighter
3626 (name "starfighter")
3631 "https://github.com/pr-starfighter/starfighter/releases"
3632 "/download/v" version "/starfighter-"
3633 (version-major+minor version) "-src.tar.gz"))
3636 "13vi5kh9ahws4f52421cbyw0jn7pmbnld358lqfmr6flql7ilj3b"))))
3637 (build-system gnu-build-system)
3639 `(("pkg-config" ,pkg-config)))
3643 ("sdl2-image" ,sdl2-image)
3644 ("sdl2-mixer" ,sdl2-mixer)
3645 ("sdl2-ttf" ,sdl2-ttf)))
3646 (home-page "https://pr-starfighter.github.io/")
3647 (synopsis "2D scrolling shooter game")
3649 "In the year 2579, the intergalactic weapons corporation, WEAPCO, has
3650 dominated the galaxy. Guide Chris Bainfield and his friend Sid Wilson on
3651 their quest to liberate the galaxy from the clutches of WEAPCO. Along the
3652 way, you will encounter new foes, make new allies, and assist local rebels
3653 in strikes against the evil corporation.")
3654 ;; gfx and music are under CC-BY 3.0, CC-BY-SA 3.0, CC0 or Public Domain.
3655 (license (list license:gpl3+
3659 license:public-domain))))
3661 (define-public project-starfighter
3662 (deprecated-package "project-starfighter" starfighter))
3664 (define-public chromium-bsu
3666 (name "chromium-bsu")
3667 (version "0.9.16.1")
3670 (uri (string-append "mirror://sourceforge/chromium-bsu"
3671 "/Chromium B.S.U. source code/"
3672 "chromium-bsu-" version ".tar.gz"))
3675 "0jk2w5b6s6nkzri585bbz16cif2fhqcnl5l1mq3rd98r9nil3hd1"))))
3676 (build-system gnu-build-system)
3677 (native-inputs `(("pkg-config" ,pkg-config)))
3678 (inputs `(("gettext" ,gettext-minimal)
3680 ("quesoglc" ,quesoglc)
3681 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))))
3682 (home-page "http://chromium-bsu.sourceforge.net/")
3683 (synopsis "Fast-paced, arcade-style, top-scrolling space shooter")
3685 "In this game you are the captain of the cargo ship Chromium B.S.U. and
3686 are responsible for delivering supplies to the troops on the front line. Your
3687 ship has a small fleet of robotic fighters which you control from the relative
3688 safety of the Chromium vessel.")
3689 ;; Clarified Artistic License for everything but sound, which is covered
3690 ;; by the Expat License.
3691 (license (list license:clarified-artistic license:expat))))
3693 (define-public tuxpaint
3696 (version "0.9.23") ;keep VER_DATE below in sync
3700 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint/"
3701 version "/tuxpaint-" version ".tar.gz"))
3704 "09k9pxi88r3dx6dyjwf9h85d4qpva4i29qz63dc558hg9v21k69l"))
3705 (modules '((guix build utils)))
3708 ;; Remove win32 directory which contains binary dll's and the
3709 ;; deprecated visualc directory.
3710 (for-each delete-file-recursively '("win32" "visualc"))
3711 (substitute* "Makefile"
3712 ;; Do not rely on $(GPERF) being an absolute file name
3713 (("\\[ -x \\$\\(GPERF\\) \\]")
3714 "$(GPERF) --version >/dev/null 2>&1"))
3716 (patches (search-patches "tuxpaint-stamps-path.patch"))))
3717 (build-system gnu-build-system)
3720 ("pkg-config" ,pkg-config)))
3723 ("fribidi" ,fribidi)
3724 ("gettext" ,gettext-minimal)
3726 ("librsvg" ,librsvg)
3727 ("libpaper" ,libpaper)
3729 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf sdl-image)))))
3730 ;; TODO: Use system fonts rather than those in data/fonts
3732 `(#:make-flags `("VER_DATE=2018-09-02"
3733 "GPERF=gperf" "CC=gcc"
3734 "SDL_PCNAME=sdl SDL_image SDL_mixer SDL_ttf"
3735 ,(string-append "PREFIX=" %output)
3736 "KDE_PREFIX=$(PREFIX)/share/applications"
3737 "KDE_ICON_PREFIX=$(PREFIX)/share/icons/"
3738 "COMPLETIONDIR=$(PREFIX)/etc/bash_completion.d")
3739 #:parallel-build? #f ;fails on some systems
3740 #:tests? #f ;No tests
3741 #:phases (modify-phases %standard-phases
3742 (delete 'configure) ;no configure phase
3743 (add-before 'install 'no-sys-cache
3744 (lambda _ ;do not rebuild system conf cache
3745 (substitute* "Makefile"
3746 (("kbuildsycoca4") ""))
3748 (add-after 'install 'fix-import
3749 (lambda* (#:key inputs outputs #:allow-other-keys)
3750 (let* ((out (assoc-ref outputs "out"))
3751 (net (assoc-ref inputs "netpbm"))
3752 (tpi (string-append out "/bin/tuxpaint-import")))
3754 ;; Point to installation prefix so that the default
3755 ;; configure file is found.
3756 (("/usr/local") out))
3757 ;; tuxpaint-import uses a bunch of programs from
3758 ;; netpbm, so make sure it knows where those are
3761 (,(string-append net "/bin"))))))))))
3762 (native-search-paths
3763 (list (search-path-specification
3764 (variable "TUXPAINT_STAMPS_PATH")
3765 (files '("share/tuxpaint/stamps")))))
3766 (home-page "http://www.tuxpaint.org")
3767 (synopsis "Drawing software for children")
3769 "Tux Paint is a free drawing program designed for young children (kids
3770 ages 3 and up). It has a simple, easy-to-use interface; fun sound effects;
3771 and an encouraging cartoon mascot who helps guide children as they use the
3772 program. It provides a blank canvas and a variety of drawing tools to help
3773 your child be creative.")
3774 (license license:gpl2+)))
3776 (define-public tuxpaint-stamps
3778 (name "tuxpaint-stamps")
3779 (version "2018.09.01")
3783 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-stamps/"
3784 (string-map (λ (x) (if (eq? x #\.) #\- x)) version)
3785 "/tuxpaint-stamps-" version ".tar.gz"))
3788 "1skr23k27yj3vgwfazpzxp90lb2a278gxrkr3bxw7az6zpkmb3yp"))))
3789 (build-system trivial-build-system)
3794 `(#:modules ((guix build utils))
3796 (use-modules (guix build utils))
3799 (assoc-ref %build-inputs "tar") "/bin" ":"
3800 (assoc-ref %build-inputs "gzip") "/bin"))
3801 (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
3802 (chdir (string-append ,name "-" ,version))
3803 (let ((dir (string-append %output "/share/tuxpaint/stamps")))
3805 (copy-recursively "stamps" dir))
3807 (home-page (package-home-page tuxpaint))
3808 (synopsis "Stamp images for Tux Paint")
3810 "This package contains a set of \"Rubber Stamp\" images which can be used
3811 with the \"Stamp\" tool within Tux Paint.")
3812 (license license:gpl2+)))
3814 (define-public tuxpaint-config
3816 (name "tuxpaint-config")
3817 (version "0.0.14") ;keep VER_DATE below in sync
3821 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-config/"
3822 version "/tuxpaint-config-" version ".tar.gz"))
3825 "0zkgxk436nqcp43zghkfmh397c7dvh5bwn2as7gwvv208bzyij6g"))))
3826 (build-system gnu-build-system)
3828 `(("gettext" ,gettext-minimal)))
3831 ("libpaper" ,libpaper)
3832 ;; TODO: Should the following be propagated by fltk?
3837 `(#:make-flags `("VER_DATE=2018-09-01"
3838 "CONFDIR=/etc/tuxpaint" ;don't write to store
3839 ,(string-append "PREFIX=" %output)
3840 "GNOME_PREFIX=$(PREFIX)")
3841 #:parallel-build? #f ;race conditions
3842 #:tests? #f ;no tests
3843 #:phases (modify-phases %standard-phases
3844 (delete 'configure) ;no configure phase
3845 (add-before 'install 'gzip-no-name
3847 (substitute* "Makefile"
3848 ;; tuxpaint-config compresses its own documentation;
3849 ;; make sure it uses flags for reproducibility.
3850 (("gzip") "gzip --no-name"))))
3851 (add-before 'install 'make-install-dirs
3852 (lambda* (#:key outputs #:allow-other-keys)
3853 (let ((out (assoc-ref outputs "out")))
3854 (mkdir-p (string-append out "/bin"))
3856 (home-page (package-home-page tuxpaint))
3857 (synopsis "Configure Tux Paint")
3859 "Tux Paint Config is a graphical configuration editor for Tux Paint.")
3860 (license license:gpl2))) ;no "or later" present
3862 (define-public supertux
3868 (uri (string-append "https://github.com/SuperTux/supertux/"
3869 "releases/download/v" version "/SuperTux-v"
3870 version "-Source.tar.gz"))
3871 (file-name (string-append name "-" version ".tar.gz"))
3874 "0lqch5gcq6ccnspy93z9r13bp8w2j1vrd8jhvk5kp4qhrd1f069s"))
3876 (search-patches "supertux-unbundle-squirrel.patch"))))
3879 #:configure-flags '("-DINSTALL_SUBDIR_BIN=bin"
3880 "-DUSE_SYSTEM_PHYSFS=ON")
3882 (modify-phases %standard-phases
3883 (add-after 'unpack 'patch-squirrel-path
3884 (lambda* (#:key inputs #:allow-other-keys)
3885 (let ((squirrel (assoc-ref inputs "squirrel")))
3886 (substitute* "CMakeLists.txt"
3887 (("set\\(SQUIRREL_PREFIX.*")
3888 (string-append "set(SQUIRREL_PREFIX " squirrel ")"))
3889 (("add_dependencies\\(supertux2_lib squirrel\\)") "")
3890 (("\\$\\{SQUIRREL_PREFIX\\}/include")
3891 (string-append "${SQUIRREL_PREFIX}/include/squirrel"))))
3893 (build-system cmake-build-system)
3894 (inputs `(("sdl2" ,sdl2)
3895 ("sdl2-image" ,sdl2-image)
3896 ("sdl2-mixer" ,sdl2-mixer)
3900 ("libvorbis" ,libvorbis)
3905 ("freetype" ,freetype)
3906 ("squirrel" ,squirrel)))
3908 `(("pkg-config" ,pkg-config)))
3909 (synopsis "2D platformer game")
3910 (description "SuperTux is a classic 2D jump'n run sidescroller game in
3911 a style similar to the original Super Mario games.")
3912 (home-page "https://supertux.org/")
3913 (license license:gpl3+)))
3915 (define-public tintin++
3922 (uri (string-append "mirror://sourceforge/tintin/TinTin++ Source Code/"
3923 (string-drop-right version 1)
3924 "/tintin-" version ".tar.gz"))
3927 "02qmbhzhh2sdy5b37v54gihs9k4bxmlz3j96gyx7icvx2grkbg5i"))))
3929 `(("gnutls" ,gnutls)
3931 ("readline" ,readline)
3934 '(#:tests? #f ; no test suite
3936 (modify-phases %standard-phases
3937 ;; The source is in tt/src.
3938 (add-before 'configure 'chdir
3942 (build-system gnu-build-system)
3943 (home-page "https://tintin.mudhalla.net/")
3944 (synopsis "MUD client")
3946 "TinTin++ is a MUD client which supports MCCP (Mud Client Compression
3947 Protocol), MMCP (Mud Master Chat Protocol), xterm 256 colors, most TELNET
3948 options used by MUDs, as well as those required to login via telnet on
3949 Linux / Mac OS X servers, and an auto mapper with a VT100 map display.")
3950 (license license:gpl3+)))
3957 (origin (method git-fetch)
3959 (url "https://github.com/sgimenez/laby.git")
3960 (commit (string-append name "-" version))))
3961 (file-name (git-file-name name version))
3964 "12fq9hhrxpzgfinmj9ra9ckss9yficwdlrmgjvvsq7agvh3sgyl1"))
3965 (patches (search-patches "laby-make-install.patch"))))
3966 (build-system gnu-build-system)
3968 `(("lablgtk" ,lablgtk)
3970 ("ocaml-findlib" ,ocaml-findlib)
3971 ("ocamlbuild" ,ocamlbuild)))
3974 (modify-phases %standard-phases
3976 (add-before 'build 'allow-unsafe-strings
3977 ;; Fix a build failure with ocaml >=4.06.0.
3978 ;; See <https://github.com/sgimenez/laby/issues/53>.
3980 (setenv "OCAMLPARAM" "safe-string=0,_")
3982 (add-before 'build 'set-library-path
3983 (lambda* (#:key inputs #:allow-other-keys)
3984 (let ((lablgtk (assoc-ref inputs "lablgtk")))
3985 (setenv "LD_LIBRARY_PATH"
3986 (string-append lablgtk "/lib/ocaml/stublibs"))))))
3987 #:tests? #f ; no 'check' target
3989 (list (string-append "PREFIX=" (assoc-ref %outputs "out")) "all")))
3990 (home-page "https://sgimenez.github.io/laby/")
3991 (synopsis "Programming game")
3992 (description "Learn programming, playing with ants and spider webs ;-)
3993 Your robot ant can be programmed in many languages: OCaml, Python, C, C++,
3994 Java, Ruby, Lua, JavaScript, Pascal, Perl, Scheme, Vala, Prolog. Experienced
3995 programmers may also add their own favorite language.")
3996 (license license:gpl3+)))
3998 (define-public bambam
4006 (url "https://github.com/porridge/bambam")
4007 (commit (string-append "v" version))))
4008 (file-name (git-file-name name version))
4010 (base32 "18cwd1wpyyx8y61cags9bkdhx9x858xicc4y1c9c2s0xjmgzhl3i"))))
4011 (build-system python-build-system)
4013 `(#:tests? #f ; no tests
4015 (modify-phases %standard-phases
4016 (delete 'build) ; nothing to build
4018 (lambda* (#:key outputs #:allow-other-keys)
4019 (let* ((out (assoc-ref outputs "out"))
4020 (bin (string-append out "/bin"))
4021 (share (string-append out "/share")))
4023 (copy-file "bambam.py" (string-append bin "/bambam"))
4024 (install-file "bambam.6" (string-append share "/man/man6"))
4025 (copy-recursively "data" (string-append share "/bambam/data")))
4028 `(("python-pygame" ,python-pygame)))
4029 (home-page "https://github.com/porridge/bambam")
4030 (synopsis "Keyboard mashing and doodling game for babies")
4031 (description "Bambam is a simple baby keyboard (and gamepad) masher
4032 application that locks the keyboard and mouse and instead displays bright
4033 colors, pictures, and sounds.")
4034 (license license:gpl3+)))
4036 (define-public mrrescue
4043 "https://github.com/SimonLarsen/mrrescue/releases/"
4044 "download/" version "/mrrescue" version ".love"))
4045 (file-name (string-append name "-" version ".love"))
4048 "0jwzbwkgp1l5ia6c7s760gmdirbsncp6nfqp7vqdqsfb63la9gl2"))))
4049 (build-system trivial-build-system)
4051 `(#:modules ((guix build utils))
4054 (use-modules (guix build utils))
4055 (let* ((out (assoc-ref %outputs "out"))
4056 (script (string-append out "/bin/" ,name))
4057 (data (string-append out "/share/" ,name))
4058 (source (assoc-ref %build-inputs "source"))
4059 (unzip (string-append (assoc-ref %build-inputs "unzip")
4061 (patch (string-append (assoc-ref %build-inputs "patch")
4063 (bash (string-append (assoc-ref %build-inputs "bash")
4065 (love (string-append (assoc-ref %build-inputs "love")
4068 (mkdir-p (dirname script))
4069 (with-output-to-file script
4071 (format #t "#!~a~%" bash)
4072 (format #t "exec -a ~a \"~a\" \"~a\"~%" ,name love data)))
4073 (chmod script #o755)
4075 ;; The better way to package this game would be to install *only* the
4076 ;; script above, pointing to the unextracted .love file in the store.
4077 ;; However, mrrescue 1.02e needs to be patched to work with Love 11.
4078 ;; Instead of extracting the .love file, patching it, and re-zipping
4079 ;; it to the store, simply point the script to the extracted patched
4080 ;; data directory directly.
4082 (with-directory-excursion data
4083 (invoke unzip source)
4084 (invoke patch "-p1" "-i"
4085 (assoc-ref %build-inputs "love-11.patch")))
4090 ("love-11.patch" ,(search-patch "mrrescue-support-love-11.patch"))))
4094 (home-page "https://tangramgames.dk/games/mrrescue")
4095 (synopsis "Arcade-style fire fighting game")
4097 "Mr. Rescue is an arcade styled 2d action game centered around evacuating
4098 civilians from burning buildings. The game features fast-paced fire
4099 extinguishing action, intense boss battles, a catchy soundtrack, and lots of
4100 throwing people around in pseudo-randomly generated buildings.")
4101 (license (list license:zlib ; for source code
4102 license:cc-by-sa3.0)))) ; for graphics and music assets
4104 (define-public hyperrogue
4108 ;; When updating this package, be sure to update the "hyperrogue-data"
4109 ;; origin in native-inputs.
4113 "https://www.roguetemple.com/z/hyper/hyperrogue"
4114 (string-join (string-split version #\.) "")
4118 "1w4khi2limxhgiq7xnz0rc9nzbk86bhbyzrcd5hdghnhsviaiggq"))))
4119 (build-system gnu-build-system)
4121 `(#:tests? #f ; no check target
4122 #:make-flags '("HYPERROGUE_USE_GLEW=1"
4123 "HYPERROGUE_USE_PNG=1")
4125 (modify-phases %standard-phases
4126 (add-after 'set-paths 'set-sdl-paths
4127 (lambda* (#:key inputs #:allow-other-keys)
4129 (string-append (getenv "CPATH") ":"
4130 (assoc-ref inputs "sdl-union")
4133 (lambda* (#:key inputs outputs #:allow-other-keys)
4134 (let* ((out (assoc-ref outputs "out"))
4135 (share-dir (string-append out "/share/hyperrogue"))
4136 (dejavu-dir (string-append
4137 (assoc-ref inputs "font-dejavu")
4138 "/share/fonts/truetype"))
4139 (dejavu-font "DejaVuSans-Bold.ttf")
4140 (music-file "hyperrogue-music.txt"))
4141 ;; Fix font and music paths.
4142 (substitute* "basegraph.cpp"
4144 (string-append dejavu-dir "/" dejavu-font)))
4145 (substitute* music-file
4147 (string-append share-dir "/sounds/")))
4148 (substitute* "sound.cpp"
4149 (("musicfile = \"\"")
4150 (string-append "musicfile = \""
4151 share-dir "/" music-file "\"")))
4152 ;; Disable build machine CPU optimizations and warnings treated
4154 (substitute* "Makefile"
4155 (("-march=native") "")
4159 (lambda* (#:key inputs outputs #:allow-other-keys)
4160 (let* ((out (assoc-ref outputs "out"))
4161 (bin (string-append out "/bin"))
4162 (share-dir (string-append out "/share/hyperrogue")))
4164 (install-file "hyperrogue" bin)
4165 (install-file "hyperrogue-music.txt" share-dir))
4167 (add-after 'install 'install-data
4168 (lambda* (#:key inputs outputs #:allow-other-keys)
4169 (let* ((data (assoc-ref inputs "hyperrogue-data"))
4170 (out (assoc-ref outputs "out"))
4171 (sounds (string-append out "/share/hyperrogue/sounds"))
4172 (unzip (string-append (assoc-ref inputs "unzip") "/bin/unzip")))
4173 ;; Extract media license information into sounds directory.
4174 (invoke unzip "-j" data
4177 (string-join (string-split ,version #\.) "")
4178 "/sounds/credits.txt") "-d" sounds)
4179 ;; Extract sounds and music into sounds directory.
4180 (invoke "unzip" "-j" data
4183 (string-join (string-split ,version #\.) "")
4184 "/*.ogg") "-d" sounds)))))))
4186 `(("hyperrogue-data"
4191 "https://www.roguetemple.com/z/hyper/hyperrogue"
4192 (string-join (string-split version #\.) "")
4196 "1k81zrbq5gmrccjac1i5c6v8j2iilfg2vwrnm8snjmmcnh5z1fgj"))))
4199 `(("font-dejavu" ,font-dejavu)
4202 ("sdl-union" ,(sdl-union (list sdl
4206 (home-page "https://www.roguetemple.com/z/hyper/")
4207 (synopsis "Non-euclidean graphical rogue-like game")
4209 "HyperRogue is a game in which the player collects treasures and fights
4210 monsters -- rogue-like but for the fact that it is played on the hyperbolic
4211 plane and not in euclidean space.
4213 In HyperRogue, the player can move through different parts of the world, which
4214 are home to particular creatures and may be subject to their own rules of
4217 While the game can use ASCII characters to display the the classical rogue
4218 symbols, it still needs graphics to render the non-euclidean world.")
4219 (license (list license:bsd-3 ; glew.c, mtrand.*
4220 license:cc-by-sa3.0 ; music
4221 license:cc-by-sa4.0 ; sounds
4223 license:public-domain ; direntx.*, some sounds
4224 license:zlib ; savepng.*
4225 license:gpl2+)))) ; remaining files
4227 (define-public kobodeluxe
4233 (uri (string-append "http://olofson.net/kobodl/download/KoboDeluxe-"
4234 version ".tar.bz2"))
4237 "0b2wvdpnmaibsy419c16dfwj5kvd3pccby2aaqvm964x74592yqg"))
4238 (patches (search-patches
4239 "kobodeluxe-const-charp-conversion.patch"
4240 "kobodeluxe-enemies-pipe-decl.patch"
4241 "kobodeluxe-graphics-window-signed-char.patch"
4242 "kobodeluxe-manpage-minus-not-hyphen.patch"
4243 "kobodeluxe-midicon-segmentation-fault.patch"
4244 "kobodeluxe-paths.patch"))))
4245 (build-system gnu-build-system)
4248 (list (string-append "CPPFLAGS=-I"
4249 (assoc-ref %build-inputs "sdl-union")
4253 ("sdl-union" ,(sdl-union (list sdl sdl-image)))))
4254 (synopsis "Shooter with space station destruction")
4256 "Kobo Deluxe is an enhanced version of Akira Higuchi's XKobo graphical game
4257 for Un*x systems with X11.")
4258 (home-page "http://olofson.net/kobodl/")
4259 (license license:gpl2+)))
4261 (define-public freeciv
4268 (uri (list (string-append
4269 "http://files.freeciv.org/stable/freeciv-"
4272 "mirror://sourceforge/freeciv/Freeciv%20"
4273 (version-major+minor version) "/" version
4274 "/freeciv-" version ".tar.bz2")))
4276 (base32 "13vc2xg1cf19rhbnr7k38b56b2hdapqymq5vma1l69kn7hyyz0b1"))))
4277 (build-system gnu-build-system)
4280 ("cyrus-sasl" ,cyrus-sasl)
4282 ("sdl-mixer" ,sdl-mixer)
4285 `(("pkg-config" ,pkg-config)))
4286 (home-page "http://www.freeciv.org/")
4287 (synopsis "Turn-based empire building strategy game")
4288 (description "Freeciv is a turn-based empire building strategy game
4289 inspired by the history of human civilization. The game commences in
4290 prehistory and your mission is to lead your tribe from the Stone Age
4291 into the Space Age.")
4292 (license license:gpl2+)))
4294 (define-public no-more-secrets
4296 (name "no-more-secrets")
4302 (url "https://github.com/bartobri/no-more-secrets.git")
4303 (commit (string-append "v" version))))
4304 (file-name (git-file-name name version))
4306 (base32 "1zfv4qabikf8w9winsr4brxrdvs3f0d7xvydksyx8bydadsm2v2h"))))
4307 (build-system gnu-build-system)
4310 #:make-flags (list "CC=gcc" "all-ncurses"
4311 (string-append "prefix="
4312 (assoc-ref %outputs "out")))
4314 (modify-phases %standard-phases
4315 (delete 'configure))))
4317 `(("ncurses" ,ncurses)))
4318 (home-page "https://github.com/bartobri/no-more-secrets")
4319 (synopsis "Recreation of data decryption effect in \"Sneakers\"")
4321 "@code{No More Secrets} provides a command line tool called \"nms\"
4322 that recreates the famous data decryption effect seen on screen in the 1992
4325 This command works on piped data. Pipe any ASCII or UTF-8 text to nms, and
4326 it will apply the hollywood effect, initially showing encrypted data, then
4327 starting a decryption sequence to reveal the original plaintext characters.")
4328 (license license:expat)))
4330 (define-public megaglest-data
4332 (name "megaglest-data")
4338 "https://github.com/MegaGlest/megaglest-data"
4339 "/releases/download/" version "/megaglest-data-"
4343 "0ipgza33z89fw3si32iafm981f3fvm0zldvbxj29whghd2k3rpj3"))))
4344 (build-system cmake-build-system)
4347 (home-page "https://megaglest.org/")
4348 (synopsis "Data files for MegaGlest")
4349 (description "This package contains the data files required for MegaGlest.")
4350 (license license:cc-by-sa3.0)))
4352 (define-public megaglest
4360 "https://github.com/MegaGlest/megaglest-source"
4361 "/releases/download/" version "/megaglest-source-"
4365 "1ffck3ii1wp5k3nn5p0ga06jgp7pzk4zw0xln3xim2w7qrxzdzh9"))))
4366 (build-system cmake-build-system)
4369 ("fontconfig" ,fontconfig)
4372 ("libjpeg-turbo" ,libjpeg-turbo)
4373 ("megaglest-data" ,megaglest-data)
4375 ("miniupnpc" ,miniupnpc)
4377 ("libircclient" ,libircclient)
4379 ("libvorbis" ,libvorbis)
4382 ("wxwidgets" ,wxwidgets)))
4384 `(("cppunit" ,cppunit)
4385 ("pkg-config" ,pkg-config)))
4388 (list (string-append "-DCUSTOM_DATA_INSTALL_PATH="
4389 (assoc-ref %build-inputs "megaglest-data")
4391 "-DBUILD_MEGAGLEST_TESTS=ON")
4393 (modify-phases %standard-phases
4394 (add-after 'unpack 'fix-ini-search-path
4395 (lambda* (#:key outputs #:allow-other-keys)
4396 (substitute* "source/glest_game/global/config.cpp"
4397 (("/usr/share/megaglest/")
4398 (string-append (assoc-ref outputs "out")
4399 "/share/megaglest/"))))))
4400 #:test-target "megaglest_tests"))
4401 (home-page "https://megaglest.org/")
4402 (synopsis "3D real-time strategy (RTS) game")
4403 (description "MegaGlest is a cross-platform 3D real-time strategy (RTS)
4404 game, where you control the armies of one of seven different factions: Tech,
4405 Magic, Egypt, Indians, Norsemen, Persian or Romans.")
4406 (license license:gpl2+)))
4408 (define-public freegish
4409 (let ((commit "8795cd7adc95957883f2d3465eb9036a774667a7")
4413 (version (string-append "0-" revision "." (string-take commit 9)))
4417 (url "https://github.com/freegish/freegish.git")
4419 (file-name (git-file-name name version))
4422 "1p1zf5qqagmcpi1db2bs02cnalpy3qiymp6yzan7k1bhmv859gsx"))
4423 (modules '((guix build utils)))
4424 ;; The audio files in the "music" directory are licensed under
4425 ;; CC-BY-NC, so we delete them.
4428 (delete-file-recursively "music")
4430 (build-system cmake-build-system)
4432 `(#:tests? #f ; no tests included
4434 (list "-DCMAKE_INSTALL_FHS=ON")
4436 (modify-phases %standard-phases
4437 (add-after 'unpack 'set-DATAPATH
4438 (lambda* (#:key outputs #:allow-other-keys)
4439 (substitute* "CMakeLists.txt"
4440 (("^option\\(INSTALL_FHS" line)
4441 (string-append "add_definitions(-DDATAPATH=\""
4442 (assoc-ref outputs "out") "/share/freegish\")\n"
4446 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))
4448 ("libvorbis" ,libvorbis)
4453 (home-page "https://github.com/freegish/freegish")
4454 (synopsis "Side-scrolling physics platformer with a ball of tar")
4455 (description "In FreeGish you control Gish, a ball of tar who lives
4456 happily with his girlfriend Brea, until one day a mysterious dark creature
4457 emerges from a sewer hole and pulls her below ground.")
4458 ;; The textures are available under the Expat license. All other assets
4459 ;; (including levels) are covered under CC-BY-SA or public domain. The
4460 ;; source code is under GPLv2+.
4461 (license (list license:gpl2+
4463 license:public-domain
4464 license:cc-by-sa3.0)))))
4466 (define-public cdogs-sdl
4473 (url "https://github.com/cxong/cdogs-sdl.git")
4475 (file-name (git-file-name name version))
4478 "13gyv2hzk43za1n3lsjnd5v64xlzfzq7n10scd1rcbsnk1n007zr"))))
4479 (build-system cmake-build-system)
4482 (list (string-append "-DCDOGS_DATA_DIR="
4483 (assoc-ref %outputs "out")
4484 "/share/cdogs-sdl/"))))
4488 ("sdl2-image" ,sdl2-image)
4489 ("sdl2-mixer" ,sdl2-mixer)))
4490 (home-page "https://cxong.github.io/cdogs-sdl/")
4491 (synopsis "Classic overhead run-and-gun game")
4492 (description "C-Dogs SDL is a classic overhead run-and-gun game,
4493 supporting up to 4 players in co-op and deathmatch modes. Customize your
4494 player, choose from many weapons, and blast, slide and slash your way through
4495 over 100 user-created campaigns.")
4496 ;; GPLv2+ for code (includes files under BSD-2 and BSD-3),
4497 ;; CC0/CC-BY/CC-BY-SA for assets.
4498 (license (list license:gpl2+
4503 license:cc-by-sa3.0))))
4511 (uri (string-append "mirror://sourceforge/kiki/kiki-src/"
4512 version "/kiki-" version "-src.tgz"))
4515 "0ihjdsxbn8z3cz0gpcprafiipcqaiskgdnh1rhmw4qff8dszalbn"))
4516 (modules '((guix build utils)))
4519 (for-each delete-file (find-files "." "\\.dll$"))
4522 (search-patches "kiki-level-selection-crash.patch"
4523 "kiki-makefile.patch"
4524 "kiki-missing-includes.patch"
4525 "kiki-portability-64bit.patch"))))
4526 (build-system gnu-build-system)
4528 `(#:tests? #f ; there are no tests
4529 #:make-flags '("CXX=g++")
4531 (modify-phases %standard-phases
4533 (lambda* (#:key inputs outputs #:allow-other-keys)
4534 (setenv "CPLUS_INCLUDE_PATH"
4535 (string-append (assoc-ref inputs "sdl-union")
4537 (assoc-ref inputs "python")
4538 "/include/python2.7"))
4539 (substitute* "src/main/main.cpp"
4540 (("#include <SDL.h>" line)
4541 (string-append line "
4542 #define K_INCLUDE_GLUT
4543 #include \"KIncludeTools.h\""))
4544 (("// initialize SDL" line)
4545 (string-append "glutInit(&argc,argv);\n" line)))
4546 (substitute* "src/main/KikiController.cpp"
4547 (("getenv\\(\"KIKI_HOME\"\\)")
4548 (string-append "\"" (assoc-ref outputs "out") "/share/kiki/\"")))
4549 (substitute* "linux/Makefile"
4551 (string-append line " -fpermissive"))
4552 (("PYTHON_VERSION=.*") "PYTHON_VERSION=2.7")
4554 (string-append "PYTHONHOME = "
4555 (assoc-ref inputs "python")
4557 (("\\$\\(GLLIBS\\)" line)
4558 (string-append line " -lm -lpython2.7")))
4559 (substitute* "src/main/KikiPythonWidget.h"
4560 (("#define __KikiPythonWidget" line)
4561 (string-append line "\n#include \"KikiPython.h\"")))
4563 (add-before 'build 'build-kodilib
4564 (lambda* (#:key make-flags #:allow-other-keys)
4565 (with-directory-excursion "kodilib/linux"
4566 (apply invoke "make" make-flags))))
4567 (add-after 'build-kodilib 'chdir
4568 (lambda _ (chdir "linux") #t))
4570 (lambda* (#:key outputs #:allow-other-keys)
4571 (let* ((out (assoc-ref outputs "out"))
4572 (bin (string-append out "/bin"))
4573 (share (string-append out "/share/kiki")))
4576 (install-file "kiki" bin)
4577 (copy-recursively "../py" (string-append share "/py"))
4578 (copy-recursively "../sound" (string-append share "/sound"))
4582 ;; Kiki builds fine with freeglut 3.0.0 but segfaults on start.
4583 ("freeglut" ,freeglut-2.8)
4584 ("sdl-union" ,(sdl-union (list sdl
4587 ("python" ,python-2)))
4590 (home-page "http://kiki.sourceforge.net/")
4591 (synopsis "3D puzzle game")
4592 (description "Kiki the nano bot is a 3D puzzle game. It is basically a
4593 mixture of the games Sokoban and Kula-World. Your task is to help Kiki, a
4594 small robot living in the nano world, repair its maker.")
4595 ;; See <http://metadata.ftp-master.debian.org/changelogs/main/k/
4596 ;; kiki-the-nano-bot/kiki-the-nano-bot_1.0.2+dfsg1-4_copyright>
4597 ;; for a statement from the author.
4598 (license license:public-domain)))
4600 (define-public kiki-the-nano-bot
4601 (deprecated-package "kiki-the-nano-bot" kiki))
4603 (define-public teeworlds
4610 (url "https://github.com/teeworlds/teeworlds.git")
4612 (file-name (git-file-name name version))
4615 "1lxdb1k2cdj2421vyz1z0ximzfnpkh2y4y84zpn2gqsa1nzwbryb"))
4616 (modules '((guix build utils)
4621 (snippet ; remove bundled libraries except md5
4622 '(let ((base-dir "src/engine/external/"))
4623 (for-each (compose (cut delete-file-recursively <>)
4624 (cut string-append base-dir <>))
4625 (remove (cut string-match "(^.)|(^md5$)" <>)
4626 (scandir base-dir)))
4628 (build-system gnu-build-system)
4630 `(#:tests? #f ; no tests included
4631 #:modules ((guix build gnu-build-system)
4635 (modify-phases %standard-phases
4637 (lambda* (#:key outputs #:allow-other-keys)
4638 ;; Embed path to assets.
4639 (substitute* "src/engine/shared/storage.cpp"
4640 (("#define DATA_DIR.*")
4641 (string-append "#define DATA_DIR \""
4642 (assoc-ref outputs "out")
4643 "/share/teeworlds/data"
4646 ;; Bam expects all files to have a recent time stamp.
4647 (for-each (cut utime <> 1 1)
4650 ;; Do not use bundled libraries.
4651 (substitute* "bam.lua"
4652 (("local json = Compile.+$")
4654 settings.link.libs:Add(\"jsonparser\")")
4655 (("local png = Compile.+$")
4657 settings.link.libs:Add(\"pnglite\")")
4658 (("local wavpack = Compile.+$")
4659 "local wavpack = nil
4660 settings.link.libs:Add(\"wavpack\")")
4661 (("if config\\.zlib\\.value == 1")
4662 "if config.zlib.value"))
4663 (substitute* "src/engine/client/graphics_threaded.cpp"
4664 (("engine/external/pnglite/pnglite\\.h")
4666 (substitute* "src/engine/client/sound.cpp"
4667 (("engine/external/wavpack/wavpack\\.h")
4668 "wavpack/wavpack.h"))
4672 (invoke "bam" "-a" "-v" "conf=release")))
4674 (lambda* (#:key outputs #:allow-other-keys)
4675 (let* ((arch ,(system->linux-architecture
4676 (or (%current-target-system)
4677 (%current-system))))
4678 (build (string-append "build/" (if (string=? arch "i386")
4681 (data-built (string-append build "data/"))
4682 (out (assoc-ref outputs "out"))
4683 (bin (string-append out "/bin/"))
4684 (data (string-append out "/share/teeworlds/data/")))
4685 (for-each (cut install-file <> bin)
4686 (map (cut string-append build <>)
4687 '("teeworlds" "teeworlds_srv")))
4688 (copy-recursively data-built data)
4691 `(("freetype" ,freetype)
4693 ("json-parser" ,json-parser)
4695 ("pnglite" ,pnglite)
4697 ("sdl2-image" ,sdl2-image)
4698 ("sdl2-mixer" ,sdl2-mixer)
4699 ("wavpack" ,wavpack)
4703 ("python" ,python-wrapper)
4704 ("pkg-config" ,pkg-config)))
4705 (home-page "https://www.teeworlds.com")
4706 (synopsis "2D retro multiplayer shooter game")
4707 (description "Teeworlds is an online multiplayer game. Battle with up to
4708 16 players in a variety of game modes, including Team Deathmatch and Capture
4709 The Flag. You can even design your own maps!")
4710 (license license:bsd-3)))
4712 (define-public enigma
4718 (uri (string-append "mirror://sourceforge/enigma-game/"
4719 "Release%20" version "/enigma-"
4723 "00ffh9pypj1948pg3q9sjp1nmiabh52p5c8wpg9n1dcfgl3cywnq"))))
4724 (build-system gnu-build-system)
4727 (list "--with-system-enet")
4729 (modify-phases %standard-phases
4730 (add-after 'unpack 'find-sdl
4732 (substitute* "configure"
4733 (("SDL_ttf.h") "SDL/SDL_ttf.h"))
4734 (substitute* '("tools/ttf2bmf.cc"
4735 "lib-src/enigma-core/ecl_font.cc"
4736 "lib-src/enigma-core/ecl_video.cc"
4737 "lib-src/enigma-core/ecl_buffer.hh"
4738 "src/SoundEngine.cc"
4739 "src/SoundEngine.hh"
4740 "src/MusicManager.cc"
4741 "src/MusicManager.hh"
4745 (("#include \"SDL_(image|ttf|mixer|types|syswm|mutex).h\"" line header)
4746 (string-append "#include \"SDL/SDL_" header ".h\"")))
4747 (substitute* "src/main.cc"
4748 (("#include <SDL_(image|ttf|mixer).h>" line header)
4749 (string-append "#include \"SDL/SDL_" header ".h\"")))
4752 `(("xerces-c" ,xerces-c)
4753 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
4757 `(("pkg-config" ,pkg-config)
4758 ("imagemagick" ,imagemagick)))
4759 (home-page "https://www.nongnu.org/enigma")
4760 (synopsis "Puzzle game with a dexterity component")
4761 (description "Enigma is a puzzle game with 550 unique levels. The object
4762 of the game is to find and uncover pairs of identically colored ‘Oxyd’ stones.
4763 Simple? Yes. Easy? Certainly not! Hidden traps, vast mazes, laser beams,
4764 and most of all, countless hairy puzzles usually block your direct way to the
4765 Oxyd stones. Enigma’s game objects (and there are hundreds of them, lest you
4766 get bored) interact in many unexpected ways, and since many of them follow the
4767 laws of physics (Enigma’s special laws of physics, that is), controlling them
4768 with the mouse isn’t always trivial.")
4769 (license license:gpl2+)))
4771 (define-public chroma
4777 (uri (string-append "http://level7.org.uk/chroma/download/chroma-"
4778 version ".tar.bz2"))
4781 "047sf00x71xbmi8bqrhfbmr9bk89l2gbykkqsfpw4wz6yfjscs6y"))))
4782 (build-system gnu-build-system)
4784 `(#:tests? #f)) ; no tests included
4786 `(("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
4787 ("freetype" ,freetype)
4788 ("ncurses" ,ncurses)
4789 ("fontconfig" ,fontconfig)
4790 ("libxft" ,libxft)))
4792 `(("pkg-config" ,pkg-config)))
4793 (home-page "http://level7.org.uk/chroma/")
4794 (synopsis "Abstract puzzle game")
4795 (description "Chroma is an abstract puzzle game. A variety of colourful
4796 shapes are arranged in a series of increasingly complex patterns, forming
4797 fiendish traps that must be disarmed and mysterious puzzles that must be
4798 manipulated in order to give up their subtle secrets. Initially so
4799 straightforward that anyone can pick it up and begin to play, yet gradually
4800 becoming difficult enough to tax even the brightest of minds.")
4801 (license license:gpl2+)))
4803 (define-public fillets-ng
4809 (uri (string-append "mirror://sourceforge/fillets/"
4810 "Fish%20Fillets%20-%20Next%20Generation/"
4811 version "/fillets-ng-" version ".tar.gz"))
4814 "1nljp75aqqb35qq3x7abhs2kp69vjcj0h1vxcpdyn2yn2nalv6ij"))))
4815 (build-system gnu-build-system)
4818 (list (string-append "--with-lua="
4819 (assoc-ref %build-inputs "lua")))
4821 (list (string-append "CFLAGS=-I"
4822 (assoc-ref %build-inputs "sdl-union")
4824 (string-append "CXXFLAGS=-I"
4825 (assoc-ref %build-inputs "sdl-union")
4828 (modify-phases %standard-phases
4829 ;; Lua 5.1 does not provide it.
4830 (add-after 'unpack 'do-not-link-with-lualib
4832 (substitute* "configure"
4835 (add-after 'install 'install-data
4836 (lambda* (#:key inputs outputs #:allow-other-keys)
4837 (let ((data (string-append (assoc-ref outputs "out")
4838 "/share/games/fillets-ng")))
4840 (invoke "tar" "-xvf"
4841 (assoc-ref inputs "fillets-ng-data")
4842 "--strip-components=1"
4845 `(("sdl-union" ,(sdl-union (list sdl
4849 ("fribidi" ,fribidi)
4853 `(("pkg-config" ,pkg-config)
4857 (uri (string-append "mirror://sourceforge/fillets/"
4858 "Fish%20Fillets%20-%20Next%20Generation/"
4859 version "/fillets-ng-data-" version ".tar.gz"))
4862 "169p0yqh2gxvhdilvjc2ld8aap7lv2nhkhkg4i1hlmgc6pxpkjgh"))))))
4863 (home-page "http://fillets.sourceforge.net/")
4864 (synopsis "Puzzle game")
4865 (description "Fish Fillets NG is strictly a puzzle game. The goal in
4866 every of the seventy levels is always the same: find a safe way out. The fish
4867 utter witty remarks about their surroundings, the various inhabitants of their
4868 underwater realm quarrel among themselves or comment on the efforts of your
4869 fish. The whole game is accompanied by quiet, comforting music.")
4870 (license license:gpl2+)))
4872 (define-public fish-fillets-ng
4873 (deprecated-package "fish-fillets-ng" fillets-ng))
4875 (define-public crawl
4883 ;; Older releases get moved into a versioned directory
4884 (string-append "http://crawl.develz.org/release/"
4885 (version-major+minor version) "/stone_soup-"
4886 version "-nodeps.tar.xz")
4887 ;; Only the latest release is in this directory
4888 (string-append "http://crawl.develz.org/release/stone_soup-"
4889 version "-nodeps.tar.xz")))
4891 (base32 "0kdq6s12myxfdg75ma9x3ys2nd0xwb3xm2ynlmhg4628va0pnixr"))
4892 (patches (search-patches "crawl-upgrade-saves.patch"))))
4893 (build-system gnu-build-system)
4895 `(("lua51" ,lua-5.1)
4896 ("ncurses" ,ncurses)
4903 ("python" ,python-wrapper)
4904 ("python-pyyaml" ,python-pyyaml)
4905 ("pkg-config" ,pkg-config)))
4908 (let* ((sqlite (assoc-ref %build-inputs "sqlite"))
4909 (out (assoc-ref %outputs "out")))
4910 (list (string-append "SQLITE_INCLUDE_DIR=" sqlite "/include")
4911 (string-append "prefix=" out)
4913 ;; Don't compile with SSE on systems which don't have it.
4914 ,@(match (%current-system)
4915 ((or "i686-linux" "x86_64-linux")
4917 (_ '("NOSSE=TRUE")))
4918 ;; don't build any bundled dependencies
4924 (modify-phases %standard-phases
4925 (add-after 'unpack 'find-SDL-image
4927 (substitute* "source/windowmanager-sdl.cc"
4928 (("SDL_image.h") "SDL2/SDL_image.h"))
4932 (lambda* (#:key inputs outputs make-flags #:allow-other-keys)
4933 (setenv "HOME" (getcwd))
4934 ;; Fake a terminal for the test cases.
4935 (setenv "TERM" "xterm-256color")
4936 ;; Run the tests that don't require a debug build.
4937 (apply invoke "make" "nondebugtest"
4938 (format #f "-j~d" (parallel-job-count))
4939 ;; Force command line build for test cases.
4940 (append make-flags '("GAME=crawl" "TILES="))))))))
4941 (synopsis "Roguelike dungeon crawler game")
4942 (description "Dungeon Crawl Stone Soup (also known as \"Crawl\" or DCSS
4943 for short) is a roguelike adventure through dungeons filled with dangerous
4944 monsters in a quest to find the mystifyingly fabulous Orb of Zot.")
4945 (home-page "https://crawl.develz.org")
4946 (license (list license:gpl2+
4954 (define-public dungeon-crawl-stone-soup
4955 (deprecated-package "dungeon-crawl-stone-soup" crawl))
4957 ;; The linter here claims that patch file names should start with the package
4958 ;; name. But, in this case, the patches are inherited from crawl with the
4959 ;; "crawl-" prefix instead of "crawl-tiles-".
4960 (define-public crawl-tiles
4963 (name "crawl-tiles")
4965 (substitute-keyword-arguments
4966 (package-arguments crawl)
4967 ((#:make-flags flags)
4968 `(let ((dejavu (assoc-ref %build-inputs "font-dejavu")))
4970 (string-append "PROPORTIONAL_FONT=" dejavu
4971 "/share/fonts/truetype/DejaVuSans.ttf")
4972 (string-append "MONOSPACED_FONT=" dejavu
4973 "/share/fonts/truetype/DejaVuSansMono.ttf")
4975 ;; Rename the executable to allow parallel installation with crawl.
4979 `(,@(package-inputs crawl)
4980 ("font-dejavu" ,font-dejavu)
4981 ("freetype6" ,freetype)
4985 ("sdl2-image" ,sdl2-image)
4986 ("sdl2-mixer" ,sdl2-mixer)))
4988 `(,@(package-native-inputs crawl)
4989 ("pngcrush" ,pngcrush)
4991 (synopsis "Graphical roguelike dungeon crawler game")))
4993 (define-public dungeon-crawl-stone-soup-tiles
4994 (deprecated-package "dungeon-crawl-stone-soup-tiles" crawl-tiles))
4996 (define-public lugaru
5002 (uri (string-append "https://bitbucket.org/osslugaru/lugaru/downloads/"
5003 "lugaru-" version ".tar.xz"))
5006 "15zgcshy22q51rm72zi6y9z7qlgnz5iw3gczjdlir4bqmxy4gspk"))))
5007 (build-system cmake-build-system)
5010 (list "-DSYSTEM_INSTALL=ON")
5014 `(("pkg-config" ,pkg-config)))
5018 ("libjpeg" ,libjpeg-turbo)
5021 ("vorbis" ,libvorbis)
5023 (home-page "https://osslugaru.gitlab.io")
5024 (synopsis "Cross-platform third-person action game")
5025 (description "Lugaru is a third-person action game. The main character,
5026 Turner, is an anthropomorphic rebel bunny rabbit with impressive combat skills.
5027 In his quest to find those responsible for slaughtering his village, he uncovers
5028 a far-reaching conspiracy involving the corrupt leaders of the rabbit republic
5029 and the starving wolves from a nearby den. Turner takes it upon himself to
5030 fight against their plot and save his fellow rabbits from slavery.")
5031 (license (list license:gpl2+ ; code
5034 license:cc-by-sa4.0))))
5036 (define-public 0ad-data
5039 (version "0.0.23b-alpha")
5043 (uri (string-append "https://releases.wildfiregames.com/0ad-"
5044 version "-unix-data.tar.xz"))
5045 (file-name (string-append name "-" version ".tar.xz"))
5048 "04x7729hk6zw1xj3n4s4lvaviijsnbjf5rhzvjxlr5fygvg4l6z1"))
5049 (modules '((guix build utils)))
5052 (for-each (lambda (name)
5053 (let* ((dir (string-append "binaries/data/mods/" name))
5054 (file (string-append dir "/" name ".zip"))
5055 (unzip #$(file-append unzip "/bin/unzip")))
5056 (invoke unzip "-d" dir file)
5057 (delete-file file)))
5060 (build-system trivial-build-system)
5061 (native-inputs `(("tar" ,tar)
5064 `(#:modules ((guix build utils))
5067 (use-modules (guix build utils))
5068 (let ((out (assoc-ref %outputs "out"))
5069 (source (assoc-ref %build-inputs "source"))
5070 (tar (string-append (assoc-ref %build-inputs "tar") "/bin/tar"))
5071 (xz-path (string-append (assoc-ref %build-inputs "xz") "/bin")))
5072 (setenv "PATH" xz-path)
5074 (invoke tar "xvf" source "-C" out "--strip=3")))))
5075 (synopsis "Data files for 0ad")
5076 (description "0ad-data provides the data files required by the game 0ad.")
5077 (home-page "https://play0ad.com")
5078 (license (list (license:fsdg-compatible
5079 "http://tavmjong.free.fr/FONTS/ArevCopyright.txt"
5080 "Similar to the license of the Bitstream Vera fonts.")
5081 (license:fsdg-compatible
5082 "https://www.gnome.org/fonts/#Final_Bitstream_Vera_Fonts")
5092 (version "0.0.23b-alpha")
5096 (uri (string-append "https://releases.wildfiregames.com/0ad-"
5097 version "-unix-build.tar.xz"))
5098 (file-name (string-append name "-" version ".tar.xz"))
5101 "0draa53xg69i5qhqym85658m45xhwkbiimaldj4sr3703rjgggq1"))))
5102 ;; A snippet here would cause a build failure because of timestamps
5103 ;; reset. See https://bugs.gnu.org/26734.
5105 `(("0ad-data" ,0ad-data)
5111 ("libsodium" ,libsodium)
5112 ("libvorbis" ,libvorbis)
5113 ("libxcursor" ,libxcursor)
5114 ("libxml2" ,libxml2)
5115 ("miniupnpc" ,miniupnpc)
5116 ("mozjs-38" ,mozjs-38)
5119 ("wxwidgets" ,wxwidgets)
5123 ("cmake" ,cmake-minimal)
5125 ("pkg-config" ,pkg-config)
5126 ("python-2" ,python-2)))
5127 (build-system gnu-build-system)
5129 `(#:make-flags '("config=release" "verbose=1" "-C" "build/workspaces/gcc")
5131 (modify-phases %standard-phases
5132 (add-after 'unpack 'delete-bundles
5134 (delete-file-recursively "libraries/source/spidermonkey")
5136 (add-after 'unpack 'fix-x11-includes
5138 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5139 (("<Xlib.h>") "<X11/Xlib.h>"))
5140 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5141 (("<Xatom.h>") "<X11/Xatom.h>"))
5142 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5143 (("<Xcursor/Xcursor.h>") "<X11/Xcursor/Xcursor.h>"))
5146 (lambda* (#:key inputs outputs #:allow-other-keys)
5147 (let* ((jobs (number->string (parallel-job-count)))
5148 (out (assoc-ref outputs "out"))
5149 (lib (string-append out "/lib"))
5150 (data (string-append out "/share/0ad")))
5151 (setenv "JOBS" (string-append "-j" jobs))
5153 (with-directory-excursion "build/workspaces"
5154 (invoke "./update-workspaces.sh"
5155 (string-append "--libdir=" lib)
5156 (string-append "--datadir=" data)
5157 ;; TODO: "--with-system-nvtt"
5158 "--with-system-mozjs38")))))
5161 (lambda* (#:key inputs outputs #:allow-other-keys)
5163 (let* ((out (assoc-ref outputs "out"))
5164 (bin (string-append out "/bin"))
5165 (lib (string-append out "/lib"))
5166 (data (string-append out "/share/0ad"))
5167 (applications (string-append out "/share/applications"))
5168 (pixmaps (string-append out "/share/pixmaps"))
5169 (0ad-data (assoc-ref inputs "0ad-data")))
5171 (copy-recursively "data" data)
5172 (for-each (lambda (file)
5173 (symlink (string-append 0ad-data "/" file)
5174 (string-append data "/" file)))
5175 '("config" "mods/mod" "mods/public" "tools"))
5177 (for-each (lambda (file)
5178 (install-file file lib))
5179 (find-files "system" "\\.so$"))
5181 (install-file "system/pyrogenesis" bin)
5182 (with-directory-excursion bin
5183 (symlink "pyrogenesis" "0ad"))
5185 (with-directory-excursion "../build/resources"
5186 (install-file "0ad.desktop" applications)
5187 (install-file "0ad.png" pixmaps))
5189 (add-after 'install 'check
5191 (with-directory-excursion "system"
5192 (invoke "./test")))))))
5193 (home-page "https://play0ad.com")
5194 (synopsis "3D real-time strategy game of ancient warfare")
5195 (description "0 A.D. is a real-time strategy (RTS) game of ancient
5196 warfare. It's a historically-based war/economy game that allows players to
5197 relive or rewrite the history of twelve ancient civilizations, each depicted
5198 at their peak of economic growth and military prowess.
5200 0ad needs a window manager that supports 'Extended Window Manager Hints'.")
5201 (license (list license:bsd-2
5212 ;; There have been no official releases.
5213 (define-public open-adventure
5214 (let* ((commit "d43854f0f6bb8e9eea7fbce80348150e7e7fc34d")
5217 (name "open-adventure")
5218 (version (string-append "2.5-" revision "." (string-take commit 7)))
5222 (url "https://gitlab.com/esr/open-adventure")
5224 (file-name (string-append name "-" version "-checkout"))
5227 "08bwrvf4axb1rsfd6ia1fddsky9pc1p350vjskhaakg2czc6dsk0"))))
5228 (build-system gnu-build-system)
5230 `(#:make-flags (list "CC=gcc")
5231 #:parallel-build? #f ; not supported
5233 (modify-phases %standard-phases
5235 (lambda* (#:key inputs outputs #:allow-other-keys)
5236 ;; Linenoise is meant to be included, so we have to
5237 ;; copy it into the working directory.
5238 (let* ((linenoise (assoc-ref inputs "linenoise"))
5239 (noisepath (string-append linenoise "/include/linenoise"))
5240 (out (assoc-ref outputs "out")))
5241 (copy-recursively noisepath "linenoise"))
5243 (add-before 'build 'use-echo
5245 (substitute* "tests/Makefile"
5246 (("/bin/echo") (which "echo")))
5248 (add-after 'build 'build-manpage
5250 ;; This target is missing a dependency
5251 (substitute* "Makefile"
5253 (string-append line " advent.adoc")))
5254 (invoke "make" ".adoc.6")))
5255 ;; There is no install target
5257 (lambda* (#:key outputs #:allow-other-keys)
5258 (let* ((out (assoc-ref outputs "out"))
5259 (bin (string-append out "/bin"))
5260 (man (string-append out "/share/man/man6")))
5261 (install-file "advent" bin)
5262 (install-file "advent.6" man))
5265 `(("asciidoc" ,asciidoc)
5266 ("linenoise" ,linenoise)
5268 ("python-pyyaml" ,python-pyyaml)))
5269 (home-page "https://gitlab.com/esr/open-adventure")
5270 (synopsis "Colossal Cave Adventure")
5271 (description "The original Colossal Cave Adventure from 1976 was the
5272 origin of all text adventures, dungeon-crawl (computer) games, and
5273 computer-hosted roleplaying games. This is the last version released by
5274 Crowther & Woods, its original authors, in 1995. It has been known as
5275 \"adventure 2.5\" and \"430-point adventure\".")
5276 (license license:bsd-2))))
5278 (define-public tome4
5282 (synopsis "Single-player, RPG roguelike game set in the world of Eyal")
5286 (uri (string-append "https://te4.org/dl/t-engine/t-engine4-src-"
5287 version ".tar.bz2"))
5289 (base32 "0283hvms5hr29zr0grd6gq059k0hg8hcz3fsmwjmysiih8790i68"))
5290 (modules '((guix build utils)))
5293 (substitute* '("src/music.h" "src/tSDL.h")
5294 (("#elif defined(__FreeBSD__)" line)
5296 line " || defined(__GNUC__)")))
5297 (substitute* '("src/tgl.h")
5298 (("#include <GL/glext.h>") ""))
5300 (build-system gnu-build-system)
5302 `(("unzip" ,unzip)))
5304 `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
5306 ("premake4" ,premake4)
5308 ("vorbis" ,libvorbis)
5309 ("luajit" ,luajit)))
5311 `(#:make-flags '("CC=gcc" "config=release")
5312 ;; XXX: Building in parallel occasionally causes this build failure:
5313 ;; ../src/luajit2/src/host/buildvm.c:73:10: fatal error: buildvm_arch.h:
5314 ;; No such file or directory
5315 #:parallel-build? #f
5316 #:phases (modify-phases %standard-phases
5320 (invoke "premake4" "gmake")
5322 (add-after 'set-paths 'set-sdl-paths
5323 (lambda* (#:key inputs #:allow-other-keys)
5325 (string-append (assoc-ref inputs "sdl-union")
5330 ;; premake doesn't provide install target
5332 (lambda* (#:key inputs outputs #:allow-other-keys)
5333 (let* ((out (assoc-ref outputs "out"))
5334 (usr (string-append out "/usr"))
5335 (bin (string-append out "/bin"))
5336 (licenses (string-append out "/share/licenses"))
5337 (documents (string-append out "/share/doc"))
5338 (pixmaps (string-append out "/share/pixmaps"))
5339 (icon "te4-icon.png")
5340 (data (string-append out "/share/" ,name))
5341 (applications (string-append
5342 out "/share/applications"))
5343 (unzip (string-append
5344 (assoc-ref inputs "unzip") "/bin/unzip"))
5345 (wrapper (string-append bin "/" ,name)))
5350 "game/engines/te4-" ,version ".teae")
5352 "data/gfx/" icon) "-d" pixmaps)
5354 (install-file "t-engine" data)
5356 (with-output-to-file wrapper
5361 ;; No bootstrap code found,
5362 ;; defaulting to working directory
5365 "exec -a tome4 ./t-engine \"$@\"\n"))))
5366 (chmod wrapper #o555)
5368 (for-each (lambda (file)
5369 (install-file file licenses))
5370 '("COPYING" "COPYING-MEDIA"))
5372 (for-each (lambda (file)
5373 (install-file file documents))
5374 '("CONTRIBUTING" "CREDITS"))
5376 (copy-recursively "bootstrap" (string-append
5378 (copy-recursively "game" (string-append data "/game"))
5380 (mkdir-p applications)
5381 (with-output-to-file (string-append applications "/"
5388 Comment=" ,synopsis "\n"
5393 Categories=Game;RolePlaying;\n")))))
5395 (home-page "https://te4.org")
5396 (description "Tales of Maj’Eyal (ToME) RPG, featuring tactical turn-based
5397 combat and advanced character building. Play as one of many unique races and
5398 classes in the lore-filled world of Eyal, exploring random dungeons, facing
5399 challenging battles, and developing characters with your own tailored mix of
5400 abilities and powers. With a modern graphical and customisable interface,
5401 intuitive mouse control, streamlined mechanics and deep, challenging combat,
5402 Tales of Maj’Eyal offers engaging roguelike gameplay for the 21st century.")
5403 (license license:gpl3+)))
5405 (define-public tales-of-maj-eyal
5406 (deprecated-package "tales-of-maj-eyal" tome4))
5408 (define-public quakespasm
5415 (uri (string-append "mirror://sourceforge/quakespasm/Source/quakespasm-"
5418 (base32 "0qm0j5drybvvq8xadfyppkpk3rxqsxbywzm6iwsjwdf0iia3gss5"))))
5421 #:make-flags '("CC=gcc"
5424 "USE_CODEC_MIKMOD=1"
5427 #:phases (modify-phases %standard-phases
5429 (add-after 'unpack 'fix-makefile-paths
5430 (lambda* (#:key outputs #:allow-other-keys)
5431 (let ((out (assoc-ref outputs "out")))
5432 (mkdir-p (string-append out "/bin"))
5433 (substitute* "Quake/Makefile"
5434 (("/usr/local/games")
5435 (string-append out "/bin")))
5437 (build-system gnu-build-system)
5438 (inputs `(("libmikmod" ,libmikmod)
5439 ("libvorbis" ,libvorbis)
5444 (synopsis "First person shooter engine for Quake 1")
5445 (description "Quakespasm is a modern engine for id software's Quake 1.
5446 It includes support for 64 bit CPUs, custom music playback, a new sound driver,
5447 some graphical niceities, and numerous bug-fixes and other improvements.")
5448 (home-page "http://quakespasm.sourceforge.net/")
5449 (license license:gpl2+)))
5451 (define-public vkquake
5453 (inherit quakespasm)
5460 (url "https://github.com/Novum/vkQuake.git")
5462 (file-name (git-file-name name version))
5464 (base32 "1iwin8j5kbyrknbkhjgpy8nmm7pxqzr0daa9gn7p38qhg2mh0a39"))))
5467 (let ((vulkanlib (string-append (assoc-ref %build-inputs
5468 "vulkan-loader") "/lib")))
5472 "USE_CODEC_MIKMOD=1"
5474 (string-append "LDFLAGS=-Wl,-rpath=" vulkanlib)
5476 #:phases (modify-phases %standard-phases
5478 (add-after 'unpack 'fix-makefile-paths
5479 (lambda* (#:key outputs #:allow-other-keys)
5480 (let ((vulkan (assoc-ref %build-inputs
5482 (out (assoc-ref outputs "out")))
5483 (mkdir-p (string-append out "/bin"))
5484 (substitute* "Quake/Makefile" ((" /usr")
5485 (string-append " " out)))
5486 (substitute* "Quake/Makefile" (("/games")
5487 (string-append "/bin")))
5488 (substitute* "Quake/Makefile" (("..VULKAN_SDK.") vulkan))
5490 ,@(strip-keyword-arguments '(#:make-flags #:phases)
5491 (package-arguments quakespasm))))
5492 (inputs `(("vulkan-headers" ,vulkan-headers)
5493 ("vulkan-loader" ,vulkan-loader)
5494 ,@(package-inputs quakespasm)))
5495 (description "vkquake is a modern engine for id software's Quake 1.
5496 It includes support for 64 bit CPUs, custom music playback, a new sound driver,
5497 some graphical niceities, and numerous bug-fixes and other improvements.")
5498 (home-page "https://github.com/Novum/vkQuake")))
5500 (define-public yamagi-quake2
5502 (name "yamagi-quake2")
5507 (uri (string-append "https://deponie.yamagi.org/quake2/quake2-"
5511 "0psinbg25mysd58k99s1n34w31w5hj1vppb39gdjb0zqi6sl6cps"))))
5512 (build-system gnu-build-system)
5517 ;; link openAL instead of using dlopen at runtime
5518 "DLOPEN_OPENAL=\"no\""
5519 ;; an optional directory where it will look for quake2 data files
5520 ;; in addition to the current working directory
5521 "WITH_SYSTEMWIDE=yes"
5522 "WITH_SYSTEMDIR=\"/opt/quake2\"")
5524 (modify-phases %standard-phases
5527 (lambda* (#:key outputs #:allow-other-keys)
5528 (let ((out (assoc-ref outputs "out")))
5529 (mkdir-p (string-append out "/lib"))
5530 (mkdir-p (string-append out "/bin"))
5531 ;; The yamagi-quake2 binary must be in the same directory
5532 ;; as it's engine libraries, but symlinking it to /bin is okay
5533 ;; https://github.com/yquake2/yquake2/blob/master/stuff/packaging.md
5534 (copy-recursively "release"
5535 (string-append out "/lib/yamagi-quake2"))
5536 (symlink (string-append out "/lib/yamagi-quake2/quake2")
5537 (string-append out "/bin/yamagi-quake2"))
5538 (symlink (string-append out "/lib/yamagi-quake2/q2ded")
5539 (string-append out "/bin/yamagi-q2ded"))))))))
5540 (inputs `(("sdl2" ,sdl2)
5542 ("libvorbis" ,libvorbis)
5544 ("openal" ,openal)))
5545 (native-inputs `(("pkg-config" ,pkg-config)))
5546 (synopsis "First person shooter engine based on quake2")
5547 (description "Yamagi Quake II is an enhanced client for id Software's Quake II.
5548 The main focus is an unchanged single player experience like back in 1997,
5549 thus the gameplay and the graphics are unaltered. However the user may use one
5550 of the unofficial retexturing packs. In comparison with the official client,
5551 over 1000 bugs were fixed and an extensive code audit done,
5552 making Yamagi Quake II one of the most solid Quake II implementations available.")
5553 (home-page "https://www.yamagi.org/quake2/")
5554 (license (list license:gpl2+ ; game and server
5555 (license:non-copyleft ; info-zip
5557 "See Info-Zip section.")
5558 license:public-domain)))) ; stb
5560 (define-public nudoku
5566 (uri (string-append "https://github.com/jubalh/nudoku/"
5567 "releases/download/" version
5568 "/nudoku-" version ".tar.xz"))
5571 "0nr2j2z07nxk70s8xnmmpzccxicf7kn5mbwby2kg6aq8paarjm8k"))))
5572 (build-system gnu-build-system)
5573 (inputs `(("ncurses" ,ncurses)))
5574 (home-page "https://jubalh.github.io/nudoku/")
5575 (synopsis "Sudoku for your terminal")
5576 (description "Nudoku is a ncurses-based Sudoku game for your terminal.")
5577 (license license:gpl3+)))
5579 (define-public the-butterfly-effect
5581 (name "the-butterfly-effect")
5587 (url "https://github.com/the-butterfly-effect/tbe.git")
5588 (commit (string-append "v" version))))
5589 (file-name (git-file-name name version))
5592 "1ag2cp346f9bz9qy6za6q54id44d2ypvkyhvnjha14qzzapwaysj"))))
5593 (build-system gnu-build-system)
5596 (modify-phases %standard-phases
5598 ;; There is no "install" phase. By default, tbe is installed
5599 ;; in the build directory. Provide our own installation.
5601 (lambda* (#:key outputs #:allow-other-keys)
5602 (let* ((out (assoc-ref outputs "out"))
5603 (bin (string-append out "/bin"))
5604 (share (string-append out "/share")))
5605 (install-file "usr/games/tbe" bin)
5607 (copy-recursively "usr/share" share)
5609 ;; Test suite requires a running Xorg server. Even when
5610 ;; provided, it fails with "D-Bus library appears to be
5611 ;; incorrectly set up; failed to read machine uuid: Failed to
5612 ;; open "/etc/machine-id": No such file or directory" along
5613 ;; with multiple "QPainter:: ... Painter not active" warnings.
5616 `(("qtbase" ,qtbase)
5619 `(("cmake" ,cmake-minimal)
5620 ("gettext-minimal" ,gettext-minimal)
5621 ("qttools" ,qttools)))
5622 (synopsis "Realistic physics puzzle game")
5623 (description "The Butterfly Effect (tbe) is a game that uses
5624 realistic physics simulations to combine lots of simple mechanical
5625 elements to achieve a simple goal in the most complex way possible.")
5626 (home-page "http://the-butterfly-effect.org/")
5627 ;; Main license is GPL2-only. However, artwork is distributed
5628 ;; under various licenses, listed here.
5629 (license (list license:gpl2 license:public-domain license:expat
5630 license:cc-by-sa3.0 license:gpl3+ license:wtfpl2))))
5632 (define-public pioneer
5635 (version "20200203")
5639 (url "https://github.com/pioneerspacesim/pioneer.git")
5641 (file-name (git-file-name name version))
5644 "1011xsi94jhw98mhm8kryq8ajig0qfbrdx5xdasi92bd4nk7lcp8"))))
5645 (build-system cmake-build-system)
5647 `(("pkg-config" ,pkg-config)))
5649 `(("assimp" ,assimp)
5651 ("freetype" ,freetype)
5655 ("libsigc++" ,libsigc++)
5656 ("libvorbis" ,libvorbis)
5657 ("lua" ,lua-5.2) ;not compatible with 5.3
5659 ("sdl" ,(sdl-union (list sdl2 sdl2-image)))))
5661 `(#:tests? #f ;tests are broken
5662 #:configure-flags (list "-DUSE_SYSTEM_LIBLUA:BOOL=YES"
5663 (string-append "-DPIONEER_DATA_DIR="
5664 %output "/share/games/pioneer"))))
5665 (home-page "http://pioneerspacesim.net")
5666 (synopsis "Game of lonely space adventure")
5668 "Pioneer is a space adventure game set in our galaxy at the turn of the
5669 31st century. The game is open-ended, and you are free to eke out whatever
5670 kind of space-faring existence you can think of. Look for fame or fortune by
5671 exploring the millions of star systems. Turn to a life of crime as a pirate,
5672 smuggler or bounty hunter. Forge and break alliances with the various
5673 factions fighting for power, freedom or self-determination. The universe is
5674 whatever you make of it.")
5675 (license license:gpl3)))
5677 (define-public badass
5678 (let ((commit "3c3cd669b4fc8f73a102e3702788f7b28dc47dbb")
5682 (version (git-version "0.0" revision commit))
5686 (url "https://github.com/umayr/badass.git")
5688 (file-name (git-file-name name version))
5691 "05c9vdcb5ym3z0n5ll3v39mw4yl9jcjnlydmn0yl89ai9pv71zb6"))))
5692 (build-system go-build-system)
5694 '(#:import-path "github.com/umayr/badass"))
5695 (synopsis "Hacking contribution graphs in git")
5697 "Badass generates false commits for a range of dates, essentially
5698 hacking the gamification of contribution graphs on platforms such as
5700 (home-page "https://github.com/umayr/badass")
5701 (license license:expat))))
5703 (define-public colobot
5706 (version "0.1.12-alpha")
5711 (url "https://github.com/colobot/colobot.git")
5712 (commit (string-append "colobot-gold-" version))
5713 (recursive? #t))) ;for "data/" subdir
5714 (file-name (git-file-name name version))
5717 "1c181cclkrnspgs07lvndg2c81cjq3smkv7qim8c470cj88rcrp2"))))
5718 (build-system cmake-build-system)
5720 `(#:tests? #f ;no test
5722 (modify-phases %standard-phases
5723 (add-after 'unpack 'make-git-checkout-writable
5725 (for-each make-file-writable (find-files "."))
5727 (add-after 'unpack 'fix-directories
5729 (substitute* "CMakeLists.txt"
5730 (("(\\$\\{CMAKE_INSTALL_PREFIX\\})/games" _ prefix)
5731 (string-append prefix "/bin"))
5732 (("(\\$\\{CMAKE_INSTALL_PREFIX\\}/share)/games/colobot" _ prefix)
5733 (string-append prefix "/colobot")))
5735 (add-after 'fix-directories 'install-music
5736 ;; Retrieve and install music files.
5737 (lambda* (#:key inputs #:allow-other-keys)
5738 ;; Installation process tries to download music files using
5739 ;; "wget" if not already present. Since we are going another
5740 ;; route, skip "wget" command check.
5741 (substitute* "data/music/CMakeLists.txt"
5742 (("find_program\\(WGET wget\\)") ""))
5743 ;; Populate "music/" directory.
5744 (let ((data (assoc-ref inputs "colobot-music")))
5745 (invoke "tar" "-xvf" data "-Cdata/music"))
5751 (uri (string-append "https://colobot.info/files/music/"
5752 "colobot-music_ogg_" version ".tar.gz"))
5755 "1s86cd36rwkff329mb1ay1wi5qqyi35564ppgr3f4qqz9wj9vs2m"))))
5756 ("gettext" ,gettext-minimal)
5757 ("librsvg" ,librsvg)
5759 ("python" ,python-wrapper)))
5765 ("libsndfile" ,libsndfile)
5766 ("libvorbis" ,libvorbis)
5769 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-ttf)))))
5770 (synopsis "Educational programming strategy game")
5771 (description "Colobot: Gold Edition is a real-time strategy game, where
5772 you can program your units (bots) in a language called CBOT, which is similar
5773 to C++ and Java. Your mission is to find a new planet to live and survive.
5774 You can save humanity and get programming skills!")
5775 (home-page "https://colobot.info")
5776 (license license:gpl3+)))
5778 (define-public gzdoom
5786 (url "https://github.com/coelckers/gzdoom.git")
5787 (commit (string-append "g" version))))
5788 (file-name (git-file-name name version))
5790 (base32 "0i4hyg72z84fc6ca2ic9q82q5cbgrbd7bynl3kpkypxvyasq08wz"))
5791 (patches (search-patches "gzdoom-search-in-installed-share.patch"
5792 "gzdoom-find-system-libgme.patch"))
5793 (modules '((guix build utils)))
5796 ;; Remove some bundled libraries. XXX There are more, but removing
5797 ;; them would require, at least, patching the build system.
5798 (with-directory-excursion "libraries"
5799 (delete-file-recursively "bzip2")
5800 (delete-file-recursively "game-music-emu")
5801 (delete-file-recursively "jpeg")
5802 (delete-file-recursively "zlib"))
5807 (let ((out (assoc-ref %outputs "out")))
5810 "-DCMAKE_CXX_FLAGS:="
5811 "-DSHARE_DIR=\\\"" out "/share/\\\" "
5812 "-DGUIX_OUT_PK3=\\\"" out "/share/games/doom\\\"")
5814 ;; The build requires some extra convincing not to use the bundled
5815 ;; libgme previously deleted in the soure snippet.
5816 "-DFORCE_INTERNAL_GME=OFF"
5818 ;; Link libraries at build time instead of loading them at run time.
5820 "-DDYN_FLUIDSYNTH=OFF"
5823 "-DDYN_SNDFILE=OFF"))
5825 (modify-phases %standard-phases
5826 (add-before 'configure 'fix-referenced-paths
5827 (lambda* (#:key inputs outputs #:allow-other-keys)
5828 (let ((fluid-3 (assoc-ref inputs "fluid-3"))
5829 (timidity++ (assoc-ref inputs "timidity++"))
5830 (out (assoc-ref outputs "out")))
5833 "src/CMakeLists.txt"
5834 (("COMMAND /bin/sh")
5835 (string-append "COMMAND " (which "sh"))))
5838 "libraries/zmusic/mididevices/music_fluidsynth_mididevice.cpp"
5839 (("/usr/share/sounds/sf2/FluidR3_GM.sf2")
5840 (string-append fluid-3 "/share/soundfonts/FluidR3Mono_GM.sf3")))
5843 "libraries/zmusic/mididevices/music_timiditypp_mididevice.cpp"
5844 (("exename = \"timidity\"")
5845 (string-append "exename = \"" timidity++ "/bin/timidity\"")))
5847 (build-system cmake-build-system)
5848 (inputs `(("bzip2" ,bzip2)
5849 ("fluid-3" ,fluid-3)
5850 ("fluidsynth" ,fluidsynth)
5853 ("libjpeg" ,libjpeg)
5854 ("libsndfile" ,libsndfile)
5859 ("timidity++" ,timidity++)
5861 (native-inputs `(("pkg-config" ,pkg-config)
5863 (synopsis "Modern Doom 2 source port")
5864 (description "GZdoom is a port of the Doom 2 game engine, with a modern
5865 renderer. It improves modding support with ZDoom's advanced mapping features
5866 and the new ZScript language. In addition to Doom, it supports Heretic, Hexen,
5867 Strife, Chex Quest, and fan-created games like Harmony, Hacx and Freedoom.")
5868 (home-page "https://zdoom.org/index")
5869 ;; The source uses x86 assembly
5870 (supported-systems '("x86_64-linux" "i686-linux"))
5871 (license (list license:gpl3+ ; gzdoom game
5872 license:lgpl3+ ; gzdoom renderer
5873 license:expat ; gdtoa
5874 (license:non-copyleft ; modified dumb
5875 "file://dumb/licence.txt"
5876 "Dumb license, explicitly GPL compatible.")))))
5878 (define-public odamex
5886 "mirror://sourceforge/odamex/Odamex/" version "/"
5887 "odamex-src-" version ".tar.gz"))
5889 (base32 "1ywbqkfacc9fc5di3dn95y5ah2ys9i241j64q3f37a73x92llw1i"))))
5890 (build-system cmake-build-system)
5891 (arguments `(#:tests? #f)) ; no tests
5894 ("sdl-mixer" ,sdl-mixer)
5897 ("alsa-lib" ,alsa-lib)))
5898 (home-page "https://odamex.net/")
5899 (synopsis "Multiplayer Doom port")
5900 (description "Odamex is a modification of the Doom engine that
5901 allows players to easily join servers dedicated to playing Doom
5903 (license license:gpl2+)))
5905 (define-public chocolate-doom
5907 (name "chocolate-doom")
5911 (uri (string-append "https://www.chocolate-doom.org/downloads/"
5918 "1f6sw6qa9z0a70dsjh5cs45fkyyxw68s7vkqlykihz8cjcisdbkk"))))
5919 (build-system gnu-build-system)
5920 (inputs `(("sdl2-net" ,sdl2-net)
5921 ("sdl2-mixer" , sdl2-mixer)
5924 `(("pkg-config" ,pkg-config)))
5925 (synopsis "Doom source port preserving the look, feel, and bugs of vanilla
5928 "Chocolate Doom takes a different approach to other source ports. Its
5929 aim is to accurately reproduce the experience of playing Vanilla Doom. It is
5930 a conservative, historically accurate Doom source port, which is compatible
5931 with the thousands of mods and levels that were made before the Doom source
5932 code was released. Rather than flashy new graphics, Chocolate Doom's main
5933 features are its accurate reproduction of the game as it was played in the
5934 1990s. The project is developed around a carefully-considered philosophy that
5935 intentionally restricts which features may be added (and rejects any that
5937 (home-page "https://www.chocolate-doom.org/wiki/index.php/Chocolate_Doom")
5938 (license license:gpl2)))
5940 (define-public crispy-doom
5942 (inherit chocolate-doom)
5943 (name "crispy-doom")
5948 (url "https://github.com/fabiangreffrath/crispy-doom.git")
5949 (commit (string-append "crispy-doom-" version))))
5950 (file-name (git-file-name name version))
5952 (base32 "1gqivy4pxasy7phyznixsagylf9f70bk33b0knpfzzlks6cc6zzj"))))
5955 (package-native-inputs chocolate-doom)
5956 `(("automake" ,automake)
5957 ("autoreconf" ,autoconf))))
5960 (modify-phases %standard-phases
5962 ;; The bundled autogen.sh script unconditionally runs ./configure.
5963 (lambda _ (invoke "autoreconf" "-vif"))))))
5964 (synopsis "Limit-removing enhanced-resolution Doom source port based on
5967 "Crispy Doom is a friendly fork of Chocolate Doom that provides a higher
5968 display resolution, removes the static limits of the Doom engine and offers
5969 further optional visual, tactical and physical enhancements while remaining
5970 entirely config file, savegame, netplay and demo compatible with the
5972 (home-page "https://www.chocolate-doom.org/wiki/index.php/Crispy_Doom")))
5974 (define shlomif-cmake-modules
5977 (uri (string-append "https://bitbucket.org/shlomif/shlomif-cmake-modules/"
5978 "raw/c505713d7a7cda608f97f01577e5868a711b883e/"
5979 "shlomif-cmake-modules/Shlomif_Common.cmake"))
5981 (base32 "0kx9s1qqhhzprp1w3b67xmsns0n0v506bg5hgrshxaxpy6lqiwb2"))))
5983 (define-public rinutils
5990 (url "https://github.com/shlomif/rinutils.git")
5992 (file-name (git-file-name name version))
5995 "1fpxyg86ggv0h7j8aarjjxrvwlj7jycd3bw066c0dwkq2fszxsf2"))))
5998 ;; The following is only needed for tests.
5999 ("perl-file-find-object" ,perl-file-find-object)
6000 ("perl-test-differences" ,perl-test-differences)
6001 ("perl-class-xsaccessor" ,perl-class-xsaccessor)
6002 ("perl-io-all" ,perl-io-all)
6003 ("perl-test-runvalgrind" ,perl-test-runvalgrind)
6004 ("cmake-rules" ,shlomif-cmake-modules)
6005 ("pkg-config" ,pkg-config)))
6007 `(("cmocka" ,cmocka)
6008 ("perl-env-path", perl-env-path)
6009 ("perl-inline" ,perl-inline)
6010 ("perl-inline-c" ,perl-inline-c)
6011 ("perl-string-shellquote" ,perl-string-shellquote)
6012 ("perl-test-trailingspace" ,perl-test-trailingspace)
6013 ("perl-file-find-object-rule" ,perl-file-find-object-rule)
6014 ("perl-text-glob" ,perl-text-glob)
6015 ("perl-number-compare" ,perl-number-compare)
6016 ("perl-moo" ,perl-moo)))
6019 (modify-phases %standard-phases
6020 (add-after 'unpack 'fix-build-env
6021 (lambda* (#:key inputs #:allow-other-keys)
6022 (use-modules (guix build utils))
6023 (let* ((cmake-rules (assoc-ref inputs "cmake-rules")))
6024 (copy-file cmake-rules
6025 (string-append "cmake/"
6026 (strip-store-file-name cmake-rules)))
6030 (with-directory-excursion "../source"
6031 (setenv "FCS_TEST_BUILD" "1")
6032 (setenv "RINUTILS_TEST_BUILD" "1")
6033 ;; TODO: Run tests after setting RINUTILS_TEST_TIDY to `1',
6034 ;; which requires tidy-all.
6035 ;; (setenv "RINUTILS_TEST_TIDY" "1")
6036 (invoke "perl" "CI-testing/continuous-integration-testing.pl")))))))
6037 (build-system cmake-build-system)
6038 (home-page "https://www.shlomifish.org/open-source/projects/")
6039 (synopsis "C11 / gnu11 utilities C library")
6040 (description "This package provides C11 / gnu11 utilities C library")
6041 (license license:expat)))
6043 (define-public fortune-mod
6045 (name "fortune-mod")
6051 (url "https://github.com/shlomif/fortune-mod")
6052 (commit (string-append "fortune-mod-" version))))
6053 (file-name (git-file-name name version))
6056 "0laxgqsdg7kvpvvm1f54b94ga9r0cr9g3ffii8avg8fy65x6pzc9"))))
6057 (build-system cmake-build-system)
6059 `(#:test-target "check"
6061 (modify-phases %standard-phases
6062 (add-after 'unpack 'fix-build-env
6063 (lambda* (#:key inputs #:allow-other-keys)
6064 (use-modules (guix build utils))
6065 (let* ((cmake-rules (assoc-ref inputs "cmake-rules")))
6066 (copy-file cmake-rules
6067 (string-append "fortune-mod/cmake/"
6068 (strip-store-file-name cmake-rules)))
6069 (chdir "fortune-mod")
6070 ;; TODO: Valgrind tests fail for some reason.
6071 ;; Similar issue: https://github.com/shlomif/fortune-mod/issues/21 (?)
6072 (delete-file "tests/t/valgrind.t")
6074 (add-after 'install 'fix-install-directory
6075 (lambda* (#:key outputs #:allow-other-keys)
6076 ;; Move binary from "games/" to "bin/" and remove the latter. This
6077 ;; is easier than patching CMakeLists.txt since the tests hard-code
6078 ;; the location as well.
6079 (let* ((out (assoc-ref outputs "out"))
6080 (bin (string-append out "/bin"))
6081 (games (string-append out "/games")))
6082 (rename-file (string-append games "/fortune")
6083 (string-append bin "/fortune"))
6086 (inputs `(("recode" ,recode)))
6089 ;; The following is only needed for tests.
6090 ("perl-file-find-object" ,perl-file-find-object)
6091 ("perl-test-differences" ,perl-test-differences)
6092 ("perl-class-xsaccessor" ,perl-class-xsaccessor)
6093 ("perl-io-all" ,perl-io-all)
6094 ("perl-test-runvalgrind" ,perl-test-runvalgrind)
6095 ("cmake-rules" ,shlomif-cmake-modules)
6096 ("rinutils" ,rinutils)))
6097 (home-page "http://www.shlomifish.org/open-source/projects/fortune-mod/")
6098 (synopsis "The Fortune Cookie program from BSD games")
6099 (description "Fortune is a command-line utility which displays a random
6100 quotation from a collection of quotes.")
6101 (license license:bsd-4)))
6103 (define xonotic-data
6105 (name "xonotic-data")
6110 (uri (string-append "http://dl.xonotic.org/xonotic-"
6112 (file-name (string-append name "-" version ".zip"))
6115 "1mcs6l4clvn7ibfq3q69k2p0z6ww75rxvnngamdq5ic6yhq74bx2"))))
6116 (build-system trivial-build-system)
6118 `(("unzip" ,unzip)))
6120 `(#:modules ((guix build utils))
6123 (use-modules (guix build utils))
6124 (let* ((out (assoc-ref %outputs "out"))
6125 (xonotic (string-append out "/share/xonotic"))
6126 (source (assoc-ref %build-inputs "source"))
6127 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
6128 (copy-file source (string-append ,name "-" ,version ".zip"))
6129 (invoke unzip (string-append ,name "-" ,version ".zip"))
6133 (copy-recursively "data"
6134 (string-append xonotic "/data"))
6135 (copy-recursively "server"
6136 (string-append xonotic "/server"))
6137 (install-file "key_0.d0pk" xonotic)))))
6138 (home-page "http://xonotic.org")
6139 (synopsis "Data files for Xonotic")
6141 "Xonotic-data provides the data files required by the game Xonotic.")
6142 (license (list license:gpl2+
6143 (license:x11-style "file://server/rcon.pl")))))
6145 (define-public xonotic
6152 (uri (string-append "http://dl.xonotic.org/xonotic-"
6153 version "-source.zip"))
6154 (file-name (string-append name "-" version ".zip"))
6157 "0axxw04fyz6jlfqd0kp7hdrqa0li31sx1pbipf2j5qp9wvqicsay"))))
6158 (build-system gnu-build-system)
6160 `(#:configure-flags (list (string-append "--prefix="
6161 (assoc-ref %outputs "out"))
6162 "--disable-rijndael")
6164 (modify-phases %standard-phases
6165 (add-before 'configure 'make-darkplaces
6166 (lambda* (#:key outputs #:allow-other-keys)
6167 (let* ((out (assoc-ref outputs "out"))
6168 (sharedir (string-append out "/share/xonotic/")))
6169 (invoke "make" "-C" "source/darkplaces"
6170 (string-append "DP_FS_BASEDIR="
6172 "DP_LINK_TO_LIBJPEG=1"
6177 (invoke "make" "-C" "source/darkplaces"
6178 (string-append "DP_FS_BASEDIR="
6180 "DP_LINK_TO_LIBJPEG=1"
6185 (invoke "make" "-C" "source/darkplaces"
6186 (string-append "DP_FS_BASEDIR="
6188 "DP_LINK_TO_LIBJPEG=1"
6193 (add-before 'configure 'bootstrap
6195 (chdir "source/d0_blind_id")
6196 (invoke "sh" "autogen.sh")))
6197 (add-after 'build 'install-desktop-entry
6198 (lambda* (#:key outputs #:allow-other-keys)
6199 ;; Add .desktop files for the 2 variants and the symlink
6200 (let* ((output (assoc-ref outputs "out"))
6201 (apps (string-append output "/share/applications")))
6203 (with-output-to-file
6204 (string-append apps "/xonotic-glx.desktop")
6209 Comment=Xonotic glx~@
6210 Exec=~a/bin/xonotic-glx~@
6211 TryExec=~@*~a/bin/xonotic-glx~@
6216 (with-output-to-file
6217 (string-append apps "/xonotic-sdl.desktop")
6222 Comment=Xonotic sdl~@
6223 Exec=~a/bin/xonotic-sdl~@
6224 TryExec=~@*~a/bin/xonotic-sdl~@
6229 (with-output-to-file
6230 (string-append apps "/xonotic.desktop")
6236 Exec=~a/bin/xonotic-glx~@
6237 TryExec=~@*~a/bin/xonotic~@
6243 (add-after 'install-desktop-entry 'install-icons
6244 (lambda* (#:key outputs #:allow-other-keys)
6245 (let ((out (assoc-ref outputs "out")))
6246 (with-directory-excursion "../../misc/logos/icons_png/"
6249 (let* ((size (string-filter char-numeric? file))
6250 (icons (string-append out "/share/icons/hicolor/"
6251 size "x" size "/apps")))
6253 (copy-file file (string-append icons "/xonotic.png"))))
6254 '("xonotic_16.png" "xonotic_22.png" "xonotic_24.png"
6255 "xonotic_32.png" "xonotic_48.png" "xonotic_64.png"
6256 "xonotic_128.png" "xonotic_256.png" "xonotic_512.png"))))))
6257 (add-after 'install-icons 'install-binaries
6258 (lambda* (#:key outputs #:allow-other-keys)
6259 (let ((out (assoc-ref outputs "out")))
6260 (define (install src dst)
6261 (let ((dst (string-append out dst)))
6262 (mkdir-p (dirname dst))
6263 (copy-file src dst)))
6264 (mkdir-p (string-append out "/bin"))
6265 (install "../darkplaces/darkplaces-dedicated"
6266 "/bin/xonotic-dedicated")
6267 (install "../darkplaces/darkplaces-glx"
6269 (install "../darkplaces/darkplaces-sdl"
6271 ;; Provide a default xonotic executable, defaulting to SDL.
6272 (symlink (string-append out "/bin/xonotic-sdl")
6273 (string-append out "/bin/xonotic"))
6275 (add-after 'install-binaries 'install-data
6276 (lambda* (#:key outputs inputs #:allow-other-keys)
6277 (let* ((out (assoc-ref outputs "out"))
6278 (data (assoc-ref inputs "xonotic-data")))
6279 (symlink (string-append data "/share/xonotic")
6280 (string-append out "/share/xonotic"))
6282 (add-after 'install-binaries 'wrap-binaries
6283 (lambda* (#:key outputs inputs #:allow-other-keys)
6284 ;; Curl and libvorbis need to be wrapped so that we get
6285 ;; sound and networking.
6286 (let* ((out (assoc-ref outputs "out"))
6287 (bin (string-append out "/bin/xonotic"))
6288 (bin-sdl (string-append out "/bin/xonotic-sdl"))
6289 (bin-glx (string-append out "/bin/xonotic-glx"))
6290 (bin-dedicated (string-append out "/bin/xonotic-dedicated"))
6291 (curl (assoc-ref inputs "curl"))
6292 (vorbis (assoc-ref inputs "libvorbis")))
6294 `("LD_LIBRARY_PATH" ":" prefix
6295 (,(string-append curl "/lib:" vorbis "/lib"))))
6296 (wrap-program bin-sdl
6297 `("LD_LIBRARY_PATH" ":" prefix
6298 (,(string-append curl "/lib:" vorbis "/lib"))))
6299 (wrap-program bin-glx
6300 `("LD_LIBRARY_PATH" ":" prefix
6301 (,(string-append curl "/lib:" vorbis "/lib"))))
6302 (wrap-program bin-dedicated
6303 `("LD_LIBRARY_PATH" ":" prefix
6304 (,(string-append curl "/lib:" vorbis "/lib"))))
6307 `(("xonotic-data" ,xonotic-data)
6308 ("alsa-lib" ,alsa-lib)
6310 ("libjpeg" ,libjpeg)
6311 ("libmodplug" ,libmodplug)
6312 ("libvorbis" ,libvorbis)
6315 ("libxxf86dga" ,libxxf86dga)
6316 ("libxxf86vm" ,libxxf86vm)
6318 ("libxext" ,libxext)
6320 ("libxdmcp" ,libxdmcp)
6323 ("freetype" ,freetype)
6326 ("hicolor-icon-theme" ,hicolor-icon-theme)))
6329 ("autoconf" ,autoconf)
6330 ("automake" ,automake)
6331 ("pkg-config" ,pkg-config)
6332 ("libtool" ,libtool)
6334 (home-page "http://xonotic.org")
6335 (synopsis "Fast-paced first-person shooter game")
6337 "Xonotic is a free, fast-paced first-person shooter.
6338 The project is geared towards providing addictive arena shooter
6339 gameplay which is all spawned and driven by the community itself.
6340 Xonotic is a direct successor of the Nexuiz project with years of
6341 development between them, and it aims to become the best possible
6342 open-source FPS of its kind.")
6343 (license (list license:gpl2+
6344 license:bsd-3 ; /source/d0_blind_id folder and others
6345 (license:x11-style "" "See file rcon.pl.")))))
6347 (define-public frotz
6353 (uri (list (string-append
6354 "http://www.ifarchive.org/if-archive/infocom/interpreters/"
6355 "frotz/frotz-" version ".tar.gz")
6357 "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
6358 "frotz/frotz-" version ".tar.gz")))
6361 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
6362 (build-system gnu-build-system)
6364 `(#:tests? #f ; there are no tests
6366 (modify-phases %standard-phases
6368 (add-before 'build 'curses
6370 (substitute* "Makefile"
6371 (("lcurses") "lncurses"))
6374 (lambda* (#:key outputs #:allow-other-keys)
6375 (let* ((out (assoc-ref outputs "out"))
6376 (bin (string-append out "/bin"))
6377 (man (string-append out "/share/man/man6")))
6378 (install-file "frotz" bin)
6380 (install-file "doc/frotz.6" man)
6382 (inputs `(("libmodplug" ,libmodplug)
6383 ("libsamplerate" ,libsamplerate)
6384 ("libsndfile" ,libsndfile)
6385 ("libvorbis" ,libvorbis)
6386 ("ncurses" ,ncurses)))
6387 (synopsis "Portable Z-machine interpreter (ncurses version) for text adventure games")
6388 (description "Frotz is an interpreter for Infocom games and other Z-machine
6389 games in the text adventure/interactive fiction genre. This version of Frotz
6390 complies with standard 1.0 of Graham Nelson's specification. It plays all
6391 Z-code games V1-V8, including V6, with sound support through libao, and uses
6392 ncurses for text display.")
6393 (home-page "http://frotz.sourceforge.net")
6394 (license license:gpl2+)))
6396 (define-public frotz-dumb-terminal
6398 (name "frotz-dumb-terminal")
6402 (uri (list (string-append
6403 "http://www.ifarchive.org/if-archive/infocom/interpreters/"
6404 "frotz/frotz-" version ".tar.gz")
6406 "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
6407 "frotz/frotz-" version ".tar.gz")))
6410 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
6411 (build-system gnu-build-system)
6413 `(#:tests? #f ; there are no tests
6415 (modify-phases %standard-phases
6419 (invoke "make" "dumb")))
6421 (lambda* (#:key outputs #:allow-other-keys)
6422 (let* ((out (assoc-ref outputs "out"))
6423 (bin (string-append out "/bin"))
6424 (man (string-append out "/share/man/man6")))
6425 (install-file "dfrotz" bin)
6427 (install-file "doc/dfrotz.6" man)
6429 (synopsis "Portable Z-machine dumb interpreter for text adventure games")
6430 (description "Frotz is an interpreter for Infocom games and
6431 other Z-machine games in the text adventure/interactive fiction genre.
6432 dfrotz is the dumb interface version. You get no screen control; everything
6433 is just printed to the terminal line by line. The terminal handles all the
6434 scrolling. Maybe you'd like to experience what it's like to play Adventure on
6435 a teletype. A much cooler use for compiling Frotz with the dumb interface is
6436 that it can be wrapped in CGI scripting, PHP, and the like to allow people
6437 to play games on webpages. It can also be made into a chat bot.")
6438 (home-page "http://frotz.sourceforge.net")
6439 (license license:gpl2+)))
6441 (define-public frotz-sdl
6442 (let* ((commit "4de8c34f2116fff554af6216c30ec9d41bf50b24"))
6449 (url "https://gitlab.com/DavidGriffith/frotz")
6453 "18ms21pcrl7ipcnyqnf8janamkryzx78frsgd9kfk67jvbj0z2k8"))
6454 (file-name (git-file-name name version))))
6455 (build-system gnu-build-system)
6457 `(#:tests? #f ; there are no tests
6459 (modify-phases %standard-phases
6461 (add-before 'build 'patch-makefile
6463 (substitute* "Makefile"
6464 (("lcurses") "lncurses")
6465 (("^BUILD_DATE_TIME =.*$")
6466 "BUILD_DATE_TIME = \"2.45pre-20180907.00000\"\n"))
6470 (invoke "make" "sdl")))
6472 (lambda* (#:key outputs #:allow-other-keys)
6473 (let* ((out (assoc-ref outputs "out"))
6474 (bin (string-append out "/bin"))
6475 (man (string-append out "/share/man/man6")))
6476 (install-file "sfrotz" bin)
6478 (install-file "doc/sfrotz.6" man)
6481 `(("pkg-config" ,pkg-config)
6484 (inputs `(("sdl2" ,sdl2)
6485 ("sdl2-mixer" ,sdl2-mixer)
6486 ("libmodplug" ,libmodplug)
6487 ("libsamplerate" ,libsamplerate)
6488 ("libsndfile" ,libsndfile)
6489 ("libvorbis" ,libvorbis)
6490 ("ncurses" ,ncurses)
6491 ("freetype" ,freetype)
6492 ("libjpeg-turbo" ,libjpeg-turbo)))
6493 (synopsis "Portable Z-machine interpreter (SDL port) for text adventure games")
6494 (description "Frotz is an interpreter for Infocom games and other Z-machine
6495 games in the text adventure/interactive fiction genre. This version of Frotz
6496 using SDL fully supports all these versions of the Z-Machine including the
6497 graphical version 6. Graphics and sound are created through the use of the SDL
6498 libraries. AIFF sound effects and music in MOD and OGG formats are supported
6499 when packaged in Blorb container files or optionally from individual files.")
6500 (home-page "http://frotz.sourceforge.net")
6501 (license license:gpl2+))))
6503 (define-public libmanette
6509 (uri (string-append "mirror://gnome/sources/libmanette/"
6510 (version-major+minor version) "/"
6511 "libmanette-" version ".tar.xz"))
6514 "1zxh7jn2zg7hivmal5zxam6fxvjsd1w6hlw0m2kysk76b8anbw60"))))
6515 (build-system meson-build-system)
6517 `(("glib" ,glib "bin") ; for glib-compile-resources
6518 ("gobject-introspection" ,gobject-introspection)
6519 ("pkg-config" ,pkg-config)
6522 `(("libevdev" ,libevdev)
6523 ("libgudev" ,libgudev)))
6524 (home-page "https://wiki.gnome.org/Apps/Games")
6525 (synopsis "Game controller library")
6526 (description "Libmanette is a small GObject library giving you simple
6527 access to game controllers. It supports the de-facto standard gamepads as
6528 defined by the W3C standard Gamepad specification or as implemented by the SDL
6530 (license license:lgpl2.1+)))
6532 (define-public quadrapassel
6534 (name "quadrapassel")
6538 (uri (string-append "mirror://gnome/sources/quadrapassel/"
6539 (version-major+minor version) "/"
6540 "quadrapassel-" version ".tar.xz"))
6543 "1zhi1957knz9dm98drn2dh95mr33sdch590yddh1f8r6bzsfjvpy"))))
6544 (build-system meson-build-system)
6548 (modify-phases %standard-phases
6549 (add-after 'unpack 'skip-gtk-update-icon-cache
6550 ;; Don't create 'icon-theme.cache'.
6552 (substitute* "build-aux/meson_post_install.py"
6553 (("gtk-update-icon-cache") (which "true")))
6556 `(("desktop-file-utils" ,desktop-file-utils) ;for desktop-file-validate
6557 ("gettext" ,gnu-gettext)
6558 ("glib" ,glib "bin") ;for glib-compile-resources
6559 ("itstool" ,itstool)
6560 ("libxml2" ,libxml2) ;for xmllint
6561 ("pkg-config" ,pkg-config)
6564 `(("clutter" ,clutter)
6565 ("clutter-gtk" ,clutter-gtk)
6567 ("libcanberra" ,libcanberra)
6568 ("libmanette" ,libmanette)
6569 ("librsvg" ,librsvg)))
6570 (home-page "https://wiki.gnome.org/Apps/Quadrapassel")
6571 (synopsis "GNOME version of Tetris")
6572 (description "Quadrapassel comes from the classic falling-block game,
6573 Tetris. The goal of the game is to create complete horizontal lines of
6574 blocks, which will disappear. The blocks come in seven different shapes made
6575 from four blocks each: one straight, two L-shaped, one square, and two
6576 S-shaped. The blocks fall from the top center of the screen in a random
6577 order. You rotate the blocks and move them across the screen to drop them in
6578 complete lines. You score by dropping blocks fast and completing lines. As
6579 your score gets higher, you level up and the blocks fall faster.")
6580 (license license:gpl2+)))
6582 (define-public endless-sky
6584 (name "endless-sky")
6590 (url "https://github.com/endless-sky/endless-sky")
6591 (commit (string-append "v" version))))
6592 (file-name (git-file-name name version))
6595 "1wax9qhxakydg6bs92d1jy2fki1n9r0wkps1np02y0pvm1fl189i"))))
6596 (build-system scons-build-system)
6598 `(#:scons ,scons-python2
6599 #:scons-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
6600 #:tests? #f ; no tests
6602 (modify-phases %standard-phases
6603 (add-after 'unpack 'patch-resource-locations
6604 (lambda* (#:key outputs #:allow-other-keys)
6605 (substitute* "source/Files.cpp"
6607 (string-append (assoc-ref outputs "out") "/")))
6609 (add-after 'unpack 'patch-scons
6611 (substitute* "SConstruct"
6612 ;; Keep environmental variables
6613 (("Environment\\(\\)")
6614 "Environment(ENV = os.environ)")
6615 ;; Install into %out/bin
6616 (("games\"") "bin\""))
6620 ("libjpeg" ,libjpeg-turbo)
6625 (home-page "https://endless-sky.github.io/")
6626 (synopsis "2D space trading and combat game")
6627 (description "Endless Sky is a 2D space trading and combat game. Explore
6628 other star systems. Earn money by trading, carrying passengers, or completing
6629 missions. Use your earnings to buy a better ship or to upgrade the weapons and
6630 engines on your current one. Blow up pirates. Take sides in a civil war. Or
6631 leave human space behind and hope to find friendly aliens whose culture is more
6632 civilized than your own.")
6633 (license (list license:gpl3+
6636 license:public-domain))))
6638 (define-public stepmania
6641 (version "5.1.0-b2")
6646 (url "https://github.com/stepmania/stepmania.git")
6647 (commit (string-append "v" version))))
6648 (file-name (git-file-name name version))
6651 "0a7y9l7xm510vgnpmj1is7p9m6d6yd0fcaxrjcickz295k5w3rdn"))
6652 (modules '((guix build utils)))
6655 ;; Remove song files, which are licensed under a non-commercial
6656 ;; clause, and a course pointing to them.
6657 (for-each delete-file-recursively
6658 '("Songs/StepMania 5/Goin' Under"
6659 "Songs/StepMania 5/MechaTribe Assault"
6660 "Songs/StepMania 5/Springtime"))
6661 (for-each delete-file '("Courses/Default/Jupiter.crs"
6662 "Courses/Default/Jupiter.png"))
6664 (substitute* "extern/CMakeLists.txt"
6665 (("include\\(CMakeProject-png.cmake\\)") ""))
6666 (delete-file-recursively "extern/libpng")
6668 (build-system cmake-build-system)
6670 `(#:tests? #f ;FIXME: couldn't find how to run tests
6671 #:build-type "Release"
6672 #:out-of-source? #f ;for the 'install-desktop' phase
6674 (list "-DWITH_SYSTEM_FFMPEG=1"
6675 ;; SSE instructions are available on Intel systems only.
6676 ,@(if (any (cute string-prefix? <> (or (%current-target-system)
6680 '("-DWITH_SSE2=NO"))
6681 ;; Configuration cannot find GTK2 without the two following
6683 (string-append "-DGTK2_GDKCONFIG_INCLUDE_DIR="
6684 (assoc-ref %build-inputs "gtk+")
6685 "/lib/gtk-2.0/include")
6686 (string-append "-DGTK2_GLIBCONFIG_INCLUDE_DIR="
6687 (assoc-ref %build-inputs "glib")
6688 "/lib/glib-2.0/include"))
6690 (modify-phases %standard-phases
6691 (add-after 'unpack 'ensure-application-files-can-be-found
6692 (lambda* (#:key outputs #:allow-other-keys)
6693 (let ((out (assoc-ref outputs "out")))
6694 (substitute* "src/arch/LoadingWindow/LoadingWindow_Gtk.cpp"
6695 (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\" \\+ \"GtkModule.so\"")
6696 (string-append "\"" out
6697 "/share/stepmania/GtkModule.so\"")))
6698 (substitute* "src/arch/ArchHooks/ArchHooks_Unix.cpp"
6699 (("Root = sDirOfExecutable")
6700 (string-append "Root = \"" out "/share/stepmania/\""))
6701 (("sDirOfExecutable \\+ \"/(Packages|Songs)\"" _ dir)
6702 (string-append "\"" out "/share/stepmania/" dir "\"")))
6703 (substitute* "src/RageFileManager.cpp"
6704 (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\"")
6705 (string-append "\"" out "/share/stepmania/\""))))
6707 (add-after 'unpack 'fix-install-subdir
6708 ;; Installation would be done in "%out/stepmania-X.Y", but we
6709 ;; prefer the more common layout "%out/share/stepmania".
6711 (substitute* "src/CMakeLists.txt"
6712 (("\"stepmania-.*?\"") "\"share/stepmania\""))
6714 (add-after 'unpack 'unbundle-libpng
6715 (lambda* (#:key inputs #:allow-other-keys)
6716 (substitute* "src/CMakeLists.txt"
6717 (("\\$\\{SM_EXTERN_DIR\\}/libpng/include")
6718 (string-append (assoc-ref inputs "libpng") "/include")))
6720 (add-after 'install 'install-executable
6721 (lambda* (#:key outputs #:allow-other-keys)
6722 (let* ((out (assoc-ref outputs "out"))
6723 (bin (string-append out "/bin"))
6724 (exe (string-append out "/share/stepmania/stepmania")))
6726 (symlink exe (string-append bin "/stepmania"))
6728 (add-after 'install-executable 'install-desktop
6729 (lambda* (#:key outputs #:allow-other-keys)
6730 (let* ((out (assoc-ref outputs "out"))
6731 (share (string-append out "/share"))
6732 (applications (string-append share "/applications"))
6733 (icons (string-append share "/icons")))
6734 (install-file "stepmania.desktop" applications)
6736 (copy-recursively "icons" icons)
6738 ;; Move documentation in a more usual place, i.e.,
6739 ;; "%out/share/doc/stepmania/".
6740 (add-after 'install-desktop 'install-doc
6741 (lambda* (#:key outputs #:allow-other-keys)
6742 (let* ((out (assoc-ref outputs "out"))
6743 (share (string-append out "/share")))
6744 (with-directory-excursion share
6746 (symlink "../stepmania/Docs" "doc/stepmania"))
6749 `(("pkg-config" ,pkg-config)
6752 `(("alsa-lib" ,alsa-lib)
6753 ;; Per upstream, StepMania is only guaranteed to work with a very
6754 ;; specific FFmpeg version, which is included in the repository as
6755 ;; a Git submodule. This particular version requirement usually
6756 ;; changes every few years.
6757 ("ffmpeg" ,ffmpeg-for-stepmania)
6761 ("jsoncpp" ,jsoncpp)
6763 ("libjpeg" ,libjpeg-turbo)
6767 ("libvorbis" ,libvorbis)
6768 ("libxinerama" ,libxinerama)
6769 ("libxrandr" ,libxrandr)
6772 ("pulseaudio" ,pulseaudio)
6776 (synopsis "Advanced rhythm game designed for both home and arcade use")
6777 (description "StepMania is a dance and rhythm game. It features 3D
6778 graphics, keyboard and dance pad support, and an editor for creating your own
6781 This package provides the core application, but no song is shipped. You need
6782 to download and install them in @file{$HOME/.stepmania-X.Y/Songs} directory.")
6783 (home-page "https://www.stepmania.com")
6784 (license license:expat)))
6786 (define-public btanks
6789 (version "0.9.8083")
6793 (uri (string-append "mirror://sourceforge/btanks/btanks-source/"
6794 "btanks-" version ".tar.bz2"))
6797 "0ha35kxc8xlbg74wsrbapfgxvcrwy6psjkqi7c6adxs55dmcxliz"))))
6798 (build-system scons-build-system)
6800 `(#:tests? #f ; there are none
6801 #:scons ,scons-python2
6802 #:scons-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
6804 (modify-phases %standard-phases
6805 (add-after 'unpack 'replace-removed-scons-syntax
6807 (substitute* "SConstruct"
6808 (("Options") "Variables")
6809 (("opts.Add\\(BoolOption.*") "opts.Add('gcc_visibility', 'gcc visibility', 'true')")
6810 (("opts.Add\\(EnumOption.*") "opts.Add('mode', 'build mode', 'release')"))
6812 (add-after 'set-paths 'set-sdl-paths
6813 (lambda* (#:key inputs #:allow-other-keys)
6815 (string-append (assoc-ref inputs "sdl")
6817 (or (getenv "CPATH") "")))
6819 (add-after 'unpack 'fix-compilation-errors
6821 (substitute* "mrt/base_file.h"
6822 (("#include <string>" m)
6823 (string-append m "\n#include <sys/types.h>")))
6824 (substitute* '("engine/sl08/sl08.h"
6825 "engine/sl08/sl08.py")
6826 (("signal = NULL") "signal = 0")
6827 (("object\\(NULL\\)") "object(0)")
6828 (("func\\(NULL\\)") "func(0)")
6829 ((" connect\\(signal_ref\\)")
6830 " this->connect(signal_ref)"))
6831 (substitute* "math/range_list.h"
6832 ((" lower_bound\\(value\\)")
6833 " this->lower_bound(value)")
6836 (substitute* "clunk/source.cpp"
6837 (("using namespace clunk" m)
6838 (string-append "# define pow10f(x) exp10f(x)\n" m)))
6840 (add-after 'unpack 'find-lua
6842 (substitute* "engine/SConscript"
6843 (("lua5.1") "lua-5.1")
6844 (("bt_libs.append\\(lua\\)")
6845 "bt_libs.append(\"lua\")"))
6850 ("libsmpeg" ,libsmpeg-with-sdl1)
6851 ("libvorbis" ,libvorbis)
6853 ("sdl" ,(sdl-union (list sdl
6859 `(("pkg-config" ,pkg-config)
6861 (home-page "http://btanks.sourceforge.net")
6862 (synopsis "Multiplayer tank battle game")
6863 (description "Battle Tanks (also known as \"btanks\") is a funny battle
6864 game, where you can choose one of three vehicles and eliminate your enemy
6865 using the whole arsenal of weapons. It has original cartoon-like graphics and
6866 cool music, it’s fun and dynamic, it has several network modes for deathmatch
6868 ;; Some parts (e.g. mrt/b64.cpp) are LGPLv2.1+, but the whole package is
6869 ;; released under GPLv2 or later. It comes with extra exceptions for the
6871 (license (list license:gpl2+ license:lgpl2.1+))))
6873 (define-public battle-tanks
6874 (deprecated-package "battle-tanks" btanks))
6876 (define-public slingshot
6884 (url "https://github.com/ryanakca/slingshot.git")
6886 (file-name (git-file-name name version))
6889 "19m8b6nsi786bc6gmkp185mwri3r5y249gjmqd5qsc23nnfhgrs1"))))
6890 (build-system python-build-system)
6892 `(#:python ,python-2))
6894 `(("python-pygame" ,python2-pygame)))
6895 (home-page "https://github.com/ryanakca/slingshot")
6896 (synopsis "Simple 2D shooting strategy game set in space")
6897 (description "Slingshot is a two-dimensional strategy game where two
6898 players attempt to shoot one another through a section of space populated by
6899 planets. The main feature of the game is that the shots, once fired, are
6900 affected by the gravity of the planets.")
6901 (license license:gpl2+)))
6903 (define-public 4dtris
6910 (uri (string-append "https://launchpad.net/4dtris/"
6911 (version-major+minor version)
6912 "/" version "/+download/4dtris_"
6913 version ".orig.tar.gz"))
6916 "1nfkhcm0l89jyw8yr65na97g4l385zhjf7whkyg47c3v5sdqq2g7"))))
6917 (build-system gnu-build-system)
6920 (modify-phases %standard-phases
6921 (add-after 'unpack 'fix-install-directories
6922 (lambda* (#:key outputs #:allow-other-keys)
6923 (let ((out (assoc-ref outputs "out")))
6924 (substitute* "Makefile.in"
6925 (("bindir = /usr/games")
6926 (string-append "bindir = " out "/bin"))
6927 (("/usr/share/applications")
6928 (string-append out "/share/applications"))
6929 (("/usr/share/games/4dtris")
6930 (string-append out "/share/4dtris"))))
6932 (add-after 'set-paths 'set-sdl-paths
6933 (lambda* (#:key inputs #:allow-other-keys)
6935 (string-append (assoc-ref inputs "sdl")
6937 (or (getenv "CPATH") "")))
6940 `(("fontconfig" ,fontconfig)
6941 ("freeglut" ,freeglut)
6942 ("sdl" ,(sdl-union (list sdl sdl-ttf)))))
6943 (home-page "https://launchpad.net/4dtris/")
6944 (synopsis "4D Tetris")
6945 (description "4D-TRIS is an alteration of the well-known Tetris game. The
6946 game field is extended to 4D space, which has to filled up by the gamer with
6948 (license license:gpl3)))
6950 (define-public arx-libertatis
6952 (name "arx-libertatis")
6957 (uri (string-append "http://arx-libertatis.org/files/arx-libertatis-"
6961 "0hjfxlsmp8wwqr06snv2dlly2s79ra0d9aw49gkp6rn8m50b9bc2"))))
6962 (build-system cmake-build-system)
6963 (outputs '("out" "installer"))
6965 '(#:tests? #f ; No tests.
6967 (modify-phases %standard-phases
6968 (add-after 'unpack 'fix-install-helper-paths
6969 (lambda* (#:key inputs #:allow-other-keys)
6970 (let ((p7zip (assoc-ref inputs "p7zip"))
6971 (innoextract (assoc-ref inputs "innoextract"))
6972 (wget (assoc-ref inputs "wget"))
6973 (zenity (assoc-ref inputs "zenity")))
6974 (substitute* "scripts/arx-install-data"
6975 (("have innoextract")
6976 (string-append "have " innoextract "/bin/innoextract"))
6977 (("then innoextract")
6978 (string-append "then " innoextract "/bin/innoextract"))
6979 (("else innoextract")
6980 (string-append "else " innoextract "/bin/innoextract"))
6981 (("for _extract_zip_sz in 7za 7z")
6982 (string-append "for _extract_zip_sz in " p7zip "/bin/7za"))
6983 (("else if have 7z")
6984 (string-append "else if have " p7zip "/bin/7za"))
6986 (string-append p7zip "/bin/7z x -tiso"))
6988 (string-append "if have " wget "/bin/wget"))
6990 (string-append wget "/bin/wget -O"))
6991 (("for backend in \\$preferred zenity")
6992 (string-append "for backend in $preferred " zenity "/bin/zenity"))
6993 (("zenity +--title")
6994 (string-append zenity "/bin/zenity --title"))
6996 (string-append zenity "/bin/zenity)"))))
6998 (add-after 'install 'move-installer
6999 (lambda* (#:key outputs #:allow-other-keys)
7000 (let ((out (assoc-ref outputs "out"))
7001 (installer (assoc-ref outputs "installer")))
7002 (mkdir-p (string-append installer "/bin"))
7003 (rename-file (string-append out "/bin/arx-install-data")
7004 (string-append installer "/bin/arx-install-data"))))))))
7006 `(("sdl" ,sdl) ; Switch to sdl2 in >1.1.2.
7007 ("mesa" ,mesa) ; Switch to libepoxy in >1.1.2.
7013 ("freetype" ,freetype)
7014 ;; The following are only needed by the arx-install-data script.
7015 ("p7zip" ,p7zip) ; Install-helper uses it to extract ISO and .cab archives.
7016 ("zenity" ,zenity) ; GUI for install-helper.
7017 ("wget" ,wget) ; Used by the install-helper to download the patch.
7018 ;; The install-helper needs it to extract the patch.
7019 ("innoextract" ,innoextract)))
7020 (home-page "https://arx-libertatis.org/")
7021 (synopsis "Port of Arx Fatalis, a first-person role-playing game")
7022 (description "Arx Libertatis is a cross-platform port of Arx Fatalis, a 2002
7023 first-person role-playing game / dungeon crawler developed by Arkane Studios.
7024 This port however does not include the game data, so you need to obtain a copy
7025 of the original Arx Fatalis or its demo to play Arx Libertatis. Arx Fatalis
7026 features crafting, melee and ranged combat, as well as a unique casting system
7027 where the player draws runes in real time to effect the desired spell.")
7028 (license license:gpl3+)))
7030 (define-public edgar
7038 (string-append "https://github.com/riksweeney/edgar/releases/download/"
7039 version "/edgar-" version "-1.tar.gz"))
7041 (base32 "12lam6qcscc5ima1w2ksd1cvsvxbd17h6mqkgsqpzx8ap43p2r5p"))))
7042 (build-system gnu-build-system)
7043 (arguments '(#:tests? #f ; there are no tests
7046 (string-append "PREFIX=" (assoc-ref %outputs "out"))
7047 (string-append "BIN_DIR=" (assoc-ref %outputs "out") "/bin/"))
7049 (modify-phases %standard-phases
7051 (add-before 'build 'fix-env
7052 (lambda* (#:key inputs #:allow-other-keys)
7054 (string-append (assoc-ref inputs "sdl2-union")
7056 (or (getenv "CPATH") "")))
7059 `(("sdl2-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
7062 `(("pkg-config" ,pkg-config)
7063 ("autoconf" ,autoconf)
7064 ("automake" ,automake)
7065 ("gnu-gettext" ,gnu-gettext)
7066 ("libtool" ,libtool)
7068 (synopsis "2d action platformer game")
7069 (description "The Legend of Edgar is a 2D platform game with a persistent world.
7070 When Edgar's father fails to return home after venturing out one dark and stormy night,
7071 Edgar fears the worst: he has been captured by the evil sorcerer who lives in
7072 a fortress beyond the forbidden swamp.")
7073 (home-page "https://www.parallelrealities.co.uk/games/edgar/")
7074 (license license:gpl2+)))
7076 (define-public the-legend-of-edgar
7077 (deprecated-package "the-legend-of-edgar" edgar))
7079 (define-public openclonk
7086 "https://www.openclonk.org/builds/release/" version "/"
7087 "openclonk-" version "-src.tar.bz2"))
7090 "0imkqjp8lww5p0cnqf4k4mb2v682mnsas63qmiz17rspakr7fxik"))))
7091 (build-system cmake-build-system)
7093 `(#:configure-flags '("-DAudio_TK=OpenAL")
7094 #:test-target "tests"
7096 (modify-phases %standard-phases
7097 (add-after 'unpack 'prepare-gmock
7098 (lambda* (#:key inputs #:allow-other-keys)
7100 (copy-recursively (assoc-ref inputs "googlemock") "gmock")
7101 (substitute* "tests/CMakeLists.txt"
7103 (string-append (getcwd) "/gmock/googlemock"))
7105 (string-append (getcwd) "/gmock/googletest"))
7106 (("PATH_SUFFIXES \"src\" \"gtest\"")
7107 "PATH_SUFFIXES \"src\""))
7109 (add-after 'unpack 'adjust-backward-cpp-includes
7111 ;; XXX: The bundled backward-cpp exports a CMake "interface"
7112 ;; that includes external libraries such as libdl from glibc.
7113 ;; By default, CMake interface includes are treated as "system
7114 ;; headers", and GCC behaves poorly when glibc is passed as a
7115 ;; system header (causing #include_next failures).
7117 ;; Here we prevent targets that consume the Backward::Backward
7118 ;; interface from treating it as "system includes".
7119 (substitute* "CMakeLists.txt"
7120 (("target_link_libraries\\((.+) Backward::Backward\\)" all target)
7121 (string-append "set_property(TARGET " target " PROPERTY "
7122 "NO_SYSTEM_FROM_IMPORTED true)\n"
7125 (add-after 'unpack 'add-libiberty
7126 ;; Build fails upon linking executables without this.
7128 (substitute* "thirdparty/backward-cpp/BackwardConfig.cmake"
7129 (("set\\(LIBBFD_LIBRARIES (.*?)\\)" _ libraries)
7130 (string-append "set(LIBBFD_LIBRARIES " libraries " iberty)")))
7132 (add-after 'add-libiberty 'lax-freealut-requirement
7133 ;; TODO: We provide freealut 1.1.0, but pkg-config somehow detects
7134 ;; it as 1.0.1. Force minimal version.
7136 (substitute* "cmake/FindAudio.cmake"
7137 (("freealut>=1.1.0") "freealut>=1.0.1"))
7139 (add-after 'lax-freealut-requirement 'fix-directories
7140 ;; Prefer "$out/share/openclonk" over
7141 ;; "$out/share/games/openclonk". Also install "openclonk"
7142 ;; binary in "bin/", not "games/".
7144 (substitute* "CMakeLists.txt"
7145 (("share/games/openclonk") "share/openclonk")
7146 (("TARGETS openclonk DESTINATION games")
7147 "TARGETS openclonk DESTINATION bin"))
7150 `(("googlemock" ,(package-source googletest))
7151 ("googletest" ,googletest)
7152 ("pkg-config" ,pkg-config)))
7154 `(("freealut" ,freealut)
7155 ("freetype" ,freetype)
7157 ("libiberty" ,libiberty)
7158 ("libjpeg" ,libjpeg-turbo)
7161 ("libvorbis" ,libvorbis)
7162 ("libxrandr" ,libxrandr)
7164 ("miniupnpc" ,miniupnpc)
7167 ("readline" ,readline)
7169 ("tinyxml" ,tinyxml)
7171 (home-page "https://www.openclonk.org/")
7173 "Multiplayer action game where you control small and nimble humanoids")
7174 (description "OpenClonk is a multiplayer action/tactics/skill game. It is
7175 often referred to as a mixture of The Settlers and Worms. In a simple 2D
7176 antfarm-style landscape, the player controls a crew of Clonks, small but
7177 robust humanoid beings. The game encourages free play but the normal goal is
7178 to either exploit valuable resources from the earth by building a mine or
7179 fight each other on an arena-like map.")
7180 ;; Software as a whole is licensed under ISC, artwork under CC-BY.
7181 (license (list license:isc license:cc-by3.0))))
7183 (define-public flare-engine
7185 (name "flare-engine")
7190 (url "https://github.com/flareteam/flare-engine.git")
7191 (commit (string-append "v" version))))
7192 (file-name (git-file-name name version))
7195 "1mqr1s72p5bdh4kq2a8hg72dk8lwnddicjnd2cdp1sbfa9lmjym8"))))
7196 (build-system cmake-build-system)
7198 `(#:tests? #f ;no test
7199 #:configure-flags '("-DBINDIR=bin" "-DDATADIR=share/flare")))
7201 `(("hicolor-icon-theme" ,hicolor-icon-theme)
7202 ("python" ,python-wrapper)
7203 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
7204 (home-page "http://www.flarerpg.org/")
7205 (synopsis "Action Roleplaying Engine")
7206 (description "Flare (Free Libre Action Roleplaying Engine) is a simple
7207 game engine built to handle a very specific kind of game: single-player 2D
7209 (license license:gpl3+)))
7211 (define-public flare-game
7218 (url "https://github.com/flareteam/flare-game.git")
7219 (commit (string-append "v" version))))
7220 (file-name (git-file-name name version))
7223 "0bd5g7sd89a9176ilr408hdqzdfv4j7wj0idd685c1n6s01c3h6p"))))
7224 (build-system cmake-build-system)
7226 `(#:tests? #f ;no test
7227 #:configure-flags '("-DDATADIR=share/flare")
7229 (modify-phases %standard-phases
7230 ;; Flare expects the mods to be located in the same folder.
7231 ;; Yet, "default" mod is in the engine, whereas the others
7232 ;; are in the current package. Merge everything here with
7234 (add-after 'install 'add-default-mod
7235 (lambda* (#:key inputs outputs #:allow-other-keys)
7236 (let* ((out (assoc-ref outputs "out"))
7237 (mods (string-append out "/share/flare/mods")))
7238 (with-directory-excursion mods
7239 (symlink (string-append (assoc-ref inputs "flare-engine")
7240 "/share/flare/mods/default")
7243 (add-after 'install 'install-executable
7244 ;; The package only provides assets for the game, the
7245 ;; executable coming from "flare-engine". Since more than
7246 ;; one game may use the engine, we create a new executable,
7247 ;; "flare-game", which launches the engine with appropriate
7249 (lambda* (#:key inputs outputs #:allow-other-keys)
7250 (let* ((out (assoc-ref outputs "out"))
7251 (bash (string-append (assoc-ref inputs "bash")
7253 (flare (string-append (assoc-ref inputs "flare-engine")
7255 (script (string-append out "/bin/flare-game")))
7256 (mkdir-p (dirname script))
7257 (call-with-output-file script
7261 exec ~a --data-path=~a/share/flare --mods=empyrean_campaign~%"
7265 (chmod script #o755))
7268 `(("flare-engine" ,flare-engine)))
7269 (home-page "http://www.flarerpg.org/")
7270 (synopsis "Fantasy action RPG using the FLARE engine")
7271 (description "Flare is a single-player 2D action RPG with
7272 fast-paced action and a dark fantasy style.")
7273 (license license:cc-by-sa3.0)))
7275 (define-public meritous
7282 (url "https://gitlab.com/meritous/meritous.git")
7283 (commit (string-append "v" version))))
7284 (file-name (git-file-name name version))
7287 "0n5jm4g0arjllgqmd2crv8h02i6hs3hlh1zyc7ng7yfpg1mbd8p8"))))
7288 (build-system gnu-build-system)
7290 `(#:tests? #f ;no test
7293 (string-append "prefix=" (assoc-ref %outputs "out")))
7295 (modify-phases %standard-phases
7297 (add-after 'unpack 'fix-sdl-path
7298 ;; XXX: For some reason, `sdl-config' reports stand-alone SDL
7299 ;; directory, not SDL-union provided as an input to the package.
7300 ;; We force the latter with "--prefix=" option.
7301 (lambda* (#:key inputs #:allow-other-keys)
7302 (substitute* "Makefile"
7303 (("sdl-config" command)
7304 (string-append command " --prefix=" (assoc-ref inputs "sdl"))))
7306 (add-after 'unpack 'fix-crash
7307 ;; XXX: Songs are not present in the repository, due to licensing
7308 ;; issues. Yet, the game tries to load them, and, since it cannot
7309 ;; find them, crashes. Users cannot add them back, the store being
7310 ;; read-only, so we turn off background music altogether.
7312 (substitute* "src/audio.c"
7313 (("PlayBackgroundMusic\\(new_track\\);" all)
7314 (string-append "// " all)))
7317 `(("intltool" ,intltool)))
7319 `(("sdl" ,(sdl-union (list sdl sdl-image sdl-mixer)))
7321 (home-page "https://gitlab.com/meritous/meritous")
7322 (synopsis "Action-adventure dungeon crawl game")
7323 (description "Far below the surface of the planet is a place of limitless
7324 power. Those that seek to control such a utopia will soon bring an end to
7325 themselves. Seeking an end to the troubles that plague him, PSI user Merit
7326 journeys into the hallowed Orcus Dome in search of answers.
7328 Meritous is a action-adventure game with simple controls but a challenge to
7329 find a balance of power versus recovery time during real-time battles. Set in
7330 a procedurally generated world, the player can explore thousands of rooms in
7331 search of powerful artifacts, tools to help them, and to eventually free the
7332 Orcus Dome from evil.")
7333 (license license:gpl3+)))
7335 (define-public marble-marcher
7336 (let ((commit "e580460a0c3826f9b28ab404607942a8ecb625d7")
7339 (name "marble-marcher")
7340 (version (git-version "0" revision commit))
7344 (url "https://github.com/HackerPoet/MarbleMarcher.git")
7346 (file-name (git-file-name name version))
7349 "0jjv832hl1v170n6gryp2sr3lgqndi9ab841qvgqk68bks8701mx"))))
7350 (build-system cmake-build-system)
7352 `(#:tests? #f ; there are none
7354 (modify-phases %standard-phases
7355 (add-after 'unpack 'embed-asset-directory
7356 (lambda* (#:key outputs #:allow-other-keys)
7357 (let ((assets (string-append (assoc-ref outputs "out")
7358 "/share/marble-marcher/assets/")))
7359 ;; Some of the files we're patching are
7360 ;; ISO-8859-1-encoded, so choose it as the default
7361 ;; encoding so the byte encoding is preserved.
7362 (with-fluids ((%default-port-encoding #f))
7363 (substitute* "src/Resource.rc"
7364 (("../assets/icon.ico")
7365 (string-append assets "icon.ico")))
7366 (substitute* "src/Res.h"
7367 (("assets/") assets))))
7370 (lambda* (#:key outputs #:allow-other-keys)
7371 (let* ((out (assoc-ref outputs "out"))
7372 (assets (string-append out "/share/marble-marcher/assets"))
7373 (bin (string-append out "/bin/")))
7376 (copy-recursively "../source/assets" assets)
7377 (install-file "MarbleMarcher" bin))
7384 `(("pkg-config" ,pkg-config)))
7385 (home-page "https://codeparade.itch.io/marblemarcher")
7386 (synopsis "Guide a marble across fractal landscapes")
7387 (description "Marble Marcher is a video game that uses a fractal physics
7388 engine and fully procedural rendering to produce beautiful and unique
7389 gameplay. The game is played on the surface of evolving fractals. The goal
7390 of the game is to get your marble to the flag as quickly as possible. But be
7391 careful not to fall off the level or get crushed by the fractal! There are 24
7393 ;; Code is under GPLv2+, assets are under CC-BY-SA 3.0 and OFL 1.1.
7394 (license (list license:gpl2+
7396 license:cc-by-sa3.0)))))
7398 ;; This must be updated together with flightgear.
7402 (version "2018.3.2")
7405 (uri (string-append "mirror://sourceforge/flightgear/release-"
7406 (version-major+minor version) "/"
7407 "simgear-" version ".tar.bz2"))
7410 "1941ay8rngz4vwsx37bbpxr48hpcvcbj3xw1hy264lq4qnl99c68"))))
7411 (build-system cmake-build-system)
7414 (modify-phases %standard-phases
7417 ;; Skip tests that require internet access.
7418 (invoke "ctest" "-E" "(http|dns)"))))))
7420 `(("boost" ,boost-for-mysql) ; fails with 1.69
7425 ("openscenegraph" ,openscenegraph-3.4)
7427 (home-page "https://home.flightgear.org/")
7428 (synopsis "Libraries for 3D simulations and games")
7429 (description "SimGear is a set of libraries designed to be used as
7430 building blocks for quickly assembling 3D simulations, games, and
7431 visualization applications. SimGear is developed by the FlightGear project
7432 and also provides the base for the FlightGear Flight Simulator.")
7433 (license license:lgpl2.0+)))
7435 (define-public flightgear
7438 (version (package-version simgear))
7441 (uri (string-append "mirror://sourceforge/flightgear/release-"
7442 (version-major+minor version) "/"
7443 "flightgear-" version ".tar.bz2"))
7446 "0lzy524cjzs8vldcjcc750bgg5c4mq9fkymxxxzqf68ilc4d1jss"))
7447 (modules '((guix build utils)))
7450 ;; There are some bundled libraries.
7451 (for-each delete-file-recursively
7452 '("3rdparty/sqlite3/"))
7454 (build-system cmake-build-system)
7457 (list "-DSYSTEM_SQLITE=ON"
7458 (string-append "-DFG_DATA_DIR="
7459 (assoc-ref %outputs "out")
7460 "/share/flightgear"))
7461 ;; TODO: test cannot be run because the "run_test_suite" executable
7462 ;; does not seem to be built.
7465 (modify-phases %standard-phases
7466 (add-after 'install 'wrap-executable
7467 (lambda* (#:key inputs outputs #:allow-other-keys)
7468 (let ((out (assoc-ref outputs "out")))
7469 (wrap-program (string-append out "/bin/fgfs")
7470 `("QT_PLUGIN_PATH" ":" prefix
7471 ,(map (lambda (label)
7472 (string-append (assoc-ref inputs label)
7473 "/lib/qt5/plugins"))
7474 '("qtbase" "qtdeclarative" "qtsvg")))
7475 `("QML2_IMPORT_PATH" ":" prefix
7476 ,(map (lambda (label)
7477 (string-append (assoc-ref inputs label)
7479 '("qtdeclarative" "qtsvg"))))
7481 (add-after 'install 'install-data
7482 (lambda* (#:key inputs outputs #:allow-other-keys)
7483 (let ((share (string-append (assoc-ref outputs "out") "/share/flightgear")))
7485 (with-directory-excursion share
7486 (invoke "tar" "xf" (assoc-ref inputs "flightgear-data")
7487 "--strip-components=1")))
7490 `(("boost" ,boost-for-mysql) ; same as simgear
7493 ("freeglut" ,freeglut)
7494 ("freetype" ,freetype)
7498 ("openscenegraph" ,openscenegraph-3.4)
7501 ("qtdeclarative" ,qtdeclarative)
7503 ("simgear" ,simgear)
7504 ("speexdsp" ,speexdsp)
7508 `(("cppunit" ,cppunit)
7509 ("pkg-config" ,pkg-config)
7510 ("qttools" ,qttools)
7514 (uri (string-append "mirror://sourceforge/flightgear/release-"
7515 (version-major+minor version) "/"
7516 "FlightGear-" version "-data.tar.bz2"))
7519 "0h4npa7gqpf5fw6pv2bpw0wbwr7fa2vhia21cjbigfgd75x82zi7"))))))
7520 (home-page "https://home.flightgear.org/")
7521 (synopsis "Flight simulator")
7522 (description "The goal of the FlightGear project is to create a
7523 sophisticated flight simulator framework for use in research or academic
7524 environments, pilot training, as an industry engineering tool, for DIY-ers to
7525 pursue their favorite interesting flight simulation idea, and last but
7526 certainly not least as a fun, realistic, and challenging desktop flight
7528 (license license:gpl2+)))
7530 (define-public jumpnbump
7537 (url "https://gitlab.com/LibreGames/jumpnbump.git")
7539 (file-name (git-file-name name version))
7542 "12lwl5sl5n009nb83r8l4lakb9286csqdf1ynpmwwydy17giqsdp"))))
7543 (build-system gnu-build-system)
7547 (string-append "PREFIX=" (assoc-ref %outputs "out")))
7548 #:tests? #f ;no test
7550 (modify-phases %standard-phases
7551 (delete 'configure) ;no configure script
7552 (add-after 'unpack 'fix-sdl-path
7553 ;; XXX: For some reason, `sdl2-config' reports stand-alone SDL
7554 ;; directory, not SDL-union provided as an input to the package.
7555 ;; We force the latter with "--prefix=" option.
7556 (lambda* (#:key inputs #:allow-other-keys)
7557 (substitute* "Makefile"
7558 (("sdl2-config" command)
7559 (string-append command " --prefix=" (assoc-ref inputs "sdl"))))
7563 ("sdl" ,(sdl-union (list sdl2 sdl2-mixer sdl2-net)))
7566 `(("gettext" ,gettext-minimal))) ;for msgfmt
7567 (home-page "https://gitlab.com/LibreGames/jumpnbump")
7568 (synopsis "Multiplayer platform game with bunnies")
7569 (description "You, as a bunny, have to jump on your opponents to make them
7570 explode. It is a true multiplayer game; you cannot play this alone. You can
7571 play with up to four players simultaneously. It has network support.")
7572 (license license:gpl2+)))
7574 (define-public hedgewars
7580 (uri (string-append "https://www.hedgewars.org/download/releases/"
7581 "hedgewars-src-" version ".tar.bz2"))
7584 "0nqm9w02m0xkndlsj6ys3wr0ik8zc14zgilq7k6fwjrf3zk385i1"))))
7585 (build-system cmake-build-system)
7587 ;; XXX: Engine is built as Pascal source code, requiring Free Pascal
7588 ;; Compiler, which we haven't packaged yet. With the flag below, we use
7589 ;; a Pascal to C translator and Clang instead.
7590 `(#:configure-flags (list "-DBUILD_ENGINE_C=ON")
7592 (modify-phases %standard-phases
7594 (lambda _ (invoke "ctest"))))))
7596 `(("ffmpeg" ,ffmpeg)
7597 ("freeglut" ,freeglut)
7598 ("ghc-entropy" ,ghc-entropy)
7599 ("ghc-hslogger" ,ghc-hslogger)
7600 ("ghc-network" ,ghc-network)
7601 ("ghc-random" ,ghc-random)
7602 ("ghc-regex-tdfa" ,ghc-regex-tdfa)
7603 ("ghc-sandi" ,ghc-sandi)
7604 ("ghc-sha" ,ghc-sha)
7605 ("ghc-utf8-string" ,ghc-utf8-string)
7606 ("ghc-vector" ,ghc-vector)
7607 ("ghc-zlib" ,ghc-zlib)
7614 (list sdl2 sdl2-mixer sdl2-net sdl2-ttf sdl2-image)))))
7618 ("pkg-config" ,pkg-config)
7619 ("qttools" ,qttools)))
7620 (home-page "https://hedgewars.org/")
7621 (synopsis "Turn-based artillery game featuring fighting hedgehogs")
7623 "Hedgewars is a turn based strategy, artillery, action and comedy game,
7624 featuring the antics of pink hedgehogs with attitude as they battle from the
7625 depths of hell to the depths of space.
7627 As commander, it's your job to assemble your crack team of hedgehog soldiers
7628 and bring the war to your enemy.")
7629 ;; Software as a whole is licensed under GPL-2 terms. Artwork and
7630 ;; scripts are distributed under various terms.
7631 (license (list license:gpl2
7632 license:bsd-2 license:bsd-3 license:cc-by3.0 license:cc0
7633 license:expat license:fdl1.3+ license:public-domain
7636 (define-public harmonist
7643 (url "https://git.tuxfamily.org/harmonist/harmonist.git")
7644 (commit (string-append "v" version))))
7645 (file-name (git-file-name name version))
7648 "146wiyanag0zqj6fhyll2sw6sydnnll8mgxhhqf9sjqsl2rx4s5r"))))
7649 (build-system go-build-system)
7651 '(#:import-path "git.tuxfamily.org/harmonist/harmonist"))
7653 `(("go-github.com-nsf-termbox-go" ,go-github.com-nsf-termbox-go)))
7654 (home-page "https://harmonist.tuxfamily.org/")
7655 (synopsis "Stealth coffee-break roguelike game")
7656 (description "Harmonist: Dayoriah Clan Infiltration is a stealth
7657 coffee-break roguelike game. The game has a heavy focus on tactical
7658 positioning, light and noise mechanisms, making use of various terrain types
7659 and cones of view for monsters. Aiming for a replayable streamlined experience,
7660 the game avoids complex inventory management and character building, relying
7661 on items and player adaptability for character progression.")
7662 (license license:isc)))
7664 (define-public harmonist-tk
7667 (name "harmonist-tk")
7670 (package-arguments harmonist)
7672 (modify-phases %standard-phases
7675 (invoke "go" "install" "-v" "-x" "--tags" "tk"
7676 "git.tuxfamily.org/harmonist/harmonist")))
7679 (invoke "go" "test" "--tags" "tk"
7680 "git.tuxfamily.org/harmonist/harmonist")))))))
7682 `(("go-github.com-nsf-gothic" ,go-github.com-nsf-gothic)))))
7684 (define-public drascula
7690 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7691 "Drascula_%20The%20Vampire%20Strikes%20Back/"
7692 "drascula-" version ".zip"))
7695 "1pj29rpb754sn6a56f8brfv6f2m1p5qgaqik7d68pfi2bb5zccdp"))))
7696 (build-system trivial-build-system)
7698 `(#:modules ((guix build utils))
7701 (use-modules (guix build utils)
7703 (let* ((out (assoc-ref %outputs "out"))
7704 (share (string-append out "/share/drascula"))
7705 (scummvm (assoc-ref %build-inputs "scummvm")))
7707 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
7709 (doc (string-append out "/share/doc/" ,name "-" ,version)))
7714 (assoc-ref %build-inputs input)
7716 ;; Every input provides "readme.txt", and we want to
7717 ;; preserve them all. Therefore we rename them first.
7720 (rename-file "readme.txt" "readme-international.txt"))
7722 (rename-file "readme.txt" "readme-audio.txt"))
7724 ;; Install documentation.
7725 (for-each (lambda (f) (install-file f doc))
7726 (find-files "." "\\.(txt|doc)$"))
7728 (for-each (lambda (f) (install-file f share))
7729 (find-files "." "\\.(ogg|00[0-9])$")))
7730 '("drascula-audio" "drascula-int" "source")))
7731 ;; Create standalone executable.
7732 (let* ((bin (string-append out "/bin"))
7733 (executable (string-append bin "/drascula"))
7734 (bash (string-append (assoc-ref %build-inputs "bash")
7737 (with-output-to-file executable
7739 (format #t "#!~a~%" bash)
7741 "exec ~a/bin/scummvm --path=~a drascula~%"
7743 (chmod executable #o755))
7744 ;; Create desktop file. There is no dedicated icon for the
7745 ;; game, so we borrow SCUMMVM's.
7746 (let ((apps (string-append out "/share/applications")))
7748 (with-output-to-file (string-append apps "/drascula.desktop")
7752 Name=Drascula: The Vampire Strikes Back~@
7753 GenericName=Drascula~@
7754 Exec=~a/bin/drascula~@
7755 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
7756 Categories=AdventureGame;Game;RolePlaying;~@
7757 Keywords=game;adventure;roleplaying;2D,fantasy;~@
7758 Comment=Classic 2D point and click adventure game~@
7759 Comment[de]=klassisches 2D-Abenteuerspiel in Zeigen-und-Klicken-Manier~@
7760 Comment[fr]=Jeux classique d'aventure pointer-et-cliquer en 2D~@
7761 Comment[it]=Gioco classico di avventura punta e clicca 2D~@
7769 `(("scummvm" ,scummvm)
7771 ,(let ((version "1.1"))
7774 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7775 "Drascula_%20The%20Vampire%20Strikes%20Back/"
7776 "drascula-int-" version ".zip"))
7779 "12236i7blamal92p1i8dgp3nhp2yicics4whsl63v682bj999n14")))))
7781 ,(let ((version "2.0"))
7784 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7785 "Drascula_%20The%20Vampire%20Strikes%20Back/"
7786 "drascula-audio-" version ".zip"))
7789 "00g4izmsqzxb8ry1vhfx6jrygl58lvlij09nw01ds4zddsiznsky")))))))
7790 (home-page "https://www.scummvm.org")
7791 (synopsis "Classic 2D point and click adventure game")
7792 (description "Drascula: The Vampire Strikes Back is a classic humorous 2D
7793 point and click adventure game.
7795 In Drascula you play the role of John Hacker, a British estate agent, that
7796 gets to meet a gorgeous blond girl who is kidnapped by the notorious vampire
7797 Count Drascula and embark on a fun yet dangerous quest to rescue her.
7798 Unfortunately, Hacker is not aware of Drascula's real ambitions: DOMINATING
7799 the World and demonstrating that he is even more evil than his brother Vlad.")
7800 ;; Drascula uses a BSD-like license.
7801 (license (license:non-copyleft "file:///readme.txt"))))
7803 (define (make-lure-package name language hash)
7811 "mirror://sourceforge/scummvm/extras/"
7812 "Lure%20of%20the%20Temptress/"
7813 name "-" version ".zip"))
7816 (build-system trivial-build-system)
7818 `(#:modules ((guix build utils))
7821 (use-modules (guix build utils))
7822 (let* ((out (assoc-ref %outputs "out"))
7823 (share (string-append out "/share"))
7824 (data (string-append share "/" ,name "/" ,language))
7825 (apps (string-append share "/applications"))
7826 (bin (string-append out "/bin"))
7827 (executable (string-append bin "/" ,name))
7828 (scummvm (assoc-ref %build-inputs "scummvm")))
7829 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
7831 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
7832 (let ((doc (string-append share "/doc/" ,name "-" ,version)))
7833 (for-each (lambda (f) (install-file f doc))
7834 (find-files "." "\\.(txt|PDF|pdf)$")))
7835 (for-each (lambda (f) (install-file f data))
7836 (find-files "." "\\.(vga|VGA)$"))
7837 ;; Build the executable.
7839 (let ((bash (assoc-ref %build-inputs "bash")))
7840 (with-output-to-file executable
7842 (format #t "#!~a/bin/bash~%" bash)
7843 (format #t "exec ~a/bin/scummvm -q ~a -p ~a lure~%"
7844 scummvm ,language data))))
7845 (chmod executable #o755)
7846 ;; Create desktop file. There is no dedicated
7847 ;; icon for the game, so we borrow SCUMMVM's.
7849 (with-output-to-file (string-append apps "/" ,name ".desktop")
7853 Name=Lure of the Temptress~@
7856 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
7857 Categories=AdventureGame;Game;RolePlaying;~@
7858 Keywords=game;adventure;roleplaying;2D,fantasy;~@
7859 Comment=Classic 2D point and click adventure game~@
7860 Comment[de]=klassisches 2D-Abenteuerspiel in Zeigen-und-Klicken-Manier~@
7861 Comment[fr]=Jeu classique d'aventure pointer-et-cliquer en 2D~@
7862 Comment[it]=Gioco classico di avventura punta e clicca 2D~@
7864 executable scummvm)))
7867 `(("unzip" ,unzip)))
7870 ("scummvm" ,scummvm)))
7871 (home-page "https://www.scummvm.org")
7872 (synopsis "2D point and click fantasy adventure game")
7874 "Lure of the Temptress is a classic 2D point and click adventure game.
7876 You are Diermot, an unwilling hero who'd prefer a quiet life, and are, to all
7877 intents and purposes, a good man. After decades of unrest the King has united
7878 the warring factions in his kingdom and all his lands are at peace, except
7879 a remote region around a town called Turnvale. A revolt has recently taken
7880 place in Turnvale, a revolt orchestrated by an apprentice sorceress called
7881 Selena, the titular temptress. The king calls together his finest horsemen
7882 and heads off (with you in tow) to Turnvale just to witness how hellish
7883 mercenary monsters called Skorl are invading the town.
7885 The king's men are defeated, the king is killed and you fall of your horse and
7886 bang your head heavily on the ground. You have been *unconscious for a while
7887 when you realize that you are in a dingy cell guarded by a not so friendly
7888 Skorl. Maybe it would be an idea to try and escape...")
7889 (license (license:non-copyleft "file:///README"))))
7893 "lure" "en" "0201i70qcs1m797kvxjx3ygkhg6kcl5yf49sihba2ga8l52q45zk"))
7895 (define-public lure-de
7897 "lure-de" "de" "0sqq7h5llml6rv85x0bfv4bgzwhs4c82p4w4zmfcaab6cjlad0sy"))
7899 (define-public lure-es
7901 "lure-es" "es" "1dvv5znvlsakw6w5r16calv9jkgw27aymgybsf4q22lcmpxbj1lk"))
7903 (define-public lure-fr
7905 "lure-fr" "fr" "1y51jjb7f8023832g44vd1jsb6ni85586pi2n5hjg9qjk6gi90r9"))
7907 (define-public lure-it
7909 "lure-it" "it" "1ks6n39r1cllisrrh6pcr39swsdv7ng3gx5c47vaw71zzfr70hjj"))
7911 (define (make-queen-package name file-prefix release language hash)
7918 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7919 "Flight%20of%20the%20Amazon%20Queen/"
7920 file-prefix release ".zip"))
7923 (build-system trivial-build-system)
7925 `(#:modules ((guix build utils))
7928 (use-modules (guix build utils))
7929 (let* ((out (assoc-ref %outputs "out"))
7930 (share (string-append out "/share"))
7931 (data (string-append share "/" ,name))
7932 (apps (string-append share "/applications"))
7933 (bin (string-append out "/bin"))
7934 (executable (string-append bin "/" ,name))
7935 (scummvm (assoc-ref %build-inputs "scummvm")))
7936 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
7938 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
7939 (let ((doc (string-append share "/doc/" ,name "-" ,version)))
7940 (install-file "readme.txt" doc))
7941 (install-file "queen.1c" data)
7943 (let ((bash (assoc-ref %build-inputs "bash")))
7944 (with-output-to-file executable
7946 (format #t "#!~a/bin/bash~%" bash)
7947 (format #t "exec ~a/bin/scummvm -q fr -p ~a queen~%"
7949 (chmod executable #o755)
7950 ;; Create desktop file. There is no dedicated
7951 ;; icon for the game, so we borrow SCUMMVM's.
7953 (with-output-to-file (string-append apps "/" ,name ".desktop")
7957 Name=Flight of the Amazon Queen~@
7959 Comment=Embark on a quest to rescue a kidnapped princess and in the process, discover the true sinister intentions of a suspiciously located Lederhosen company~@
7960 Comment[de]=Begib dich auf ein Abenteuer, um eine entführte Prinzessin zu retten und entdecke die wahren, finsteren Absichten eines verdächtig erscheinenden Lederhosen-Unternehmens~@
7963 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
7964 Categories=AdventureGame;Game;RolePlaying;~@
7965 Keywords=adventure;game;roleplaying;fantasy;~%"
7966 executable scummvm))))
7969 `(("unzip" ,unzip)))
7972 ("scummvm" ,scummvm)))
7973 (home-page "https://www.scummvm.org/")
7974 (synopsis "Classic 2D point and click adventure game")
7975 (description "Flight of the Amazon Queen is a 2D point-and-click
7976 adventure game set in the 1940s.
7978 You assume the role of Joe King, a pilot for hire who is given the job
7979 of flying Faye Russell (a famous movie star) into the Amazon jungle
7980 for a photo shoot. Of course, things never go according to plans.
7981 After an unfortunate turn of events they find themselves stranded in
7982 the heart of the Amazon jungle, where Joe will embark on a quest to
7983 rescue a kidnapped princess and in the process, discover the true
7984 sinister intentions of a suspiciously located Lederhosen company. In
7985 a rich 2D environment, Joe will cross paths with a variety of unlikely
7986 jungle inhabitants including, but not limited to, a tribe of Amazon
7987 women and 6-foot-tall pygmies.")
7988 (license (license:non-copyleft "file:///readme.txt"))))
7990 (define-public queen
7992 "queen" "FOTAQ_Talkie-" "1.1" "en"
7993 "1a6q71q1dl9vvw2qqsxk5h1sv0gaqy6236zr5905w2is01gdsp52"))
7995 (define-public queen-de
7997 "queen-de" "FOTAQ_Ger_talkie-" "1.0" "de"
7998 "13vn43x7214vyprlpqabvv71k890nff3d6fjscflr1ll7acjca3f"))
8000 (define-public queen-fr
8002 "queen-fr" "FOTAQ_Fr_Talkie_" "1.0" "fr"
8003 "0hq5g4qrkcwm2kn5i4kv4hijs9hi7bw9xl1vrwd1l69qqn30crwy"))
8005 (define-public queen-it
8007 "queen-it" "FOTAQ_It_Talkie_" "1.0" "it"
8008 "1h76y70lrpzfjkm53n4nr364nhyka54vbz9r7sadzyzl7c7ilv4d"))
8013 (version "1.2") ;1.3 is floppy version
8017 (uri (string-append "mirror://sourceforge/scummvm/extras/"
8018 "Beneath%20a%20Steel%20Sky/"
8019 "bass-cd-" version ".zip"))
8021 (base32 "14s5jz67kavm8l15gfm5xb7pbpn8azrv460mlxzzvdpa02a9n82k"))))
8022 (build-system trivial-build-system)
8024 `(#:modules ((guix build utils))
8027 (use-modules (guix build utils))
8028 (let* ((out (assoc-ref %outputs "out"))
8029 (share (string-append out "/share"))
8030 (data (string-append share "/" ,name))
8031 (apps (string-append share "/applications"))
8032 (bin (string-append out "/bin"))
8033 (executable (string-append bin "/" ,name))
8034 (scummvm (assoc-ref %build-inputs "scummvm")))
8035 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
8037 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
8038 (let ((doc (string-append share "/doc/bass-" ,version)))
8039 (install-file "readme.txt" doc))
8040 (for-each (lambda (f) (install-file f data))
8041 (find-files "." "^sky\\."))
8042 ;; Build the executable.
8044 (let ((bash (assoc-ref %build-inputs "bash")))
8045 (with-output-to-file executable
8047 (format #t "#!~a/bin/bash~%" bash)
8048 (format #t "exec ~a/bin/scummvm -p ~a sky~%" scummvm data))))
8049 (chmod executable #o755)
8050 ;; Create desktop file. There is no dedicated
8051 ;; icon for the game, so we borrow SCUMMVM's.
8053 (with-output-to-file (string-append apps "/" ,name ".desktop")
8057 Name=Beneath a Steel Sky~@
8060 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
8061 Categories=AdventureGame;Game;RolePlaying;~@
8062 Keywords=adventure;game;roleplaying;cyberpunk;~@
8063 Comment=A science-fiction adventure game set in a bleak post-apocalyptic vision of the future~@
8064 Comment[de]=Ein Science-Fiction-Abenteuerspiel \
8065 angesiedelt in einer düsteren, postapokalyptischen Vision der Zukunft~@
8067 executable scummvm)))
8070 `(("unzip" ,unzip)))
8073 ("scummvm" ,scummvm)))
8074 (home-page "https://www.scummvm.org/")
8075 (synopsis "Classic 2D point an click science-fiction adventure game")
8077 "Beneath a Steel Sky is a science-fiction thriller set in a bleak
8078 post-apocalyptic vision of the future. It revolves around Union City,
8079 where selfishness, rivalry, and corruption by its citizens seems to be
8080 all too common, those who can afford it live underground, away from
8081 the pollution and social problems which are plaguing the city.
8083 You take on the role of Robert Foster, an outcast of sorts from the
8084 city since a boy who was raised in a remote environment outside of
8085 Union City simply termed ``the gap''. Robert's mother took him away
8086 from Union City as a child on their way to ``Hobart'' but the
8087 helicopter crashed on its way. Unfortunately, Robert's mother died,
8088 but he survived and was left to be raised by a local tribe from the
8091 Years later, Union City security drops by and abducts Robert, killing
8092 his tribe in the process; upon reaching the city the helicopter taking
8093 him there crashes with him escaping, high upon a tower block in the
8094 middle of the city. He sets out to discover the truth about his past,
8095 and to seek vengeance for the killing of his tribe.")
8096 (license (license:non-copyleft "file:///readme.txt"))))
8098 (define-public gnurobots
8105 (uri (string-append "mirror://gnu/gnurobots/gnurobots-"
8109 "07gi3lsmbzzsjambgixj6xy79lh22km84z7bnzgwzxdy806lyvwb"))))
8110 (build-system gnu-build-system)
8115 ("readline" ,readline)
8116 ("guile" ,guile-1.8)))
8118 `(("pkg-config" ,pkg-config)))
8122 ;; Do not abort build on "deprecated-declarations" warnings.
8123 "CFLAGS=-Wno-error=deprecated-declarations"
8124 ;; Find readline headers in sub-directory.
8125 (string-append "READLINE_CFLAGS=-I"
8126 (assoc-ref %build-inputs "readline")
8127 "/include/readline/"))
8129 (modify-phases %standard-phases
8130 (add-after 'install 'install-doc
8131 (lambda* (#:key outputs #:allow-other-keys)
8132 (install-file "doc/Robots-HOWTO"
8133 (string-append (assoc-ref outputs "out")
8134 "/share/doc/gnurobots-"
8137 (home-page "https://www.gnu.org/software/gnurobots/")
8138 (synopsis "Program a little robot and watch it explore a world")
8140 "GNU Robots is a game in which you program a robot to explore a world
8141 full of enemies that can hurt it, obstacles and food to be eaten. The goal of
8142 the game is to stay alive and collect prizes. The robot program conveniently
8143 may be written in a plain text file in the Scheme programming language.")
8144 (license license:gpl3+)))
8146 (define-public ri-li
8152 (uri (string-append "mirror://sourceforge/ri-li/"
8153 "Ri-li%20Linux_Unix/Ri-li%20V" version "/"
8154 "Ri-li-" version ".tar.bz2"))
8157 "1gcdsgnnbbn1mb1hkpwniv3fhkaj1nn8gq33v5c16q3wqchcq77p"))
8159 ;; <https://github.com/NixOS/nixpkgs/blob/master/pkgs/games/rili/moderinze_cpp.patch>.
8160 ;; It doesn't build otherwise.
8161 (patches (search-patches "ri-li-modernize_cpp.patch"))))
8162 (build-system gnu-build-system)
8165 (modify-phases %standard-phases
8166 ;; Remove "gentoo" subdirectory from Makefile, as it is
8167 ;; missing a make file and generates a build failure.
8168 (add-after 'configure 'fix-build
8170 (substitute* "Makefile"
8173 (add-after 'install 'install-desktop-file
8174 (lambda* (#:key outputs #:allow-other-keys)
8175 (let* ((out (assoc-ref outputs "out"))
8176 (apps (string-append out "/share/applications"))
8177 (pixmaps (string-append out "/share/pixmaps")))
8178 (for-each (lambda (f) (install-file f pixmaps))
8179 (find-files "data" "\\.(png|ico)$"))
8181 (with-output-to-file (string-append apps "/ri-li.desktop")
8187 Icon=~a/Ri-li-icon-32x32.png~@
8188 Categories=Game;ArcadeGame;~@
8189 Keywords=toy;train;wooden;snake-like;engine;~@
8190 Comment=a toy simulator game~@
8191 Comment[de]=Ein Spiel mit einem kleinen Zug~@
8192 Comment[fr]=un jeu de petit train~@
8193 Comment[ro_RO]=un joc cu un tren de jucărie~@
8198 (add-after 'install-desktop-file 'remove-spurious-files
8199 ;; Delete redundant files already installed somewhere else.
8200 (lambda* (#:key outputs #:allow-other-keys)
8201 (let ((out (assoc-ref outputs "out")))
8202 (for-each delete-file
8203 (find-files (string-append out "/share/Ri-li")
8204 "\\.(png|ico)|COPYING"))
8207 `(("sdl" ,(sdl-union (list sdl sdl-mixer)))))
8208 (home-page "http://www.ri-li.org")
8209 (synopsis "Toy train simulation game")
8210 (description "Ri-li is a game in which you drive a wooden toy
8211 steam locomotive across many levels and collect all the coaches to
8213 ;; The project is dual-licensed GPL2+ and GPL3+.
8214 (license (list license:gpl2+ license:gpl3+))))
8216 (define-public freeorion
8223 (uri (string-append "https://github.com/freeorion/freeorion/releases/"
8224 "download/v" version "/FreeOrion_v" version
8225 "_2020-02-02.db53471_Source.tar.gz"))
8227 (base32 "1qfnqkysagh8dw26plk229qh17mv4prjxs6qhfyczrmrrakb72an"))
8228 (modules '((guix build utils)))
8231 ;; There are some bundled fonts.
8232 (for-each delete-file-recursively '("default/data/fonts"))
8234 (build-system cmake-build-system)
8236 '(#:tests? #f ;no test
8238 (modify-phases %standard-phases
8239 (add-after 'unpack 'unbundle-fonts
8240 (lambda* (#:key inputs #:allow-other-keys)
8241 (let ((roboto-dir (string-append (assoc-ref inputs "font-roboto")
8242 "/share/fonts/truetype/")))
8243 (substitute* "UI/ClientUI.cpp"
8244 (("\\(GetRootDataDir.*?Roboto-(Bold|Regular)\\.ttf\"\\)\\.string\\(\\)\\);"
8246 (string-append "\"" roboto-dir "Roboto-" type ".ttf\");")))
8250 ("boost_signals" ,boost-signals2)
8251 ("font-dejavu" ,font-dejavu)
8252 ("font-roboto" ,font-google-roboto)
8253 ("freetype2" ,freetype)
8258 ("libvorbis" ,libvorbis)
8260 ("python2" ,python-2.7)
8263 (home-page "https://www.freeorion.org/index.php/Main_Page")
8264 (synopsis "Turn-based space empire and galactic conquest computer game")
8266 "FreeOrion is a turn-based space empire and galactic conquest (4X)
8267 computer game being designed and built by the FreeOrion project. Control an
8268 empire with the goal of exploring the galaxy, expanding your territory,
8269 exploiting the resources, and exterminating rival alien empires. FreeOrion is
8270 inspired by the tradition of the Master of Orion games, but is not a clone or
8271 remake of that series or any other game.")
8272 ;; Source code is released under gpl2. Artwork, music and sounds, and
8273 ;; in-game text are released under cc-by-sa3.0. Game content scripts are
8274 ;; released under both gpl2 and cc-by-sa3.0. Bundled Gigi library is
8275 ;; released under lgpl2.1+.
8276 (license (list license:gpl2 license:cc-by-sa3.0 license:lgpl2.1+))))
8278 (define-public leela-zero
8286 (url "https://github.com/leela-zero/leela-zero.git")
8287 (commit (string-append "v" version))))
8288 (file-name (git-file-name name version))
8291 "17px5iny8mql5c01bymcli7zfssswkzvb2i8gnsmjcck6i2n8srl"))
8292 (patches (search-patches "leela-zero-gtest.patch"))))
8293 (build-system cmake-build-system)
8295 `(("googletest" ,googletest)))
8298 ("ocl-icd" ,ocl-icd)
8299 ("openblas" ,openblas)
8300 ("opencl-headers" ,opencl-headers)
8304 '(#:configure-flags '("-DUSE_BLAS=YES")
8305 #:phases (modify-phases %standard-phases
8306 (add-before 'configure 'fix-tests
8307 (lambda* (#:key outputs #:allow-other-keys)
8308 (let ((home (getcwd)))
8309 (setenv "HOME" home)
8310 (substitute* "src/tests/gtests.cpp"
8311 (("\\.\\./src/tests/0k\\.txt")
8312 (string-append home "/src/tests/0k.txt"))
8313 (("cfg_gtp_mode = true;")
8314 "cfg_gtp_mode = true; cfg_cpu_only = true;")))
8318 (invoke "./tests"))))))
8319 (home-page "https://github.com/leela-zero/leela-zero")
8320 (synopsis "Program playing the game of Go")
8322 "Leela-zero is a Go engine with no human-provided knowledge, modeled after
8323 the AlphaGo Zero paper. The current best network weights file for the engine
8324 can be downloaded from @url{https://zero.sjeng.org/best-network}.")
8325 (license license:gpl3+)))
8334 (url "https://github.com/bernds/q5Go.git")
8335 (commit (string-append "q5go-" version))))
8336 (file-name (git-file-name name version))
8339 "1gdlfqcqkqv7vph3qwq78d0qz6dhmdsranxq9bmixiisbzkqby31"))))
8340 (build-system gnu-build-system)
8342 `(("pkg-config" ,pkg-config)))
8344 `(("qtbase" ,qtbase)
8345 ("qtmultimedia" ,qtmultimedia)
8349 (modify-phases %standard-phases
8350 (add-after 'unpack 'fix-configure-script
8352 ;; Bypass the unavailable qtchooser program.
8353 (substitute* "configure"
8354 (("test -z \"QTCHOOSER\"")
8356 (("qtchooser -run-tool=(.*) -qt=qt5" _ command)
8359 (add-after 'unpack 'fix-paths
8361 (substitute* '("src/pics/Makefile.in"
8362 "src/translations/Makefile.in")
8363 (("\\$\\(datadir\\)/qGo/")
8364 "$(datadir)/q5go/"))
8366 (add-after 'install 'install-desktop-file
8367 (lambda* (#:key outputs #:allow-other-keys)
8368 (let* ((out (assoc-ref outputs "out"))
8369 (apps (string-append out "/share/applications"))
8370 (pics (string-append out "/share/q5go/pics")))
8371 (delete-file-recursively (string-append out "/share/applnk"))
8372 (delete-file-recursively (string-append out "/share/mimelnk"))
8373 (install-file "../source/src/pics/Bowl.ico" pics)
8375 (with-output-to-file (string-append apps "/q5go.desktop")
8383 Comment=Game of Go~@
8384 Comment[de]=Spiel des Go~@
8386 Comment[es]=Juego de Go~@
8387 Comment[fr]=Jeu de Go~@
8395 (synopsis "Qt GUI to play the game of Go")
8397 "This a tool for Go players which performs the following functions:
8400 @item Analysis frontend for Leela Zero (or compatible engines),
8401 @item GTP interface (to play against an engine),
8402 @item IGS client (to play on the internet),
8403 @item Export games to a variety of formats.
8405 (home-page "https://github.com/bernds/q5Go")
8406 (license license:gpl2+)))
8408 (define-public ktuberling
8415 (uri (string-append "mirror://kde/stable/applications/" version
8416 "/src/ktuberling-" version ".tar.xz"))
8418 (base32 "1qdf4q6wjh1lnlqw5c8z4rpj9w5vbyjfri1dah6yjm3mwppbc12j"))))
8419 (build-system qt-build-system)
8421 `(("extra-cmake-modules" ,extra-cmake-modules)
8424 `(("kcompletion" ,kcompletion)
8425 ("kconfigwidgets" ,kconfigwidgets)
8426 ("kcoreaddons" ,kcoreaddons)
8428 ("kdbusaddons" ,kdbusaddons)
8429 ("kdelibs4support" ,kdelibs4support)
8431 ("kwidgetsaddons" ,kwidgetsaddons)
8432 ("kxmlgui" ,kxmlgui)
8433 ("libkdegames" ,libkdegames)
8435 ("qtmultimedia" ,qtmultimedia)
8436 ("qtdeclarative" ,qtdeclarative)
8438 (home-page "https://games.kde.org/")
8439 (synopsis "Stamp drawing toy")
8440 (description "KTuberling is a drawing toy intended for small children and
8441 adults who remain young at heart. The game has no winner; the only purpose is
8442 to make the funniest faces you can. Several activites are possible, e.g.:
8445 @item Give the potato a funny face, clothes, and other goodies
8446 @item Build a small town, complete with school, zoo, and fire department
8447 @item Create a fantastic moonscape with spaceships and aliens
8451 KTuberling can speak the name of each the object in several languages,
8452 to assist in learning basic vocabulary.
8454 This package is part of the KDE games module.")
8455 (license (list license:gpl2+ license:fdl1.2+))))
8457 (define-public picmi
8464 (uri (string-append "mirror://kde/stable/applications/" version
8465 "/src/picmi-" version ".tar.xz"))
8467 (base32 "0z9mpmv49w914gqdx274brdzl6d1bz9j9nkvbwgmr3iq1ba49m3f"))))
8468 (build-system qt-build-system)
8470 `(("extra-cmake-modules" ,extra-cmake-modules)
8471 ("kdoctools" ,kdoctools)))
8473 `(("kcoreaddons" ,kcoreaddons)
8475 ("kdbusaddons" ,kdbusaddons)
8476 ("kdeclarative" ,kdeclarative)
8479 ("knewstuff" ,knewstuff)
8480 ("kxmlgui" ,kxmlgui)
8481 ("libkdegames" ,libkdegames)
8483 ("qtdeclarative" ,qtdeclarative)
8485 (home-page "https://games.kde.org/")
8486 (synopsis "Number logic game")
8487 (description "Picmi is a number logic game in which cells in a grid have
8488 to be colored or left blank according to numbers given at the side of the
8489 grid. The aim is to reveal a hidden picture.
8491 This package is part of the KDE games module.")
8492 (license (list license:gpl2+ license:fdl1.2+))))
8501 (uri (string-append "mirror://kde/stable/applications/" version
8502 "/src/kolf-" version ".tar.xz"))
8504 (base32 "06sfd0llr5cc3zf1vrpcxgw9bm009ky7y8822kynic9ipcd4z1hw"))))
8505 (build-system qt-build-system)
8507 `(("extra-cmake-modules" ,extra-cmake-modules)
8508 ("kdoctools" ,kdoctools)))
8510 `(("kcompletion" ,kcompletion)
8511 ("kconfigwidgets" ,kconfigwidgets)
8512 ("kcoreaddons" ,kcoreaddons)
8514 ("kdbusaddons" ,kdbusaddons)
8517 ("kwidgetsaddons" ,kwidgetsaddons)
8518 ("kxmlgui" ,kxmlgui)
8519 ("ktextwidgets" ,ktextwidgets)
8520 ("libkdegames" ,libkdegames)
8522 ("qtdeclarative" ,qtdeclarative)))
8523 (home-page "https://games.kde.org/")
8524 (synopsis "Miniature golf game")
8525 (description "Kolf is a miniature golf game for one to ten players. The
8526 game is played from an overhead view, with a short bar representing the golf
8527 club. Kolf features many different types of objects, such as water hazards,
8528 slopes, sand traps, and black holes (warps), among others.
8532 @item Single and Multi-player (up to ten players) modes
8533 @item High scores table
8534 @item Dynamic courses
8535 @item Third-party courses
8539 This package is part of the KDE games module.")
8540 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
8542 (define-public libkmahjongg
8544 (name "libkmahjongg")
8549 (uri (string-append "mirror://kde/stable/applications/"
8550 version "/src/libkmahjongg-" version ".tar.xz"))
8552 (base32 "0rdimk11hrc8qrmiv26z0ddjzi1k6806c0rfskx4cwmildmh6zgx"))))
8553 (build-system qt-build-system)
8555 `(("extra-cmake-modules" ,extra-cmake-modules)))
8558 ("kcompletion" ,kcompletion)
8559 ;("kconfig" ,kconfig)
8560 ("kcodecs" ,kcodecs)
8561 ("kconfigwidgets" ,kconfigwidgets)
8562 ("kcoreaddons" ,kcoreaddons)
8564 ("kwidgetsaddons" ,kwidgetsaddons)
8567 (home-page "https://games.kde.org/")
8568 (synopsis "Shared library for kmahjongg and kshisen")
8569 (description "Shared library and common files for kmahjongg, kshisen and
8570 other Mah Jongg like games.")
8571 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
8573 (define-public kmahjongg
8580 (uri (string-append "mirror://kde/stable/applications/"
8581 version "/src/kmahjongg-" version ".tar.xz"))
8583 (base32 "08na845h0nhmfrszdmvfq5y1dy7kgbrlzjp0f5snvbbf7w44ci6p"))))
8584 (build-system qt-build-system)
8586 `(("extra-cmake-modules" ,extra-cmake-modules)
8587 ("kdoctools" ,kdoctools)))
8589 `(("kcompletion" ,kcompletion)
8591 ("kdbusaddons" ,kdbusaddons)
8592 ("kdeclarative" ,kdeclarative)
8594 ("knewstuff" ,knewstuff)
8595 ("kxmlgui" ,kxmlgui)
8596 ("libkdegames" ,libkdegames)
8597 ("libkmahjongg" ,libkmahjongg)
8599 ("qtdeclarative" ,qtdeclarative)
8601 (home-page "https://games.kde.org/")
8602 (synopsis "Tile laying patience")
8603 (description "In KMahjongg the tiles are scrambled and staked on top of
8604 each other to resemble a certain shape. The player is then expected to remove
8605 all the tiles off the game board by locating each tile's matching pair.
8607 A variety of tile layouts are included, as well as an editor to create new
8610 This package is part of the KDE games module.")
8611 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
8613 (define-public kshisen
8620 (uri (string-append "mirror://kde/stable/applications/"
8621 version "/src/kshisen-" version ".tar.xz"))
8623 (base32 "1bq5m48af4h5apfp3bfsp76nlpv6h5sc0gd544zv7cgpfznz1sds"))))
8624 (build-system qt-build-system)
8626 `(("extra-cmake-modules" ,extra-cmake-modules)
8628 ;("pkg-config" ,pkg-config)
8629 ("kdoctools" ,kdoctools)))
8632 ("kcompletion" ,kcompletion)
8633 ("kconfigwidgets" ,kconfigwidgets)
8634 ("kcoreaddons" ,kcoreaddons)
8636 ("kdbusaddons" ,kdbusaddons)
8638 ("kxmlgui" ,kxmlgui)
8639 ("libkdegames" ,libkdegames)
8640 ("libkmahjongg" ,libkmahjongg)
8642 ("qtdeclarative" ,qtdeclarative)))
8643 (home-page "https://games.kde.org/")
8644 (synopsis "Shisen-Sho solitaire game")
8645 (description "KShisen is a solitaire-like game played using the standard
8646 set of Mahjong tiles. Unlike Mahjong however, KShisen has only one layer of
8649 This package is part of the KDE games module.")
8650 (license license:gpl2+)))
8652 (define-public kajongg
8659 (uri (string-append "mirror://kde/stable/applications/"
8660 version "/src/kajongg-" version ".tar.xz"))
8662 (base32 "0ql6p5zifdpdf65r7ki9ml123azpwwk9x3x8r9ij6xhjnf7p7x6w"))))
8663 (build-system qt-build-system)
8665 `(("extra-cmake-modules" ,extra-cmake-modules)
8667 ("kdoctools" ,kdoctools)))
8669 `(("kconfig" ,kconfig)
8670 ("kconfigwidgets" ,kconfigwidgets)
8671 ("kcoreaddons" ,kcoreaddons)
8673 ("libkmahjongg" ,libkmahjongg)
8678 `(("python-twisted" ,python-twisted)
8679 ("python-pyqt" ,python-pyqt)))
8680 ;; FIXME: Need to wrap PYTHONPATH
8681 (home-page "https://games.kde.org/")
8682 (synopsis "Classical Mah Jongg game for 4 players")
8683 (description "Kajongg is the ancient Chinese board game for 4 players.
8685 If you are looking for the Mah Jongg solitaire please use the application
8688 Kajongg can be used in two different ways: Scoring a manual game where you
8689 play as always and use Kajongg for the computation of scores and for
8690 bookkeeping. Or you can use Kajongg to play against any combination of other
8691 human players or computer players.
8693 This package is part of the KDE games module.")
8694 (license (list license:gpl2+ license:fdl1.2+))))
8696 (define-public kbreakout
8703 (uri (string-append "mirror://kde/stable/applications/" version
8704 "/src/kbreakout-" version ".tar.xz"))
8706 (base32 "0gwzx1z9mxrjlcjzglg8cxkyd6900whcar3b5j9laxxarc6xhj8w"))))
8707 (build-system qt-build-system)
8709 `(("extra-cmake-modules" ,extra-cmake-modules)
8710 ("kdoctools" ,kdoctools)))
8712 `(("kcompletion" ,kcompletion)
8713 ("kconfig" ,kconfig)
8714 ("kconfigwidgets" ,kconfigwidgets)
8715 ("kcoreaddons" ,kcoreaddons)
8717 ("kdbusaddons" ,kdbusaddons)
8719 ("kwidgetsaddons" ,kwidgetsaddons)
8720 ("kxmlgui" ,kxmlgui)
8721 ("libkdegames" ,libkdegames)
8723 ("qtdeclarative" ,qtdeclarative)))
8724 (home-page "https://games.kde.org/")
8725 (synopsis "Breakout like game")
8726 (description "KBreakout is similar to the classics breakout and xboing,
8727 featuring a number of added graphical enhancements and effects. You control a
8728 paddle at the bottom of the playing-field, and must destroy bricks at the top
8729 by bouncing balls against them.
8731 This package is part of the KDE games module.")
8732 (license (list license:gpl2+ license:fdl1.2+))))
8734 (define-public kmines
8741 (uri (string-append "mirror://kde/stable/applications/" version
8742 "/src/kmines-" version ".tar.xz"))
8744 (base32 "0ac3za36lh8hpx6mqfic9amwmzhzhzplm9hg3pw12gxl5a9mvfsf"))))
8745 (build-system qt-build-system)
8747 `(("extra-cmake-modules" ,extra-cmake-modules)
8748 ("kdoctools" ,kdoctools)))
8750 `(("kcompletion" ,kcompletion)
8751 ("kconfig" ,kconfig)
8752 ("kconfigwidgets" ,kconfigwidgets)
8753 ("kcoreaddons" ,kcoreaddons)
8755 ("kdbusaddons" ,kdbusaddons)
8757 ("ktextwidgets" ,ktextwidgets)
8758 ("kwidgetsaddons" ,kwidgetsaddons)
8759 ("kxmlgui" ,kxmlgui)
8760 ("libkdegames" ,libkdegames)
8762 ("qtdeclarative" ,qtdeclarative)))
8763 (home-page "https://games.kde.org/")
8764 (synopsis "Classical mine sweeper game")
8765 (description "KMines is a classic Minesweeper game. The idea is to
8766 uncover all the squares without blowing up any mines. When a mine is blown
8767 up, the game is over.
8769 This package is part of the KDE games module.")
8770 (license (list license:gpl2+ license:fdl1.2+))))
8772 (define-public konquest
8779 (uri (string-append "mirror://kde/stable/applications/"
8780 version "/src/konquest-" version ".tar.xz"))
8782 (base32 "02gjxskhi10a1sqh3skcild8zria7wncz1a4sbz7ax1p851q76k1"))))
8783 (build-system qt-build-system)
8785 `(("extra-cmake-modules" ,extra-cmake-modules)
8786 ("kdoctools" ,kdoctools)))
8788 `(("kcompletion" ,kcompletion)
8789 ("kconfig" ,kconfig)
8790 ("kcoreaddons" ,kcoreaddons)
8792 ("kdbusaddons" ,kdbusaddons)
8793 ("kguiaddons" ,kguiaddons)
8795 ("kwidgetsaddons" ,kwidgetsaddons)
8796 ("kxmlgui" ,kxmlgui)
8797 ("libkdegames" ,libkdegames)
8799 ("qtdeclarative" ,qtdeclarative)
8801 (home-page "https://games.kde.org/")
8802 (synopsis "Simple turn-based strategy game")
8803 (description "Konquest is the KDE version of Gnu-Lactic Konquest. Players
8804 conquer other planets by sending ships to them. The goal is to build an
8805 interstellar empire and ultimately conquer all other player's planets. The
8806 game can be played with up to nine empires, commanded either by the computer
8807 or by puny earthlings.
8809 This package is part of the KDE games module.")
8810 (license (list license:gpl2+ license:fdl1.2+))))
8812 (define-public kbounce
8819 (uri (string-append "mirror://kde/stable/applications/"
8820 version "/src/kbounce-" version ".tar.xz"))
8822 (base32 "02rfv0qzz5cmyfx8f56a45hbm9gsp6m3dcy8ajwx88rw5wpbrr11"))))
8823 (build-system qt-build-system)
8825 `(("extra-cmake-modules" ,extra-cmake-modules)
8826 ("kdoctools" ,kdoctools)))
8828 `(("kcompletion" ,kcompletion)
8829 ("kconfigwidgets" ,kconfigwidgets)
8830 ("kcoreaddons" ,kcoreaddons)
8832 ("kdbusaddons" ,kdbusaddons)
8835 ("kwidgetsaddons" ,kwidgetsaddons)
8836 ("kxmlgui" ,kxmlgui)
8837 ("libkdegames" ,libkdegames)
8839 ("qtdeclarative" ,qtdeclarative)
8841 (home-page "https://games.kde.org/")
8842 (synopsis "Jezzball arcade game")
8843 (description "KBounce is a single player arcade game with the elements of
8844 puzzle. It is played on a field, surrounded by wall, with two or more balls
8845 bouncing around within the walls. The object of the game is to build new
8846 walls to decrease the size of the active field.
8848 This package is part of the KDE games module.")
8849 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
8851 (define-public kblocks
8858 (uri (string-append "mirror://kde/stable/applications/"
8859 version "/src/kblocks-" version ".tar.xz"))
8861 (base32 "0qrm0dihzhkxsq9l49ndzms802x6jn92vvabb2zf2q9z593m69cx"))))
8862 (build-system qt-build-system)
8864 `(("extra-cmake-modules" ,extra-cmake-modules)
8865 ("kdoctools" ,kdoctools)))
8867 `(("kcompletion" ,kcompletion)
8868 ("kconfig" ,kconfig)
8869 ("kconfigwidgets" ,kconfigwidgets)
8870 ("kcoreaddons" ,kcoreaddons)
8872 ("kdbusaddons" ,kdbusaddons)
8874 ("kwidgetsaddons" ,kwidgetsaddons)
8875 ("kxmlgui" ,kxmlgui)
8876 ("libkdegames" ,libkdegames)
8878 ("qtdeclarative" ,qtdeclarative)
8880 (home-page "https://games.kde.org/")
8881 (synopsis "Single player falling blocks puzzle game")
8882 (description "KBlocks is the classic Tetris-like falling blocks game.
8884 The idea is to stack the falling blocks to create horizontal lines without any
8885 gaps. When a line is completed it is removed, and more space is available in
8886 the play area. When there is not enough space for blocks to fall, the game is
8889 This package is part of the KDE games module.")
8890 (license (list license:gpl2+ license:fdl1.2+))))
8892 (define-public ksudoku
8899 (uri (string-append "mirror://kde/stable/applications/"
8900 version "/src/ksudoku-" version ".tar.xz"))
8902 (base32 "0rcscz91hilm7l3am5w02n0n8l7xhi4l0n4sskznh68kblw0ggw2"))))
8903 (build-system qt-build-system)
8905 `(("extra-cmake-modules" ,extra-cmake-modules)
8906 ("kdoctools" ,kdoctools)))
8908 `(("karchive", karchive)
8909 ("kconfig" ,kconfig)
8910 ("kconfigwidgets" ,kconfigwidgets)
8911 ("kcoreaddons" ,kcoreaddons)
8913 ("kguiaddons" ,kguiaddons)
8915 ("kiconthemes" ,kiconthemes)
8917 ("kwidgetsaddons" ,kwidgetsaddons)
8918 ("kxmlgui" ,kxmlgui)
8919 ("libkdegames" ,libkdegames)
8922 ("qtdeclarative" ,qtdeclarative)
8924 (home-page "https://games.kde.org/")
8925 (synopsis "Sudoku puzzle game and solver")
8926 (description "KSudoku is a Sudoku game and solver, supporting a range of
8927 2D and 3D Sudoku variants. In addition to playing Sudoku, it can print Sudoku
8928 puzzle sheets and find the solution to any Sudoku puzzle.
8930 The word Sudoku means \"single number in an allotted place\" in Japanese.
8931 These are the basic rules: Every Sudoku is a square divided into 3x3
8932 subsquares with 3x3 cells each.
8934 Some cells are filled with a number at the beginning. The remaining ones are
8935 to be filled by the player using numbers from 1 to 9, without repeating a
8936 number twice on each column, row or subsquare (each of them must contain only
8937 one 1, one 2, one 3, and so on). The game requires logic and patience.
8938 Solving takes usually 10 to 30 minutes, depending on puzzle level, your skill
8941 The numerals in Sudoku puzzles are used for convenience (for example in 16x16
8942 board we use letters): arithmetic relationships between numbers are
8945 This program supports also 16x16 games with numbers from 1 to 16 and 256
8946 cells with 16 cols, rows and subsquares!
8948 More information at http://en.wikipedia.org/wiki/Sudoku
8950 This package is part of the KDE games module.")
8951 (license (list license:gpl2+ license:fdl1.2+))))
8953 (define-public klines
8960 (uri (string-append "mirror://kde/stable/applications/" version
8961 "/src/klines-" version ".tar.xz"))
8963 (base32 "1g1f46jp0rb8gpqkgcf915ydpsscn1sxk3gjvm8bcqgx9ddq59xa"))))
8964 (build-system qt-build-system)
8966 `(("extra-cmake-modules" ,extra-cmake-modules)
8967 ("kdoctools" ,kdoctools)))
8969 `(("kcompletion" ,kcompletion)
8970 ("kconfigwidgets" ,kconfigwidgets)
8971 ("kcoreaddons" ,kcoreaddons)
8973 ("kdbusaddons" ,kdbusaddons)
8975 ("kwidgetsaddons" ,kwidgetsaddons)
8976 ("kxmlgui" ,kxmlgui)
8977 ("libkdegames" ,libkdegames)
8979 ("qtdeclarative" ,qtdeclarative)))
8980 (home-page "https://games.kde.org/")
8981 (synopsis "Place 5 equal pieces together, but wait, there are 3 new ones")
8982 (description "KLines is a simple but highly addictive one player game.
8984 The player has to move the colored balls around the game board, gathering them
8985 into the lines of the same color by five. Once the line is complete it is
8986 removed from the board, therefore freeing precious space. In the same time
8987 the new balls keep arriving by three after each move, filling up the game
8990 KLines is a single-player game where the player removes colored balls from the
8991 board by arranging them into lines of five or more. However, every time the
8992 player moves a ball, three more balls are added to the board.
8994 This package is part of the KDE games module.")
8995 (license (list license:gpl2+ license:fdl1.2+))))
8997 (define-public kgoldrunner
8999 (name "kgoldrunner")
9004 (uri (string-append "mirror://kde/stable/applications/" version "/src/kgoldrunner-"
9007 (base32 "16rcvq796r3asz4v4ap75xvwnxd3dd2nsq5r9vxvzl6rrf1w9bj4"))))
9008 (build-system qt-build-system)
9010 `(("extra-cmake-modules" ,extra-cmake-modules)
9011 ("kdoctools" ,kdoctools)))
9013 `(("kcompletion" ,kcompletion)
9014 ("kcoreaddons" ,kcoreaddons)
9016 ("kdbusaddons" ,kdbusaddons)
9019 ("kwidgetsaddons" ,kwidgetsaddons)
9020 ("kxmlgui" ,kxmlgui)
9021 ("libkdegames" ,libkdegames)
9023 ("qtdeclarative" ,qtdeclarative)))
9024 (home-page "https://games.kde.org/")
9025 (synopsis "Action and puzzle solving game")
9026 (description "KGoldrunner is an action game where the hero runs through a
9027 maze, climbs stairs, dig holes and dodges enemies in order to collect all the
9028 gold nuggets and escape to the next level. Your enemies are also after the
9029 gold. Worse still, they are after you!.
9031 KGoldrunner is a fast-paced platform game where the player must navigate a
9032 maze while collecting gold nuggets and avoiding enemies. A variety of level
9033 packs are included, as well as an editor to create new levels.
9035 This package is part of the KDE games module.")
9036 (license (list license:gpl2+ license:fdl1.2+))))
9038 (define-public kdiamond
9045 (uri (string-append "mirror://kde/stable/applications/" version
9046 "/src/kdiamond-" version ".tar.xz"))
9048 (base32 "1v5yb9hb26lk277zhw8d37ks829yfqr5anzx1qhms44gca5kqhva"))))
9049 (build-system qt-build-system)
9051 `(("extra-cmake-modules" ,extra-cmake-modules)
9052 ("kdoctools" ,kdoctools)))
9054 `(("kcompletion", kcompletion)
9055 ("kconfig" ,kconfig)
9056 ("kconfigwidgets" ,kconfigwidgets)
9057 ("kcoreaddons" ,kcoreaddons)
9059 ("kdbusaddons" ,kdbusaddons)
9061 ("knotifications" ,knotifications)
9062 ("knotifyconfig" ,knotifyconfig)
9063 ("kwidgetsaddons" ,kwidgetsaddons)
9064 ("kxmlgui" ,kxmlgui)
9065 ("libkdegames" ,libkdegames)
9067 ("qtdeclarative" ,qtdeclarative)))
9068 (home-page "https://games.kde.org/")
9069 (synopsis "Three-in-a-row game")
9070 (description "KDiamond is a three-in-a-row game like Bejeweled. It
9071 features unlimited fun with randomly generated games and five difficulty
9072 levels with varying number of diamond colors and board sizes.
9074 This package is part of the KDE games module.")
9075 (license (list license:gpl2+ license:fdl1.2+))))
9077 (define-public kfourinline
9079 (name "kfourinline")
9084 (uri (string-append "mirror://kde/stable/applications/" version
9085 "/src/kfourinline-" version ".tar.xz"))
9087 (base32 "1vprs6dc1ccn3g6k594i9s94xy4b91vzlqjysyc6fqcq2fs54ny3"))))
9088 (build-system qt-build-system)
9090 `(("extra-cmake-modules" ,extra-cmake-modules)
9091 ("kdoctools" ,kdoctools)))
9093 `(("kcompletion" ,kcompletion)
9094 ("kconfig" ,kconfig)
9095 ("kconfigwidgets" ,kconfigwidgets)
9096 ("kcoreaddons" ,kcoreaddons)
9098 ("kdelibs4support" ,kdelibs4support)
9101 ("kxmlgui" ,kxmlgui)
9102 ("libkdegames" ,libkdegames)
9104 ("qtdeclarative" ,qtdeclarative)
9106 (home-page "https://games.kde.org/")
9107 (synopsis "Place 4 pieces in a row")
9108 (description "KFourInLine is a board game for two players based on the
9111 KFourInLine is a game where two players take turns dropping pieces into a
9112 grid, the winner being the first to place four pieces in a line.
9114 This package is part of the KDE games module.")
9115 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
9117 (define-public kblackbox
9124 (uri (string-append "mirror://kde/stable/applications/" version
9125 "/src/kblackbox-" version ".tar.xz"))
9127 (base32 "1x42sfpf75c6mavwkc7g7dm11y9s5dpj8igphly5kvm0pajqby0n"))))
9128 (build-system qt-build-system)
9130 `(("extra-cmake-modules" ,extra-cmake-modules)
9131 ("kdoctools" ,kdoctools)))
9133 `(("karchive" ,karchive)
9134 ("kcompletion" ,kcompletion)
9135 ("kconfig" ,kconfig)
9136 ("kcoreaddons" ,kcoreaddons)
9138 ("kdbusaddons" ,kdbusaddons)
9140 ("ktextwidgets" ,ktextwidgets)
9141 ("kxmlgui" ,kxmlgui)
9142 ("libkdegames" ,libkdegames)
9144 ("qtdeclarative" ,qtdeclarative)
9146 (home-page "https://games.kde.org/")
9147 (synopsis "Find atoms in a grid by shooting electrons")
9148 (description "KBlackbox is a game of hide and seek played on a grid of
9149 boxes where the computer has hidden several balls. The position of the hidden
9150 balls can be deduced by shooting beams into the box
9152 KBlackBox is a game of hide and seek played on an grid of boxes, where the
9153 player shoots rays into the grid to deduce the positions of hidden objects.
9155 This package is part of the KDE games module.")
9156 (license (list license:gpl2+ license:fdl1.2+))))
9158 (define-public knetwalk
9165 (uri (string-append "mirror://kde/stable/applications/" version
9166 "/src/knetwalk-" version ".tar.xz"))
9168 (base32 "1i340salzgqdw8y33wrrydmpgx3pvwf5wrbljlh67cjf6s4csx7d"))))
9169 (build-system qt-build-system)
9171 `(("extra-cmake-modules" ,extra-cmake-modules)
9172 ("kdoctools" ,kdoctools)))
9174 `(("kcompletion" ,kcompletion)
9175 ("kconfig" ,kconfig)
9176 ("kconfigwidgets" ,kconfigwidgets)
9177 ("kcoreaddons" ,kcoreaddons)
9179 ("kdbusaddons" ,kdbusaddons)
9181 ("ktextwidgets" ,ktextwidgets)
9182 ("kwidgetsaddons" ,kwidgetsaddons)
9183 ("kxmlgui" ,kxmlgui)
9184 ("libkdegames" ,libkdegames)
9186 ("qtdeclarative" ,qtdeclarative)))
9187 (home-page "https://games.kde.org/")
9188 (synopsis "Turn the board pieces to get all computers connected")
9189 (description "KNetWalk is a small game where you have to build up a
9190 computer network by rotating the wires to connect the terminals to the server.
9191 When the network is build, a highscore-list comes up where competitions can be
9194 KNetwalk is a puzzle game where the player arranges sections of wire to
9195 connect all the computers on the board.
9197 This package is part of the KDE games module.")
9198 (license (list license:gpl2+ license:fdl1.2+))))
9200 (define-public bomber
9207 (uri (string-append "mirror://kde/stable/applications/" version
9208 "/src/bomber-" version ".tar.xz"))
9210 (base32 "1lvzd0mzgq25akvwvkm57l3plm65k731v2i1ahakn985bb5gc3is"))))
9211 (build-system qt-build-system)
9213 `(("extra-cmake-modules" ,extra-cmake-modules)
9214 ("kdoctools" ,kdoctools)))
9216 `(("kcompletiom" ,kcompletion)
9217 ("kconfig" ,kconfig)
9218 ("kcoreaddons" ,kcoreaddons)
9220 ("kdbusaddons" ,kdbusaddons)
9222 ("kxmlgui" ,kxmlgui)
9223 ("libkdegames" ,libkdegames)
9225 ("qtdeclarative" ,qtdeclarative)))
9226 (home-page "https://games.kde.org/")
9227 (synopsis "Arcade bombing game")
9228 (description "Bomber is a single player arcade game.
9230 The player is invading various cities in a plane that is decreasing in height.
9231 The goal of the game is to destroy all the buildings and advance to the next
9232 level. Each level gets a bit harder by increasing the speed of the plane and
9233 the height of the buildings.
9235 Bomber is a game where you fly a spaceship and attempt to bomb the buildings
9236 below you. Each pass the spaceship makes, it gets lower and lower. If you've
9237 not destroyed a building in your path, you will crash into it.
9239 This package is part of the KDE games module.")
9240 (license (list license:gpl2+ license:fdl1.2+))))
9242 (define-public granatier
9249 (uri (string-append "mirror://kde/stable/applications/" version
9250 "/src/granatier-" version ".tar.xz"))
9252 (base32 "141qmdinz7ikbbrs8dq6cap3nl22sl7pw62r80pf3xxwn2q4phpa"))))
9253 (build-system qt-build-system)
9255 `(("extra-cmake-modules" ,extra-cmake-modules)
9256 ("kdoctools" ,kdoctools)))
9258 `(("kcompletion" ,kcompletion)
9259 ("kconfig" ,kconfig)
9260 ("kconfigwidgets" ,kconfigwidgets)
9261 ("kcoreaddons" ,kcoreaddons)
9263 ("kdbusaddons" ,kdbusaddons)
9265 ("knewstuff" ,knewstuff)
9266 ("kwidgetsaddons" ,kwidgetsaddons)
9267 ("kxmlgui" ,kxmlgui)
9268 ("libkdegames" ,libkdegames)
9270 ("qtdeclarative" ,qtdeclarative)
9272 (home-page "https://games.kde.org/")
9273 (synopsis "Bomberman clone")
9274 (description "Granatier is a clone of the classic Bomberman game,
9275 inspired by the work of the Clanbomber clone.
9277 This package is part of the KDE games module.")
9278 (license (list license:gpl2+ license:fdl1.2+))))
9280 (define-public ksirk
9287 (uri (string-append "mirror://kde/stable/applications/" version
9288 "/src/ksirk-" version ".tar.xz"))
9290 (base32 "1b1wixs2hp5qnvdygfwa3kvy0kn94ysa4ifmx90q6r3yfr2lpfca"))))
9291 (build-system qt-build-system)
9293 `(("extra-cmake-modules" ,extra-cmake-modules)
9294 ("kdoctools" ,kdoctools)))
9296 `(("kcrash" ,kcrash)
9298 ("kiconthemes" ,kiconthemes)
9300 ("knewstuff" ,knewstuff)
9301 ("kwallet" ,kwallet)
9302 ("kxmlgui" ,kxmlgui)
9303 ("libkdegames" ,libkdegames)
9307 ("qtdeclarative" ,qtdeclarative)
9310 (home-page "https://games.kde.org/")
9311 (synopsis "Computerized version of the well known strategy board game
9313 (description "KsirK is a multi-player network-enabled game. The goal of
9314 the game is simply to conquer the world by attacking your neighbors with your
9317 At the beginning of the game, countries are distributed to all the players.
9318 Each country contains one army represented by an infantryman. Each player has
9319 some armies to distribute to his countries. On each turn, each player can
9320 attack his neighbours, eventually conquering one or more countries. At the
9321 end of each turn, some bonus armies are distributed to the players in function
9322 of the number of countries they own. The winner is the player that conquered
9327 @item Support for 1-6 human or computer players
9328 @item Multi-player gaming over a network
9329 @item You can easily create new skins with SVG graphics and the skin editor
9330 @item Hot New Stuff support. You can easily download and install new skins
9333 This package is part of the KDE games module.")
9334 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
9336 (define-public palapeli
9343 (uri (string-append "mirror://kde/stable/applications/" version
9344 "/src/palapeli-" version ".tar.xz"))
9346 (base32 "1g91ydbc0x2y2gn3lcb5w03mn7k78l5bq4cb1s59kx6yjbflv3pw"))))
9347 (build-system qt-build-system)
9349 `(("extra-cmake-modules" ,extra-cmake-modules)
9350 ("kdoctools" ,kdoctools)))
9352 `(("karchive" ,karchive)
9353 ("kcompletion" ,kcompletion)
9354 ("kconfig" ,kconfig)
9355 ("kconfigwidgets" ,kconfigwidgets)
9356 ("kcoreaddons" ,kcoreaddons)
9362 ("kitemviews" ,kitemviews)
9363 ("knotifications" ,knotifications)
9364 ("kservice" ,kservice)
9365 ("kwidgetsaddons" ,kwidgetsaddons)
9366 ("kxmlgui" ,kxmlgui)
9367 ("libkdegames" ,libkdegames)
9369 ("qtdeclarative" ,qtdeclarative)
9371 ("shared-mime-info" ,shared-mime-info)))
9372 (home-page "https://games.kde.org/")
9373 (synopsis "Jigsaw puzzle game")
9374 (description "Palapeli is a jigsaw puzzle game. Unlike other games in
9375 that genre, you are not limited to aligning pieces on imaginary grids. The
9376 pieces are freely moveable. Also, Palapeli features real persistency, i.e.
9377 everything you do is saved on your disk immediately.
9379 Palapeli is the Finnish word for jigsaw puzzle.
9381 This package is part of the KDE games module.")
9382 (license license:gpl2+)))
9384 (define-public kiriki
9391 (uri (string-append "mirror://kde/stable/applications/" version
9392 "/src/kiriki-" version ".tar.xz"))
9394 (base32 "1xg25dj95g81dc5l7k47am4j52abrwwfx4h73lvsbn4lc8lfmshw"))))
9395 (build-system qt-build-system)
9397 `(("extra-cmake-modules" ,extra-cmake-modules)
9398 ("kdoctools" ,kdoctools)))
9400 `(("kcompletion" ,kcompletion)
9401 ("kconfig" ,kconfig)
9402 ("kconfigwidgets" ,kconfigwidgets)
9403 ("kcoreaddons" ,kcoreaddons)
9405 ("kdbusaddons" ,kdbusaddons)
9407 ("kiconthemes" ,kiconthemes)
9408 ("kxmlgui" ,kxmlgui)
9409 ("libkdegames" ,libkdegames)
9411 ("qtdeclarative" ,qtdeclarative)))
9412 (home-page "https://games.kde.org/")
9413 (synopsis "Yahtzee dice game")
9414 (description "Kiriki is an addictive and fun dice game, designed to be
9415 played by as many as six players.
9417 Participants have to collect points by rolling five dice for up to three times
9418 per single turn to make combinations with the highest score.
9420 This package is part of the KDE games module.")
9421 (license (list license:gpl2+ license:fdl1.2+))))
9430 (uri (string-append "mirror://kde/stable/applications/" version
9431 "/src/kigo-" version ".tar.xz"))
9433 (base32 "00l5gcbi8xyj9c1lngkrddka3a4m4cd78prfplrpq32ma9xq681f"))))
9434 (build-system qt-build-system)
9436 `(("extra-cmake-modules" ,extra-cmake-modules)
9437 ("kdoctools" ,kdoctools)))
9439 `(("kconfig" ,kconfig)
9440 ("kconfigwidgets" ,kconfigwidgets)
9441 ("kcoreaddons" ,kcoreaddons)
9443 ("kdbusaddons" ,kdbusaddons)
9446 ("knewstuff", knewstuff)
9447 ("ktextwidgets" ,ktextwidgets)
9448 ("kxmlgui" ,kxmlgui)
9449 ("libkdegames" ,libkdegames)
9451 ("qtdeclarative" ,qtdeclarative)
9453 (home-page "https://games.kde.org/")
9454 (synopsis "Go board game")
9455 (description "Kigo is an open-source implementation of the popular Go
9458 Go is a strategic board game for two players. It is also known as
9459 igo (Japanese), weiqi or wei ch'i (Chinese) or baduk (Korean). Go is noted
9460 for being rich in strategic complexity despite its simple rules. The game is
9461 played by two players who alternately place black and white stones (playing
9462 pieces, now usually made of glass or plastic) on the vacant intersections of a
9463 grid of 19x19 lines (9x9 or 13x13 for easier games).
9465 You also need to install a go engine, e.g. @code{gnugo}.
9467 This package is part of the KDE games module.")
9468 (license license:gpl3+)))
9470 (define-public kubrick
9477 (uri (string-append "mirror://kde/stable/applications/" version
9478 "/src/kubrick-" version ".tar.xz"))
9480 (base32 "0ma8wja4rqlsmsr8cyicfpkwlgqva4450ls4c0ql53p0kabf04gx"))))
9481 (build-system qt-build-system)
9483 `(("extra-cmake-modules" ,extra-cmake-modules)
9484 ("kdoctools" ,kdoctools)))
9487 ("kconfig" ,kconfig)
9488 ("kconfigwidgets" ,kconfigwidgets)
9489 ("kcoreaddons" ,kcoreaddons)
9493 ("kwidgetsaddons" ,kwidgetsaddons)
9494 ("kxmlgui" ,kxmlgui)
9495 ("libkdegames" ,libkdegames)
9497 ("qtdeclarative" ,qtdeclarative)
9499 (home-page "https://games.kde.org/")
9500 (synopsis "Game based on Rubik's Cube")
9501 (description "Kubrick is a game based on the Rubik's Cube puzzle.
9503 The cube sizes range from 2x2x2 up to 6x6x6, or you can play with irregular
9504 \"bricks\" such as 5x3x2 or \"mats\" such as 6x4x1 or 2x2x1. The game has a
9505 selection of puzzles at several levels of difficulty, as well as demos of
9506 pretty patterns and solution moves, or you can make up your own puzzles. The
9507 game has unlimited undo, redo, save and reload capabilities.
9509 This package is part of the KDE games module.")
9510 (license (list license:gpl2+ license:fdl1.2+))))
9512 (define-public lskat
9519 (uri (string-append "mirror://kde/stable/applications/" version
9520 "/src/lskat-" version ".tar.xz"))
9522 (base32 "1qk5hd27zb42pbcxq5wyzz62nj5f0qdmgy54r9rnk92pzzzk94s9"))))
9523 (build-system qt-build-system)
9525 `(("extra-cmake-modules" ,extra-cmake-modules)
9526 ("kdoctools" ,kdoctools)))
9528 `(("kcompletion" ,kcompletion)
9529 ("kconfig" ,kconfig)
9530 ("kcoreaddons" ,kcoreaddons)
9532 ("kguiaddons" ,kguiaddons)
9534 ("kwidgetsaddons" ,kwidgetsaddons)
9535 ("kxmlgui" ,kxmlgui)
9536 ("libkdegames" ,libkdegames)
9538 ("qtdeclarative" ,qtdeclarative)
9540 (home-page "https://games.kde.org/")
9541 (synopsis "Lieutnant Skat card game")
9542 (description "Lieutnant Skat (from German \"Offiziersskat\") is a fun and
9543 engaging card game for two players, where the second player is either live
9544 opponent, or a built in artificial intelligence.
9546 Lieutnant Skat is a simplified variant of the Skat card game for two players.
9548 This package is part of the KDE games module.")
9549 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
9551 (define-public kapman
9558 (uri (string-append "mirror://kde/stable/applications/" version
9559 "/src/kapman-" version ".tar.xz"))
9561 (base32 "03pq38caam30q4bw14c045kayw2d87xq1yaa3s2jkrylylfq3p0f"))))
9562 (build-system qt-build-system)
9564 `(("extra-cmake-modules" ,extra-cmake-modules)
9565 ("kdoctools" ,kdoctools)))
9567 `(("kcompletion" ,kcompletion)
9568 ("kconfig" ,kconfig)
9569 ("kconfigwidgets" ,kconfigwidgets)
9570 ("kcoreaddons" ,kcoreaddons)
9572 ("kdbusaddons" ,kdbusaddons)
9574 ("kxmlgui" ,kxmlgui)
9575 ("libkdegames" ,libkdegames)
9577 ("qtdeclarative" ,qtdeclarative)
9579 (home-page "https://games.kde.org/")
9580 (synopsis "Pac-Man clone")
9581 (description "Kapman is a clone of the well known game Pac-Man.
9583 You must run through the maze to eat all pills without being captured by a
9584 ghost. By eating an energizer, Kapman gets the ability to eat ghosts for a
9585 few seconds. When a stage is cleared of pills and energizer the player is
9586 taken to the next stage with slightly increased game speed
9588 This package is part of the KDE games module.")
9589 (license (list license:gpl2+ license:fdl1.2+))))
9591 (define-public kspaceduel
9598 (uri (string-append "mirror://kde/stable/applications/" version
9599 "/src/kspaceduel-" version ".tar.xz"))
9601 (base32 "1hppni0ihs7psc0dly5rxyy2a38nzhlig9yfyhi3lkh36z05pql8"))))
9602 (build-system qt-build-system)
9604 `(("extra-cmake-modules" ,extra-cmake-modules)
9605 ("kdoctools" ,kdoctools)))
9607 `(("kcompletion" ,kcompletion)
9608 ("kconfig" ,kconfig)
9609 ("kconfigwidgets" ,kconfigwidgets)
9610 ("kcoreaddons" ,kcoreaddons)
9612 ("kdbusaddons" ,kdbusaddons)
9614 ("kxmlgui" ,kxmlgui)
9615 ("libkdegames" ,libkdegames)
9617 ("qtdeclarative" ,qtdeclarative)
9619 (home-page "https://games.kde.org/")
9620 (synopsis "Two player game with shooting spaceships flying around a sun")
9621 (description "KSpaceduel is a space battle game for one or two players,
9622 where two ships fly around a star in a struggle to be the only survivor.
9624 This package is part of the KDE games module.")
9625 (license (list license:gpl2+ license:fdl1.2+))))
9634 (uri (string-append "mirror://kde/stable/applications/" version
9635 "/src/bovo-" version ".tar.xz"))
9637 (base32 "0dbpng0w52nahmx7brsll66zw23ql1g6pcvn2k4g2lnvxch0i59g"))))
9638 (build-system qt-build-system)
9640 `(("extra-cmake-modules" ,extra-cmake-modules)
9641 ("kdoctools" ,kdoctools)))
9643 `(("kcompletion" ,kcompletion)
9644 ("kcoreaddons" ,kcoreaddons)
9646 ("kdbusaddons" ,kdbusaddons)
9648 ("kxmlgui" ,kxmlgui)
9649 ("libkdegames" ,libkdegames)
9651 ("qtdeclarative" ,qtdeclarative)
9653 (home-page "https://games.kde.org/")
9654 (synopsis "Classic pen and paper game: five in a line")
9655 (description "Bovo is a Gomoku (from Japanese 五目並べ - lit. \"five
9656 points\") like game for two players, where the opponents alternate in placing
9657 their respective pictogram on the game board. The winner is the first to
9658 complete a line of five markers. (Also known as: Connect Five, Five in a row,
9659 X and O, Naughts and Crosses)
9661 This package is part of the KDE games module.")
9662 (license (list license:gpl2+ license:fdl1.2+))))
9664 (define-public killbots
9671 (uri (string-append "mirror://kde/stable/applications/" version
9672 "/src/killbots-" version ".tar.xz"))
9674 (base32 "1qi86q7diw7glkp9v33yim9nhz2da4balbxa1hjrdgjdv8zdbxbm"))))
9675 (build-system qt-build-system)
9677 `(("extra-cmake-modules" ,extra-cmake-modules)
9678 ("kdoctools" ,kdoctools)))
9680 `(("kcompletion" ,kcompletion)
9681 ("kconfig" ,kconfig)
9682 ("kconfigwidgets" ,kconfigwidgets)
9683 ("kcoreaddons" ,kcoreaddons)
9685 ("kdbusaddons" ,kdbusaddons)
9687 ("kwidgetsaddons" ,kwidgetsaddons)
9688 ("kxmlgui" ,kxmlgui)
9689 ("libkdegames" ,libkdegames)
9691 ("qtdeclarative" ,qtdeclarative)))
9692 (home-page "https://games.kde.org/")
9693 (synopsis "Port of the classic BSD console game robots")
9694 (description "Killbots is a simple game of evading killer robots.
9696 Who created the robots and why they have been programmed to destroy, no one
9697 knows. All that is known is that the robots are numerous and their sole
9698 objective is to destroy you. Fortunately for you, their creator has focused
9699 on quantity rather than quality and as a result the robots are severely
9700 lacking in intelligence. Your superior wit and a fancy teleportation device
9701 are your only weapons against the never-ending stream of mindless automatons.
9703 This package is part of the KDE games module.")
9704 (license (list license:gpl2+ license:fdl1.2+))))
9706 (define-public ksnakeduel
9713 (uri (string-append "mirror://kde/stable/applications/" version
9714 "/src/ksnakeduel-" version ".tar.xz"))
9716 (base32 "0mprrnpax8pv7ab36zwhvdfj8id52w8g6x76nnj8qvkdlkjiqdnn"))))
9717 (build-system qt-build-system)
9719 `(("extra-cmake-modules" ,extra-cmake-modules)
9720 ("kdoctools" ,kdoctools)))
9722 `(("kcompletion" ,kcompletion)
9723 ("kconfig" ,kconfig)
9724 ("kconfigwidgets" ,kconfigwidgets)
9725 ("kcoreaddons" ,kcoreaddons)
9727 ("kdbusaddons" ,kdbusaddons)
9728 ("kguiaddons" ,kguiaddons)
9730 ("kxmlgui" ,kxmlgui)
9731 ("libkdegames" ,libkdegames)
9733 ("qtdeclarative" ,qtdeclarative)
9735 (home-page "https://games.kde.org/")
9736 (synopsis "Snake race played against the computer")
9737 (description "KSnakeDuel is a fast action game where you steer a snake
9738 which has to eat food. While eating the snake grows. But once a player
9739 collides with the other snake or the wall the game is lost. This becomes of
9740 course more and more difficult the longer the snakes grow.
9742 This package is part of the KDE games module.")
9743 (license (list license:gpl2+ license:fdl1.2+))))
9745 (define-public kollision
9752 (uri (string-append "mirror://kde/stable/applications/" version
9753 "/src/kollision-" version ".tar.xz"))
9755 (base32 "1p7qrn3d0ybpvc9k6k5wzj54dsrp1rqh39844maz0ay2fhvmch12"))))
9756 (build-system qt-build-system)
9758 `(("extra-cmake-modules" ,extra-cmake-modules)
9759 ("kdoctools" ,kdoctools)))
9761 `(("kcompletion" ,kcompletion)
9762 ("kconfig" ,kconfig)
9763 ("kcoreaddons" ,kcoreaddons)
9765 ("kdbusaddons" ,kdbusaddons)
9767 ("kwidgetsaddons" ,kwidgetsaddons)
9768 ("kxmlgui" ,kxmlgui)
9769 ("libkdegames" ,libkdegames)
9771 ("qtdeclarative" ,qtdeclarative)))
9772 (home-page "https://games.kde.org/")
9773 (synopsis "Simple ball dodging game")
9774 (description "In Kollision you use mouse to control a small blue ball in a
9775 closed space environment filled with small red balls, which move about
9776 chaotically. Your goal is to avoid touching any of those red balls with your
9777 blue one, because the moment you do the game will be over. The longer you can
9778 stay in game the higher will your score be.
9780 This package is part of the KDE games module.")
9781 (license (list license:gpl2+ license:fdl1.2+))))
9783 (define-public knavalbattle
9785 (name "knavalbattle")
9790 (uri (string-append "mirror://kde/stable/applications/" version
9791 "/src/knavalbattle-" version ".tar.xz"))
9793 (base32 "0sdfjplqkb30x2mvh66pkzay6vn5px87779sh2s8lpl6fcw0v9g4"))))
9794 (build-system qt-build-system)
9796 `(("extra-cmake-modules" ,extra-cmake-modules)
9797 ("kdoctools" ,kdoctools)))
9800 ("kcompletion" ,kcompletion)
9801 ("kconfig" ,kconfig)
9802 ("kconfigwidgets" ,kconfigwidgets)
9803 ("kcoreaddons" ,kcoreaddons)
9805 ("kdbusaddons" ,kdbusaddons)
9808 ("ktextwidgets" ,ktextwidgets)
9809 ("kxmlgui" ,kxmlgui)
9810 ("libkdegames" ,libkdegames)
9812 ("qtdeclarative" ,qtdeclarative)))
9813 (home-page "https://games.kde.org/")
9814 (synopsis "Battleship board game with built-in game server")
9815 (description "KBattleship is a Battle Ship game for KDE.
9817 Ships are placed on a board which represents the sea. Players try to hit each
9818 others ships in turns without knowing where they are placed. The first player
9819 to destroy all ships wins the game.
9821 This package is part of the KDE games module.")
9822 (license (list license:gpl2+ license:fdl1.2+))))
9824 (define-public kreversi
9831 (uri (string-append "mirror://kde/stable/applications/" version
9832 "/src/kreversi-" version ".tar.xz"))
9834 (base32 "0b6q8df2bawgnrswhq59z37axad0q3zpvvzxdds7sz1lw505xw9h"))))
9835 (build-system qt-build-system)
9837 `(("extra-cmake-modules" ,extra-cmake-modules)
9838 ("kdoctools" ,kdoctools)))
9840 `(("kconfig" ,kconfig)
9841 ("kconfigwidgets" ,kconfigwidgets)
9842 ("kcoreaddons" ,kcoreaddons)
9844 ("kdbusaddons" ,kdbusaddons)
9845 ("kdeclarative" ,kdeclarative)
9847 ("kiconthemes" ,kiconthemes)
9849 ("kxmlgui" ,kxmlgui)
9850 ("libkdegames" ,libkdegames)
9852 ("qtdeclarative" ,qtdeclarative)
9854 (home-page "https://games.kde.org/")
9855 (synopsis "Old reversi board game, also known as othello")
9856 (description "KReversi is a simple one player strategy game played
9857 against the computer.
9859 If a player's piece is captured by an opposing player, that piece is turned
9860 over to reveal the color of that player. A winner is declared when one player
9861 has more pieces of his own color on the board and there are no more possible
9864 This package is part of the KDE games module.")
9865 (license (list license:gpl2+ license:fdl1.2+))))
9867 (define-public ksquares
9874 (uri (string-append "mirror://kde/stable/applications/" version
9875 "/src/ksquares-" version ".tar.xz"))
9877 (base32 "0hv8hls5s627lys08nnw72rfzsafj3dmp49mh2afzmh6lgk9h5vy"))))
9878 (build-system qt-build-system)
9880 `(("extra-cmake-modules" ,extra-cmake-modules)
9881 ("kdoctools" ,kdoctools)))
9883 `(("kcompletion" ,kcompletion)
9884 ("kconfig" ,kconfig)
9885 ("kconfigwidgets" ,kconfigwidgets)
9886 ("kcoreaddons" ,kcoreaddons)
9888 ("kdbusaddons" ,kdbusaddons)
9890 ("kwidgetsaddons" ,kwidgetsaddons)
9891 ("kxmlgui" ,kxmlgui)
9892 ("libkdegames" ,libkdegames)
9894 ("qtdeclarative" ,qtdeclarative)))
9895 (home-page "https://games.kde.org/")
9896 (synopsis "Dots and Boxes game")
9897 (description "KSquares is an implementation of the popular paper based
9898 game Squares. Two players take turns connecting dots on a grid to complete
9899 squares, the player with the most squares wins.
9901 This package is part of the KDE games module.")
9902 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
9904 (define-public kjumpingcube
9906 (name "kjumpingcube")
9911 (uri (string-append "mirror://kde/stable/applications/" version
9912 "/src/kjumpingcube-" version ".tar.xz"))
9914 (base32 "0d67zqkf2xffjkj671gl2n6nj6jajyn6rgqqj5i6gm500mqi9rm1"))))
9915 (build-system qt-build-system)
9917 `(("extra-cmake-modules" ,extra-cmake-modules)
9918 ("kdoctools" ,kdoctools)))
9920 `(("kconfig" ,kconfig)
9921 ("kconfigwidgets" ,kconfigwidgets)
9922 ("kcoreaddons" ,kcoreaddons)
9924 ("kdbusaddons" ,kdbusaddons)
9927 ("kwidgetsaddons" ,kwidgetsaddons)
9928 ("kxmlgui" ,kxmlgui)
9929 ("libkdegames" ,libkdegames)
9931 ("qtdeclarative" ,qtdeclarative)
9933 (home-page "https://games.kde.org/")
9934 (synopsis "Simple tactical game for number-crunchers")
9935 (description "KJumpingcube is a simple tactical game for one or two
9936 players, played on a grid of numbered squares. Each turn, players compete for
9937 control of the board by capturing or adding to one square.
9939 This package is part of the KDE games module.")
9940 (license (list license:gpl2+ license:fdl1.2+))))
9942 (define-public xmoto
9950 "http://download.tuxfamily.org/xmoto/xmoto/" version "/"
9951 "xmoto-" version "-src.tar.gz"))
9953 (base32 "1ci6r8zd0l7z28cy92ddf9dmqbdqwinz2y1cny34c61b57wsd155"))
9956 "xmoto-remove-glext.patch" ;fixes licensing issue
9957 "xmoto-reproducible.patch"
9958 "xmoto-utf8.patch"))
9960 (modules '((guix build utils)))
9963 (delete-file-recursively "src/ode")
9965 (build-system gnu-build-system)
9967 ;; XXX: First flag prevents a build error with GCC7+. The second
9968 ;; flag works around missing text in game. Both are fixed
9969 ;; upstream. Remove once xmoto 0.5.12+ is released.
9970 `(#:make-flags '("CXXFLAGS=-fpermissive -D_GLIBCXX_USE_CXX11_ABI=0")
9972 (modify-phases %standard-phases
9973 (add-after 'install 'install-desktop-file
9974 (lambda* (#:key outputs #:allow-other-keys)
9975 (let* ((out (assoc-ref outputs "out"))
9976 (apps (string-append out "/share/applications"))
9977 (pixmaps (string-append out "/share/pixmaps")))
9978 (install-file "extra/xmoto.desktop" apps)
9979 (install-file "extra/xmoto.xpm" pixmaps)
9981 (add-after 'install-desktop-file 'install-fonts
9982 (lambda* (#:key outputs inputs #:allow-other-keys)
9983 (let ((font-dir (string-append (assoc-ref inputs "font-dejavu")
9984 "/share/fonts/truetype/"))
9985 (target-dir (string-append (assoc-ref outputs "out")
9986 "/share/xmoto/Textures/Fonts/")))
9987 (for-each (lambda (f)
9988 (let ((font (string-append font-dir f))
9989 (target (string-append target-dir f)))
9990 (delete-file target)
9991 (symlink font target)))
9992 '("DejaVuSans.ttf" "DejaVuSansMono.ttf"))
9994 (add-after 'install-fonts 'install-man-page
9995 (lambda* (#:key outputs #:allow-other-keys)
9996 (install-file "xmoto.6"
9997 (string-append (assoc-ref outputs "out")
10001 `(("gettext" ,gettext-minimal)))
10004 ("font-dejavu" ,font-dejavu)
10006 ("libjpeg" ,libjpeg)
10008 ("libxdg-basedir" ,libxdg-basedir)
10009 ("libxml2" ,libxml2)
10012 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-net sdl-ttf)))
10015 (home-page "https://xmoto.tuxfamily.org/")
10016 (synopsis "2D motocross platform game")
10017 (description "X-Moto is a challenging 2D motocross platform game, where
10018 physics play an all important role in the gameplay. You need to control your
10019 bike to its limit, if you want to have a chance finishing the more difficult
10021 (license (list license:gpl2+ ;whole project
10022 license:bsd-4 ;src/bzip
10023 license:bsd-3 ;src/md5sum
10024 license:lgpl2.1+ ;src/iqsort.h
10027 (define-public eboard
10034 (uri (git-reference
10035 (url "https://github.com/fbergo/eboard.git")
10036 (commit (string-append "v" version))))
10037 (file-name (git-file-name name version))
10039 (base32 "1z4pwpqyvxhlda99h6arh2rjk90fbms9q29fqizjblrdn01dlxn1"))))
10040 (build-system gnu-build-system)
10043 ("pkg-config" ,pkg-config)))
10047 ("gstreamer" ,gstreamer)))
10051 (modify-phases %standard-phases
10052 (replace 'configure
10053 (lambda* (#:key outputs #:allow-other-keys)
10054 (make-file-writable "eboard-config")
10055 (setenv "CC" "gcc")
10056 (invoke "./configure"
10057 (string-append "--prefix=" (assoc-ref outputs "out")))
10059 (add-before 'install 'make-required-directories
10060 (lambda* (#:key outputs #:allow-other-keys)
10061 (mkdir-p (string-append (assoc-ref outputs "out")
10064 (synopsis "Graphical user interface to play chess")
10066 "Eboard is a chess board interface for ICS (Internet Chess Servers)
10067 and chess engines.")
10068 (home-page "https://www.bergo.eng.br/eboard/")
10069 (license license:gpl2+)))
10071 (define-public chessx
10078 (uri (string-append "mirror://sourceforge/chessx/chessx/"
10079 version "/chessx-" version ".tgz"))
10081 (base32 "09rqyra28w3z9ldw8sx07k5ap3sjlli848p737maj7c240rasc6i"))))
10082 (build-system qt-build-system)
10084 `(("qttools" ,qttools)))
10086 `(("qtbase" ,qtbase)
10087 ("qtmultimedia" ,qtmultimedia)
10093 (modify-phases %standard-phases
10094 (add-after 'unpack 'fix-paths
10095 (lambda* (#:key inputs #:allow-other-keys)
10096 (substitute* "chessx.pro"
10097 (("\\$\\$\\[QT_INSTALL_BINS\\]/lrelease")
10098 (string-append (assoc-ref inputs "qttools") "/bin/lrelease")))
10100 (add-after 'fix-paths 'make-qt-deterministic
10102 (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1")
10104 (replace 'configure
10109 (lambda* (#:key outputs #:allow-other-keys)
10110 (let ((out (assoc-ref outputs "out")))
10111 (install-file "release/chessx" (string-append out "/bin"))
10112 (install-file "unix/chessx.desktop"
10113 (string-append out "/share/applications")))
10115 (synopsis "Chess game database")
10117 "ChessX is a chess database. With ChessX you can operate on your
10118 collection of chess games in many ways: browse, edit, add, organize, analyze,
10119 etc. You can also play games on FICS or against an engine.")
10120 (home-page "http://chessx.sourceforge.net/")
10121 (license license:gpl2+)))
10123 (define-public stockfish
10130 (uri (git-reference
10131 (url "https://github.com/official-stockfish/Stockfish.git")
10132 (commit (string-append "sf_" version))))
10133 (file-name (git-file-name name version))
10135 (base32 "12mppipinymj8s1ipq9a7is453vncly49c32ym9wvyklsgyxfzlk"))))
10136 (build-system gnu-build-system)
10139 #:make-flags (list "-C" "src"
10141 (string-append "PREFIX="
10142 (assoc-ref %outputs "out"))
10143 (string-append "ARCH="
10144 ,(match (%current-system)
10145 ("x86_64-linux" "x86-64")
10146 ("i686-linux" "x86-32")
10147 ("aarch64-linux" "general-64")
10148 ("armhf-linux" "armv7")
10149 ("mips64el-linux" "general-64")
10150 (_ "general-32"))))
10151 #:phases (modify-phases %standard-phases
10152 (delete 'configure))))
10153 (synopsis "Strong chess engine")
10155 "Stockfish is a very strong chess engines. It is much stronger than the
10156 best human chess grandmasters. It can be used with UCI-compatible GUIs like
10158 (home-page "https://stockfishchess.org/")
10159 (license license:gpl3+)))