gnu: Use HTTPS for supported nongnu.org home pages.
[jackhill/guix/guix.git] / gnu / packages / games.scm
CommitLineData
490c6528
JD
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 John Darrington <jmd@gnu.org>
5edf2f05 3;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
d8f37956 4;;; Copyright © 2014, 2015, 2016 David Thompson <dthompson2@worcester.edu>
aac1aa75 5;;; Copyright © 2014, 2015, 2016, 2017 Eric Bavier <bavier@member.fsf.org>
3cf118a1 6;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com>
bb3b71ce 7;;; Copyright © 2014 Sylvain Beucler <beuc@beuc.net>
ce0614dd 8;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
576b1aee 9;;; Copyright © 2014, 2015, 2016 Sou Bunnbu <iyzsong@gmail.com>
e0a7d364 10;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
d7c4619b 11;;; Copyright © 2015, 2016 Andreas Enge <andreas@enge.fr>
fc936b65 12;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
b76c94e6 13;;; Copyright © 2015, 2017 Christopher Allan Webber <cwebber@dustycloud.org>
43337a73 14;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
eccfa301 15;;; Copyright © 2015, 2016, 2017 Alex Kost <alezost@gmail.com>
e11b2752 16;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
0c15230d 17;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
365950ce 18;;; Copyright © 2016, 2017 Rodger Fox <thylakoid@openmailbox.org>
fea1f275 19;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
57f9671d 20;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is>
e9687748 21;;; Copyright © 2016 Albin Söderqvist <albin@fripost.org>
06f5f0b1 22;;; Copyright © 2016, 2017, 2018 Kei Kebreau <kkebreau@posteo.net>
aa206271 23;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
ecc39b3f 24;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
b3de5ff2 25;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
a56145e1 26;;; Copyright © 2016 Steve Webber <webber.sl@gmail.com>
42abb842 27;;; Copyright © 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@hyperbola.info>
75abd864 28;;; Copyright © 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
ddce0903 29;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
dd37a545 30;;; Copyright © 2017 nee <nee-git@hidamari.blue>
bff33e6c 31;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
ffed9eab 32;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
466073c0 33;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
a70d06b5 34;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
c1228231 35;;; Copyright © 2017 Nicolas Goaziou <mail@nicolasgoaziou.fr>
490c6528
JD
36;;;
37;;; This file is part of GNU Guix.
38;;;
39;;; GNU Guix is free software; you can redistribute it and/or modify it
40;;; under the terms of the GNU General Public License as published by
41;;; the Free Software Foundation; either version 3 of the License, or (at
42;;; your option) any later version.
43;;;
44;;; GNU Guix is distributed in the hope that it will be useful, but
45;;; WITHOUT ANY WARRANTY; without even the implied warranty of
46;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
47;;; GNU General Public License for more details.
48;;;
49;;; You should have received a copy of the GNU General Public License
50;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
51
52(define-module (gnu packages games)
158f5734 53 #:use-module (ice-9 match)
024e2c17
DT
54 #:use-module ((guix licenses) #:prefix license:)
55 #:use-module (guix utils)
490c6528
JD
56 #:use-module (guix packages)
57 #:use-module (guix download)
c23c50c7 58 #:use-module (guix git-download)
e11b2752 59 #:use-module (guix svn-download)
bff33e6c 60 #:use-module (guix gexp)
a83c6a64 61 #:use-module (gnu packages)
3307c787 62 #:use-module (gnu packages algebra)
e11b2752 63 #:use-module (gnu packages autotools)
03d521f9 64 #:use-module (gnu packages backup)
7e51e5bc 65 #:use-module (gnu packages base)
b77e3a1c 66 #:use-module (gnu packages build-tools)
11c38cbe 67 #:use-module (gnu packages admin)
f2fac359 68 #:use-module (gnu packages audio)
7e2e1155 69 #:use-module (gnu packages avahi)
a83c6a64 70 #:use-module (gnu packages boost)
0b5d078f 71 #:use-module (gnu packages documentation)
dec63df4 72 #:use-module (gnu packages docbook)
d2563973 73 #:use-module (gnu packages fltk)
540dd1c8 74 #:use-module (gnu packages freedesktop)
c23c50c7
RW
75 #:use-module (gnu packages fribidi)
76 #:use-module (gnu packages game-development)
490c6528 77 #:use-module (gnu packages gettext)
9b1ada4e 78 #:use-module (gnu packages ghostscript)
4df9495e 79 #:use-module (gnu packages gimp)
490c6528 80 #:use-module (gnu packages gl)
bf0018cd 81 #:use-module (gnu packages glib)
490c6528 82 #:use-module (gnu packages gnome)
9b1ada4e 83 #:use-module (gnu packages gperf)
aac1aa75 84 #:use-module (gnu packages graphics)
490c6528
JD
85 #:use-module (gnu packages gtk)
86 #:use-module (gnu packages guile)
0b5d078f 87 #:use-module (gnu packages imagemagick)
bf0018cd 88 #:use-module (gnu packages libcanberra)
721e1987 89 #:use-module (gnu packages libedit)
67fa7a27 90 #:use-module (gnu packages libunwind)
aa6f3912 91 #:use-module (gnu packages haskell)
c23c50c7 92 #:use-module (gnu packages mp3)
26a657f0 93 #:use-module (gnu packages music)
e9687748 94 #:use-module (gnu packages icu4c)
e55354b8 95 #:use-module (gnu packages image)
3cf118a1 96 #:use-module (gnu packages ncurses)
9b1ada4e 97 #:use-module (gnu packages netpbm)
162a4a03 98 #:use-module (gnu packages networking)
b3de5ff2 99 #:use-module (gnu packages ocaml)
bf0018cd
JD
100 #:use-module (gnu packages python)
101 #:use-module (gnu packages readline)
ffed9eab 102 #:use-module (gnu packages textutils)
490c6528
JD
103 #:use-module (gnu packages xorg)
104 #:use-module (gnu packages pkg-config)
5f96f303 105 #:use-module (gnu packages databases)
be6e2c30 106 #:use-module (gnu packages shells)
3da5dca3 107 #:use-module (gnu packages sdl)
bd71525b 108 #:use-module (gnu packages swig)
ae9cb418 109 #:use-module (gnu packages texinfo)
bb3b71ce 110 #:use-module (gnu packages check)
d7c4619b 111 #:use-module (gnu packages fonts)
bb3b71ce 112 #:use-module (gnu packages fontutils)
c449a076 113 #:use-module (gnu packages gstreamer)
a6b55314 114 #:use-module (gnu packages bash)
a21b42e2 115 #:use-module (gnu packages perl)
13d18626
SB
116 #:use-module (gnu packages qt)
117 #:use-module (gnu packages compression)
19b396bf
DT
118 #:use-module (gnu packages pulseaudio)
119 #:use-module (gnu packages linux)
6e206ac7
DT
120 #:use-module (gnu packages xiph)
121 #:use-module (gnu packages curl)
122 #:use-module (gnu packages lua)
72b703cd 123 #:use-module (gnu packages video)
72b703cd 124 #:use-module (gnu packages xml)
67fa7a27 125 #:use-module (gnu packages tcl)
cf60e76a 126 #:use-module (gnu packages xdisorg)
751c7040 127 #:use-module (gnu packages tls)
128 #:use-module (gnu packages pcre)
5430dbd9 129 #:use-module (gnu packages cyrus-sasl)
0b608ec4
AI
130 #:use-module (gnu packages messaging)
131 #:use-module (gnu packages upnp)
132 #:use-module (gnu packages wxwidgets)
dd37a545 133 #:use-module (gnu packages bison)
134 #:use-module (gnu packages flex)
bff33e6c
CL
135 #:use-module (gnu packages cmake)
136 #:use-module (gnu packages gnuzilla)
137 #:use-module (gnu packages icu4c)
138 #:use-module (gnu packages networking)
7aafb3b3 139 #:use-module (gnu packages web)
a6b55314 140 #:use-module (guix build-system gnu)
57f9671d 141 #:use-module (guix build-system go)
aa6f3912 142 #:use-module (guix build-system haskell)
b0488fe5 143 #:use-module (guix build-system python)
19b396bf 144 #:use-module (guix build-system cmake)
a6b55314 145 #:use-module (guix build-system trivial))
490c6528 146
a70d06b5
RJ
147(define-public armagetronad
148 (package
149 (name "armagetronad")
150 (version "0.2.8.3.4")
151 (source (origin
152 (method url-fetch)
153 (uri (string-append "mirror://sourceforge/" name "/stable/"
154 version "/" name "-" version ".src.tar.gz"))
155 (sha256
156 (base32
157 "1pgy0r80z702qdv94aw3ywdn4ynnr4cdi86ml558pljfc5ygasj4"))))
158 (build-system gnu-build-system)
159 (inputs
160 `(("libxml2" ,libxml2)
161 ("sdl" ,sdl)
162 ("sdl-image" ,sdl-image)
163 ("freeglut" ,freeglut)
164 ("libpng" ,libpng)
165 ("libjpeg-turbo" ,libjpeg-turbo)))
166 (home-page "http://www.armagetronad.org")
167 (synopsis "Tron clone in 3D")
168 (description "Armagetron is a multiplayer game in 3d that attempts to
169emulate and expand on the lightcycle sequence from the movie Tron. It's
170an old school arcade game slung into the 21st century. Highlights include
171a customizable playing arena, HUD, unique graphics, and AI bots. For the
172more advanced player there are new game modes and a wide variety of physics
173settings to tweak as well.")
174 (license license:gpl2+)))
175
20214f71
KK
176(define-public cataclysm-dda
177 (package
178 (name "cataclysm-dda")
179 (version "0.C")
180 (source (origin
181 (method url-fetch)
182 (uri (string-append "https://github.com/CleverRaven/Cataclysm-DDA/"
183 "archive/" version ".tar.gz"))
184 (file-name (string-append name "-" version ".tar.gz"))
185 (sha256
186 (base32
187 "1xlajmgl9cviqyjpp5g5q4rbljy9gqc49v54bi8gpzr68s14gsb9"))
188 (modules '((guix build utils)))
189 (snippet
190 ;; Import cmath header for the std::pow function.
191 '(for-each (lambda (file)
192 (substitute* file
193 (("#include <math.h>")
194 "#include <cmath>")))
195 (find-files "src")))))
196 (build-system gnu-build-system)
197 (arguments
198 '(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
199 "USE_HOME_DIR=1" "DYNAMIC_LINKING=1" "RELEASE=1")
200 #:phases
201 (modify-phases %standard-phases
202 (replace 'configure
203 (lambda _
204 (substitute* "Makefile"
205 (("ncursesw5-config") "ncursesw6-config")
206 (("RELEASE_FLAGS = -Werror") "RELEASE_FLAGS ="))
207 #t))
208 (add-after 'build 'build-tiles
209 (lambda* (#:key make-flags outputs #:allow-other-keys)
210 ;; Change prefix directory and enable tile graphics and sound.
211 (zero?
212 (apply system* "make" "TILES=1" "SOUND=1"
213 (string-append "PREFIX="
214 (assoc-ref outputs "tiles"))
215 (cdr make-flags)))))
216 (add-after 'install 'install-tiles
217 (lambda* (#:key make-flags outputs #:allow-other-keys)
218 (zero?
219 (apply system* "make" "install" "TILES=1" "SOUND=1"
220 (string-append "PREFIX="
221 (assoc-ref outputs "tiles"))
222 (cdr make-flags))))))
223 ;; TODO: Add libtap++ from https://github.com/cbab/libtappp as a native
224 ;; input in order to support tests.
225 #:tests? #f))
226 (outputs '("out"
227 "tiles")) ; For tile graphics and sound support.
228 (native-inputs
229 `(("gettext" ,gettext-minimal)
230 ("pkg-config" ,pkg-config)))
231 (inputs
232 `(("freetype" ,freetype)
233 ("libogg" ,libogg)
234 ("libvorbis" ,libvorbis)
235 ("ncurses" ,ncurses)
236 ("sdl2" ,sdl2)
237 ("sdl2-image", sdl2-image)
238 ("sdl2-ttf" ,sdl2-ttf)
239 ("sdl2-mixer" ,sdl2-mixer)))
240 (home-page "http://en.cataclysmdda.com/")
241 (synopsis "Survival horror roguelike video game")
242 (description
243 "Cataclysm: Dark Days Ahead is a roguelike set in a post-apocalyptic world.
244Struggle to survive in a harsh, persistent, procedurally generated world.
245Scavenge the remnants of a dead civilization for food, equipment, or, if you are
246lucky, a vehicle with a full tank of gas to get you out of Dodge. Fight to
247defeat or escape from a wide variety of powerful monstrosities, from zombies to
248giant insects to killer robots and things far stranger and deadlier, and against
249the others like yourself, that want what you have.")
250 (license license:cc-by-sa3.0)))
251
620b0468
RW
252(define-public cowsay
253 (package
254 (name "cowsay")
46ba5337 255 (version "3.04")
620b0468
RW
256 (source (origin
257 (method url-fetch)
46ba5337
TGR
258 (uri (string-append "https://github.com/tnalpgge/"
259 "rank-amateur-cowsay/archive/"
260 name "-" version ".tar.gz"))
620b0468
RW
261 (sha256
262 (base32
46ba5337 263 "12w7apbf6a9qffk92r32b16w22na2fjcqbl32rn0n7zw5hrp3f6q"))))
620b0468
RW
264 (build-system gnu-build-system)
265 (arguments
266 `(#:phases
267 (modify-phases %standard-phases
6c0c1752
TGR
268 (delete 'configure) ; no configure script
269 (delete 'build) ; nothing to be built
270 (replace 'install
620b0468
RW
271 (lambda* (#:key outputs #:allow-other-keys)
272 (zero? (system* "sh" "install.sh"
273 (assoc-ref outputs "out")))))
1ee3079d
EF
274 (delete 'check)
275 (add-after 'install 'check
620b0468
RW
276 (lambda* (#:key outputs #:allow-other-keys)
277 (zero? (system* (string-append (assoc-ref outputs "out")
278 "/bin/cowsay")
279 "We're done!")))))))
280 (inputs
281 `(("perl" ,perl)))
282 (home-page (string-append "https://web.archive.org/web/20071026043648/"
46ba5337 283 "http://www.nog.net:80/~tony/warez/cowsay.shtml"))
620b0468
RW
284 (synopsis "Speaking cow text filter")
285 (description "Cowsay is basically a text filter. Send some text into it,
286and you get a cow saying your text. If you think a talking cow isn't enough,
46ba5337
TGR
287cows can think too: all you have to do is run @command{cowthink}. If you're
288tired of cows, a variety of other ASCII-art messengers are available.")
620b0468
RW
289 (license license:gpl3+)))
290
0b5d078f
KK
291(define-public freedoom
292 (package
293 (name "freedoom")
b0c95908 294 (version "0.11.3")
0b5d078f
KK
295 (source (origin
296 (method url-fetch)
297 (uri (string-append "https://github.com/" name "/" name
298 "/archive/v" version ".tar.gz"))
299 (file-name (string-append name "-" version ".tar.gz"))
300 (sha256
301 (base32
b0c95908 302 "1bjijdfqhpazyifx1qda7scj7dry1azhjrnl8h8zn2vqfgdmlh0q"))))
0b5d078f
KK
303 (build-system gnu-build-system)
304 (arguments
305 '(#:make-flags `(,(string-append "prefix=" (assoc-ref %outputs "out")))
306 #:parallel-build? #f
307 #:tests? #f ; no check target
308 #:phases
309 (modify-phases %standard-phases
0b5d078f
KK
310 (replace 'configure
311 (lambda* (#:key inputs outputs #:allow-other-keys)
312 (let* ((dejavu (assoc-ref inputs "font-dejavu"))
313 (freedoom (assoc-ref outputs "out"))
314 (wad-dir (string-append freedoom "/share/games/doom")))
315 ;; Replace the font-searching function in a shell
316 ;; script with a direct path to the required font.
317 ;; This is necessary because ImageMagick can only find the
318 ;; most basic fonts while in the build environment.
319 (substitute* "graphics/titlepic/create_caption"
320 (("font=\\$\\(find_font.*$")
321 (string-append
322 "font=" dejavu
323 "/share/fonts/truetype/DejaVuSansCondensed-Bold.ttf\n")))
324 ;; Make icon creation reproducible.
325 (substitute* "dist/Makefile"
326 (("freedm.png")
327 "-define png:exclude-chunks=date freedm.png")
328 (("freedoom1.png")
329 "-define png:exclude-chunks=date freedoom1.png")
330 (("freedoom2.png")
331 "-define png:exclude-chunks=date freedoom2.png"))
332 ;; Make sure that the install scripts know where to find
333 ;; the appropriate WAD files.
334 (substitute* "dist/freedoom"
335 (("IWAD=freedm.wad")
336 (string-append "IWAD=" wad-dir "/freedm.wad"))
337 (("IWAD=freedoom1.wad")
338 (string-append "IWAD=" wad-dir "/freedoom1.wad"))
339 (("IWAD=freedoom2.wad")
340 (string-append "IWAD=" wad-dir "/freedoom2.wad")))
341 #t))))))
342 (native-inputs
343 `(("asciidoc" ,asciidoc)
344 ("deutex" ,deutex)
345 ("font-dejavu" ,font-dejavu)
346 ("imagemagick" ,imagemagick)
347 ("python" ,python-2)))
348 (inputs
349 `(("prboom-plus" ,prboom-plus)))
350 (home-page "https://freedoom.github.io/")
351 (synopsis "Free content game based on the Doom engine")
60037d4e 352 (native-search-paths
353 (list (search-path-specification
354 (variable "DOOMWADDIR")
355 (files '("share/games/doom")))
356 (search-path-specification
357 (variable "DOOMWADPATH")
358 (files '("share/games/doom")))))
0b5d078f
KK
359 (description
360 "The Freedoom project aims to create a complete free content first person
361shooter game. Freedoom by itself is just the raw material for a game: it must
362be paired with a compatible game engine (such as @code{prboom-plus}) to be
363played. Freedoom complements the Doom engine with free levels, artwork, sound
364effects and music to make a completely free game.")
365 (license license:bsd-3)))
366
06f5f0b1
KK
367(define-public golly
368 (package
369 (name "golly")
370 (version "3.1")
371 (source (origin
372 (method url-fetch)
373 (uri (string-append "mirror://sourceforge/golly/golly-"
374 version "/golly-" version
375 "-src.tar.gz"))
376 (sha256
377 (base32
378 "0dn74k3rylhx023n047lz4z6qrqijfcxi0b6jryqklhmm2n532f7"))))
379 (build-system gnu-build-system)
380 (arguments
381 '(#:make-flags (list "CC=gcc"
382 (string-append "GOLLYDIR="
383 (assoc-ref %outputs "out")
384 "/share/golly"))
385 #:tests? #f ; no check target
386 #:phases
387 (modify-phases %standard-phases
388 (replace 'configure
389 (lambda* (#:key inputs #:allow-other-keys)
390 ;; For some reason, setting the PYTHON_SHLIB make flag doesn't
391 ;; properly set the path to the Python shared library. This
392 ;; substitution acheives the same end by different means.
393 (substitute* "gui-wx/wxprefs.cpp"
394 (("pythonlib = wxT\\(STRINGIFY\\(PYTHON_SHLIB\\)\\)")
395 (string-append "pythonlib = \""
396 (assoc-ref inputs "python")
397 "/lib/libpython-2.7.so\"")))
398 #t))
399 (replace 'build
400 (lambda* (#:key make-flags outputs #:allow-other-keys)
401 (with-directory-excursion "gui-wx"
402 (apply invoke `("make" ,@make-flags "-f" "makefile-gtk")))))
403 (replace 'install
404 (lambda* (#:key outputs #:allow-other-keys)
405 (let* ((out (assoc-ref outputs "out"))
406 (bin (string-append out "/bin"))
407 (doc (string-append out "/share/doc/golly"))
408 (pixmaps (string-append out "/share/pixmaps"))
409 (share (string-append out "/share/golly")))
410 (for-each (lambda (binary)
411 (install-file binary bin))
412 '("bgolly" "golly"))
413 (for-each (lambda (document)
414 (install-file
415 (string-append "docs/" document ".html")
416 doc))
417 '("License" "ReadMe" "ToDo"))
418 (install-file "gui-wx/icons/appicon.xpm" pixmaps)
419 (for-each (lambda (folder)
420 (copy-recursively
421 folder
422 (string-append share "/" folder)))
423 '("Help" "Patterns" "Rules" "Scripts")))
424 #t)))))
425 (native-inputs
426 `(("lua" ,lua)))
427 (inputs
428 `(("glu" ,glu)
429 ("mesa" ,mesa)
430 ("python" ,python-2)
431 ("wxwidgets" ,wxwidgets-gtk2)
432 ("zlib" ,zlib)))
433 (home-page "http://golly.sourceforge.net/")
434 (synopsis "Software for exploring cellular automata")
435 (description
436 "Golly simulates Conway's Game of Life and many other types of cellular
437automata. The following features are available:
438@enumerate
439@item Support for bounded and unbounded universes, with cells of up to 256
440 states.
441@item Support for multiple algorithms, including Bill Gosper's Hashlife
442 algorithm.
443@item Loading patterns from BMP, PNG, GIF and TIFF image files.
444@item Reading RLE, macrocell, Life 1.05/1.06, dblife and MCell files.
445@item Scriptable via Lua or Python.
446@item Extracting patterns, rules and scripts from zip files.
447@item Downloading patterns, rules and scripts from online archives.
448@item Pasting patterns from the clipboard.
449@item Unlimited undo/redo.
450@item Configurable keyboard shortcuts.
451@item Auto fit option to keep patterns within the view.
452@end enumerate")
453 (license license:gpl2+)))
454
5145001a
RW
455(define-public meandmyshadow
456 (package
457 (name "meandmyshadow")
458 (version "0.4")
459 (source (origin
460 (method url-fetch)
461 (uri (string-append "mirror://sourceforge/meandmyshadow/"
462 version "/meandmyshadow-" version
463 "-src.tar.gz"))
464 (sha256
465 (base32
466 "1dpb7s32b2psj5w3nr5kqibib8nndi86mw8gxp4hmxwrfiisf86d"))))
467 (build-system cmake-build-system)
468 (arguments
469 '(#:tests? #f ; there are no tests
470 #:phases
471 (modify-phases %standard-phases
472 (add-after 'unpack 'set-sdl'paths
473 (lambda* (#:key inputs #:allow-other-keys)
474 (substitute* "cmake/Modules/FindSDL_gfx.cmake"
475 (("/usr/local/include/SDL")
476 (string-append (assoc-ref inputs "sdl")
477 "/include/SDL")))
478 ;; Because SDL provides lib/libX11.so.6 we need to explicitly
479 ;; link with libX11, even though we're using the GL backend.
480 (substitute* "CMakeLists.txt"
481 (("\\$\\{X11_LIBRARIES\\}") "-lX11"))
482 )))))
483 (native-inputs
484 `(("pkg-config" ,pkg-config)))
485 (inputs
486 `(("sdl" ,(sdl-union (list sdl
487 sdl-image
488 sdl-gfx
489 sdl-mixer
490 sdl-ttf)))
491 ("libx11" ,libx11) ; needed by sdl's libX11
492 ("libarchive" ,libarchive)
493 ("openssl" ,openssl)
494 ("mesa" ,mesa)
495 ("glu" ,glu)
496 ("curl" ,curl)))
497 (home-page "http://meandmyshadow.sourceforge.net/")
498 (synopsis "Puzzle/platform game")
499 (description "Me and My Shadow is a puzzle/platform game in which you try
500to reach the exit by solving puzzles. Spikes, moving blocks, fragile blocks
501and much more stand between you and the exit. Record your moves and let your
502shadow mimic them to reach blocks you couldn't reach alone.")
503 (license license:gpl3+)))
504
02345c96
RW
505(define-public knights
506 (package
507 (name "knights")
508 (version "025")
509 (source (origin
510 (method url-fetch)
511 (uri (string-append "http://www.knightsgame.org.uk/files/knights_"
512 version "_src.tar.gz"))
513 (sha256
514 (base32
515 "18vp2ygvn0s0jz8rm585jqf6hjqkam1ximq81k0r9hpmfj7wb88f"))))
516 (build-system gnu-build-system)
517 (arguments
518 '(#:make-flags
519 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
520 #:phases
521 (modify-phases %standard-phases
522 ;; No configure script.
523 (delete 'configure))
524 #:tests? #f)) ;; No check target.
525 (inputs
526 `(("boost" ,boost)
527 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
528 ("freetype" ,freetype)
529 ("fontconfig" ,fontconfig)
530 ("curl" ,curl)))
531 (home-page "http://www.knightsgame.org.uk/")
532 (synopsis "Multiplayer dungeon game involving knights and quests")
533 (description "Knights is a multiplayer game involving several knights who
534must run around a dungeon and complete various quests. Each game revolves
535around a quest – for example, you might have to find some items and carry them
536back to your starting point. This may sound easy, but as there are only
537enough items in the dungeon for one player to win, you may end up having to
538kill your opponents to get their stuff! Other quests involve escaping from
539the dungeon, fighting a duel to the death against the enemy knights, or
540destroying an ancient book using a special wand.")
541 ;; This package includes modified sources of lua (X11), enet (Expat), and
542 ;; guichan (BSD-3). The "Coercri" library is released under the Boost
543 ;; license. The whole package is released under GPLv3+.
544 (license license:gpl3+)))
545
bf0018cd
JD
546(define-public gnubg
547 (package
548 (name "gnubg")
e28cb7a5 549 (version "1.02")
bf0018cd
JD
550 (source
551 (origin
552 (method url-fetch)
553 (uri (string-append "http://files.gnubg.org/media/sources/gnubg-release-"
554 version ".000-sources." "tar.gz"))
555 (sha256
556 (base32
e28cb7a5 557 "015mvjk2iw1cg1kxwxfnvp2rxb9cylf6yc39i30fdy414k07zkky"))))
bf0018cd
JD
558 (build-system gnu-build-system)
559 (inputs `(("glib" ,glib)
560 ("readline" ,readline)
561 ("gtk+" ,gtk+-2)
562 ("mesa" ,mesa)
6a95024c 563 ("glu" ,glu)
bf0018cd
JD
564 ("gtkglext" ,gtkglext)
565 ("sqlite" ,sqlite)
566 ("libcanberra" ,libcanberra)))
567 (native-inputs `(("python-2" ,python-2)
568 ("pkg-config" ,pkg-config)))
07af3e5e 569 (home-page "http://gnubg.org")
bf0018cd
JD
570 (synopsis "Backgammon game")
571 (description "The GNU backgammon application can be used for playing, analyzing and
572teaching the game. It has an advanced evaluation engine based on artificial
573neural networks suitable for both beginners and advanced players. In
574addition to a command-line interface, it also features an attractive, 3D
575representation of the playing board.")
024e2c17 576 (license license:gpl3+)))
bf0018cd 577
490c6528
JD
578(define-public gnubik
579 (package
580 (name "gnubik")
ecc39b3f 581 (version "2.4.3")
490c6528
JD
582 (source
583 (origin
584 (method url-fetch)
585 (uri (string-append "mirror://gnu/gnubik/gnubik-"
586 version ".tar.gz"))
587 (sha256
588 (base32
ecc39b3f 589 "1vlf924mq8hg93bsjj0rzvs0crc6psmlxyc6zn0fr7msnmpx6gib"))))
490c6528
JD
590 (build-system gnu-build-system)
591 (inputs `(("gtk+" ,gtk+-2)
592 ("mesa" ,mesa)
276a8f71 593 ("glu" ,glu)
490c6528
JD
594 ("libx11" ,libx11)
595 ("guile" ,guile-2.0)
596 ("gtkglext" ,gtkglext)))
b94a6ca0 597 (native-inputs `(("gettext" ,gettext-minimal)
490c6528
JD
598 ("pkg-config" ,pkg-config)))
599 (home-page "https://www.gnu.org/software/gnubik/")
e67f5551
LC
600 (synopsis "3d Rubik's cube game")
601 (description
602 "GNUbik is a puzzle game in which you must manipulate a cube to make
490c6528
JD
603each of its faces have a uniform color. The game is customizable, allowing
604you to set the size of the cube (the default is 3x3) or to change the colors.
c5779c93 605You may even apply photos to the faces instead of colors. The game is
490c6528 606scriptable with Guile.")
024e2c17 607 (license license:gpl3+)))
3da5dca3 608
a20b084a
JD
609(define-public gnushogi
610 (package
611 (name "gnushogi")
612 (version "1.4.2")
613 (source
614 (origin
615 (method url-fetch)
616 (uri (string-append "mirror://gnu/gnushogi/gnushogi-"
617 version ".tar.gz"))
618 (sha256
619 (base32
620 "0a9bsl2nbnb138lq0h14jfc5xvz7hpb2bcsj4mjn6g1hcsl4ik0y"))))
621 (arguments `(#:tests? #f)) ;; No check target.
622 (build-system gnu-build-system)
6fd52309 623 (home-page "https://www.gnu.org/software/gnushogi/")
a20b084a
JD
624 (synopsis "The game of Shogi (Japanese chess)")
625 (description "GNU Shogi is a program that plays the game Shogi (Japanese
626Chess). It is similar to standard chess but this variant is far more complicated.")
627 (license license:gpl3+)))
628
e664200c
KK
629(define-public ltris
630 (package
631 (name "ltris")
632 (version "1.0.19")
633 (source
634 (origin
635 (method url-fetch)
636 (uri (string-append "http://prdownloads.sourceforge.net/lgames/"
637 name "-" version ".tar.gz"))
638 (sha256
639 (base32
640 "1895wv1fqklrj4apkz47rnkcfhfav7zjknskw6p0886j35vrwslg"))))
641 (build-system gnu-build-system)
642 (arguments
643 '(;; The code in LTris uses traditional GNU semantics for inline functions
644 #:configure-flags '("CFLAGS=-fgnu89-inline")
645 #:phases
646 (modify-phases %standard-phases
647 (add-after 'set-paths 'set-sdl-paths
648 (lambda* (#:key inputs #:allow-other-keys)
649 (setenv "CPATH"
650 (string-append (assoc-ref inputs "sdl-union")
651 "/include/SDL"))
652 #t)))))
653 (inputs
654 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))))
655 (home-page "http://lgames.sourceforge.net/LTris/")
656 (synopsis "Tetris clone based on the SDL library")
657 (description
658 "LTris is a tetris clone: differently shaped blocks are falling down the
659rectangular playing field and can be moved sideways or rotated by 90 degree
660units with the aim of building lines without gaps which then disappear (causing
661any block above the deleted line to fall down). LTris has three game modes: In
662Classic you play until the stack of blocks reaches the top of the playing field
663and no new blocks can enter. In Figures the playing field is reset to a new
664figure each level and later on tiles and lines suddenly appear. In Multiplayer
665up to three players (either human or CPU) compete with each other sending
666removed lines to all opponents. There is also a Demo mode in which you can
667watch your CPU playing while enjoying a cup of tea!")
668 (license license:gpl2+)))
669
26a657f0
KK
670(define-public prboom-plus
671 (package
672 (name "prboom-plus")
673 (version "2.5.1.4")
674 (source (origin
675 (method url-fetch)
676 (uri (string-append "mirror://sourceforge/" name "/" name "/"
677 version "/" name "-" version ".tar.gz"))
678 (sha256
679 (base32
680 "151v6nign86m1a2vqz27krsccpc9m4d1jax4y43v2fa82wfj9qp0"))
681 (modules '((guix build utils)))
682 (snippet
683 '(substitute* "src/version.c"
684 (("__DATE__") "")
685 (("__TIME__") "")))))
686 (build-system gnu-build-system)
687 (arguments
688 '(#:configure-flags '("--disable-cpu-opt")
689 #:make-flags `(,(string-append "gamesdir="
690 (assoc-ref %outputs "out") "/bin"))
691 #:phases
692 (modify-phases %standard-phases
693 (add-after 'set-paths 'set-sdl'paths
694 (lambda* (#:key inputs #:allow-other-keys)
695 (setenv "CPATH"
696 (string-append (assoc-ref inputs "sdl-union")
697 "/include/SDL"))
698 #t)))))
699 (inputs
700 `(("fluidsynth" ,fluidsynth)
701 ("glu" ,glu)
702 ("libmad" ,libmad)
703 ("libpng" ,libpng)
704 ("libvorbis" ,libvorbis)
705 ("pcre" ,pcre)
706 ("portmidi" ,portmidi)
707 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-net)))))
708 (home-page "http://prboom-plus.sourceforge.net/")
709 (synopsis "Version of the classic 3D shoot'em'up game Doom")
710 (description
711 "PrBoom+ is a Doom source port developed from the original PrBoom project.")
712 (license license:gpl2+)))
713
519bfc65
KK
714(define-public retux
715 (package
716 (name "retux")
4eebfefe 717 (version "1.3.5")
519bfc65
KK
718 (source (origin
719 (method url-fetch)
720 (uri (string-append "mirror://savannah/retux/"
721 (version-major+minor version) "/retux-"
722 version "-src.tar.gz"))
723 (sha256
724 (base32
4eebfefe 725 "1pcrh3z16fl412r3k7xccrgika19ahb1xh90jihgl8yy7zza2i6p"))))
519bfc65
KK
726 (build-system python-build-system)
727 (arguments
728 `(#:tests? #f ; no check target
729 #:phases
730 (modify-phases %standard-phases
731 ;; no setup.py script
732 (delete 'build)
733 (replace 'install
734 (lambda* (#:key outputs #:allow-other-keys)
735 (let* ((out (assoc-ref outputs "out"))
736 (bin (string-append out "/bin"))
737 (data (string-append out "/share/retux"))
738 (doc (string-append out "/share/doc/retux")))
739 (mkdir-p bin)
740
741 (substitute* "retux.py"
742 ;; Use the correct data directory.
743 (("os\\.path\\.join\\(os\\.path\\.dirname\\(__file__\\), \"data\"\\),")
744 (string-append "\"" data "\","))
745 ;; Use Python 3 so the patch-shebangs phase works properly.
746 ((".*python2.*") "#!/usr/bin/python3"))
747
748 (copy-file "retux.py" (string-append bin "/retux"))
749
750 (copy-recursively "data" data)
751
752 (install-file "COPYING" doc)))))))
753 (inputs
754 `(("python-sge-pygame" ,python-sge-pygame)
755 ("python-six" ,python-six)
756 ("python-xsge" ,python-xsge)))
757 (home-page "http://retux.nongnu.org")
758 (synopsis "Action platformer game")
759 (description
760 "ReTux is an action platformer loosely inspired by the Mario games,
761utilizing the art assets from the @code{SuperTux} project.")
762 ;; GPL version 3 or later is the license for the code and some art.
763 ;; The rest of the licenses are for the art exclusively, as listed in
764 ;; data/LICENSES.
765 (license (list license:cc0
766 license:cc-by3.0
767 license:cc-by-sa3.0
768 license:cc-by-sa4.0
769 license:gpl2+
770 license:gpl3+))))
07f3b379
KK
771
772(define-public roguebox-adventures
773 (let ((commit "19a2c340b34d5b4e7cc89118c7aedc058babbd93")
774 (revision "1"))
775 (package
776 (name "roguebox-adventures")
777 (version (git-version "2.1.2" revision commit))
778 (source
779 (origin
780 (method git-fetch)
781 (uri
782 (git-reference
783 (url "https://git.postactiv.com/themightyglider/RogueBoxAdventures.git")
784 (commit commit)))
785 (file-name (git-file-name name version))
786 (sha256
787 (base32
788 "0afmg8fjdcs3sqdp5rc7irgr7riil8jwysfjn1imfxslf1wcx5ah"))))
789 (build-system python-build-system)
790 (arguments
791 '(#:tests? #f ; no check target
792 #:phases
793 (modify-phases %standard-phases
794 ;; no setup.py script
795 (replace 'build
796 (lambda* (#:key outputs #:allow-other-keys)
797 (let* ((out (assoc-ref outputs "out"))
798 (data (string-append
799 out "/share/games/roguebox-adventures")))
800 ;; Use the correct data directory.
801 (substitute* '("main.py" "LIB/getch.py" "LIB/getch_gcwz.py")
802 (("basic_path + os\\.sep + 'DATA'")
803 (string-append "'" data "'"))
804 (("^basic_path.*$")
805 (string-append "basic_path ='" data "'\n")))
806 (substitute* "LIB/gra_files.py"
807 (("basic_path = b_path\\.replace\\('/LIB',''\\)")
808 (string-append "basic_path ='" data "'\n")))
809
810 ;; The game must save in the user's home directory because
811 ;; the store is read-only.
812 (substitute* "main.py"
813 (("home_save = False") "home_save = True")
814 (("'icon_small.png'")
815 (string-append "'" data "/icon_small.png'"))))
816 #t))
817 (replace 'install
818 (lambda* (#:key outputs #:allow-other-keys)
819 (let* ((out (assoc-ref outputs "out"))
820 (bin (string-append out "/bin"))
821 (data (string-append
822 out "/share/games/roguebox-adventures"))
823 (doc (string-append
824 out "/share/doc/roguebox-adventures")))
825 (mkdir-p bin)
826 (mkdir-p doc)
827 (copy-file "main.py"
828 (string-append bin "/roguebox-adventures"))
829 (chmod (string-append bin "/roguebox-adventures") #o555)
830
831 (for-each (lambda (file)
832 (copy-recursively file
833 (string-append data "/" file)))
834 '("AUDIO" "FONT" "GRAPHIC" "LIB" "LICENSE"
835 "icon_big.png" "icon_small.png"))
836
837 (copy-recursively "DOC" doc)
838
839 (wrap-program (string-append bin "/roguebox-adventures")
840 `("PYTHONPATH" ":" prefix (,(string-append data "/LIB")))))
841 #t)))))
842 (inputs
843 `(("python-pygame" ,python-pygame)
844 ("python-tmx" ,python-tmx)))
845 (home-page "https://rogueboxadventures.tuxfamily.org")
846 (synopsis "A classical roguelike/sandbox game")
847 (description
848 "RogueBox Adventures is a graphical roguelike with strong influences
849from sandbox games like Minecraft or Terraria. The main idea of RogueBox
850Adventures is to offer the player a kind of roguelike toy-world. This world
851can be explored and changed freely.")
852 ;; The GPL3+ is for code, the rest are for art.
853 (license (list license:cc0
854 license:cc-by3.0
855 license:gpl3+
856 license:silofl1.1)))))
519bfc65 857
a20b084a
JD
858(define-public xshogi
859 (package
860 (name "xshogi")
861 (version "1.4.2")
862 (source
863 (origin
864 (method url-fetch)
865 (uri (string-append "mirror://gnu/gnushogi/xshogi-"
866 version ".tar.gz"))
867 (sha256
868 (base32
869 "1dns0nhymak44by18sv48m4xb2skiwbi2i3nb9hl6w9iwd2i2brf"))))
870 (build-system gnu-build-system)
871 (inputs
872 `(("libxaw" ,libxaw)
873 ("libxt" ,libxt)))
6fd52309 874 (home-page "https://www.gnu.org/software/gnushogi/")
2f1d20a8 875 (synopsis "User interface for gnushogi")
a20b084a
JD
876 (description "A graphical user interface for the package @code{gnushogi}.")
877 ;; Contains a copy of GPLv3 but the licence notices simply
878 ;; state "GNU General Public Licence" without specifying a version.
879 (license license:gpl1+)))
880
3da5dca3
DT
881(define-public abbaye
882 (package
883 (name "abbaye")
efc12a81 884 (version "2.0.1")
3da5dca3
DT
885 (source
886 (origin
887 (method url-fetch)
efc12a81
AFN
888 (uri (string-append "https://github.com/nevat/abbayedesmorts-gpl/"
889 "archive/v" version ".tar.gz"))
890 (file-name (string-append name "-" version ".tar.gz"))
3da5dca3
DT
891 (sha256
892 (base32
efc12a81
AFN
893 "1a67b0hq6271dd7pvwndjq29cwn2n8gawwz17xafa3k1hrhf8vw3"))
894 (modules '((guix build utils)))
895 (snippet
896 ;; Unbundle fonts.
897 '(delete-file-recursively "fonts"))))
3da5dca3
DT
898 (build-system gnu-build-system)
899 (arguments
efc12a81 900 '(#:make-flags '("CC=gcc")
aec05972
AK
901 #:phases (modify-phases %standard-phases
902 (add-after 'set-paths 'set-sdl-paths
61599438
AK
903 (lambda* (#:key inputs #:allow-other-keys)
904 (setenv "CPATH"
905 (string-append (assoc-ref inputs "sdl-union")
906 "/include/SDL"))))
aec05972
AK
907 (add-after 'patch-source-shebangs 'patch-makefile
908 (lambda* (#:key outputs #:allow-other-keys)
909 ;; Replace /usr with package output directory.
efc12a81
AFN
910 (substitute* "Makefile"
911 (("/usr") (assoc-ref outputs "out")))))
aec05972
AK
912 (add-before 'install 'make-install-dirs
913 (lambda* (#:key outputs #:allow-other-keys)
914 (let ((prefix (assoc-ref outputs "out")))
915 ;; Create directories that the makefile assumes exist.
916 (mkdir-p (string-append prefix "/bin"))
917 (mkdir-p (string-append prefix "/share/applications"))
918 (mkdir-p (string-append prefix "/share/pixmaps")))))
919 ;; No configure script.
920 (delete 'configure))
3da5dca3
DT
921 #:tests? #f)) ;; No check target.
922 (native-inputs `(("pkg-config" ,pkg-config)))
efc12a81
AFN
923 (inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer)))))
924 (home-page "https://github.com/nevat/abbayedesmorts-gpl")
3da5dca3
DT
925 (synopsis "GNU/Linux port of the indie game \"l'Abbaye des Morts\"")
926 (description "L'Abbaye des Morts is a 2D platform game set in 13th century
927France. The Cathars, who preach about good Christian beliefs, were being
928expelled by the Catholic Church out of the Languedoc region in France. One of
929them, called Jean Raymond, found an old church in which to hide, not knowing
930that beneath its ruins lay buried an ancient evil.")
efc12a81 931 (license license:gpl3)))
a83c6a64 932
b76c94e6
CAW
933(define-public angband
934 (package
935 (name "angband")
936 (version "4.0.5")
937 (source
938 (origin
939 (method url-fetch)
940 (uri (string-append "http://rephial.org/downloads/4.0/"
941 "angband-" version ".tar.gz"))
942 (sha256
943 (base32
944 "0lpq2kms7hp421vrasx2bkkn9w08kr581ldwik3v0hlq6h7rlxhd"))
945 (modules '((guix build utils)))
946 (snippet
947 ;; So, some of the sounds/graphics/tilesets are under different
948 ;; licenses... some of them even nonfree! This is a console-only
949 ;; version of this package so we just remove them.
950 ;; In the future, if someone tries to make a graphical variant of
951 ;; this package, they can deal with that mess themselves. :)
952 '(begin
953 (for-each
954 (lambda (subdir)
955 (let ((lib-subdir (string-append "lib/" subdir)))
956 (delete-file-recursively lib-subdir)))
957 '("fonts" "icons" "sounds" "tiles"))
958 (substitute* "lib/Makefile"
959 ;; And don't try to invoke makefiles in the directories we removed
960 (("gamedata customize help screens fonts tiles sounds icons user")
961 "gamedata customize help screens user"))))))
962 (build-system gnu-build-system)
963 (arguments
964 `(#:tests? #f ;no check target
965 #:configure-flags (list (string-append "--bindir=" %output "/bin"))
966 #:phases
967 (modify-phases %standard-phases
968 (add-after 'unpack 'autogen.sh
969 (lambda _
970 (substitute* "acinclude.m4"
971 (("ncursesw5-config") "ncursesw6-config"))
9505dafb 972 (zero? (system* "sh" "autogen.sh")))))))
b76c94e6
CAW
973 (native-inputs
974 `(("autoconf" ,autoconf)
975 ("automake" ,automake)))
976 (inputs `(("ncurses" ,ncurses)))
977 (home-page "http://rephial.org/")
978 (synopsis "Dungeon exploration roguelike")
979 (description "Angband is a Classic dungeon exploration roguelike. Explore
980the depths below Angband, seeking riches, fighting monsters, and preparing to
981fight Morgoth, the Lord of Darkness.")
982 (license license:gpl2)))
983
a83c6a64
EB
984(define-public pingus
985 (package
986 (name "pingus")
987 (version "0.7.6")
988 (source
989 (origin
990 (method url-fetch)
f0badf98 991 (uri (string-append "https://github.com/Pingus/pingus/archive/v"
992 version ".tar.gz"))
993 (file-name (string-append name "-" version ".tar.gz"))
a83c6a64
EB
994 (sha256
995 (base32
f0badf98 996 "0r9v6as5vi7skvvy7b0fcaimhdlzmik64pyy68plgljhsghqkkf4"))
fc1adab1 997 (patches (search-patches "pingus-sdl-libs-config.patch"))))
a83c6a64
EB
998 (build-system gnu-build-system)
999 (native-inputs `(("pkg-config" ,pkg-config)
3f3f8f49 1000 ("scons-python2" ,scons-python2)))
a83c6a64
EB
1001 (inputs `(("sdl" ,sdl)
1002 ("sdl-image" ,sdl-image)
1003 ("sdl-mixer" ,sdl-mixer)
1004 ("mesa" ,mesa)
00c09300 1005 ("glu" ,glu)
a83c6a64
EB
1006 ("libpng" ,libpng)
1007 ("boost" ,boost)))
1008 (arguments
3f3f8f49
AI
1009 '(#:make-flags (list (string-append "PREFIX=" %output))
1010 #:tests? #f ; no check target
a83c6a64 1011 #:phases
3f127147 1012 (modify-phases %standard-phases
3f3f8f49 1013 (delete 'configure)))) ; no configure script
a83c6a64
EB
1014 (home-page "http://pingus.seul.org/welcome.html")
1015 (synopsis "Lemmings clone")
1016 (description
1017 "Pingus is a free Lemmings-like puzzle game in which the player takes
1018command of a bunch of small animals and has to guide them through levels.
1019Since the animals walk on their own, the player can only influence them by
1020giving them commands, like build a bridge, dig a hole, or redirect all animals
1021in the other direction. Multiple such commands are necessary to reach the
1022level's exit. The game is presented in a 2D side view.")
1023 ;; Some source files are under bsd-3 and gpl2+ licenses.
024e2c17 1024 (license license:gpl3+)))
dff62423
JD
1025
1026(define-public talkfilters
1027 (package
1028 (name "talkfilters")
1029 (version "2.3.8")
1030 (source
1031 (origin
1032 (method url-fetch)
1033 (uri (string-append "http://www.hyperrealm.com/" name "/"
10903356 1034 name "-" version ".tar.gz"))
dff62423
JD
1035 (sha256
1036 (base32 "19nc5vq4bnkjvhk8srqddzhcs93jyvpm9r6lzjzwc1mgf08yg0a6"))))
1037 (build-system gnu-build-system)
6fd52309 1038 (home-page "https://www.gnu.org/software/talkfilters/")
dff62423
JD
1039 (synopsis "Convert English text to humorous dialects")
1040 (description "The GNU Talk Filters are programs that convert English text
1041into stereotyped or otherwise humorous dialects. The filters are provided as
1042a C library, so they can easily be integrated into other programs.")
024e2c17
DT
1043 (license license:gpl2+)))
1044
3cf118a1
CS
1045(define-public cmatrix
1046 (package
1047 (name "cmatrix")
1048 (version "1.2a")
1049 (source
1050 (origin
1051 (method url-fetch)
1052 (uri (string-append "http://www.asty.org/cmatrix/dist/cmatrix-" version
1053 ".tar.gz"))
1054 (sha256
1055 (base32
1056 "0k06fw2n8nzp1pcdynhajp5prba03gfgsbj91bknyjr5xb5fd9hz"))))
1057 (build-system gnu-build-system)
1058 (arguments
1059 '(#:phases
3f127147
TGR
1060 (modify-phases %standard-phases
1061 (replace 'configure
1062 (lambda* (#:key outputs #:allow-other-keys)
1063 ;; This old ‘configure’ script doesn't support
1064 ;; variables passed as arguments.
1065 (let ((out (assoc-ref outputs "out")))
1066 (setenv "CONFIG_SHELL" (which "bash"))
1067 (zero?
1068 (system* "./configure"
1069 (string-append "--prefix=" out)))))))))
3cf118a1 1070 (inputs `(("ncurses" ,ncurses)))
07af3e5e 1071 (home-page "http://www.asty.org/cmatrix")
3cf118a1
CS
1072 (synopsis "Simulate the display from \"The Matrix\"")
1073 (description "CMatrix simulates the display from \"The Matrix\" and is
1074based on the screensaver from the movie's website. It works with terminal
1075settings up to 132x300 and can scroll lines all at the same rate or
1076asynchronously and at a user-defined speed.")
024e2c17 1077 (license license:gpl2+)))
ae9cb418
JD
1078
1079(define-public chess
1080 (package
1081 (name "chess")
16fb1e79 1082 (version "6.2.5")
ae9cb418
JD
1083 (source
1084 (origin
1085 (method url-fetch)
1086 (uri (string-append "mirror://gnu/chess/gnuchess-" version
1087 ".tar.gz"))
1088 (sha256
1089 (base32
16fb1e79 1090 "00j8s0npgfdi41a0mr5w9qbdxagdk2v41lcr42rwl1jp6miyk6cs"))))
ae9cb418 1091 (build-system gnu-build-system)
6fd52309 1092 (home-page "https://www.gnu.org/software/chess/")
ae9cb418
JD
1093 (synopsis "Full chess implementation")
1094 (description "GNU Chess is a chess engine. It allows you to compete
1095against the computer in a game of chess, either through the default terminal
1096interface or via an external visual interface such as GNU XBoard.")
024e2c17 1097 (license license:gpl3+)))
ae9cb418 1098
a6b55314 1099(define freedink-engine
bb3b71ce
SB
1100 (package
1101 (name "freedink-engine")
1102 (version "108.4")
1103 (source (origin
1104 (method url-fetch)
1105 (uri (string-append "mirror://gnu/freedink/freedink-" version
1106 ".tar.gz"))
1107 (sha256
1108 (base32
1109 "08c51imfjfcydm7h0va09z8qfw5nc837bi2x754ni2z737hb5kw2"))))
1110 (build-system gnu-build-system)
1111 (arguments `(#:configure-flags '("--disable-embedded-resources")))
b94a6ca0 1112 (native-inputs `(("gettext" ,gettext-minimal)
bb3b71ce
SB
1113 ("pkg-config" ,pkg-config)))
1114 (inputs `(("sdl" ,sdl)
1115 ("sdl-image" ,sdl-image)
1116 ("sdl-mixer" ,sdl-mixer)
1117 ("sdl-ttf" ,sdl-ttf)
1118 ("sdl-gfx" ,sdl-gfx)
1119 ("fontconfig" ,fontconfig)
1120 ("check" ,check)))
6fd52309 1121 (home-page "https://www.gnu.org/software/freedink/")
bb3b71ce
SB
1122 (synopsis "Twisted adventures of young pig farmer Dink Smallwood")
1123 (description
1124 "GNU FreeDink is a free and portable re-implementation of the engine
1125for the role-playing game Dink Smallwood. It supports not only the original
1126game data files but it also supports user-produced game mods or \"D-Mods\".
1127To that extent, it also includes a front-end for managing all of your D-Mods.")
024e2c17 1128 (license license:gpl3+)))
bb3b71ce 1129
a6b55314 1130(define freedink-data
bb3b71ce
SB
1131 (package
1132 (name "freedink-data")
67ba411c 1133 (version "1.08.20170401")
bb3b71ce
SB
1134 (source (origin
1135 (method url-fetch)
1136 (uri (string-append "mirror://gnu/freedink/freedink-data-"
67ba411c 1137 version ".tar.xz"))
bb3b71ce
SB
1138 (sha256
1139 (base32
67ba411c 1140 "1zx7qywibhznj7bnz217404scr8dfh0xj24xjihnda5iapzz7lz8"))))
bb3b71ce
SB
1141 (build-system gnu-build-system)
1142 (arguments
3f127147
TGR
1143 `(#:phases
1144 (modify-phases %standard-phases
1145 (delete 'configure) ; no configure script
1146 (delete 'check)) ; no tests
bb3b71ce 1147 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))))
6fd52309 1148 (home-page "https://www.gnu.org/software/freedink/")
bb3b71ce
SB
1149 (synopsis "Game data for GNU Freedink")
1150 (description
1151 "This package contains the game data of GNU Freedink.")
024e2c17 1152 (license license:gpl3+)))
bb3b71ce
SB
1153
1154;; TODO: Add freedink-dfarc when there's a wxWidgets package.
1155
a6b55314
LC
1156(define-public freedink
1157 ;; This is a wrapper that tells the engine where to find the data.
1158 (package (inherit freedink-engine)
1159 (name "freedink")
1160 (build-system trivial-build-system)
1161 (arguments
1162 '(#:builder (begin
1163 (use-modules (guix build utils))
1164
1165 (let* ((output (assoc-ref %outputs "out"))
1166 (bin (string-append output "/bin"))
1167 (executable (string-append bin "/freedink")))
1168 (mkdir-p bin)
1169 (call-with-output-file executable
1170 (lambda (port)
1171 (format port "#!~a/bin/sh
1172exec ~a/bin/freedink -refdir ~a/share/dink\n"
1173 (assoc-ref %build-inputs "bash")
1174 (assoc-ref %build-inputs "engine")
1175 (assoc-ref %build-inputs "data"))
1176 (chmod port #o777)))))
1177 #:modules ((guix build utils))))
1178 (inputs `(("engine" ,freedink-engine)
1179 ("data" ,freedink-data)
1180 ("bash" ,bash)))
1181 (native-inputs '())))
1182
ae9cb418
JD
1183(define-public xboard
1184 (package
1185 (name "xboard")
9835458f 1186 (version "4.9.1")
ae9cb418
JD
1187 (source
1188 (origin
1189 (method url-fetch)
1190 (uri (string-append "mirror://gnu/xboard/xboard-" version
1191 ".tar.gz"))
1192 (sha256
1193 (base32
9835458f 1194 "1mkh36xnnacnz9r00b5f9ld9309k32jv6mcavklbdnca8bl56bib"))))
ae9cb418 1195 (build-system gnu-build-system)
4e530049
SB
1196 (inputs
1197 `(("gtk+" ,gtk+-2)
1198 ("librsvg" ,librsvg)))
9835458f
EF
1199 (native-inputs
1200 `(("texinfo" ,texinfo)
1201 ("pkg-config" ,pkg-config)))
6fd52309 1202 (home-page "https://www.gnu.org/software/xboard/")
ae9cb418
JD
1203 (synopsis "Graphical user interface for chess programs")
1204 (description "GNU XBoard is a graphical board for all varieties of chess,
1205including international chess, xiangqi (Chinese chess), shogi (Japanese chess)
1206and Makruk. Several lesser-known variants are also supported. It presents a
1207fully interactive graphical interface and it can load and save games in the
1208Portable Game Notation.")
024e2c17 1209 (license license:gpl3+)))
11c38cbe
JD
1210
1211
1212(define-public xboing
1213 (package
1214 (name "xboing")
1215 (version "2.4")
1216 (source
1217 (origin
1218 (method url-fetch)
1219 (uri (string-append "http://www.techrescue.org/xboing/xboing"
1220 version ".tar.gz"))
1221 (sha256
417f3d49
EF
1222 (base32 "16m2si8wmshxpifk861vhpqviqxgcg8bxj6wfw8hpnm4r2w9q0b7"))
1223 (patches (search-patches "xboing-CVE-2004-0149.patch"))))
11c38cbe
JD
1224 (arguments
1225 `(#:tests? #f
1226 #:phases
3f127147
TGR
1227 (modify-phases %standard-phases
1228 (replace 'configure
1229 (lambda* (#:key outputs #:allow-other-keys)
10903356 1230
3f127147
TGR
1231 (substitute* "Imakefile"
1232 (("XPMINCLUDE[\t ]*= -I/usr/X11/include/X11")
1233 (string-append "XPMINCLUDE = -I"
1234 (assoc-ref %build-inputs "libxpm")
1235 "/include/X11")))
10903356 1236
3f127147
TGR
1237 (substitute* "Imakefile"
1238 (("XBOING_DIR = \\.") "XBOING_DIR=$(PROJECTROOT)"))
10903356 1239
3f127147 1240 ;; FIXME: HIGH_SCORE_FILE should be set to somewhere writeable
10903356 1241
3f127147
TGR
1242 (zero? (system* "xmkmf" "-a"
1243 (string-append "-DProjectRoot="
1244 (assoc-ref outputs "out"))))))
1245 (replace 'install
1246 (lambda* (#:key outputs #:allow-other-keys)
1247 (and
1248 (zero? (system* "make" "install.man"))
1249 (zero? (system* "make" "install"))))))))
11c38cbe
JD
1250 (inputs `(("libx11" ,libx11)
1251 ("libxext" ,libxext)
1252 ("libxpm" ,libxpm)))
1253 (native-inputs `(("imake" ,imake)
1254 ("inetutils" ,inetutils)
1255 ("makedepend" ,makedepend)))
1256 (build-system gnu-build-system)
1257 (home-page "http://www.techrescue.org/xboing")
1258 (synopsis "Ball and paddle game")
1259 (description "XBoing is a blockout type game where you have a paddle which
1260you control to bounce a ball around the game zone destroying blocks with a
35b9e423
EB
1261proton ball. Each block carries a different point value. The more blocks you
1262destroy, the better your score. The person with the highest score wins.")
024e2c17
DT
1263 (license (license:x11-style "file://COPYING"
1264 "Very similar to the X11 licence."))))
a21b42e2
SB
1265
1266(define-public gtypist
1267 (package
1268 (name "gtypist")
1269 (version "2.9.5")
1270 (source (origin
1271 (method url-fetch)
1272 (uri (string-append "mirror://gnu/gtypist/gtypist-"
1273 version ".tar.xz"))
1274 (sha256
1275 (base32
1276 "0xzrkkmj0b1dw3yr0m9hml2y634cc4h61im6zwcq57s7285z8fn1"))
1277 (modules '((guix build utils)))
1278 (snippet
1279 ;; We do not provide `ncurses.h' within an `ncursesw'
1280 ;; sub-directory, so patch the source accordingly. See
1281 ;; <http://bugs.gnu.org/19018>.
1282 '(for-each (lambda (file)
1283 (substitute* file
1284 (("ncursesw/ncurses.h")
1285 "ncurses.h")))
1286 (find-files "." "configure$|\\.c$")))))
1287 (build-system gnu-build-system)
1288 (inputs `(("ncurses" ,ncurses)
1289 ("perl" ,perl)))
6fd52309 1290 (home-page "https://www.gnu.org/software/gtypist/")
a21b42e2
SB
1291 (synopsis "Typing tutor")
1292 (description
1293 "GNU Typist is a universal typing tutor. It can be used to learn and
1294practice touch-typing. Several tutorials are included; in addition to
1295tutorials for the standard QWERTY layout, there are also tutorials for the
1296alternative layouts Dvorak and Colemak, as well as for the numpad. Tutorials
1297are primarily in English, however some in other languages are provided.")
024e2c17 1298 (license license:gpl3+)))
13d18626 1299
024e2c17
DT
1300(define-public irrlicht
1301 (package
1302 (name "irrlicht")
f90b2dbd 1303 (version "1.8.4")
024e2c17
DT
1304 (source (origin
1305 (method url-fetch)
1306 (uri (string-append
1307 "mirror://sourceforge/irrlicht/Irrlicht%20SDK/"
1308 (version-major+minor version)
1309 "/" version "/irrlicht-" version ".zip"))
1310 (sha256
1311 (base32
f90b2dbd 1312 "0cz4z4dwrv5ypl19ll67wl6jjpy5k6ly4vr042w4br88qq5jhazl"))))
024e2c17
DT
1313 (build-system gnu-build-system)
1314 (arguments
3f127147
TGR
1315 `(#:phases
1316 (modify-phases %standard-phases
1317 (add-after 'unpack 'fix-build-env
1318 (lambda* (#:key outputs #:allow-other-keys)
1319 (let ((out (assoc-ref outputs "out")))
1320 (substitute* "Makefile"
1321 (("INSTALL_DIR = /usr/local/lib")
1322 (string-append "INSTALL_DIR = " out "/lib")))
1323 ;; The Makefile assumes these directories exist.
1324 (mkdir-p (string-append out "/lib"))
1325 (mkdir-p (string-append out "/include")))))
1326 (replace 'unpack
1327 (lambda* (#:key source #:allow-other-keys)
1328 (and (zero? (system* "unzip" source))
1329 ;; The actual source is buried a few directories deep.
1330 (chdir (string-append "irrlicht-" ,version
1331 "/source/Irrlicht/")))))
1332 (delete 'configure)) ; no configure script
1333 #:tests? #f ; no check target
024e2c17
DT
1334 #:make-flags '("CC=gcc" "sharedlib")))
1335 (native-inputs
f90b2dbd 1336 `(("unzip" ,unzip)))
024e2c17 1337 (inputs
977736fc
MW
1338 `(("mesa" ,mesa)
1339 ("glu" ,glu)))
024e2c17
DT
1340 (synopsis "3D game engine written in C++")
1341 (description
1342 "The Irrlicht Engine is a high performance realtime 3D engine written in
1343C++. Features include an OpenGL renderer, extensible materials, scene graph
1344management, character animation, particle and other special effects, support
1345for common mesh file formats, and collision detection.")
1346 (home-page "http://irrlicht.sourceforge.net/")
1347 (license license:zlib)))
7e51e5bc 1348
c23c50c7
RW
1349(define-public mars
1350 ;; The latest release on SourceForge relies on an unreleased version of SFML
1351 ;; with a different API, so we take the latest version from the official
1352 ;; repository on Github.
698bd297 1353 (let ((commit "c855d044094a1d92317e38935d81ba938946132e")
c23c50c7
RW
1354 (revision "1"))
1355 (package
1356 (name "mars")
698bd297 1357 (version (string-append "0.7.5." revision "." (string-take commit 7) ))
c23c50c7
RW
1358 (source (origin
1359 (method git-fetch)
1360 (uri (git-reference
1361 (url "https://github.com/thelaui/M.A.R.S..git")
1362 (commit commit)))
1363 (file-name (string-append name "-" version))
1364 (sha256
1365 (base32
1366 "1r4c5gap1z2zsv4yjd34qriqkxaq4lb4rykapyzkkdf4g36lc3nh"))
fc1adab1
AK
1367 (patches (search-patches "mars-sfml-2.3.patch"
1368 "mars-install.patch"))))
c23c50c7
RW
1369 (build-system cmake-build-system)
1370 (arguments
1371 `(#:tests? #f ; There are no tests
1372 #:phases
1373 (modify-phases %standard-phases
1374 (add-after 'unpack 'fix-install-path
1375 (lambda _
1376 (substitute* "src/CMakeLists.txt"
1377 (("\\$\\{CMAKE_INSTALL_PREFIX\\}/games")
1378 "${CMAKE_INSTALL_PREFIX}/bin"))
1379 #t))
1380 (add-after 'unpack 'fix-data-path
1381 (lambda* (#:key outputs #:allow-other-keys)
1382 (substitute* "src/System/settings.cpp"
1383 (("C_dataPath = \"./data/\";")
1384 (string-append "C_dataPath = \""
1385 (assoc-ref outputs "out")
1386 "/share/games/marsshooter/\";")))
1387 #t)))))
1388 (inputs
1389 `(("mesa" ,mesa)
1390 ("fribidi" ,fribidi)
1391 ("taglib" ,taglib)
1392 ("sfml" ,sfml)))
1393 (home-page "http://marsshooter.org")
1394 (synopsis "2D space shooter")
1395 (description
1396 "M.A.R.S. is a 2D space shooter with pretty visual effects and
1397attractive physics. Players can battle each other or computer controlled
1398enemies in different game modes such as space ball, death match, team death
1399match, cannon keep, and grave-itation pit.")
1400 (license license:gpl3+))))
1401
7e51e5bc
DT
1402(define minetest-data
1403 (package
1404 (name "minetest-data")
28c98738 1405 (version "0.4.16")
7e51e5bc
DT
1406 (source (origin
1407 (method url-fetch)
1408 (uri (string-append
1409 "https://github.com/minetest/minetest_game/archive/"
1410 version ".tar.gz"))
f586c877 1411 (file-name (string-append name "-" version ".tar.gz"))
7e51e5bc
DT
1412 (sha256
1413 (base32
28c98738 1414 "0nibpm600rbv9dg1zgcsl5grlbqx0b5l6cg1lp6sqkwvjialb4ga"))))
7e51e5bc
DT
1415 (build-system trivial-build-system)
1416 (native-inputs
1417 `(("source" ,source)
1418 ("tar" ,tar)
1419 ("gzip" ,(@ (gnu packages compression) gzip))))
1420 (arguments
1421 `(#:modules ((guix build utils))
1422 #:builder (begin
1423 (use-modules (guix build utils))
1424 (let ((tar (string-append (assoc-ref %build-inputs "tar")
1425 "/bin/tar"))
1426 (install-dir (string-append
1427 %output
1428 "/share/minetest/games/minetest_game"))
1429 (path (string-append (assoc-ref %build-inputs
1430 "gzip")
1431 "/bin")))
1432 (setenv "PATH" path)
1433 (system* tar "xvf" (assoc-ref %build-inputs "source"))
1434 (chdir (string-append "minetest_game-" ,version))
1435 (mkdir-p install-dir)
1436 (copy-recursively "." install-dir)))))
1437 (synopsis "Main game data for the Minetest game engine")
1438 (description
1439 "Game data for the Minetest infinite-world block sandox game.")
1440 (home-page "http://minetest.net")
1441 (license license:lgpl2.1+)))
6e206ac7
DT
1442
1443(define-public minetest
1444 (package
1445 (name "minetest")
28c98738 1446 (version "0.4.16")
6e206ac7
DT
1447 (source (origin
1448 (method url-fetch)
1449 (uri (string-append
1450 "https://github.com/minetest/minetest/archive/"
1451 version ".tar.gz"))
f586c877 1452 (file-name (string-append name "-" version ".tar.gz"))
6e206ac7
DT
1453 (sha256
1454 (base32
28c98738 1455 "0mbnf1ma4gsw9ah68ply04059xkfx5psdxwalxp78sgmx4ypkwqf"))))
6e206ac7
DT
1456 (build-system cmake-build-system)
1457 (arguments
10903356
AE
1458 '(#:configure-flags
1459 (list "-DRUN_IN_PLACE=0"
1460 "-DENABLE_FREETYPE=1"
1461 "-DENABLE_GETTEXT=1"
1462 (string-append "-DIRRLICHT_INCLUDE_DIR="
1463 (assoc-ref %build-inputs "irrlicht")
1464 "/include/irrlicht")
1465 (string-append "-DCURL_INCLUDE_DIR="
1466 (assoc-ref %build-inputs "curl")
1467 "/include/curl"))
6e206ac7
DT
1468 #:tests? #f)) ; no check target
1469 (native-search-paths
1470 (list (search-path-specification
1471 (variable "MINETEST_SUBGAME_PATH")
af070955 1472 (files '("share/minetest/games")))))
6e206ac7
DT
1473 (native-inputs
1474 `(("pkg-config" ,pkg-config)))
1475 (inputs
1476 `(("irrlicht" ,irrlicht)
1477 ("libpng" ,libpng)
c463dd47 1478 ("libjpeg" ,libjpeg)
6e206ac7
DT
1479 ("libxxf86vm" ,libxxf86vm)
1480 ("mesa" ,mesa)
1481 ("libogg" ,libogg)
1482 ("libvorbis" ,libvorbis)
1483 ("openal" ,openal)
1484 ("freetype" ,(@ (gnu packages fontutils) freetype))
1485 ("curl" ,curl)
1486 ("luajit" ,luajit)
b94a6ca0 1487 ("gettext" ,gettext-minimal)
6e206ac7
DT
1488 ("sqlite" ,sqlite)))
1489 (propagated-inputs
1490 `(("minetest-data" ,minetest-data)))
1491 (synopsis "Infinite-world block sandbox game")
1492 (description
1493 "Minetest is a sandbox construction game. Players can create and destroy
1494various types of blocks in a three-dimensional open world. This allows
1495forming structures in every possible creation, on multiplayer servers or as a
1496single player. Mods and texture packs allow players to personalize the game
1497in different ways.")
1498 (home-page "http://minetest.net")
1499 (license license:lgpl2.1+)))
77264d15
SB
1500
1501(define glkterm
1502 (package
1503 (name "glkterm")
1504 (version "1.0.4")
1505 (source
1506 (origin
1507 (method url-fetch)
1508 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
1509 "glk/implementations/glkterm-104.tar.gz"))
1510 (sha256
1511 (base32
1512 "0zlj9nlnkdlvgbiliczinirqygiq8ikg5hzh5vgcmnpg9pvnwga7"))))
1513 (build-system gnu-build-system)
1514 (propagated-inputs `(("ncurses" ,ncurses))) ; required by Make.glkterm
1515 (arguments
1516 '(#:tests? #f ; no check target
1517 #:phases
3f127147
TGR
1518 (modify-phases %standard-phases
1519 (replace 'install
1520 (lambda* (#:key outputs #:allow-other-keys)
1521 (let* ((out (assoc-ref outputs "out"))
1522 (inc (string-append out "/include"))
1523 (lib (string-append out "/lib")))
3f127147
TGR
1524 (for-each
1525 (lambda (file)
1526 (install-file file inc))
1527 '("glk.h" "glkstart.h" "gi_blorb.h" "gi_dispa.h" "Make.glkterm"))
3f127147
TGR
1528 (install-file "libglkterm.a" lib))
1529 #t))
1530 (delete 'configure)))) ; no configure script
77264d15
SB
1531 (home-page "http://www.eblong.com/zarf/glk/")
1532 (synopsis "Curses Implementation of the Glk API")
1533 (description
1534 "Glk defines a portable API for applications with text UIs. It was
1535primarily designed for interactive fiction, but it should be suitable for many
1536interactive text utilities, particularly those based on a command line.
1537This is an implementation of the Glk library which runs in a terminal window,
dbe7095b 1538using the @code{curses.h} library for screen control.")
77264d15
SB
1539 (license (license:fsf-free "file://README"))))
1540
1541(define-public glulxe
1542 (package
1543 (name "glulxe")
b2e3d59c 1544 (version "0.5.4")
77264d15
SB
1545 (source
1546 (origin
1547 (method url-fetch)
1548 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
b2e3d59c 1549 "glulx/interpreters/glulxe/glulxe-054.tar.gz"))
77264d15
SB
1550 (sha256
1551 (base32
b2e3d59c 1552 "0vipydg6ra90yf9b3ipgppwxyb2xdhcxwvirgjy0v20wlf56zhhz"))))
77264d15
SB
1553 (build-system gnu-build-system)
1554 (inputs `(("glk" ,glkterm)))
1555 (arguments
3f127147 1556 '(#:tests? #f ; no check target
77264d15
SB
1557 #:make-flags
1558 (let* ((glk (assoc-ref %build-inputs "glk")))
1559 (list (string-append "GLKINCLUDEDIR=" glk "/include")
1560 (string-append "GLKLIBDIR=" glk "/lib")
1561 (string-append "GLKMAKEFILE=" "Make.glkterm")))
1562 #:phases
3f127147
TGR
1563 (modify-phases %standard-phases
1564 (replace 'install
1565 (lambda* (#:key outputs #:allow-other-keys)
1566 (let* ((out (assoc-ref outputs "out"))
1567 (bin (string-append out "/bin")))
3f127147
TGR
1568 (install-file "glulxe" bin))
1569 #t))
1570 (delete 'configure)))) ; no configure script
77264d15
SB
1571 (home-page "http://www.eblong.com/zarf/glulx/")
1572 (synopsis "Interpreter for Glulx VM")
1573 (description
1574 "Glulx is a 32-bit portable virtual machine intended for writing and
1575playing interactive fiction. It was designed by Andrew Plotkin to relieve
1576some of the restrictions in the venerable Z-machine format. This is the
92bdf777 1577reference interpreter, using the Glk API.")
b2e3d59c 1578 (license license:expat)))
72b703cd 1579
35481e8b
SB
1580(define-public fizmo
1581 (package
1582 (name "fizmo")
32199e9a 1583 (version "0.8.4")
35481e8b
SB
1584 (source (origin
1585 (method url-fetch)
1586 (uri (string-append "https://christoph-ender.de/fizmo/source/"
1587 name "-" version ".tar.gz"))
1588 (sha256
1589 (base32
32199e9a 1590 "1sd988db2302r7cbfcfghbmg8ck43c6hvnlnlpb0rqxb7pm9cwyy"))))
35481e8b
SB
1591 (build-system gnu-build-system)
1592 (arguments
1593 '(#:configure-flags
1594 (let ((libjpeg (assoc-ref %build-inputs "libjpeg"))
1595 (ncurses (assoc-ref %build-inputs "ncurses")))
1596 (list (string-append "jpeg_CFLAGS=-I" libjpeg "/include")
1597 (string-append "jpeg_LIBS=-ljpeg")
1598 (string-append "ncursesw_CFLAGS=-I" ncurses "/include")
1599 (string-append "ncursesw_LIBS=-lncursesw")))))
1600 (native-inputs
1601 `(("pkg-config" ,pkg-config)))
1602 (inputs
32199e9a
KK
1603 `(("freetype" ,freetype)
1604 ("libjpeg" ,libjpeg)
35481e8b
SB
1605 ("libpng" ,libpng)
1606 ("libsndfile" ,libsndfile)
1607 ("libxml2" ,libxml2)
1608 ("ncurses" ,ncurses)
32199e9a 1609 ("sdl2" ,sdl2)))
35481e8b
SB
1610 (home-page "https://christoph-ender.de/fizmo/")
1611 (synopsis "Z-machine interpreter")
1612 (description
1613 "Fizmo is a console-based Z-machine interpreter. It is used to play
e881752c 1614interactive fiction, also known as text adventures, which were implemented
35481e8b
SB
1615either by Infocom or created using the Inform compiler.")
1616 (license license:bsd-3)))
1617
72b703cd
SB
1618(define-public retroarch
1619 (package
1620 (name "retroarch")
41faf6f2 1621 (version "1.7.0")
72b703cd
SB
1622 (source
1623 (origin
1624 (method url-fetch)
56cdca95 1625 (uri (string-append "https://github.com/libretro/RetroArch/archive/v"
72b703cd 1626 version ".tar.gz"))
f586c877 1627 (file-name (string-append name "-" version ".tar.gz"))
72b703cd 1628 (sha256
41faf6f2 1629 (base32 "1waskzf99947yqs40n38s86m41jf5v7prvzf8pzfjxzpgyis8bxk"))))
72b703cd
SB
1630 (build-system gnu-build-system)
1631 (arguments
05e0ac46 1632 '(#:tests? #f ; no tests
72b703cd 1633 #:phases
3f127147
TGR
1634 (modify-phases %standard-phases
1635 (replace 'configure
05e0ac46
TGR
1636 (lambda* (#:key outputs #:allow-other-keys)
1637 (let* ((out (assoc-ref outputs "out"))
1638 (etc (string-append out "/etc")))
1639 (substitute* "qb/qb.libs.sh"
1640 (("/bin/true") (which "true")))
1641 ;; The configure script does not yet accept the extra arguments
1642 ;; (like ‘CONFIG_SHELL=’) passed by the default configure phase.
1643 (zero? (system*
1644 "./configure"
1645 (string-append "--prefix=" out)
1646 (string-append "--global-config-dir=" etc)))))))))
72b703cd
SB
1647 (inputs
1648 `(("alsa-lib" ,alsa-lib)
1649 ("ffmpeg" ,ffmpeg)
1650 ("freetype" ,freetype)
1651 ("libxinerama" ,libxinerama)
1652 ("libxkbcommon" ,libxkbcommon)
1653 ("libxml2" ,libxml2)
1654 ("libxv" ,libxv)
1655 ("mesa" ,mesa)
1656 ("openal" ,openal)
1657 ("pulseaudio" ,pulseaudio)
1658 ("python" ,python)
1659 ("sdl" ,sdl2)
1660 ("udev" ,eudev)
540dd1c8 1661 ("wayland", wayland)
72b703cd
SB
1662 ("zlib" ,zlib)))
1663 (native-inputs
1664 `(("pkg-config" ,pkg-config)
1665 ("which" ,which)))
68f30310 1666 (home-page "https://www.libretro.com/")
72b703cd
SB
1667 (synopsis "Reference frontend for the libretro API")
1668 (description
1669 "Libretro is a simple but powerful development interface that allows for
1670the easy creation of emulators, games and multimedia applications that can plug
1671straight into any libretro-compatible frontend. RetroArch is the official
1672reference frontend for the libretro API, currently used by most as a modular
1673multi-system game/emulator system.")
1674 (license license:gpl3+)))
fc936b65
DH
1675
1676(define-public gnugo
1677 (package
1678 (name "gnugo")
1679 (version "3.8")
1680 (source (origin
1681 (method url-fetch)
1682 (uri (string-append "mirror://gnu/gnugo/gnugo-" version
1683 ".tar.gz"))
1684 (sha256
1685 (base32
1686 "0wkahvqpzq6lzl5r49a4sd4p52frdmphnqsfdv7gdp24bykdfs6s"))))
1687 (build-system gnu-build-system)
1688 (inputs `(("readline" ,readline)))
4cc78cb3 1689 (synopsis "Play the game of Go")
7c125ce0
AK
1690 (description
1691 "GNU Go is a program that plays the game of Go, in which players
1692place stones on a grid to form territory or capture other stones. While
1693it can be played directly from the terminal, rendered in ASCII characters,
1694it is also possible to play GNU Go with 3rd party graphical interfaces or
1695even in Emacs. It supports the standard game storage format (SGF, Smart
1696Game Format) and inter-process communication format (GMP, Go Modem
1697Protocol).")
6fd52309 1698 (home-page "https://www.gnu.org/software/gnugo/")
fc936b65 1699 (license license:gpl3+)))
67fa7a27
CAW
1700
1701(define-public extremetuxracer
1702 (package
1703 (name "extremetuxracer")
43337a73 1704 (version "0.7.4")
67fa7a27
CAW
1705 (source (origin
1706 (method url-fetch)
1707 (uri (string-append
966a543b 1708 "mirror://sourceforge/extremetuxracer/releases/"
67fa7a27
CAW
1709 version "/etr-" version ".tar.xz"))
1710 (sha256
1711 (base32
43337a73 1712 "0d2j4ybdjmimg67v2fndgahgq4fvgz3fpfb3a4l1ar75n6hy776s"))))
67fa7a27
CAW
1713 (build-system gnu-build-system)
1714 (native-inputs
1715 `(("pkg-config" ,pkg-config)))
1716 (inputs
b8a35cce
RW
1717 `(("glu" ,glu)
1718 ("sfml" ,sfml)))
67fa7a27
CAW
1719 (synopsis "High speed arctic racing game based on Tux Racer")
1720 ;; Snarfed straight from Debian
1721 (description "Extreme Tux Racer, or etracer as it is called for short, is
1722a simple OpenGL racing game featuring Tux, the Linux mascot. The goal of the
1723game is to slide down a snow- and ice-covered mountain as quickly as possible,
1724avoiding the trees and rocks that will slow you down.
1725
1726Collect herrings and other goodies while sliding down the hill, but avoid fish
1727bones.
1728
1729This game is based on the GPL version of the famous game TuxRacer.")
3b3b60d0 1730 (home-page "https://sourceforge.net/projects/extremetuxracer/")
67fa7a27 1731 (license license:gpl2+)))
7a4d0509 1732
1a0633e7
RW
1733(define-public supertuxkart
1734 (package
1735 (name "supertuxkart")
17c3f776 1736 (version "0.9.3")
1a0633e7
RW
1737 (source
1738 (origin
1739 (method url-fetch)
1740 (uri (string-append "mirror://sourceforge/supertuxkart/SuperTuxKart/"
1741 version "/supertuxkart-" version "-src.tar.xz"))
1742 (sha256
1743 (base32
17c3f776 1744 "1c4w47ibj87lgwiqygq8qi7jiz6gklj4dwf5bs5zk15s0rqlw0fq"))
1a0633e7
RW
1745 (modules '((guix build utils)))
1746 (snippet
1747 ;; Delete bundled library sources
1748 '(begin
1749 ;; FIXME: try to unbundle enet, and angelscript
1750 (for-each delete-file-recursively
1751 '("lib/zlib"
1752 "lib/libpng"
1753 "lib/jpeglib"
1754 "lib/glew"
1755 "lib/wiiuse"))
1756 (substitute* "CMakeLists.txt"
1757 ;; Supertuxkart uses modified versions of the Irrlicht engine
1758 ;; and the bullet library. The developers gave an explanation here:
1759 ;; http://forum.freegamedev.net/viewtopic.php?f=17&t=3906
1760 (("add_subdirectory\\(.*/(glew|zlib)\"\\)") ""))
1761 #t))))
1762 (build-system cmake-build-system)
1763 (arguments
1764 `(#:tests? #f ; no check target
1765 #:configure-flags
1766 (list "-DUSE_WIIUSE=0"
1767 ;; Do not use the bundled zlib
1768 "-DNO_IRR_COMPILE_WITH_ZLIB_=TRUE"
17c3f776
RH
1769 ;; FIXME: needs libopenglrecorder
1770 "-DBUILD_RECORDER=0"
1a0633e7
RW
1771 ;; Irrlicht returns an integer instead of a boolean
1772 "-DCMAKE_C_FLAGS=-fpermissive")
1773 #:phases
1774 (modify-phases %standard-phases
1775 (add-after 'unpack 'unbundle
1776 (lambda* (#:key inputs #:allow-other-keys)
1777 (substitute* "CMakeLists.txt"
1778 (("glew")
1779 (string-append (assoc-ref inputs "glew")
1780 "/lib/libGLEW.a"))
1781 (("include_directories\\(\"\\$\\{PROJECT_SOURCE_DIR\\}/lib/glew/include\"\\)")
1782 (string-append "include_directories(\""
1783 (assoc-ref inputs "glew")
1784 "/include\")")))
1785 #t)))))
1786 (inputs
1787 `(("glew" ,glew)
1788 ("zlib" ,zlib)
1789 ("openal" ,openal)
1790 ("libvorbis" ,libvorbis)
1791 ("freetype" ,freetype)
1792 ("fribidi" ,fribidi)
1793 ("mesa" ,mesa)
1794 ("libx11" ,libx11)
1795 ("libxrandr" ,libxrandr)
1796 ("curl" ,curl)
1797 ;; The following input is needed to build the bundled and modified
1798 ;; version of irrlicht.
1799 ("libjpeg" ,libjpeg)))
1800 (native-inputs
1801 `(("pkg-config" ,pkg-config)))
5e9670bc 1802 (home-page "https://supertuxkart.net/")
1a0633e7
RW
1803 (synopsis "3D kart racing game")
1804 (description "SuperTuxKart is a 3D kart racing game, with a focus on
1805having fun over realism. You can play with up to 4 friends on one PC, racing
1806against each other or just trying to beat the computer; single-player mode is
1807also available.")
1808 (license license:gpl3+)))
1809
7a4d0509
SB
1810(define-public gnujump
1811 (package
1812 (name "gnujump")
1813 (version "1.0.8")
1814 (source (origin
1815 (method url-fetch)
1816 (uri (string-append "mirror://gnu/gnujump/gnujump-"
1817 version ".tar.gz"))
1818 (sha256
1819 (base32
1820 "05syy9mzbyqcfnm0hrswlmhwlwx54f0l6zhcaq8c1c0f8dgzxhqk"))))
1821 (build-system gnu-build-system)
1822 (arguments
1823 '(#:phases
1824 (modify-phases %standard-phases
1825 (add-before
1826 'configure 'link-libm
1827 (lambda _ (setenv "LIBS" "-lm"))))))
1828 (inputs
1829 `(("glu" ,glu)
b3546174 1830 ("mesa" ,mesa)
7a4d0509
SB
1831 ("sdl" ,sdl)
1832 ("sdl-image" ,sdl-image)
1833 ("sdl-mixer" ,sdl-mixer)))
1834 (home-page "http://gnujump.es.gnu.org/")
1835 (synopsis
1836 "Game of jumping to the next floor, trying not to fall")
1837 (description
1838 "GNUjump is a simple, yet addictive game in which you must jump from
1839platform to platform to avoid falling, while the platforms drop at faster rates
1840the higher you go. The game features multiplayer, unlimited FPS, smooth floor
1841falling, themeable graphics and sounds, and replays.")
1842 (license license:gpl3+)))
159093a7
SB
1843
1844(define-public wesnoth
1845 (package
1846 (name "wesnoth")
26ad4adb 1847 (version "1.12.6")
159093a7
SB
1848 (source (origin
1849 (method url-fetch)
de67e922
LF
1850 (uri (string-append "mirror://sourceforge/wesnoth/wesnoth-"
1851 (version-major+minor version) "/wesnoth-"
1852 version "/"
159093a7
SB
1853 name "-" version ".tar.bz2"))
1854 (sha256
1855 (base32
26ad4adb 1856 "0kifp6g1dsr16m6ngjq2hx19h851fqg326ps3krnhpyix963h3x5"))))
159093a7
SB
1857 (build-system cmake-build-system)
1858 (arguments
1859 '(#:tests? #f ; no check target
1860 #:configure-flags
1861 ;; XXX: Failed to compile with '-Werror=old-style-cast'.
1862 ;; boost/mpl/assert.hpp:313:58: error:
1863 ;; use of old-style cast [-Werror=old-style-cast]
1864 ;; [...]
1865 ;; cc1plus: all warnings being treated as errors
1866 '("-DENABLE_STRICT_COMPILATION=OFF")))
1867 (native-inputs
b94a6ca0 1868 `(("gettext" ,gettext-minimal)
159093a7
SB
1869 ("pkg-config" ,pkg-config)))
1870 (inputs
1871 `(("boost" ,boost)
1872 ("dbus" ,dbus)
1873 ("fribidi" ,fribidi)
1874 ("libvorbis" ,libvorbis)
1875 ("pango" ,pango)
1876 ("sdl-image" ,sdl-image)
1877 ("sdl-mixer" ,sdl-mixer)
1878 ("sdl-net" ,sdl-net)
1879 ("sdl-ttf" ,sdl-ttf)))
1880 (home-page "http://www.wesnoth.org/")
1881 (synopsis "Turn-based strategy game")
1882 (description
1883 "The Battle for Wesnoth is a fantasy, turn based tactical strategy game,
1884with several single player campaigns, and multiplayer games (both networked and
1885local).
1886
1887Battle for control on a range of maps, using variety of units which have
1888advantages and disadvantages against different types of attacks. Units gain
1889experience and advance levels, and are carried over from one scenario to the
1890next campaign.")
1891 (license license:gpl2+)))
c449a076 1892
75abd864
AI
1893(define-public wesnoth-server
1894 (package
1895 (inherit wesnoth)
1896 (name "wesnoth-server")
1897 (inputs
1898 `(("boost" ,boost)
1899 ("sdl-net" ,sdl-net)))
1900 (arguments
1901 (append
1902 (substitute-keyword-arguments (package-arguments wesnoth)
1903 ((#:configure-flags configure-flags)
1904 `(append ,configure-flags (list "-DENABLE_GAME=OFF"))))
1905 `(#:phases
1906 (modify-phases %standard-phases
1907 ;; Delete game assets not required by the server.
1908 (add-after 'install 'delete-data
1909 (lambda* (#:key outputs #:allow-other-keys)
1910 (delete-file-recursively (string-append (assoc-ref outputs "out")
1911 "/share/wesnoth"))))))))
1912 (synopsis "Dedicated @emph{Battle for Wesnoth} server")
1913 (description "This package contains a dedicated server for @emph{The
1914Battle for Wesnoth}.")))
1915
e11b2752
PW
1916(define-public dosbox
1917 (package
1918 (name "dosbox")
1919 (version "0.74.svn3947")
1920 (source (origin
1921 (method svn-fetch)
1922 (uri (svn-reference
1923 (url "http://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk/")
1924 (revision 3947)))
ff9a5f7e 1925 (file-name (string-append name "-" version "-checkout"))
e11b2752
PW
1926 ;; Use SVN head, since the last release (2010) is incompatible
1927 ;; with GCC 4.8+ (see
1928 ;; <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=624976>).
1929 (sha256
1930 (base32
1931 "1p918j6090d1nkvgq7ifvmn506zrdmyi32y7p3ms40d5ssqjg8fj"))))
1932 (build-system gnu-build-system)
1933 (arguments
1934 `(#:phases (modify-phases %standard-phases
e0a7d364
MW
1935 (add-after
1936 'unpack 'autogen.sh
e11b2752
PW
1937 (lambda _
1938 (zero? (system* "sh" "autogen.sh")))))))
1939 (native-inputs
1940 `(("autoconf" ,autoconf)
1941 ("automake" ,automake)))
1942 (inputs
1943 `(("sdl" ,sdl)
1944 ("libpng" ,libpng)
1945 ("zlib" ,zlib)
1946 ("alsa-lib" ,alsa-lib)
1947 ("glu" ,glu)
1948 ("mesa" ,mesa)))
1949 (home-page "http://www.dosbox.com")
a124bbd2 1950 (synopsis "X86 emulator with CGA/EGA/VGA/etc. graphics and sound")
e11b2752
PW
1951 (description "DOSBox is a DOS-emulator that uses the SDL library. DOSBox
1952also emulates CPU:286/386 realmode/protected mode, Directory
1953FileSystem/XMS/EMS, Tandy/Hercules/CGA/EGA/VGA/VESA graphics, a
1954SoundBlaster/Gravis Ultra Sound card for excellent sound compatibility with
1955older games.")
1956 (license license:gpl2+)))
1957
c449a076
EB
1958(define-public gamine
1959 (package
1960 (name "gamine")
e28cb7a5 1961 (version "1.5")
c449a076
EB
1962 (source (origin
1963 (method url-fetch)
1964 (uri (string-append "mirror://sourceforge/gamine-game/"
1965 "gamine-" version ".tar.gz"))
1966 (sha256
1967 (base32
e28cb7a5 1968 "08wnk7w84c2413hwny89j2cn89cvfdf67bfc6wl0bf475if0mf4h"))))
c449a076
EB
1969 (build-system gnu-build-system)
1970 (native-inputs
1971 `(("pkg-config" ,pkg-config)
1972 ("intltool" ,intltool)))
1973 (inputs
1974 `(("gstreamer" ,gstreamer)
1975 ("gst-plugins-base" ,gst-plugins-base) ;playbin plugin
1976 ("gst-plugins-good" ,gst-plugins-good) ;for wav playback
1977 ("gtk+" ,gtk+)))
1978 (arguments
1979 `(#:tests? #f
1980 #:make-flags
1981 (let ((out (assoc-ref %outputs "out")))
1982 (list (string-append "PREFIX=" out)
1983 (string-append "SYSCONFDIR=" out "/etc")))
1984 #:phases
1985 (modify-phases %standard-phases
1986 (delete 'configure)
1987 (add-after
1988 'install 'wrap-gamine
1989 (lambda* (#:key outputs #:allow-other-keys)
1990 (let ((out (assoc-ref outputs "out"))
1991 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
1992 (wrap-program (string-append out "/bin/gamine")
1993 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))))
1994 #t)))))
1995 (home-page "http://gamine-game.sourceforge.net/")
1996 (synopsis "Mouse and keyboard discovery for children")
1997 (description
1998 "Gamine is a game designed for young children who are learning to use the
1999mouse and keyboard. The child uses the mouse to draw colored dots and lines
2000on the screen and keyboard to display letters.")
2001 ;; Most files under gpl2+ or gpl3+, but eat.wav under gpl3
2002 (license license:gpl3)))
2003
aa6f3912
PW
2004(define-public raincat
2005 (package
2006 (name "raincat")
2007 (version "1.1.1.3")
2008 (source
2009 (origin
2010 (method url-fetch)
2011 (uri (string-append
2012 "http://hackage.haskell.org/package/Raincat/Raincat-"
2013 version
2014 ".tar.gz"))
2015 (sha256
2016 (base32
2017 "1aalh68h6799mv4vyg30zpskl5jkn6x2j1jza7p4lrflyifxzar8"))))
2018 (build-system haskell-build-system)
2019 (inputs
2020 `(("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
2021 ("ghc-mtl" ,ghc-mtl)
2022 ("ghc-random" ,ghc-random)
2023 ("ghc-glut" ,ghc-glut)
4262d178 2024 ("freeglut" ,freeglut)
aa6f3912
PW
2025 ("ghc-opengl" ,ghc-opengl)
2026 ("ghc-sdl" ,ghc-sdl)
2027 ("ghc-sdl-image" ,ghc-sdl-image)
2028 ("ghc-sdl-mixer" ,ghc-sdl-mixer)))
8889a7da 2029 (home-page "http://www.bysusanlin.com/raincat/")
aa6f3912
PW
2030 (synopsis "Puzzle game with a cat in lead role")
2031 (description "Project Raincat is a game developed by Carnegie Mellon
2032students through GCS during the Fall 2008 semester. Raincat features game
2033play inspired from classics Lemmings and The Incredible Machine. The project
2034proved to be an excellent learning experience for the programmers. Everything
2035is programmed in Haskell.")
2036 (license license:bsd-3)))
2037
2e2ed3cb
AK
2038(define-public manaplus
2039 (package
2040 (name "manaplus")
b000e078 2041 (version "1.7.6.10")
2e2ed3cb
AK
2042 (source (origin
2043 (method url-fetch)
2044 (uri (string-append
2045 "http://repo.manaplus.org/manaplus/download/"
2046 version "/manaplus-" version ".tar.xz"))
2047 (sha256
2048 (base32
b000e078 2049 "0l7swvpzq20am4w2rsjpp6fsvbjv07il6wbfy45a7h9zsdihmqhl"))))
2e2ed3cb
AK
2050 (build-system gnu-build-system)
2051 (arguments
2052 '(#:configure-flags
2053 (list (string-append "CPPFLAGS=-I"
2054 (assoc-ref %build-inputs "sdl-union")
2055 "/include/SDL"))))
2056 (native-inputs
2057 `(("pkg-config" ,pkg-config)))
2058 (inputs
2059 `(("glu" ,glu)
2060 ("curl" ,curl)
2061 ("libxml2" ,libxml2)
2062 ("mesa" ,mesa)
2e2ed3cb
AK
2063 ("sdl-union" ,(sdl-union))))
2064 (home-page "http://manaplus.org")
2065 (synopsis "Client for 'The Mana World' and similar games")
2066 (description
2067 "ManaPlus is a 2D MMORPG client for game servers. It is the only
2068fully supported client for @uref{http://www.themanaworld.org, The mana
2069world}, @uref{http://evolonline.org, Evol Online} and
2070@uref{http://landoffire.org, Land of fire}.")
2071 ;; "src/debug/*" and "src/sdl2gfx/*" are under Zlib.
2072 ;; "data/themes/{golden-delicious,jewelry}/*" are under CC-BY-SA.
2073 ;; The rest is under GPL2+.
2074 (license (list license:gpl2+ license:zlib license:cc-by-sa4.0))))
03d521f9 2075
0c15230d
TUBK
2076(define-public mupen64plus-core
2077 (package
2078 (name "mupen64plus-core")
2079 (version "2.5")
2080 (source
2081 (origin
2082 (method url-fetch)
2083 (uri (string-append
2084 "https://github.com/mupen64plus/mupen64plus-core/archive/"
2085 version ".tar.gz"))
2086 (file-name (string-append name "-" version ".tar.gz"))
2087 (sha256
2088 (base32 "0dg2hksm5qni2hcha93k7n4fqr92888p946f7phb0ndschzfh9kk"))))
2089 (build-system gnu-build-system)
2090 (native-inputs
2091 `(("pkg-config" ,pkg-config)
2092 ("which" ,which)))
2093 (inputs
2094 `(("freetype" ,freetype)
2095 ("glu" ,glu)
2096 ("libpng" ,libpng)
2097 ("mesa" ,mesa)
2098 ("sdl2" ,sdl2)
2099 ("zlib" ,zlib)))
2100 (arguments
2101 '(#:phases
2102 (modify-phases %standard-phases
2103 ;; The mupen64plus build system has no configure phase.
2104 (delete 'configure)
2105 ;; Makefile is in a subdirectory.
2106 (add-before
2107 'build 'cd-to-project-dir
2108 (lambda _
2109 (chdir "projects/unix"))))
2110 #:make-flags (let ((out (assoc-ref %outputs "out")))
2111 (list "all" (string-append "PREFIX=" out)))
2112 ;; There are no tests.
2113 #:tests? #f))
bff3c670 2114 ;; As per the Makefile (in projects/unix/Makefile):
9c9be348 2115 (supported-systems '("i686-linux" "x86_64-linux"))
0c15230d
TUBK
2116 (home-page "http://www.mupen64plus.org/")
2117 (synopsis "Nintendo 64 emulator core library")
2118 (description
2119 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
2120which is capable of accurately playing many games. This package contains the
2121core library.")
2122 (license license:gpl2+)))
2123
ac2fe449
TUBK
2124(define-public mupen64plus-audio-sdl
2125 (package
2126 (name "mupen64plus-audio-sdl")
2127 (version "2.5")
2128 (source
2129 (origin
2130 (method url-fetch)
2131 (uri (string-append
2132 "https://github.com/mupen64plus/mupen64plus-audio-sdl/archive/"
2133 version ".tar.gz"))
2134 (file-name (string-append name "-" version ".tar.gz"))
2135 (sha256
2136 (base32 "0ss6w92n2rpfnazhg9lbq0nvs3fqx93nliz3k3wjxdlx4dpi7h3a"))))
2137 (build-system gnu-build-system)
2138 (native-inputs
2139 `(("pkg-config" ,pkg-config)
2140 ("which" ,which)))
2141 (inputs
2142 `(("mupen64plus-core" ,mupen64plus-core)
2143 ("sdl2" ,sdl2)))
2144 (arguments
2145 '(#:phases
2146 (modify-phases %standard-phases
2147 ;; The mupen64plus build system has no configure phase.
2148 (delete 'configure)
2149 ;; Makefile is in a subdirectory.
2150 (add-before
2151 'build 'cd-to-project-dir
2152 (lambda _
2153 (chdir "projects/unix"))))
2154 #:make-flags
2155 (let ((out (assoc-ref %outputs "out"))
2156 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
2157 (list "all"
2158 (string-append "PREFIX=" out)
2159 (string-append "APIDIR=" m64p "/include/mupen64plus")))
2160 ;; There are no tests.
2161 #:tests? #f))
2162 (home-page "http://www.mupen64plus.org/")
2163 (synopsis "Mupen64Plus SDL input plugin")
2164 (description
2165 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
2166which is capable of accurately playing many games. This package contains the
2167SDL audio plugin.")
2168 (license license:gpl2+)))
2169
d07f0ebb
TUBK
2170(define-public mupen64plus-input-sdl
2171 (package
2172 (name "mupen64plus-input-sdl")
2173 (version "2.5")
2174 (source
2175 (origin
2176 (method url-fetch)
2177 (uri (string-append
2178 "https://github.com/mupen64plus/mupen64plus-input-sdl/archive/"
2179 version ".tar.gz"))
2180 (file-name (string-append name "-" version ".tar.gz"))
2181 (sha256
2182 (base32 "11sj5dbalp2nrlmki34vy7wy28vc175pnnkdk65p8599hnyq37ri"))))
2183 (build-system gnu-build-system)
2184 (native-inputs
2185 `(("which" ,which)))
2186 (inputs
2187 `(("mupen64plus-core" ,mupen64plus-core)
2188 ("sdl2" ,sdl2)))
2189 (arguments
2190 '(#:phases
2191 (modify-phases %standard-phases
2192 ;; The mupen64plus build system has no configure phase.
2193 (delete 'configure)
2194 ;; Makefile is in a subdirectory.
2195 (add-before
2196 'build 'cd-to-project-dir
2197 (lambda _
2198 (chdir "projects/unix"))))
2199 #:make-flags
2200 (let ((out (assoc-ref %outputs "out"))
2201 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
2202 (list "all"
2203 (string-append "PREFIX=" out)
2204 (string-append "APIDIR=" m64p "/include/mupen64plus")))
2205 ;; There are no tests.
2206 #:tests? #f))
2207 (home-page "http://www.mupen64plus.org/")
2208 (synopsis "Mupen64Plus SDL input plugin")
2209 (description
2210 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
2211which is capable of accurately playing many games. This package contains the
2212SDL input plugin.")
2213 (license license:gpl2+)))
2214
3b3358be
TUBK
2215(define-public mupen64plus-rsp-hle
2216 (package
2217 (name "mupen64plus-rsp-hle")
2218 (version "2.5")
2219 (source
2220 (origin
2221 (method url-fetch)
2222 (uri (string-append
2223 "https://github.com/mupen64plus/mupen64plus-rsp-hle/archive/"
2224 version ".tar.gz"))
2225 (file-name (string-append name "-" version ".tar.gz"))
2226 (sha256
2227 (base32 "15h7mgz6xd2zjzm6l3f96sbs8kwr3xvbwzgikhnka79m6c69hsxv"))))
2228 (build-system gnu-build-system)
2229 (inputs
2230 `(("mupen64plus-core" ,mupen64plus-core)))
2231 (arguments
2232 '(#:phases
2233 (modify-phases %standard-phases
2234 ;; The mupen64plus build system has no configure phase.
2235 (delete 'configure)
2236 ;; Makefile is in a subdirectory.
2237 (add-before
2238 'build 'cd-to-project-dir
2239 (lambda _
2240 (chdir "projects/unix"))))
2241 #:make-flags
2242 (let ((out (assoc-ref %outputs "out"))
2243 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
2244 (list "all"
2245 (string-append "PREFIX=" out)
2246 (string-append "APIDIR=" m64p "/include/mupen64plus")))
2247 ;; There are no tests.
2248 #:tests? #f))
2249 (home-page "http://www.mupen64plus.org/")
2250 (synopsis "Mupen64Plus SDL input plugin")
2251 (description
2252 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
2253which is capable of accurately playing many games. This package contains the
2254high-level emulation (HLE) RSP processor plugin.")
2255 (license license:gpl2+)))
2256
50afcd1f
TUBK
2257(define-public mupen64plus-rsp-z64
2258 (package
2259 (name "mupen64plus-rsp-z64")
2260 (version "2.0.0")
2261 (source
2262 (origin
2263 (method url-fetch)
2264 (uri (string-append
2265 "https://github.com/mupen64plus/mupen64plus-rsp-z64/archive/"
2266 version ".tar.gz"))
2267 (file-name (string-append name "-" version ".tar.gz"))
2268 (sha256
2269 (base32 "10jz1w2dhx5slhyk4m8mdqlpsd6cshchslr1fckb2ayzb1ls3ghi"))))
2270 (build-system gnu-build-system)
2271 (inputs
2272 `(("mupen64plus-core" ,mupen64plus-core)))
2273 (arguments
2274 '(#:phases
2275 (modify-phases %standard-phases
2276 ;; The mupen64plus build system has no configure phase.
2277 (delete 'configure)
2278 ;; Makefile is in a subdirectory.
2279 (add-before
2280 'build 'cd-to-project-dir
2281 (lambda _
2282 (chdir "projects/unix"))))
2283 #:make-flags
2284 (let ((out (assoc-ref %outputs "out"))
2285 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
2286 (list "all"
2287 (string-append "PREFIX=" out)
2288 (string-append "APIDIR=" m64p "/include/mupen64plus")))
2289 ;; There are no tests.
2290 #:tests? #f))
2291 (home-page "http://www.mupen64plus.org/")
2292 (synopsis "Mupen64Plus SDL input plugin")
2293 (description
2294 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
2295which is capable of accurately playing many games. This package contains the
2296Z64 RSP processor plugin.")
2297 (license license:gpl2+)))
2298
307a536d
TUBK
2299(define-public mupen64plus-video-arachnoid
2300 (package
2301 (name "mupen64plus-video-arachnoid")
2302 (version "2.0.0")
2303 (source
2304 (origin
2305 (method url-fetch)
2306 (uri (string-append
2307 "https://github.com/mupen64plus/mupen64plus-video-arachnoid/archive/"
2308 version ".tar.gz"))
2309 (file-name (string-append name "-" version ".tar.gz"))
2310 (sha256
2311 (base32 "0jjwf144rihznm4lnqbhgigxw664v3v32wy94adaa6imk8z6gslh"))))
2312 (build-system gnu-build-system)
2313 (native-inputs
2314 `(("pkg-config" ,pkg-config)
2315 ("which" ,which)))
2316 (inputs
2317 `(("mesa" ,mesa)
2318 ("mupen64plus-core" ,mupen64plus-core)))
2319 (arguments
2320 '(#:phases
2321 (modify-phases %standard-phases
2322 ;; The mupen64plus build system has no configure phase.
2323 (delete 'configure)
2324 ;; Makefile is in a subdirectory.
2325 (add-before
2326 'build 'cd-to-project-dir
2327 (lambda _
2328 (chdir "projects/unix"))))
2329 #:make-flags
2330 (let ((out (assoc-ref %outputs "out"))
2331 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
2332 (list "all"
2333 (string-append "PREFIX=" out)
2334 (string-append "APIDIR=" m64p "/include/mupen64plus")))
2335 ;; There are no tests.
2336 #:tests? #f))
2337 (home-page "http://www.mupen64plus.org/")
2338 (synopsis "Mupen64Plus Rice Video plugin")
2339 (description
2340 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
2341which is capable of accurately playing many games. This package contains the
2342Arachnoid video plugin.")
2343 (license license:gpl2+)))
2344
9a3fe16b
TUBK
2345(define-public mupen64plus-video-glide64
2346 (package
2347 (name "mupen64plus-video-glide64")
2348 (version "2.0.0")
2349 (source
2350 (origin
2351 (method url-fetch)
2352 (uri (string-append
2353 "https://github.com/mupen64plus/mupen64plus-video-glide64/archive/"
2354 version ".tar.gz"))
2355 (file-name (string-append name "-" version ".tar.gz"))
2356 (sha256
2357 (base32 "1rm55dbf6xgsq1blbzs6swa2ajv0qkn38acbljj346abnk6s3dla"))))
2358 (build-system gnu-build-system)
2359 (native-inputs
2360 `(("pkg-config" ,pkg-config)
2361 ("which" ,which)))
2362 (inputs
2363 `(("mesa" ,mesa)
2364 ("mupen64plus-core" ,mupen64plus-core)
2365 ("sdl2" ,sdl2)))
2366 (arguments
2367 '(#:phases
2368 (modify-phases %standard-phases
2369 ;; The mupen64plus build system has no configure phase.
2370 (delete 'configure)
2371 ;; Makefile is in a subdirectory.
2372 (add-before
2373 'build 'cd-to-project-dir
2374 (lambda _
2375 (chdir "projects/unix")))
2376 ;; XXX Should be unnecessary with the next release.
2377 (add-before
2378 'build 'use-sdl2
2379 (lambda _
2380 (substitute* "Makefile"
2381 (("SDL_CONFIG = (.*)sdl-config" all prefix)
2382 (string-append "SDL_CONFIG = " prefix "sdl2-config"))))))
2383 #:make-flags
2384 (let ((out (assoc-ref %outputs "out"))
2385 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
2386 (list "all"
2387 (string-append "PREFIX=" out)
2388 (string-append "APIDIR=" m64p "/include/mupen64plus")))
2389 ;; There are no tests.
2390 #:tests? #f))
2391 (home-page "http://www.mupen64plus.org/")
2392 (synopsis "Mupen64Plus Rice Video plugin")
2393 (description
2394 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
2395which is capable of accurately playing many games. This package contains the
2396Glide64 video plugin.")
2397 (license license:gpl2+)))
2398
e8bf3ced
TUBK
2399(define-public mupen64plus-video-glide64mk2
2400 (package
2401 (name "mupen64plus-video-glide64mk2")
2402 (version "2.5")
2403 (source
2404 (origin
2405 (method url-fetch)
2406 (uri (string-append
2407 "https://github.com/mupen64plus/mupen64plus-video-glide64mk2/archive/"
2408 version ".tar.gz"))
2409 (file-name (string-append name "-" version ".tar.gz"))
2410 (sha256
2411 (base32 "1ihl4q293d6svba26b4mhapjcdg12p90gibz79b4mx423jlcxxj9"))))
2412 (build-system gnu-build-system)
2413 (native-inputs
2414 `(("pkg-config" ,pkg-config)
2415 ("which" ,which)))
2416 (inputs
2417 `(("boost" ,boost)
2418 ("libpng" ,libpng)
2419 ("mesa" ,mesa)
2420 ("mupen64plus-core" ,mupen64plus-core)
2421 ("sdl2" ,sdl2)
2422 ("zlib" ,zlib)))
2423 (arguments
2424 '(#:phases
2425 (modify-phases %standard-phases
2426 ;; The mupen64plus build system has no configure phase.
2427 (delete 'configure)
2428 ;; Makefile is in a subdirectory.
2429 (add-before
2430 'build 'cd-to-project-dir
2431 (lambda _
2432 (chdir "projects/unix"))))
2433 #:make-flags
2434 (let ((out (assoc-ref %outputs "out"))
2435 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
2436 (list "all"
2437 (string-append "PREFIX=" out)
2438 (string-append "APIDIR=" m64p "/include/mupen64plus")))
2439 ;; There are no tests.
2440 #:tests? #f))
2441 (home-page "http://www.mupen64plus.org/")
2442 (synopsis "Mupen64Plus Rice Video plugin")
2443 (description
2444 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
2445which is capable of accurately playing many games. This package contains the
2446Glide64MK2 video plugin.")
2447 (license license:gpl2+)))
2448
e91d25f9
TUBK
2449(define-public mupen64plus-video-rice
2450 (package
2451 (name "mupen64plus-video-rice")
2452 (version "2.5")
2453 (source
2454 (origin
2455 (method url-fetch)
2456 (uri (string-append
2457 "https://github.com/mupen64plus/mupen64plus-video-rice/archive/"
2458 version ".tar.gz"))
2459 (file-name (string-append name "-" version ".tar.gz"))
2460 (sha256
2461 (base32 "0rd2scjmh285w61aj3mgx71whg5rqrjbry3cdgicczrnyvf8wdvk"))))
2462 (build-system gnu-build-system)
2463 (native-inputs
2464 `(("pkg-config" ,pkg-config)
2465 ("which" ,which)))
2466 (inputs
2467 `(("libpng" ,libpng)
2468 ("mesa" ,mesa)
2469 ("mupen64plus-core" ,mupen64plus-core)
2470 ("sdl2" ,sdl2)))
2471 (arguments
2472 '(#:phases
2473 (modify-phases %standard-phases
2474 ;; The mupen64plus build system has no configure phase.
2475 (delete 'configure)
2476 ;; Makefile is in a subdirectory.
2477 (add-before
2478 'build 'cd-to-project-dir
2479 (lambda _
2480 (chdir "projects/unix"))))
2481 #:make-flags
2482 (let ((out (assoc-ref %outputs "out"))
2483 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
2484 (list "all"
2485 (string-append "PREFIX=" out)
2486 (string-append "APIDIR=" m64p "/include/mupen64plus")))
2487 ;; There are no tests.
2488 #:tests? #f))
2489 (home-page "http://www.mupen64plus.org/")
2490 (synopsis "Mupen64Plus Rice Video plugin")
2491 (description
2492 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
2493which is capable of accurately playing many games. This package contains the
2494Rice Video plugin.")
2495 (license license:gpl2+)))
2496
17e2bc86
TUBK
2497(define-public mupen64plus-video-z64
2498 (package
2499 (name "mupen64plus-video-z64")
2500 (version "2.0.0")
2501 (source
2502 (origin
2503 (method url-fetch)
2504 (uri (string-append
2505 "https://github.com/mupen64plus/mupen64plus-video-z64/archive/"
2506 version ".tar.gz"))
2507 (file-name (string-append name "-" version ".tar.gz"))
2508 (sha256
2509 (base32 "1x7wsjs5gx2iwx20p4cjcbf696zsjlh31qxmghwv0ifrq8x58s1b"))))
2510 (build-system gnu-build-system)
2511 (native-inputs
2512 `(("pkg-config" ,pkg-config)
2513 ("which" ,which)))
2514 (inputs
2515 `(("glew" ,glew)
2516 ("mupen64plus-core" ,mupen64plus-core)
2517 ("sdl2" ,sdl2)))
2518 (arguments
2519 '(#:phases
2520 (modify-phases %standard-phases
2521 ;; The mupen64plus build system has no configure phase.
2522 (delete 'configure)
2523 ;; Makefile is in a subdirectory.
2524 (add-before
2525 'build 'cd-to-project-dir
2526 (lambda _
2527 (chdir "projects/unix")))
2528 ;; XXX Should be unnecessary with the next release.
2529 (add-before
2530 'build 'use-sdl2
2531 (lambda _
2532 (substitute* "Makefile"
2533 (("SDL_CONFIG = (.*)sdl-config" all prefix)
2534 (string-append "SDL_CONFIG = " prefix "sdl2-config"))))))
2535 #:make-flags
2536 (let ((out (assoc-ref %outputs "out"))
2537 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
2538 (list "all"
2539 (string-append "PREFIX=" out)
2540 (string-append "APIDIR=" m64p "/include/mupen64plus")))
2541 ;; There are no tests.
2542 #:tests? #f))
2543 (home-page "http://www.mupen64plus.org/")
2544 (synopsis "Mupen64Plus Z64 video plugin")
2545 (description
2546 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
2547which is capable of accurately playing many games. This package contains the
2548Z64 video plugin.")
2549 (license license:gpl2+)))
2550
e6974eae
TUBK
2551(define-public mupen64plus-ui-console
2552 (package
2553 (name "mupen64plus-ui-console")
2554 (version "2.5")
2555 (source
2556 (origin
2557 (method url-fetch)
2558 (uri (string-append
2559 "https://github.com/mupen64plus/mupen64plus-ui-console/archive/"
2560 version ".tar.gz"))
2561 (file-name (string-append name "-" version ".tar.gz"))
2562 (sha256
2563 (base32 "04qkpd8ic7xsgnqz7spl00wxdygf79m7d1k8rabbygjk5lg6p8z2"))
fc1adab1 2564 (patches (search-patches "mupen64plus-ui-console-notice.patch"))))
e6974eae
TUBK
2565 (build-system gnu-build-system)
2566 (native-inputs
2567 `(("pkg-config" ,pkg-config)
2568 ("which" ,which)))
2569 (inputs
2570 `(("sdl2" ,sdl2)))
2571 ;; Mupen64Plus supports a single data directory and a single plugin
2572 ;; directory in its configuration, yet we need data and plugin files from
2573 ;; a variety of packages. The best way to deal with this is to install
2574 ;; all packages from which data and plugin files are needed into one's
2575 ;; profile, and point the configuration there. Hence, propagate the most
2576 ;; important packages here to save the user from the bother. The patch
2577 ;; mupen64plus-ui-console-notice also gives users instructions on what
2578 ;; they need to do in order to point the configuration to their profile.
2579 (propagated-inputs
2580 `(("mupen64plus-core" ,mupen64plus-core)
2581 ("mupen64plus-audio-sdl" ,mupen64plus-audio-sdl)
2582 ("mupen64plus-input-sdl" ,mupen64plus-input-sdl)
2583 ("mupen64plus-rsp-hle" ,mupen64plus-rsp-hle)
2584 ("mupen64plus-video-glide64" ,mupen64plus-video-glide64)
2585 ("mupen64plus-video-glide64mk2" ,mupen64plus-video-glide64mk2)
2586 ("mupen64plus-video-rice" ,mupen64plus-video-rice)))
2587 (arguments
2588 '(#:phases
2589 (modify-phases %standard-phases
2590 ;; The mupen64plus build system has no configure phase.
2591 (delete 'configure)
2592 ;; Makefile is in a subdirectory.
2593 (add-before
2594 'build 'cd-to-project-dir
2595 (lambda _
2596 (chdir "projects/unix"))))
2597 #:make-flags
2598 (let ((out (assoc-ref %outputs "out"))
2599 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
2600 (list "all"
2601 (string-append "PREFIX=" out)
2602 (string-append "APIDIR=" m64p "/include/mupen64plus")
2603 ;; Trailing slash matters here.
2604 (string-append "COREDIR=" m64p "/lib/")))
2605 ;; There are no tests.
2606 #:tests? #f))
2607 (home-page "http://www.mupen64plus.org/")
2608 (synopsis "Mupen64Plus SDL input plugin")
2609 (description
2610 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
2611which is capable of accurately playing many games. This package contains the
2612command line user interface. Installing this package is the easiest way
2613towards a working Mupen64Plus for casual users.")
2614 (license license:gpl2+)))
2615
03d521f9
TUBK
2616(define-public nestopia-ue
2617 (package
2618 (name "nestopia-ue")
415ee287 2619 (version "1.47")
03d521f9
TUBK
2620 (source (origin
2621 (method url-fetch)
2622 (uri (string-append
2623 "https://github.com/rdanbrook/nestopia/archive/"
2624 version ".tar.gz"))
2625 (file-name (string-append name "-" version ".tar.gz"))
2626 (sha256
2627 (base32
415ee287 2628 "1dzrrjmvyqks64q5l5pfly80jb6qcsbj5b3dm40fijd5xnpbapci"))
03d521f9 2629 (modules '((guix build utils)))
03d521f9 2630 (snippet
9ff7827a
TUBK
2631 '(begin
2632 ;; We don't need libretro for the GNU/Linux build.
2633 (delete-file-recursively "libretro")
2634 ;; Use system zlib.
2635 (delete-file-recursively "source/zlib")
2636 (substitute* "source/core/NstZlib.cpp"
2637 (("#include \"../zlib/zlib.h\"") "#include <zlib.h>"))))))
03d521f9
TUBK
2638 (build-system gnu-build-system)
2639 (native-inputs
2640 `(("pkg-config" ,pkg-config)))
2641 (inputs
2642 `(("ao" ,ao)
2643 ("glu" ,glu)
2644 ("gtk+" ,gtk+)
2645 ("libarchive" ,libarchive)
2646 ("mesa" ,mesa)
9ff7827a
TUBK
2647 ("sdl2" ,sdl2)
2648 ("zlib" ,zlib)))
03d521f9
TUBK
2649 (arguments
2650 '(#:phases
2651 (modify-phases %standard-phases
2652 ;; The Nestopia build system consists solely of a Makefile.
2653 (delete 'configure)
415ee287
TUBK
2654 (add-before 'build 'remove-xdg-desktop-menu-call
2655 (lambda _
2656 (substitute* "Makefile"
2657 (("xdg-desktop-menu install .*") ""))))
2658 (add-before 'build 'remove-gdkwayland-include
2659 (lambda _
2660 (substitute* "source/unix/gtkui/gtkui.h"
2661 (("#include <gdk/gdkwayland\\.h>") "")))))
03d521f9
TUBK
2662 #:make-flags (let ((out (assoc-ref %outputs "out")))
2663 (list "CC=gcc" "CXX=g++" (string-append "PREFIX=" out)))
2664 ;; There are no tests.
2665 #:tests? #f))
2666 (home-page "http://0ldsk00l.ca/nestopia/")
2667 (synopsis "Nintendo Entertainment System (NES/Famicom) emulator")
2668 (description
2669 "Nestopia UE (Undead Edition) is a fork of the Nintendo Entertainment
2670System (NES/Famicom) emulator Nestopia, with enhancements from members of the
2671emulation community. It provides highly accurate emulation.")
2672 (license license:gpl2+)))
3307c787
DT
2673
2674(define-public emulation-station
698bd297
HG
2675 (let ((commit "646bede3d9ec0acf0ae378415edac136774a66c5"))
2676 (package
2677 (name "emulation-station")
2678 (version "2.0.1")
2679 (source (origin
2680 (method git-fetch) ; no tarball available
2681 (uri (git-reference
2682 (url "https://github.com/Aloshi/EmulationStation.git")
2683 (commit commit))) ; no version tag
ba1ba9fc 2684 (file-name (string-append name "-" version "-checkout"))
698bd297
HG
2685 (sha256
2686 (base32
2687 "0cm0sq2wri2l9cvab1l0g02za59q7klj0h3p028vr96n6njj4w9v"))))
2688 (build-system cmake-build-system)
2689 (arguments
2690 '(#:tests? #f)) ; no tests
2691 (inputs
2692 `(("alsa-lib" ,alsa-lib)
2693 ("boost" ,boost)
2694 ("curl" ,curl)
2695 ("eigin" ,eigen)
2696 ("freeimage" ,freeimage)
2697 ("freetype" ,freetype)
2698 ("mesa" ,mesa)
2699 ("sdl2" ,sdl2)))
2700 (synopsis "Video game console emulator front-end")
2701 (description "EmulationStation provides a graphical front-end to a large
3307c787
DT
2702number of video game console emulators. It features an interface that is
2703usable with any game controller that has at least 4 buttons, theming support,
2704and a game metadata scraper.")
698bd297
HG
2705 (home-page "http://www.emulationstation.org")
2706 (license license:expat))))
e3f755f4 2707
e9687748
AS
2708(define openttd-engine
2709 (package
2710 (name "openttd-engine")
007993bf 2711 (version "1.7.1")
e9687748
AS
2712 (source
2713 (origin (method url-fetch)
2714 (uri (string-append "http://binaries.openttd.org/releases/"
2715 version "/openttd-" version "-source.tar.xz"))
2716 (sha256
2717 (base32
007993bf 2718 "0dhv5bbbg1dmmq7fi3xss0a9jq2rqgb5sf9fsqzlsjcdm590j6b1"))
e9687748
AS
2719 (modules '((guix build utils)))
2720 (snippet
2721 ;; The DOS port contains proprietary software.
2722 '(delete-file-recursively "os/dos"))))
2723 (build-system gnu-build-system)
2724 (arguments
2725 `(#:tests? #f ; no "check" target
2726 #:phases
2727 (modify-phases %standard-phases
2728 ;; The build process fails if the configure script is passed the
2729 ;; option "--enable-fast-install".
2730 (replace 'configure
857b2f53
AI
2731 (lambda* (#:key inputs outputs (configure-flags '())
2732 #:allow-other-keys)
e9687748
AS
2733 (let ((out (assoc-ref outputs "out"))
2734 (lzo (assoc-ref inputs "lzo")))
2735 (zero?
857b2f53
AI
2736 (apply system* "./configure"
2737 (string-append "--prefix=" out)
2738 ;; Provide the "lzo" path.
2739 (string-append "--with-liblzo2="
2740 lzo "/lib/liblzo2.a")
2741 ;; Put the binary in 'bin' instead of 'games'.
2742 "--binary-dir=bin"
2743 configure-flags))))))))
e9687748
AS
2744 (native-inputs `(("pkg-config" ,pkg-config)))
2745 (inputs
2746 `(("allegro" ,allegro-4)
2747 ("fontconfig" ,fontconfig)
2748 ("freetype" ,freetype)
2749 ("icu4c" ,icu4c)
2750 ("libpng" ,libpng)
2751 ("lzo" ,lzo)
2752 ("sdl" ,sdl)
2753 ("xz" ,xz)
2754 ("zlib" ,zlib)))
2755 (synopsis "Transportation economics simulator")
2756 (description "OpenTTD is a game in which you transport goods and
2757passengers by land, water and air. It is a re-implementation of Transport
2758Tycoon Deluxe with many enhancements including multiplayer mode,
2759internationalization support, conditional orders and the ability to clone,
b81b8943
KK
2760autoreplace and autoupdate vehicles. This package only includes the game
2761engine. When you start it you will be prompted to download a graphics set.")
e9687748
AS
2762 (home-page "http://openttd.org/")
2763 ;; This package is GPLv2, except for a few files located in
2764 ;; "src/3rdparty/" which are under the 3-clause BSD, LGPLv2.1+ and Zlib
2765 ;; licenses. In addition, this software contains an in-game downloader
2766 ;; from which the user may find non-functional data licensed under
2767 ;; different terms.
2768 (license (list license:bsd-3 license:gpl2 license:lgpl2.1+ license:zlib))))
2769
4df9495e
KK
2770(define openttd-opengfx
2771 (package
2772 (name "openttd-opengfx")
2773 (version "0.5.2")
2774 (source
2775 (origin
2776 (method url-fetch)
2777 (uri (string-append "http://binaries.openttd.org/extra/opengfx/"
2778 version "/opengfx-" version "-source.tar.xz"))
2779 (sha256
2780 (base32
2781 "0iz66q7p1mf00njfjbc4vibh3jaybki7armkl18iz7p6x4chp9zv"))))
2782 (build-system gnu-build-system)
2783 (arguments
2784 '(#:make-flags (list "CC=gcc"
2785 (string-append "INSTALL_DIR="
2786 (assoc-ref %outputs "out")
857b2f53 2787 "/share/games/openttd/baseset/opengfx"))
4df9495e
KK
2788 #:phases
2789 (modify-phases %standard-phases
2790 (replace 'configure
2791 (lambda _
2792 ;; Make sure HOME is writable for GIMP.
2793 (setenv "HOME" (getcwd))
2794
2795 ;; Redirect stdout, not stderr, to /dev/null. This prevents
2796 ;; dos2unix from receiving its version information as a flag.
2797 (substitute* "Makefile"
2798 (("\\$\\(UNIX2DOS\\) -q --version 2>/dev/null")
2799 "$(UNIX2DOS) -q --version 1>/dev/null")))))
2800 ;; The check phase for this package only checks the md5sums of the built
2801 ;; GRF files against the md5sums of the release versions. Because we use
2802 ;; different software versions than upstream does, some of the md5sums
2803 ;; are different. However, the package is still reproducible, it's safe
2804 ;; to disable this test.
c0959cc9
AI
2805 #:tests? #f
2806 #:parallel-build? #f))
4df9495e
KK
2807 (native-inputs `(("dos2unix" ,dos2unix)
2808 ("gimp" ,gimp)
2809 ("grfcodec" ,grfcodec)
2810 ("nml" ,nml)
2811 ("python" ,python-2)))
2812 (home-page "http://dev.openttdcoop.org/projects/opengfx")
2813 (synopsis "Base graphics set for OpenTTD")
2814 (description
2815 "The OpenGFX projects is an implementation of the OpenTTD base grahics
2816set that aims to ensure the best possible out-of-the-box experience.
2817
2818OpenGFX provides you with...
2819@enumerate
2820@item All graphics you need to enjoy OpenTTD.
2821@item Uniquely drawn rail vehicles for every climate.
2822@item Completely snow-aware rivers.
2823@item Different river and sea water.
2824@item Snow-aware buoys.
2825@end enumerate")
2826 (license license:gpl2)))
2827
c17b0790
AI
2828(define openttd-opensfx
2829 (package
2830 (name "openttd-opensfx")
2831 (version "0.2.3")
2832 (source
2833 (origin
2834 (method url-fetch)
2835 (uri (string-append
2836 "https://binaries.openttd.org/extra/opensfx/"
2837 version "/opensfx-" version "-source.tar.gz"))
2838 (sha256
2839 (base32
2840 "03jxgp02ks31hmsdh4xh0xcpkb70ds8jakc9pfc1y9vdrdavh4p5"))))
2841 (build-system gnu-build-system)
2842 (native-inputs
2843 `(("catcodec" ,catcodec)
2844 ("python" ,python2-minimal)))
2845 (arguments
2846 `(#:make-flags
2847 (list (string-append "INSTALL_DIR=" %output
2848 "/share/games/openttd/baseset/opensfx"))
2849 #:phases
2850 (modify-phases %standard-phases
2851 (add-after 'unpack 'make-reproducible
2852 (lambda _
2853 ;; Remove the time dependency of the installed tarball by setting
2854 ;; the modification times if its members to 0.
2855 (substitute* "scripts/Makefile.def"
2856 (("-cf") " --mtime=@0 -cf"))
2857 #t))
2858 (delete 'configure))))
2859 (home-page "http://dev.openttdcoop.org/projects/opensfx")
2860 (synopsis "Base sounds for OpenTTD")
2861 (description "OpenSFX is a set of free base sounds for OpenTTD which make
2862it possible to play OpenTTD without requiring the proprietary sound files from
2863the original Transport Tycoon Deluxe.")
2864 (license license:cc-sampling-plus-1.0)))
2865
823e1218
AI
2866(define openttd-openmsx
2867 (package
2868 (name "openttd-openmsx")
2869 (version "0.3.1")
2870 (source
2871 (origin
2872 (method url-fetch)
2873 (uri (string-append
2874 "https://binaries.openttd.org/extra/openmsx/"
2875 version "/openmsx-" version "-source.tar.gz"))
2876 (sha256
2877 (base32
2878 "0nskq97a6fsv1v6d62zf3yb8whzhqnlh3lap3va3nzvj7csjgf7c"))))
2879 (build-system gnu-build-system)
2880 (native-inputs
2881 `(("python" ,python2-minimal)))
2882 (arguments
2883 `(#:make-flags
2884 (list (string-append "INSTALL_DIR=" %output
2885 "/share/games/openttd/baseset"))
2886 #:phases
2887 (modify-phases %standard-phases
2888 (delete 'configure)
2889 (add-after 'install 'post-install
2890 ;; Rename openmsx-version to openmsx
2891 (lambda* (#:key outputs #:allow-other-keys)
2892 (let ((install-directory (string-append (assoc-ref outputs "out")
2893 "/share/games/openttd/baseset")))
2894 (rename-file (string-append install-directory "/openmsx-" ,version)
2895 (string-append install-directory "/openmsx"))
2896 #t))))))
2897 (home-page "http://dev.openttdcoop.org/projects/openmsx")
2898 (synopsis "Music set for OpenTTD")
2899 (description "OpenMSX is a music set for OpenTTD which makes it possible
2900to play OpenTTD without requiring the proprietary music from the original
2901Transport Tycoon Deluxe.")
2902 (license license:gpl2)))
2903
e9687748
AS
2904(define-public openttd
2905 (package
2906 (inherit openttd-engine)
ca508f1c
KK
2907 (name "openttd")
2908 (arguments
857b2f53
AI
2909 `(#:configure-flags
2910 (list (string-append "--with-midi=" (assoc-ref %build-inputs "timidity++")
2911 "/bin/timidity"))
2912 ,@(substitute-keyword-arguments (package-arguments openttd-engine)
2913 ((#:phases phases)
2914 `(modify-phases ,phases
2915 (add-after 'install 'install-data
2916 (lambda* (#:key inputs outputs #:allow-other-keys)
2917 (for-each
2918 (lambda (input)
2919 (copy-recursively (assoc-ref inputs input)
2920 (assoc-ref outputs "out")))
2921 (list "opengfx" "openmsx" "opensfx"))
2922 #t)))))))
2923 (inputs
2924 `(("timidity++" ,timidity++)
2925 ,@(package-inputs openttd-engine)))
ca508f1c
KK
2926 (native-inputs
2927 `(("opengfx" ,openttd-opengfx)
857b2f53
AI
2928 ("openmsx" ,openttd-openmsx)
2929 ("opensfx" ,openttd-opensfx)
ca508f1c 2930 ,@(package-native-inputs openttd-engine)))))
e9687748 2931
7aafb3b3
RH
2932(define-public openrct2
2933 (package
2934 (name "openrct2")
2935 (version "0.1.1")
2936 (source
2937 (origin
2938 (method url-fetch)
2939 (uri (string-append "https://github.com/OpenRCT2/OpenRCT2/archive/v"
2940 version ".tar.gz"))
2941 (sha256
2942 (base32
2943 "1bahkzlf9k92cc4zs4nk4wy59323kiw8d3wm0vjps3kp7iznqyjx"))
2944 (file-name (string-append name "-" version ".tar.gz"))))
2945 (build-system cmake-build-system)
2946 (arguments
2947 `(#:tests? #f ;; no tests available
46aa8729
RH
2948 #:configure-flags
2949 (list (string-append "-DCMAKE_INSTALL_LIBDIR="
2950 (assoc-ref %outputs "out") "/lib"))
7aafb3b3
RH
2951 #:phases
2952 (modify-phases %standard-phases
2e205c61
RH
2953 (add-after 'unpack 'fix-usr-share-paths
2954 (lambda* (#:key make-flags outputs #:allow-other-keys)
2955 ;; Fix some references to /usr/share.
2956 (substitute* "src/openrct2/platform/linux.c"
2957 (("/usr/share")
2958 (string-append (assoc-ref %outputs "out") "/share")))))
7aafb3b3
RH
2959 (add-after 'build 'fix-cmake-install-file
2960 (lambda _
2961 ;; The build system tries to download a file and compare hashes.
2962 ;; Since we have no network, remove this so the install doesn't fail.
2963 (substitute* "cmake_install.cmake"
2964 (("EXPECTED_HASH SHA1=b587d83de508d0b104d14c599b76f8565900fce0")
2965 "")))))))
2966 (inputs `(("curl", curl)
2967 ("fontconfig", fontconfig)
2968 ("freetype", freetype)
2969 ("jansson", jansson)
2970 ("libpng", libpng)
2971 ("libzip", libzip)
2972 ("mesa", mesa)
2973 ("openssl", openssl)
2974 ("sdl2", sdl2)
2975 ("speexdsp", speexdsp)
2976 ("zlib", zlib)))
2977 (native-inputs
2978 `(("pkg-config", pkg-config)))
2979 (home-page "https://github.com/OpenRCT2/OpenRCT2")
2980 (synopsis "Free software re-implementation of RollerCoaster Tycoon 2")
2981 (description "OpenRCT2 is a free software re-implementation of
2982RollerCoaster Tycoon 2 (RCT2). The gameplay revolves around building and
2983maintaining an amusement park containing attractions, shops and facilities.
2984
2985Note that this package does @emph{not} provide the game assets (sounds,
2986images, etc.)")
2987 ;; See <https://github.com/OpenRCT2/OpenRCT2/wiki/Required-RCT2-files>
2988 ;; regarding assets.
2989 (license license:gpl3+)))
2990
e3f755f4
EB
2991(define-public pinball
2992 (package
2993 (name "pinball")
2994 (version "0.3.1")
2995 (source
2996 (origin (method url-fetch)
2997 (uri (string-append "mirror://sourceforge/pinball/pinball/"
2998 "pinball-" version "/"
2999 "pinball-" version ".tar.gz"))
3000 (sha256
3001 (base32
3002 "1f2whlrfidwfh8lvr8cspcyirc6840r5d1ajm7x99qmngygrhixs"))
fc1adab1
AK
3003 (patches (search-patches "pinball-const-fix.patch"
3004 "pinball-cstddef.patch"
3005 "pinball-missing-separators.patch"
3006 "pinball-src-deps.patch"
3007 "pinball-system-ltdl.patch"))))
e3f755f4
EB
3008 (build-system gnu-build-system)
3009 (inputs
3010 `(("glu" ,glu)
3011 ("mesa" ,mesa)
3012 ("sdl" ,sdl)
3013 ("sdl-image" ,sdl-image)
3014 ("sdl-mixer" ,sdl-mixer)))
3015 (arguments
3016 '(#:configure-flags
3017 (list (string-append "CPPFLAGS=-I"
3018 (assoc-ref %build-inputs "sdl-image")
3019 "/include/SDL -I"
3020 (assoc-ref %build-inputs "sdl-mixer")
3021 "/include/SDL"))))
3022 (home-page "http://pinball.sourceforge.net")
3023 (synopsis "Pinball simulator")
3024 (description "The Emilia Pinball Project is a pinball simulator. There
3025are only two levels to play with, but they are very addictive.")
3026 (license license:gpl2)))
7e2e1155
RF
3027
3028(define-public pioneers
3029 (package
3030 (name "pioneers")
365950ce 3031 (version "15.4")
7e2e1155
RF
3032 (source (origin
3033 (method url-fetch)
3034 (uri (string-append "http://downloads.sourceforge.net/pio/"
3035 "pioneers-" version ".tar.gz"))
3036 (sha256
3037 (base32
365950ce 3038 "1p1d18hrfmqcnghip3shkzcs5qkz6j99jvkdkqfi7pqdvjc323cs"))))
7e2e1155
RF
3039 (build-system gnu-build-system)
3040 (inputs `(("gtk+" ,gtk+)
3041 ("librsvg" ,librsvg)
3042 ("avahi" ,avahi)))
3043 (native-inputs `(("intltool" ,intltool)
3044 ("pkg-config" ,pkg-config)))
3045 (synopsis "Board game inspired by The Settlers of Catan")
3046 (description "Pioneers is an emulation of the board game The Settlers of
3047Catan. It can be played on a local network, on the internet, and with AI
3048players.")
3049 (home-page "http://pio.sourceforge.net/")
8763fdf8 3050 (license license:gpl2+)))
fea1f275
MR
3051
3052(define-public desmume
3053 (package
3054 (name "desmume")
3055 (version "0.9.11")
3056 (source
3057 (origin
3058 (method url-fetch)
3059 (uri (string-append
3060 "mirror://sourceforge/desmume/desmume/"
3061 version "/desmume-" version ".tar.gz"))
3062 (sha256
3063 (base32
3064 "15l8wdw3q61fniy3h93d84dnm6s4pyadvh95a0j6d580rjk4pcrs"))))
3065 (build-system gnu-build-system)
3066 (arguments
3067 ;; Enable support for WiFi and microphone.
3068 `(#:configure-flags '("--enable-wifi"
3069 "--enable-openal")))
3070 (native-inputs
3071 `(("pkg-config" ,pkg-config)
3072 ("intltool" ,intltool)))
3073 (inputs
3074 `(("zlib" ,zlib)
3075 ("sdl" ,sdl)
3076 ("glib" ,glib)
3077 ("gtk+" ,gtk+-2)
3078 ("glu" ,glu)))
3079 (home-page "http://desmume.org/")
3080 (synopsis "Nintendo DS emulator")
3081 (description
3082 "DeSmuME is an emulator for the Nintendo DS handheld gaming console.")
3083 (license license:gpl2)))
d7c4619b
AE
3084
3085(define-public einstein
3086 (package
3087 (name "einstein")
3088 (version "2.0")
3089 (source (origin
3090 (method url-fetch)
3091 (uri (string-append "http://http.debian.net/debian/pool/main/e/"
3092 "einstein/einstein_2.0.dfsg.2.orig.tar.gz"))
3093 (sha256
3094 (base32
3095 "1hxrlv6n8py48j487i6wbb4n4vd55w0na69r7ccmmr9vmrsw5mlk"))
fc1adab1 3096 (patches (search-patches "einstein-build.patch"))))
d7c4619b
AE
3097 (build-system gnu-build-system)
3098 (inputs
3099 `(("freetype" ,freetype)
3100 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf)))
3101 ("zlib" ,zlib)))
3102 (native-inputs
3103 `(("font-dejavu" ,font-dejavu)))
3104 (arguments
3105 `(#:tests? #f ; no check target
3106 #:phases
3107 (modify-phases %standard-phases
3108 (replace 'configure
3109 (lambda* (#:key outputs inputs #:allow-other-keys)
3110 (let ((out (assoc-ref outputs "out"))
3111 (dejavu (string-append (assoc-ref inputs "font-dejavu")
3112 "/share/fonts/truetype/DejaVuSans.ttf")))
3113 (substitute* "Makefile"
3114 (("PREFIX=/usr/local") (string-append "PREFIX=" out)))
3115 ;; The patch above registers a free font for use by the binary,
3116 ;; but the font is copied during the compile phase into a
3117 ;; resources file, so we need to make the ttf file available.
3118 (symlink dejavu "res/DejaVuSans.ttf")
3119 #t))))))
3120 (synopsis "Logic puzzle game")
3121 (description "The goal of this logic game is to open all cards in a 6x6
3122grid, using a number of hints as to their relative position. The game idea
3123is attributed to Albert Einstein.")
3124 ;; The original home page has disappeared.
3125 (home-page (string-append "http://web.archive.org/web/20120521062745/"
3126 "http://games.flowix.com/en/index.html"))
3127 ;; License according to
3128 ;; http://web.archive.org/web/20150222180355/http://www.babichev.info/en/projects/index.html
3129 ;; The source code is a DFSG-sanitized tarball and does not contain any
3130 ;; license information.
3131 (license license:gpl3+)))
3132
d381962f 3133(define-public powwow
3134 (package
3135 (name "powwow")
3136 (version "1.2.17")
3137 (source (origin
3138 (method url-fetch)
3139 (uri (string-append
cc30a472 3140 "https://www.hoopajoo.net/static/projects/powwow-"
d381962f 3141 version ".tar.gz"))
3142 (file-name (string-append name "-" version ".tar.gz"))
3143 (sha256
3144 (base32
3145 "1xmsg2y7qcvj67i9ilnih0mvfxcpni7fzrz343x9rdfnkkzf3pp8"))))
3146 (inputs
3147 `(("ncurses" ,ncurses)))
3148 (build-system gnu-build-system)
3149 (home-page "http://www.hoopajoo.net/projects/powwow.html")
3150 (synopsis "MUD and telnet client")
3151 (description
3152 "POWWOW is a client software which can be used for telnet as well as for
3153@dfn{Multi-User Dungeon} (MUD). Additionally it can serve as a nice client for
3154the chat server psyced with the specific config located at
3155http://lavachat.symlynx.com/unix/")
3156 (license license:gpl2+)))
158f5734 3157
5ef819cc 3158(define-public red-eclipse
49c97ea4
KK
3159 (let ((release "1.6.0")
3160 (revision 0)
42abb842 3161 (data-sources
49c97ea4
KK
3162 '(("acerspyro" "07mzgdahnr3w3w7kf8nmy20r199rimfx9ryqxjdr793sw0vawqd3")
3163 ("actors" "1hkgscfhg0kmwgym0mw56fhcckzbb2hh3nsvd45v4mdfyk0xnrm7")
3164 ("appleflap" "1q4xs3x904mrrbxzv6lpr3lywm8p6i8339ijzy9j091s2wdl51ka")
3165 ("blendbrush" "004md2haysr9w8fj6l7bj9wcfjqrq9wx1rrjf9dv16k5sbrkqza9")
3166 ("caustics" "1qmmv8ds70j1ixy4rvli309vbcyjq1l5j1wri6nbnjay10f9fcgq")
3167 ("crosshairs" "0q1vadg5cai9i6igl6y08774fd05gav0kinbgb2757n47ig50bns")
3168 ("dziq" "1s9248ky2qqy24z9c2vgpisz500dvsaj249pv1fkrxgsypjm1z6v")
3169 ("elyvisions" "15synpms05996v4c4kdl0h899spl4z7si9kl8c4m7rvc2yvin1ga")
3170 ("fonts" "1l4727ai8mphi7n3wcjp2lh3p47nh6w82s5dpqbbjpqr9gilb69j")
3171 ("freezurbern" "0hcdbzs02mvpsfhmahhqjv6pd8lbsag1bm6rpy61ns5qwmhg96ys")
3172 ("john" "1whyvlx87mb83kfb7jhhnwz9s7lry4li8l3xar61vmlqgmsnz33d")
3173 ("jojo" "02wxa93f5al4rlnsdjpd0hlnca0ympnj8481lgdxx70hny8zi3qi")
3174 ("jwin" "1gb4l7lbhr150hml1y0wbyx7266q5nslh6n494wwrrsvp11s2qk8")
3175 ("luckystrike" "0wy2spvhx5k233fsl283250ym5bqvkk8i6i19sw3zvzyxp2p4yq9")
3176 ("maps" "1dmvp9mskval606z5srjd909jpm6qz4fdcpaszkkhfr5ajbj30vq")
3177 ("mayhem" "0hkzzx0rxda70ixw9lfh9v1dpsbn2dj86jrr3zxjgasbgaxw37ax")
3178 ("mikeplus64" "144fxhp4qjqjw3gvhf7ym6rnfxvxc0zvd3f54jg1jgnccc1hfyah")
3179 ("misc" "0bpvibyc6vjhbzsf67xxn85yq2h97xs96icbskwzs2wsd860kq8c")
3180 ("nieb" "0d72wsibk9sg9nhin3fwzz9zljiccyln0fn42y2q2xbd4my23b1k")
3181 ("nobiax" "19lr36ys98cmpp739svjar1j942fbxz6r062gi7ygh89zh9yrgfy")
3182 ("particles" "02pnq8ksl7f6kqxss3aza98jssdq2s41rhkhki71ynavp2a5akar")
3183 ("philipk" "1xkrb7wa1pyhbs4xxx7vnnzsxrqzswk7gjbdac7i7rj0lwnfaij2")
3184 ("projectiles" "1hra0f1ifiddh16fv4pqcr2amf046lf445v0653zkyri43zgrj5f")
3185 ("props" "0ff6a8pz62f4nsk4c9cr50kirw108a661y5j6fvlsjickw3xjmyv")
3186 ("skyboxes" "1lq58dhrdiivq7llkiyqwpi3bwa89r8hbi98p7zjhw7wdn34i6n2")
3187 ("snipergoth" "0d5qf01bxd4dlffgxf8i91zq6mbyjmfd00dpyligpfj6fdbz87gc")
3188 ("sounds" "0z6jmxsr3w735hrdnxypdb0gi399pwkaycv9grjpiqy43j3ic7gj")
3189 ("textures" "0k5a47g2z99xn17vw7bqbp0w726gxmk33g5gwmqvfhxxxzzwimvi")
3190 ("torley" "12x23l8xcv9ard5v76lb210lvp66whsns2p3k3xkd1sabp5ixbd5")
3191 ("trak" "03kmwj47yb3dqzb6k9kilna9ja8c6jcnblvbs72x15767fl496pb")
3192 ("ulukai" "0vvd016a7x981ixif6dnlg45s0ak7i89pgyrgwy2fpd94nl2am15")
3193 ("unnamed" "18sxvdha41njp6g8wn56mjy6w9x778c793gh8fr0h9cnysb5gfmi")
3194 ("vanities" "1p38mc2566bmb4vdyr9n9s6fkwmynp2xlpdq2a97gzgi4nmm0232")
3195 ("vegetation" "0pf3qvqzabdcri5za61z6m89b5hq7sd3q0idkazmx88a62mcclkb")
3196 ("weapons" "1jr05y9qhhx53plvir35srvv3cmn6wa065p3bskx6h1x6dcbx3c6")
3197 ("wicked" "14b9f92h8hccp7a015z6rqgbs8236sdyxnwsq991ylnap7cbwvam"))))
158f5734 3198 (package
5b8a8543 3199 (name "red-eclipse")
42abb842
AFN
3200 (version (if (zero? revision)
3201 release
3202 (string-append release "-"
3203 (number->string revision))))
158f5734
KY
3204 (source (origin
3205 (method url-fetch)
3206 (uri (string-append "https://github.com/red-eclipse/base"
42abb842 3207 "/archive/v" release ".tar.gz"))
158f5734
KY
3208 (file-name (string-append name "-" version ".tar.gz"))
3209 (sha256
3210 (base32
49c97ea4 3211 "1vs9k6f5fgsiy1n72imlqm8khjwm8cryc08zwd4gr7yxlxv45bs0"))))
158f5734
KY
3212 (build-system gnu-build-system)
3213 (arguments
3214 `(#:tests? #f ; no check target
3215 #:make-flags (list "CC=gcc" "-Csrc"
3216 (string-append "INSTDIR="
42abb842
AFN
3217 (assoc-ref %outputs "out") "/bin")
3218 (string-append "prefix="
3219 (assoc-ref %outputs "out")))
158f5734
KY
3220 #:phases
3221 (modify-phases %standard-phases
3222 (add-after 'unpack 'unpack-data
3223 (lambda* (#:key inputs #:allow-other-keys)
3224 (delete-file-recursively "data")
3225 (mkdir "data")
3226 (for-each (lambda (name)
49c97ea4
KK
3227 (invoke "tar" "-xvf"
3228 (assoc-ref inputs name)
3229 "-Cdata"
3230 "--transform"
3231 (string-append "s/"
3232 name "-" ,release "/"
3233 name "/")))
158f5734
KY
3234 (list ,@(map car data-sources)))
3235 #t))
49c97ea4 3236 (add-after 'unpack-data 'add-store-data-package-path-as-default
42abb842
AFN
3237 (lambda* (#:key outputs #:allow-other-keys)
3238 (substitute* "src/engine/server.cpp"
49c97ea4
KK
3239 (("(else[[:space:]]*)((addpackagedir\\()\"data\"(\\);))"
3240 _
3241 else_part
3242 addpackagedir_original
3243 addpackagedir_open
3244 addpackagedir_close)
42abb842
AFN
3245 (string-append else_part
3246 "{ "
3247 addpackagedir_open
3248 "\""
3249 (assoc-ref outputs "out")
3250 "/share/redeclipse/data\""
3251 addpackagedir_close
3252 " "
3253 addpackagedir_original
3254 " }")))
3255 #t))
158f5734
KY
3256 (delete 'configure) ; no configure script
3257 (add-after 'set-paths 'set-sdl-paths
3258 (lambda* (#:key inputs #:allow-other-keys)
3259 (setenv "CPATH"
3260 (string-append (assoc-ref inputs "sdl-union")
14b865dc 3261 "/include/SDL2"))
158f5734
KY
3262 #t))
3263 (add-after 'install 'copy-data
3264 (lambda* (#:key outputs #:allow-other-keys)
3265 (let ((out (assoc-ref outputs "out")))
3266 (copy-recursively "config"
3267 (string-append out "/config"))
66c65aaf
KK
3268 (copy-file "doc/examples/servinit.cfg"
3269 (string-append out "/config/servinit.cfg"))
158f5734 3270 (copy-recursively "data"
42abb842
AFN
3271 (string-append out "/share/redeclipse/data"))
3272 (mkdir-p (string-append out "/lib/redeclipse"))
49c97ea4
KK
3273 (symlink (string-append out "/share/redeclipse/data")
3274 (string-append out "/lib/redeclipse/data")))
158f5734
KY
3275 #t))
3276 (add-after 'copy-data 'wrap-program
3277 (lambda* (#:key inputs outputs #:allow-other-keys)
3278 (let* ((out (assoc-ref outputs "out"))
3279 (bin (string-append out "/bin")))
3280 (with-directory-excursion bin
3281 (rename-file "redeclipse_linux"
3282 ".redeclipse_linux-real")
3283 (rename-file "redeclipse_server_linux"
3284 ".redeclipse_server_linux-real")
3285 (call-with-output-file "redeclipse_linux"
3286 (lambda (port)
3287 (format port "#!~a/bin/sh
3288# Run the thing from its home, otherwise it just bails out.
3289cd \"~a\"
3290exec -a \"$0\" ~a/.redeclipse_linux-real~%"
3291 (assoc-ref inputs "bash") ;implicit input
3292 (string-append out)
3293 (string-append bin))))
3294 (call-with-output-file "redeclipse_server_linux"
3295 (lambda (port)
3296 (format port "#!~a/bin/sh
3297# Run the thing from its home, otherwise it just bails out.
3298cd \"~a\"
3299exec -a \"$0\" ~a/.redeclipse_server_linux-real~%"
3300 (assoc-ref inputs "bash") ;implicit input
3301 (string-append out)
3302 (string-append bin))))
3303 (chmod "redeclipse_linux" #o555)
3304 (chmod "redeclipse_server_linux" #o555)))
3305 #t)))))
3306 (native-inputs `(("pkg-config" ,pkg-config)))
3307 (inputs
3308 `(("curl" ,curl)
3309 ("glu" ,glu)
14b865dc
KK
3310 ("sdl-union" ,(sdl-union (list sdl2
3311 sdl2-image
3312 sdl2-mixer)))
158f5734
KY
3313 ;; Create origin records for the many separate data packages.
3314 ,@(map (match-lambda
3315 ((name hash)
3316 (list name
3317 (origin
3318 (method url-fetch)
3319 (uri (string-append
3320 "https://github.com/red-eclipse/"
42abb842 3321 name "/archive/v" release ".tar.gz"))
158f5734
KY
3322 (sha256 (base32 hash))
3323 (file-name (string-append name "-" version
3324 ".tar.gz"))))))
3325 data-sources)))
3326 (home-page "http://redeclipse.net/")
3327 (synopsis "Arena shooter derived from the Cube 2 engine")
3328 (description
3329 "Red Eclipse is an arena shooter, created from the Cube2 engine.
3330Offering an innovative parkour system and distinct but all potent weapons,
3331Red Eclipse provides fast paced and accessible gameplay.")
3332 ;; The engine is under Zlib; data files are covered by the other
3333 ;; licenses. More details at <http://redeclipse.net/wiki/License>.
3334 (license (list license:expat
3335 license:zlib
3336 license:cc-by-sa3.0
3337 license:cc-by3.0
3338 license:cc0)))))
bcd2982f
TUBK
3339
3340(define-public higan
3341 (package
3342 (name "higan")
5864f1c1 3343 (version "106")
bcd2982f
TUBK
3344 (source
3345 (origin
3346 (method url-fetch)
3347 (uri (string-append
7c6058c0
TUBK
3348 "https://gitlab.com/higan/higan/repository/archive.tar.gz?ref=v"
3349 version))
bcd2982f
TUBK
3350 (file-name (string-append name "-" version ".tar.gz"))
3351 (sha256
5864f1c1 3352 (base32 "0y42pra0dxzlbkyzcp3r8a39pji2bj3p9fl40425f60af2igr4rw"))
7c6058c0 3353 (patches (search-patches "higan-remove-march-native-flag.patch"))))
bcd2982f
TUBK
3354 (build-system gnu-build-system)
3355 (native-inputs
3356 `(("pkg-config" ,pkg-config)))
3357 (inputs
3358 `(("alsa-lib" ,alsa-lib)
3359 ("ao" ,ao)
3360 ("eudev" ,eudev)
3361 ("gtk+" ,gtk+-2)
3362 ("gtksourceview-2" ,gtksourceview-2)
3363 ("libxv" ,libxv)
3364 ("mesa" ,mesa)
3365 ("openal" ,openal)
3366 ("pulseaudio" ,pulseaudio)
3367 ("sdl" ,sdl)))
3368 (arguments
3369 '(#:phases
3370 (let ((build-phase (assoc-ref %standard-phases 'build))
3371 (install-phase (assoc-ref %standard-phases 'install)))
3372 (modify-phases %standard-phases
3373 ;; The higan build system has no configure phase.
3374 (delete 'configure)
3375 (add-before 'build 'chdir-to-higan
3376 (lambda _
3377 (chdir "higan")))
3378 (add-before 'install 'create-/share/applications
3379 (lambda* (#:key outputs #:allow-other-keys)
3380 (let ((out (assoc-ref outputs "out")))
3381 ;; It seems the author forgot to do this in the Makefile.
3382 (mkdir-p (string-append out "/share/applications")))))
3383 (add-after 'install 'chdir-to-icarus
3384 (lambda _
3385 (chdir "../icarus")))
3386 (add-after 'chdir-to-icarus 'build-icarus build-phase)
3387 (add-after 'build-icarus 'install-icarus install-phase)
3388 (add-after 'install-icarus 'wrap-higan-executable
3389 (lambda* (#:key inputs outputs #:allow-other-keys)
3390 (let* ((out (assoc-ref outputs "out"))
3391 (bin (string-append out "/bin"))
3392 (higan (string-append bin "/higan"))
3393 (higan-original (string-append higan "-original"))
3394 (bash (string-append (assoc-ref inputs "bash")
3395 "/bin/bash"))
3396 (coreutils (assoc-ref inputs "coreutils"))
3397 (mkdir (string-append coreutils "/bin/mkdir"))
3398 (cp (string-append coreutils "/bin/cp"))
3399 (cp-r (string-append cp " -r --no-preserve=mode")))
3400 ;; First, have the executable make sure ~/.local/share/higan
3401 ;; contains up to date files. Higan insists on looking there
3402 ;; for these data files.
3403 (rename-file higan higan-original)
3404 (with-output-to-file higan
3405 (lambda ()
3406 (display
3407 (string-append
3408 "#!" bash "\n"
3409 ;; higan doesn't respect $XDG_DATA_HOME
3410 mkdir " -p ~/.local/share\n"
3411 cp-r " " out "/share/higan ~/.local/share\n"
3412 "exec " higan-original))))
3413 (chmod higan #o555)
3414 ;; Second, make sure higan will find icarus in PATH.
3415 (wrap-program higan
3416 `("PATH" ":" prefix (,bin))))))))
3417 #:make-flags
3418 (list "compiler=g++"
3419 (string-append "prefix=" (assoc-ref %outputs "out")))
3420 ;; There is no test suite.
3421 #:tests? #f))
3422 (home-page "http://byuu.org/emulation/higan/")
3423 (synopsis "Nintendo multi-system emulator")
3424 (description
3425 "higan (formerly bsnes) is an emulator for multiple Nintendo video game
3426consoles, including the Nintendo Entertainment System (NES/Famicom), Super
3427Nintendo Entertainment System (SNES/Super Famicom), Game Boy, Game Boy
3428Color (GBC), and Game Boy Advance (GBA). It also supports the subsystems
3429Super Game Boy, BS-X Satellaview, and Sufami Turbo.")
3430 ;; As noted in these files among more:
3431 ;; - icarus/icarus.cpp
3432 ;; - higan/emulator/emulator.hpp
3433 (license license:gpl3)))
0fb9a15b 3434
721e1987
NG
3435(define-public mgba
3436 (package
3437 (name "mgba")
0750cf7e 3438 (version "0.6.1")
721e1987
NG
3439 (source (origin
3440 (method url-fetch)
3441 (uri (string-append "https://github.com/mgba-emu/mgba/archive/"
3442 version ".tar.gz"))
3443 (file-name (string-append name "-" version ".tar.gz"))
3444 (sha256
3445 (base32
0750cf7e 3446 "0xmq1q1j71hnpd49wm91cqq8w5zdhb921cm17jchp4qjmaqgwy3w"))
721e1987
NG
3447 (modules '((guix build utils)))
3448 (snippet
3449 ;; Make sure we don't use the bundled software.
3450 '(for-each
3451 (lambda (subdir)
3452 (let ((lib-subdir (string-append "src/third-party/" subdir)))
3453 (delete-file-recursively lib-subdir)))
3454 '("libpng" "lzma" "sqlite3" "zlib")))))
3455 (build-system cmake-build-system)
3456 (arguments
3457 `(#:tests? #f ;no "test" target
3458 #:configure-flags
3459 (list "-DUSE_LZMA=OFF" ;do not use bundled LZMA
3460 "-DUSE_LIBZIP=OFF" ;use "zlib" instead
3461 ;; Validate RUNPATH phase fails ("error: depends on
3462 ;; 'libmgba.so.0.6', which cannot be found in RUNPATH") without
3463 ;; the following S-exp.
3464 (string-append "-DCMAKE_INSTALL_LIBDIR="
3465 (assoc-ref %outputs "out")
3466 "/lib"))))
3467 (native-inputs `(("pkg-config" ,pkg-config)))
3468 (inputs `(("ffmpeg" ,ffmpeg)
3469 ("imagemagick" ,imagemagick)
3470 ("libedit" ,libedit)
3471 ("libepoxy" ,libepoxy)
3472 ("libpng" ,libpng)
3473 ("mesa" ,mesa)
3474 ("minizip" ,minizip)
3475 ("ncurses" ,ncurses)
3476 ("qtbase" ,qtbase)
3477 ("qtmultimedia" ,qtmultimedia)
3478 ("qttools" ,qttools)
3479 ("sdl2" ,sdl2)
3480 ("sqlite" ,sqlite)
3481 ("zlib" ,zlib)))
3482 (home-page "https://mgba.io")
3483 (synopsis "Game Boy Advance emulator")
3484 (description
3485 "mGBA is an emulator for running Game Boy Advance games. It aims to be
3486faster and more accurate than many existing Game Boy Advance emulators, as
3487well as adding features that other emulators lack. It also supports Game Boy
3488and Game Boy Color games.")
3489 ;; Code is mainly MPL 2.0. "blip_buf.c" is LGPL 2.1+ and "inih.c" is
3490 ;; BSD-3.
3491 (license (list license:mpl2.0 license:lgpl2.1+ license:bsd-3))))
3492
0fb9a15b
LC
3493(define-public grue-hunter
3494 (package
3495 (name "grue-hunter")
3496 (version "1.0")
3497 (source (origin
3498 (method url-fetch)
3499 (uri (string-append "https://jxself.org/" name ".tar.gz"))
3500 (sha256
3501 (base32
3502 "1hjcpy5439qs3v2zykis7hsi0i17zjs62gks3zd8mnfw9ni4i2h3"))))
3503 (build-system trivial-build-system) ; no Makefile.PL
3504 (arguments `(#:modules ((guix build utils))
3505 #:builder
3506 (begin
3507 (use-modules (guix build utils))
3508 (use-modules (srfi srfi-1))
3509
3510 (let* ((tarball (assoc-ref %build-inputs "tarball"))
3511 (perl (string-append (assoc-ref %build-inputs
3512 "perl")
3513 "/bin"))
5edf2f05 3514 (gzip (string-append (assoc-ref %build-inputs
0fb9a15b 3515 "gzip")
5edf2f05 3516 "/bin/gzip"))
0fb9a15b
LC
3517 (tar (string-append (assoc-ref %build-inputs
3518 "tar")
3519 "/bin/tar"))
3520 (out (assoc-ref %outputs "out"))
3521 (bin (string-append out "/bin"))
6d57723a
TGR
3522 (doc (string-append out
3523 "/share/doc/grue-hunter")))
0fb9a15b 3524 (begin
0fb9a15b 3525 (copy-file tarball "grue-hunter.tar.gz")
5edf2f05 3526 (zero? (system* gzip "-d" "grue-hunter.tar.gz"))
0fb9a15b
LC
3527 (zero? (system* tar "xvf" "grue-hunter.tar"))
3528
3529 (mkdir-p bin)
3530 (copy-file "grue-hunter/gh.pl"
3531 (string-append bin "/grue-hunter"))
3532 (patch-shebang (string-append bin "/grue-hunter")
3533 (list perl))
3534
6d57723a 3535 (install-file "grue-hunter/AGPLv3.txt" doc))))))
0fb9a15b
LC
3536 (inputs `(("perl" ,perl)
3537 ("tar" ,tar)
3538 ("gzip" ,gzip)
3539 ("tarball" ,source)))
3540 (home-page "http://jxself.org/grue-hunter.shtml")
3541 (synopsis "Text adventure game")
3542 (description
3543 "Grue Hunter is a text adventure game written in Perl. You must make
3544your way through an underground cave system in search of the Grue. Can you
3545capture it and get out alive?")
3546 (license license:agpl3+)))
f317aeb4 3547
ffed9eab
MB
3548(define-public lierolibre
3549 (package
3550 (name "lierolibre")
3551 (version "0.5")
3552 (source (origin
3553 (method url-fetch)
3554 (uri (string-append "https://launchpad.net/lierolibre/trunk/"
3555 version "/+download/lierolibre-"
3556 version ".tar.xz"))
3557 (sha256
3558 (base32
3559 "1cf1gvsn4qq190lrf9k5bpjnqwlcfw7pajvdnh7z5r4jqw0rsbl9"))
3560 (patches
3561 (search-patches "lierolibre-check-unaligned-access.patch"
3562 "lierolibre-try-building-other-arch.patch"
3563 "lierolibre-remove-arch-warning.patch"
3564 "lierolibre-newer-libconfig.patch"
3565 "lierolibre-is-free-software.patch"))
3566 (modules '((guix build utils)))
3567 (snippet
3568 '(begin
3569 ;; Delete pre-compiled files.
3570 (delete-file "data/LIERO.CHR")
3571 (delete-file "data/LIERO.SND")
3572 #t))))
3573 (build-system gnu-build-system)
3574 (native-inputs
3575 `(("imagemagick" ,imagemagick)
3576 ("pkg-config" ,pkg-config)
3577 ("util-linux" ,util-linux)
3578 ("sox" ,sox)))
3579 (inputs
3580 `(("boost" ,boost)
3581 ("libconfig" ,libconfig)
3582 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
3583 ("zlib" ,zlib)))
3584 (home-page "https://gitlab.com/lierolibre/lierolibre")
3585 (synopsis "Old-school earthworm action game")
3586 (description
3587 "lierolibre is an earthworm action game where you fight another player
3588(or the computer) underground using a wide array of weapons.
3589
3590Features:
3591@itemize
3592@item 2 worms, 40 weapons, great playability, two game modes: Kill'em All
3593and Game of Tag, plus AI-players without true intelligence!
3594@item Dat nostalgia.
3595@item Extensions via a hidden F1 menu:
3596@itemize
3597@item Replays
3598@item Game controller support
3599@item Powerlevel palettes
3600@end itemize
3601@item Ability to write game variables to plain text files.
3602@item Ability to load game variables from both EXE and plain text files.
3603@item Scripts to extract and repack graphics, sounds and levels.
3604@end itemize
3605
3606To switch between different window sizes, use F6, F7 and F8, to switch to
3607fullscreen, use F5 or Alt+Enter.")
3608 ;; Code mainly BSD-2, some parts under Boost 1.0. All assets are WTFPL2.
3609 (license (list license:bsd-2 license:boost1.0 license:wtfpl2))))
3610
f317aeb4
KK
3611(define-public warzone2100
3612 (package
3613 (name "warzone2100")
c5d17d50 3614 (version "3.2.1")
f317aeb4
KK
3615 (source (origin
3616 (method url-fetch)
3617 (uri (string-append "mirror://sourceforge/" name
3618 "/releases/" version "/" name "-" version
3619 ".tar.xz"))
3620 (sha256
3621 (base32
c5d17d50 3622 "1nd609s0g4sya3r4amhkz3f4dpdmm94vsd2ii76ap665a1nbfrhg"))))
f317aeb4
KK
3623 (build-system gnu-build-system)
3624 (arguments
c5d17d50
RW
3625 `(#:phases
3626 (modify-phases %standard-phases
3627 (add-after 'unpack 'link-tests-with-qt
3628 (lambda _
3629 (substitute* "tests/Makefile.in"
3630 (("(framework_linktest_LDADD|maptest_LDADD) = " prefix)
3631 (string-append prefix "$(QT5_LIBS) ")))
3632 #t))
3633 (add-after 'unpack 'remove-reference-to-missing-file
3634 (lambda _
3635 (substitute* "icons/Makefile.in"
3636 (("\\$\\(INSTALL_DATA\\) \\$\\(srcdir\\)/warzone2100.appdata.xml.*") ""))
77c729ba
RW
3637 #t))
3638 (add-after 'unpack 'patch-for-qt5.8
3639 (lambda _
3640 (substitute* "lib/widget/editbox.cpp"
3641 (("== '\\\\0'")
3642 "== QChar('\\0')"))
c5d17d50 3643 #t)))))
f317aeb4
KK
3644 (native-inputs `(("pkg-config" ,pkg-config)
3645 ("unzip" ,unzip)
3646 ("zip" ,zip)))
3647 (inputs `(("fontconfig" ,fontconfig)
3648 ("freetype" ,freetype)
3649 ("fribidi" ,fribidi)
3650 ("glew" ,glew)
3651 ("libtheora" ,libtheora)
3652 ("libvorbis" ,libvorbis)
3653 ("libxrandr" ,libxrandr)
3654 ("openal" ,openal)
3655 ("physfs" ,physfs)
77c729ba
RW
3656 ("qtbase" ,qtbase)
3657 ("qtscript" ,qtscript)
c5d17d50 3658 ("openssl" ,openssl)
f317aeb4 3659 ("quesoglc" ,quesoglc)
c5d17d50 3660 ("sdl2" ,sdl2)))
f317aeb4
KK
3661 (home-page "http://wz2100.net")
3662 (synopsis "3D Real-time strategy and real-time tactics game")
3663 (description
3664 "Warzone 2100 offers campaign, multi-player, and single-player skirmish
3665modes. An extensive tech tree with over 400 different technologies, combined
3666with the unit design system, allows for a wide variety of possible units and
3667tactics.")
3668 ; Everything is GPLv2+ unless otherwise specified in COPYING.NONGPL
3669 (license (list license:bsd-3
3670 license:cc0
3671 license:cc-by-sa3.0
3672 license:expat
3673 license:gpl2+
3674 license:lgpl2.1+))))
4b670539
SB
3675
3676(define-public starfighter
3677 (package
3678 (name "starfighter")
9f86202b 3679 (version "1.7")
4b670539
SB
3680 (source (origin
3681 (method url-fetch)
3682 (uri (string-append
3683 "mirror://savannah/starfighter/"
3684 (version-major+minor version) "/"
3685 name "-" version "-src.tar.gz"))
3686 (sha256
3687 (base32
9f86202b 3688 "1646hpjq8bz2fkfkja1dah511hn7zd2r7da4w9c9blhad3p5732v"))))
4b670539 3689 (build-system gnu-build-system)
4b670539
SB
3690 (native-inputs
3691 `(("pkg-config" ,pkg-config)))
3692 (inputs
3693 `(("sdl2" ,sdl2)
3694 ("sdl2-image" ,sdl2-image)
3695 ("sdl2-mixer" ,sdl2-mixer)))
3696 (home-page "http://starfighter.nongnu.org/")
3697 (synopsis "2D scrolling shooter game")
3698 (description
3699 "In the year 2579, the intergalactic weapons corporation, WEAPCO, has
3700dominated the galaxy. Guide Chris Bainfield and his friend Sid Wilson on
3701their quest to liberate the galaxy from the clutches of WEAPCO. Along the
3702way, you will encounter new foes, make new allies, and assist local rebels
3703in strikes against the evil corporation.")
3704 ;; gfx and music are under CC-BY 3.0, CC-BY-SA 3.0, CC0 or Public Domain.
3705 (license (list license:gpl3+
3706 license:cc-by3.0
3707 license:cc-by-sa3.0
3708 license:cc0
3709 license:public-domain))))
35e2e495
KK
3710
3711(define-public chromium-bsu
3712 (package
3713 (name "chromium-bsu")
08722837 3714 (version "0.9.16.1")
35e2e495
KK
3715 (source (origin
3716 (method url-fetch)
3717 (uri (string-append "mirror://sourceforge/" name
3718 "/Chromium B.S.U. source code/"
3719 name "-" version ".tar.gz"))
3720 (sha256
3721 (base32
08722837 3722 "0jk2w5b6s6nkzri585bbz16cif2fhqcnl5l1mq3rd98r9nil3hd1"))))
35e2e495 3723 (build-system gnu-build-system)
35e2e495 3724 (native-inputs `(("pkg-config" ,pkg-config)))
7c90d0f4 3725 (inputs `(("gettext" ,gettext-minimal)
08722837 3726 ("glu" ,glu)
35e2e495
KK
3727 ("quesoglc" ,quesoglc)
3728 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))))
3729 (home-page "http://chromium-bsu.sourceforge.net/")
3730 (synopsis "Fast-paced, arcade-style, top-scrolling space shooter")
3731 (description
3732 "In this game you are the captain of the cargo ship Chromium B.S.U. and
3733are responsible for delivering supplies to the troops on the front line. Your
3734ship has a small fleet of robotic fighters which you control from the relative
3735safety of the Chromium vessel.")
3736 ;; Clarified Artistic License for everything but sound, which is covered
3737 ;; by the Expat License.
3738 (license (list license:clarified-artistic license:expat))))
9b1ada4e
EB
3739
3740(define-public tuxpaint
3741 (package
3742 (name "tuxpaint")
3743 (version "0.9.22") ;keep VER_DATE below in sync
3744 (source
3745 (origin
3746 (method url-fetch)
3747 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint/"
3748 version "/tuxpaint-" version ".tar.gz"))
3749 (sha256
3750 (base32
3751 "1qrbrdck9yxpcg3si6jb9i11w8lw9h4hqad0pfaxgyiniqpr7gca"))
3752 (modules '((guix build utils)))
3753 (snippet
3754 '(begin
3755 ;; Remove win32 directory which contains binary dll's and the
3756 ;; deprecated visualc directory.
3757 (for-each delete-file-recursively '("win32" "visualc"))
3758 (substitute* "Makefile"
3759 ;; Do not rely on $(GPERF) being an absolute file name
3760 (("\\[ -x \\$\\(GPERF\\) \\]")
3761 "$(GPERF) --version >/dev/null 2>&1"))))
3762 (patches (search-patches "tuxpaint-stamps-path.patch"))))
3763 (build-system gnu-build-system)
3764 (native-inputs
3765 `(("gperf" ,gperf)
3766 ("pkg-config" ,pkg-config)))
3767 (inputs
3768 `(("cairo" ,cairo)
3769 ("fribidi" ,fribidi)
b94a6ca0 3770 ("gettext" ,gettext-minimal)
9b1ada4e
EB
3771 ("libpng" ,libpng)
3772 ("librsvg" ,librsvg)
3773 ("libpaper" ,libpaper)
3774 ("netpbm" ,netpbm)
3775 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf sdl-image)))))
3776 ;; TODO: Use system fonts rather than those in data/fonts
3777 (arguments
3778 `(#:make-flags `("VER_DATE=2014-08-23"
3779 "GPERF=gperf" "CC=gcc"
3780 "SDL_PCNAME=sdl SDL_image SDL_mixer SDL_ttf"
3781 ,(string-append "PREFIX=" %output)
3782 "GNOME_PREFIX=$(PREFIX)"
3783 "COMPLETIONDIR=$(PREFIX)/etc/bash_completion.d")
72529642 3784 #:parallel-build? #f ;fails on some systems
9b1ada4e
EB
3785 #:tests? #f ;No tests
3786 #:phases (modify-phases %standard-phases
3787 (delete 'configure) ;no configure phase
3788 (add-after 'install 'fix-import
3789 (lambda* (#:key inputs outputs #:allow-other-keys)
3790 (let* ((out (assoc-ref outputs "out"))
3791 (net (assoc-ref inputs "netpbm"))
3792 (tpi (string-append out "/bin/tuxpaint-import")))
3793 (substitute* tpi
3794 ;; Point to installation prefix so that the default
3795 ;; configure file is found.
3796 (("/usr/local") out))
3797 ;; tuxpaint-import uses a bunch of programs from
3798 ;; netpbm, so make sure it knows where those are
3799 (wrap-program tpi
3800 `("PATH" ":" prefix
3801 (,(string-append net "/bin"))))))))))
3802 (native-search-paths
3803 (list (search-path-specification
3804 (variable "TUXPAINT_STAMPS_PATH")
3805 (files '("share/tuxpaint/stamps")))))
3806 (home-page "http://www.tuxpaint.org")
3807 (synopsis "Drawing software for children")
3808 (description
3809 "Tux Paint is a free drawing program designed for young children (kids
3810ages 3 and up). It has a simple, easy-to-use interface; fun sound effects;
3811and an encouraging cartoon mascot who helps guide children as they use the
3812program. It provides a blank canvas and a variety of drawing tools to help
3813your child be creative.")
3814 (license license:gpl2+)))
c3d850f2
EB
3815
3816(define-public tuxpaint-stamps
3817 (package
3818 (name "tuxpaint-stamps")
3819 (version "2014.08.23")
3820 (source
3821 (origin
3822 (method url-fetch)
3823 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-stamps/"
3824 (string-map (λ (x) (if (eq? x #\.) #\- x)) version)
3825 "/tuxpaint-stamps-" version ".tar.gz"))
3826 (sha256
3827 (base32
3828 "0rhlwrjz44wp269v3rid4p8pi0i615pzifm1ym6va64gn1bms06q"))))
3829 (build-system trivial-build-system)
3830 (native-inputs
3831 `(("tar" ,tar)
3832 ("gzip" ,gzip)))
3833 (arguments
3834 `(#:modules ((guix build utils))
3835 #:builder (begin
3836 (use-modules (guix build utils))
3837 (setenv "PATH"
3838 (string-append
3839 (assoc-ref %build-inputs "tar") "/bin" ":"
3840 (assoc-ref %build-inputs "gzip") "/bin"))
3841 (system* "tar" "xvf" (assoc-ref %build-inputs "source"))
3842 (chdir (string-append ,name "-" ,version))
3843 (let ((dir (string-append %output "/share/tuxpaint/stamps")))
3844 (mkdir-p dir)
3845 (copy-recursively "stamps" dir)))))
3846 (home-page (package-home-page tuxpaint))
3847 (synopsis "Stamp images for Tux Paint")
3848 (description
3849 "This package contains a set of \"Rubber Stamp\" images which can be used
3850with the \"Stamp\" tool within Tux Paint.")
3851 (license license:gpl2+)))
d2563973
EB
3852
3853(define-public tuxpaint-config
3854 (package
3855 (name "tuxpaint-config")
3856 (version "0.0.13") ;keep VER_DATE below in sync
3857 (source
3858 (origin
3859 (method url-fetch)
3860 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-config/"
3861 version "/tuxpaint-config-" version ".tar.gz"))
3862 (sha256
3863 (base32
3864 "1z12s46mvy87qs3vgq9m0ki9pp21zqc52mmgphahpihw3s7haf6v"))))
3865 (build-system gnu-build-system)
3866 (native-inputs
b94a6ca0 3867 `(("gettext" ,gettext-minimal)))
d2563973
EB
3868 (inputs
3869 `(("fltk" ,fltk)
3870 ("libpaper" ,libpaper)
3871 ;; TODO: Should the following be propagated by fltk?
3872 ("libx11" ,libx11)
3873 ("libxft" ,libxft)
3874 ("mesa" ,mesa)))
3875 (arguments
3876 `(#:make-flags `("VER_DATE=2014-08-23"
3877 "CONFDIR=/etc/tuxpaint" ;don't write to store
3878 ,(string-append "PREFIX=" %output)
3879 "GNOME_PREFIX=$(PREFIX)")
5895ca7b 3880 #:parallel-build? #f ;race conditions
d2563973
EB
3881 #:tests? #f ;no tests
3882 #:phases (modify-phases %standard-phases
3883 (delete 'configure) ;no configure phase
3884 (add-before 'install 'gzip-no-name
3885 (lambda* _
3886 (substitute* "Makefile"
3887 ;; tuxpaint-config compresses its own documentation;
3888 ;; make sure it uses flags for reproducibility.
3889 (("gzip") "gzip --no-name"))))
3890 (add-before 'install 'make-install-dirs
3891 (lambda* (#:key outputs #:allow-other-keys)
3892 (let ((out (assoc-ref outputs "out")))
3893 (mkdir-p (string-append out "/bin"))
3894 #t))))))
3895 (home-page (package-home-page tuxpaint))
3896 (synopsis "Configure Tux Paint")
3897 (description
3898 "Tux Paint Config is a graphical configuration editor for Tux Paint.")
3899 (license license:gpl2))) ;no "or later" present
826a3ca2 3900
3901(define-public supertux
3902 (package
3903 (name "supertux")
ea5cc295 3904 (version "0.5.1")
826a3ca2 3905 (source (origin
3906 (method url-fetch)
d910d584
RW
3907 (uri (string-append "https://github.com/SuperTux/supertux/"
3908 "releases/download/v" version "/SuperTux-v"
3909 version "-Source.tar.gz"))
826a3ca2 3910 (sha256
3911 (base32
ea5cc295 3912 "1i8avad7w7ikj870z519j383ldy29r6f956bs38cbr8wk513pp69"))))
d910d584
RW
3913 (arguments
3914 '(#:tests? #f
3915 #:configure-flags '("-DINSTALL_SUBDIR_BIN=bin"
3916 "-DENABLE_BOOST_STATIC_LIBS=OFF")))
826a3ca2 3917 (build-system cmake-build-system)
3918 (inputs `(("sdl2" ,sdl2)
3919 ("sdl2-image" ,sdl2-image)
3920 ("sdl2-mixer" ,sdl2-mixer)
3921 ("openal" ,openal)
3922 ("mesa" ,mesa)
3923 ("glew" ,glew)
3924 ("libvorbis" ,libvorbis)
3925 ("libogg" ,libogg)
3926 ("physfs" ,physfs)
3927 ("curl" ,curl)
3928 ("boost" ,boost)))
3929 (native-inputs `(("pkg-config" ,pkg-config)))
3930 (synopsis "2D platformer game")
3931 (description "SuperTux is a free classic 2D jump'n run sidescroller game
3932in a style similar to the original Super Mario games covered under
3933the GNU GPL.")
3934 (home-page "https://supertuxproject.org/")
3935 (license license:gpl3+)))
b3de5ff2 3936
751c7040 3937(define-public tintin++
3938 (package
3939 (name "tintin++")
890bf023 3940 (version "2.01.4")
751c7040 3941 (source (origin
3942 (method url-fetch)
998ac26a
LC
3943 (uri (string-append "mirror://sourceforge/tintin"
3944 "/TinTin++ Source Code/" version
751c7040 3945 "/tintin" "-" version ".tar.gz"))
3946 (sha256
3947 (base32
890bf023 3948 "1g7bh8xs1ml0iyraps3a3dzaycci922y7fk5j0wyr4ssyjzsy8nx"))))
751c7040 3949 (inputs
3950 `(("gnutls" ,gnutls)
3951 ("pcre" ,pcre)
3952 ("readline" ,readline)
3953 ("zlib" ,zlib)))
3954 (arguments
3955 '(#:tests? #f ; no test suite
3956 #:phases
3957 (modify-phases %standard-phases
3958 ;; The source is in tt/src.
3959 (add-before 'configure 'chdir
3960 (lambda _
3961 (chdir "src")
3962 #t)))))
3963 (build-system gnu-build-system)
3964 (home-page "http://tintin.sourceforge.net/")
3965 (synopsis "MUD client")
3966 (description
3967 "TinTin++ is a MUD client which supports MCCP (Mud Client Compression Protocol),
3968MMCP (Mud Master Chat Protocol), xterm 256 colors, most TELNET options used by MUDs,
3969as well as those required to login via telnet on Linux / Mac OS X servers, and an
3970auto mapper with a VT100 map display.")
3971 (license license:gpl2+)))
3972
b3de5ff2
JN
3973(define-public laby
3974 (package
3975 (name "laby")
3976 (version "0.6.4")
3977 (source
3978 (origin (method url-fetch)
3979 (uri (string-append
ff0ecefc
EF
3980 "https://github.com/sgimenez/laby/archive/"
3981 name "-" version ".tar.gz"))
b3de5ff2
JN
3982 (sha256
3983 (base32
ff0ecefc 3984 "0gyrfa95l1qka7gbjf7l6mk7mbfvph00l0c995ia272qdw7rjhyf"))
b3de5ff2
JN
3985 (patches (search-patches "laby-make-install.patch"))))
3986 (build-system gnu-build-system)
3987 (inputs
3988 `(("lablgtk" ,lablgtk)
3989 ("ocaml" ,ocaml)
3990 ("ocaml-findlib" ,ocaml-findlib)))
3991 (arguments
3992 '(#:phases
3993 (modify-phases %standard-phases
3994 (delete 'configure)
3995 (add-before 'build 'setenv
3996 (lambda* (#:key inputs #:allow-other-keys)
3997 (let ((lablgtk (assoc-ref inputs "lablgtk")))
3998 (setenv "LD_LIBRARY_PATH"
3999 (string-append lablgtk "/lib/ocaml/stublibs"))))))
4000 #:tests? #f ; no 'check' target
4001 #:make-flags
4002 (list (string-append "PREFIX=" (assoc-ref %outputs "out")) "all")))
4003 (home-page "https://sgimenez.github.io/laby/")
4004 (synopsis "Programming game")
4005 (description "Learn programming, playing with ants and spider webs ;-)
4006Your robot ant can be programmed in many languages: OCaml, Python, C, C++,
4007Java, Ruby, Lua, JavaScript, Pascal, Perl, Scheme, Vala, Prolog. Experienced
4008programmers may also add their own favorite language.")
4009 (license license:gpl3+)))
b0488fe5
EF
4010
4011(define-public bambam
4012 (package
4013 (name "bambam")
4014 (version "0.5")
4015 (source
4016 (origin
4017 (method url-fetch)
4018 (uri (string-append "https://github.com/porridge/bambam/archive/"
4019 version ".tar.gz"))
4020 (file-name (string-append name "-" version ".tar.gz"))
4021 (sha256
4022 (base32
4023 "10w110mjdwbvddzihh9rganvvjr5jfiz8cs9n7w12zndwwcc3ria"))))
4024 (build-system python-build-system)
4025 (arguments
4026 `(#:python ,python-2
4027 #:tests? #f ; no tests
4028 #:phases
4029 (modify-phases %standard-phases
4030 (delete 'build)
4031 (add-before 'install 'patch-data-dir-location
4032 (lambda _
4033 (substitute* "bambam.py"
46a06224 4034 (("'data'") "'../share/bambam/data'"))
b0488fe5
EF
4035 #t))
4036 (replace 'install
4037 (lambda* (#:key outputs #:allow-other-keys)
4038 (let* ((out (assoc-ref outputs "out"))
4039 (bin (string-append out "/bin"))
4040 (share (string-append out "/share")))
4041 (mkdir-p bin)
4042 (copy-file "bambam.py" (string-append bin "/bambam"))
4043 (install-file "bambam.6" (string-append share "/man/man6"))
4044 (copy-recursively "data" (string-append share "/bambam/data")))
b0488fe5
EF
4045 #t)))))
4046 (inputs
4047 `(("python-pygame" ,python-pygame)))
4048 (home-page "https://github.com/porridge/bambam")
46a06224 4049 (synopsis "Keyboard mashing and doodling game for babies")
b0488fe5
EF
4050 (description "Bambam is a simple baby keyboard (and gamepad) masher
4051application that locks the keyboard and mouse and instead displays bright
4052colors, pictures, and sounds.")
4053 (license license:gpl3+)))
6b87c10f
SB
4054
4055(define-public mrrescue
4056 (package
4057 (name "mrrescue")
4058 (version "1.02e")
4059 (source (origin
4060 (method url-fetch)
4061 (uri (string-append
4062 "https://github.com/SimonLarsen/mrrescue/releases/"
4063 "download/" version "/" name version ".love"))
4064 (file-name (string-append name "-" version ".love"))
4065 (sha256
4066 (base32
4067 "0jwzbwkgp1l5ia6c7s760gmdirbsncp6nfqp7vqdqsfb63la9gl2"))))
4068 (build-system trivial-build-system)
4069 (arguments
4070 '(#:modules ((guix build utils))
4071 #:builder
4072 (begin
4073 (use-modules (guix build utils))
4074 (let* ((out (assoc-ref %outputs "out"))
4075 (bindir (string-append out "/bin"))
4076 (prog (string-append bindir "/mrrescue"))
4077 (source (assoc-ref %build-inputs "source"))
4078 (bash (string-append (assoc-ref %build-inputs "bash")
4079 "/bin/bash"))
4080 (love (string-append (assoc-ref %build-inputs "love")
4081 "/bin/love")))
4082 (mkdir-p bindir)
4083 (with-output-to-file prog
4084 (lambda ()
4085 (format #t "#!~a~%" bash)
4086 (format #t "exec -a mrrescue \"~a\" \"~a\"~%" love source)))
4087 (chmod prog #o755)
4088 #t))))
4089 (inputs
4090 `(("bash" ,bash)
4091 ("love" ,love)))
4092 (home-page "http://tangramgames.dk/games/mrrescue")
4093 (synopsis "Arcade-style fire fighting game")
4094 (description
4095 "Mr. Rescue is an arcade styled 2d action game centered around evacuating
4096civilians from burning buildings. The game features fast paced fire
4097extinguishing action, intense boss battles, a catchy soundtrack and lots of
4098throwing people around in pseudo-randomly generated buildings.")
4099 (license (list license:zlib ; for source code
4100 license:cc-by-sa3.0)))) ; for graphics and music assets
cd1869cd
KK
4101
4102(define-public hyperrogue
4103 (package
4104 (name "hyperrogue")
b9319c1e 4105 (version "10.0g")
f8279ba4
KK
4106 ;; When updating this package, be sure to update the "hyperrogue-data"
4107 ;; origin in native-inputs.
cd1869cd
KK
4108 (source (origin
4109 (method url-fetch)
4110 (uri (string-append
4111 "http://www.roguetemple.com/z/hyper/"
f8279ba4
KK
4112 name (string-join (string-split version #\.) "")
4113 "-src.tgz"))
cd1869cd
KK
4114 (sha256
4115 (base32
b9319c1e 4116 "0f68pcnsgl406dhm91ckn3f364bar9m9i5njp9vrmvhvv9p2icy0"))))
cd1869cd
KK
4117 (build-system gnu-build-system)
4118 (arguments
f8279ba4 4119 `(#:tests? #f ; no check target
5149ff1b 4120 #:make-flags '("CXXFLAGS=-std=c++11")
cd1869cd
KK
4121 #:phases
4122 (modify-phases %standard-phases
4123 (add-after 'set-paths 'set-sdl-paths
4124 (lambda* (#:key inputs #:allow-other-keys)
4125 (setenv "CPATH"
4126 (string-append (assoc-ref inputs "sdl-union")
4127 "/include/SDL"))))
4128 ;; Fix font and music paths.
4129 (replace 'configure
4130 (lambda* (#:key inputs outputs #:allow-other-keys)
f8279ba4
KK
4131 (let* ((out (assoc-ref outputs "out"))
4132 (share-dir (string-append out "/share/hyperrogue"))
4133 (dejavu-dir (string-append
4134 (assoc-ref inputs "font-dejavu")
4135 "/share/fonts/truetype"))
4136 (dejavu-font "DejaVuSans-Bold.ttf")
4137 (music-file "hyperrogue-music.txt"))
89c9445a 4138 (substitute* "basegraph.cpp"
f8279ba4
KK
4139 ((dejavu-font)
4140 (string-append dejavu-dir "/" dejavu-font)))
4141 (substitute* "sound.cpp"
4142 (((string-append "\\./" music-file))
4143 (string-append share-dir "/" music-file))
4144 (("sounds/")
4145 (string-append share-dir "/sounds/")))
4146 (substitute* music-file
4147 (("\\*/")
4148 (string-append share-dir "/sounds/"))))
cd1869cd
KK
4149 #t))
4150 (replace 'install
4151 (lambda* (#:key inputs outputs #:allow-other-keys)
4152 (let* ((out (assoc-ref outputs "out"))
4153 (bin (string-append out "/bin"))
4154 (share-dir (string-append out "/share/hyperrogue")))
4155 (mkdir-p bin)
f8279ba4
KK
4156 (copy-file "hyper" (string-append bin "/hyperrogue"))
4157 (install-file "hyperrogue-music.txt" share-dir))
4158 #t))
4159 (add-after 'install 'install-data
4160 (lambda* (#:key inputs outputs #:allow-other-keys)
4161 (let* ((data (assoc-ref inputs "hyperrogue-data"))
4162 (out (assoc-ref outputs "out"))
4163 (sounds (string-append out "/share/hyperrogue/sounds"))
4164 (unzip (string-append (assoc-ref inputs "unzip") "/bin/unzip")))
4165 (and
4166 ;; Extract media license information into sounds directory.
4167 (zero?
4168 (system* unzip "-j" data
4169 (string-append
4170 "hyperrogue"
4171 (string-join (string-split ,version #\.) "")
a7086b15 4172 "/sounds/credits.txt") "-d" sounds))
f8279ba4
KK
4173 ;; Extract sounds and music into sounds directory.
4174 (zero?
4175 (system* "unzip" "-j" data
4176 (string-append
4177 "hyperrogue"
4178 (string-join (string-split ,version #\.) "")
a7086b15 4179 "/*.ogg") "-d" sounds)))))))))
f8279ba4
KK
4180 (native-inputs
4181 `(("hyperrogue-data"
4182 ,(origin
4183 (method url-fetch)
4184 (uri
4185 (string-append
4186 "http://www.roguetemple.com/z/hyper/" name
4187 (string-join (string-split version #\.) "")
4188 "-win.zip"))
4189 (sha256
4190 (base32
b9319c1e 4191 "0bnp077qvlmxjlz1jjd6kpghlv9flxc19ac1xq3m3wyq1w9p3pab"))))
f8279ba4 4192 ("unzip" ,unzip)))
cd1869cd
KK
4193 (inputs
4194 `(("font-dejavu" ,font-dejavu)
4195 ("glew" ,glew)
4196 ("libpng" ,libpng)
4197 ("sdl-union" ,(sdl-union (list sdl
4198 sdl-gfx
4199 sdl-mixer
4200 sdl-ttf)))))
4201 (home-page "http://www.roguetemple.com/z/hyper/")
4202 (synopsis "Non-euclidean graphical rogue-like game")
4203 (description
4204 "HyperRogue is a game in which the player collects treasures and fights
4205monsters -- rogue-like but for the fact that it is played on the hyperbolic
4206plane and not in euclidean space.
4207
4208In HyperRogue, the player can move through different parts of the world, which
a53a6b6f
TGR
4209are home to particular creatures and may be subject to their own rules of
4210\"physics\".
cd1869cd 4211
a53a6b6f
TGR
4212While the game can use ASCII characters to display the the classical rogue
4213symbols, it still needs graphics to render the non-euclidean world.")
f8279ba4
KK
4214 (license (list license:bsd-3 ; glew.c, mtrand.*
4215 license:cc-by-sa3.0 ; music
4216 license:cc-by-sa4.0 ; sounds
4217 license:cc0
4218 license:public-domain ; direntx.*, some sounds
4219 license:zlib ; savepng.*
cd1869cd 4220 license:gpl2+)))) ; remaining files
a56145e1
SW
4221
4222(define-public kobodeluxe
4223 (package
4224 (name "kobodeluxe")
4225 (version "0.5.1")
4226 (source (origin
4227 (method url-fetch)
4228 (uri (string-append "http://olofson.net/kobodl/download/KoboDeluxe-"
4229 version ".tar.bz2"))
4230 (sha256
4231 (base32
4232 "0b2wvdpnmaibsy419c16dfwj5kvd3pccby2aaqvm964x74592yqg"))
4233 (patches (search-patches
4234 "kobodeluxe-const-charp-conversion.patch"
4235 "kobodeluxe-enemies-pipe-decl.patch"
4236 "kobodeluxe-graphics-window-signed-char.patch"
4237 "kobodeluxe-manpage-minus-not-hyphen.patch"
4238 "kobodeluxe-midicon-segmentation-fault.patch"
4239 "kobodeluxe-paths.patch"))))
4240 (build-system gnu-build-system)
4241 (arguments
4242 '(#:configure-flags
4243 (list (string-append "CPPFLAGS=-I"
4244 (assoc-ref %build-inputs "sdl-union")
4245 "/include/SDL"))))
4246 (inputs `(("sdl-union" ,(sdl-union (list sdl sdl-image)))))
4247 (synopsis "Shooter with space station destruction")
4248 (description
4249 "Kobo Deluxe is an enhanced version of Akira Higuchi's XKobo graphical game
4250for Un*x systems with X11.")
4251 (home-page "http://olofson.net/kobodl/")
4252 (license license:gpl2+)))
5430dbd9
AI
4253
4254(define-public freeciv
4255 (package
4256 (name "freeciv")
b92e8da0 4257 (version "2.5.7")
5430dbd9
AI
4258 (source
4259 (origin
4260 (method url-fetch)
b92e8da0
EF
4261 (uri (list (string-append
4262 "http://files.freeciv.org/stable/freeciv-"
4263 version ".tar.bz2")
4264 (string-append
4265 "mirror://sourceforge/freeciv/Freeciv%20"
4266 (version-major+minor version) "/" version
4267 "/freeciv-" version ".tar.bz2")))
5430dbd9
AI
4268 (sha256
4269 (base32
b92e8da0 4270 "1lmydnnqraa947l7gdz6xgm0bgks1ywsivp9h4v8jr3avcv6gqzz"))))
5430dbd9
AI
4271 (build-system gnu-build-system)
4272 (inputs
4273 `(("curl" ,curl)
4274 ("cyrus-sasl" ,cyrus-sasl)
4275 ("gtk+" ,gtk+)
4276 ("sdl-mixer" ,sdl-mixer)
4277 ("zlib" ,zlib)))
4278 (native-inputs
4279 `(("pkg-config" ,pkg-config)))
4280 (home-page "http://www.freeciv.org/")
4281 (synopsis "Turn based empire building strategy game")
4282 (description "Freeciv is a turn based empire building strategy game
4283inspired by the history of human civilization. The game commences in
4284prehistory and your mission is to lead your tribe from the Stone Age
4285to the Space Age.")
4286 (license license:gpl2+)))
345504c7 4287
4288(define-public no-more-secrets
4289 (package
4290 (name "no-more-secrets")
4c4f1871 4291 (version "0.3.3")
345504c7 4292 (source
4293 (origin
4294 (method url-fetch)
4295 (uri (string-append "https://github.com/bartobri/no-more-secrets/"
4296 "archive/v" version ".tar.gz"))
4297 (file-name (string-append name "-" version ".tar.gz"))
4298 (sha256
4299 (base32
4c4f1871 4300 "1kpx1rirc3i7fb4lymp0hx5rqr0s2ay4za261rw3bcy6d23l1kyg"))))
345504c7 4301 (build-system gnu-build-system)
4302 (arguments
4303 `(#:tests? #f
4304 #:make-flags (list "CC=gcc" "all-ncurses"
4305 (string-append "prefix="
4306 (assoc-ref %outputs "out")))
4307 #:phases
4308 (modify-phases %standard-phases
4309 (delete 'configure))))
4310 (inputs
4311 `(("ncurses" ,ncurses)))
4312 (home-page "https://github.com/bartobri/no-more-secrets")
4313 (synopsis "Recreation of data decryption effect in \"Sneakers\"")
4314 (description
4315 "@code{No More Secrets} provides a command line tool called \"nms\"
4316that recreates the famous data decryption effect seen on screen in the 1992
4317movie \"Sneakers\".
4318
4319This command works on piped data. Pipe any ASCII or UTF-8 text to nms, and
4320it will apply the hollywood effect, initially showing encrypted data, then
4321starting a decryption sequence to reveal the original plaintext characters.")
4322 (license license:expat)))
fb731c92
AI
4323
4324(define-public megaglest-data
4325 (package
4326 (name "megaglest-data")
4327 (version "3.13.0")
4328 (source
4329 (origin
4330 (method url-fetch)
4331 (uri (string-append
4332 "https://github.com/MegaGlest/megaglest-data"
4333 "/releases/download/" version "/megaglest-data-"
4334 version ".tar.xz"))
4335 (sha256
4336 (base32
4337 "0ipgza33z89fw3si32iafm981f3fvm0zldvbxj29whghd2k3rpj3"))))
4338 (build-system cmake-build-system)
4339 (arguments
4340 `(#:tests? #f))
4341 (home-page "https://megaglest.org/")
4342 (synopsis "Data files for MegaGlest")
4343 (description "This package contains the data files required for MegaGlest.")
4344 (license license:cc-by-sa3.0)))
0b608ec4
AI
4345
4346(define-public megaglest
4347 (package
4348 (name "megaglest")
4349 (version "3.13.0")
4350 (source
4351 (origin
4352 (method url-fetch)
4353 (uri (string-append
4354 "https://github.com/MegaGlest/megaglest-source"
4355 "/releases/download/" version "/megaglest-source-"
4356 version ".tar.xz"))
4357 (sha256
4358 (base32
4359 "1ffck3ii1wp5k3nn5p0ga06jgp7pzk4zw0xln3xim2w7qrxzdzh9"))))
4360 (build-system cmake-build-system)
4361 (inputs
4362 `(("curl" ,curl)
4363 ("fontconfig" ,fontconfig)
4364 ("ftgl" ,ftgl)
4365 ("glew" ,glew)
4366 ("libjpeg-turbo" ,libjpeg-turbo)
4367 ("megaglest-data" ,megaglest-data)
4368 ("mesa" ,mesa)
4369 ("miniupnpc" ,miniupnpc)
4370 ("openal" ,openal)
4371 ("libircclient" ,libircclient)
4372 ("libpng" ,libpng)
4373 ("libvorbis" ,libvorbis)
4374 ("lua" ,lua)
4375 ("sdl2" ,sdl2)
4376 ("wxwidgets" ,wxwidgets)))
4377 (native-inputs
4378 `(("cppunit" ,cppunit)
4379 ("pkg-config" ,pkg-config)))
4380 (arguments
4381 `(#:configure-flags
4382 (list (string-append "-DCUSTOM_DATA_INSTALL_PATH="
4383 (assoc-ref %build-inputs "megaglest-data")
4384 "/share/megaglest")
4385 "-DBUILD_MEGAGLEST_TESTS=ON")
4386 #:phases
4387 (modify-phases %standard-phases
4388 (add-after 'unpack 'fix-ini-search-path
4389 (lambda* (#:key outputs #:allow-other-keys)
4390 (substitute* "source/glest_game/global/config.cpp"
4391 (("/usr/share/megaglest/")
4392 (string-append (assoc-ref outputs "out")
4393 "/share/megaglest/"))))))
4394 #:test-target "megaglest_tests"))
4395 (home-page "https://megaglest.org/")
4396 (synopsis "3D real-time strategy (RTS) game")
4397 (description "MegaGlest is a cross-platform 3D real-time strategy (RTS)
4398game, where you control the armies of one of seven different factions: Tech,
4399Magic, Egypt, Indians, Norsemen, Persian or Romans.")
4400 (license license:gpl2+)))
6bb9c854
RW
4401
4402(define-public freegish
4403 (let ((commit "8795cd7adc95957883f2d3465eb9036a774667a7")
4404 (revision "1"))
4405 (package
4406 (name "freegish")
4407 (version (string-append "0-" revision "." (string-take commit 9)))
4408 (source (origin
4409 (method git-fetch)
4410 (uri (git-reference
4411 (url "https://github.com/freegish/freegish.git")
4412 (commit commit)))
4413 (sha256
4414 (base32
4415 "1p1zf5qqagmcpi1db2bs02cnalpy3qiymp6yzan7k1bhmv859gsx"))
4416 (modules '((guix build utils)))
4417 ;; The audio files in the "music" directory are licensed under
4418 ;; CC-BY-NC, so we delete them.
4419 (snippet
4420 '(begin
4421 (delete-file-recursively "music")
4422 #t))))
4423 (build-system cmake-build-system)
4424 (arguments
4425 `(#:tests? #f ; no tests included
4426 #:configure-flags
4427 (list "-DCMAKE_INSTALL_FHS=ON")
4428 #:phases
4429 (modify-phases %standard-phases
4430 (add-after 'unpack 'set-DATAPATH
4431 (lambda* (#:key outputs #:allow-other-keys)
4432 (substitute* "CMakeLists.txt"
4433 (("^option\\(INSTALL_FHS" line)
4434 (string-append "add_definitions(-DDATAPATH=\""
4435 (assoc-ref outputs "out") "/share/freegish\")\n"
4436 line)))
4437 #t)))))
4438 (inputs
4439 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))
4440 ("openal" ,openal)
4441 ("libvorbis" ,libvorbis)
4442 ("libogg" ,libogg)
4443 ("mesa" ,mesa)
4444 ("libpng" ,libpng)
4445 ("zlib" ,zlib)))
4446 (home-page "https://github.com/freegish/freegish")
4447 (synopsis "Side-scrolling physics platformer with a ball of tar")
4448 (description "In FreeGish you control Gish, a ball of tar who lives
4449happily with his girlfriend Brea, until one day a mysterious dark creature
4450emerges from a sewer hole and pulls her below ground.")
4451 ;; The textures are available under the Expat license. All other assets
4452 ;; (including levels) are covered under CC-BY-SA or public domain. The
4453 ;; source code is under GPLv2+.
4454 (license (list license:gpl2+
4455 license:expat
4456 license:public-domain
4457 license:cc-by-sa3.0)))))
f0f7bf95
RW
4458
4459(define-public cdogs-sdl
4460 (package
4461 (name "cdogs-sdl")
7bd4103e 4462 (version "0.6.6")
f0f7bf95
RW
4463 (source (origin
4464 (method url-fetch)
4465 (uri (string-append "https://github.com/cxong/cdogs-sdl/"
4466 "archive/" version ".tar.gz"))
4467 (file-name (string-append name "-" version ".tar.gz"))
4468 (sha256
4469 (base32
7bd4103e 4470 "08gbx6vqqir48xs6qdfa4kv70gj4j96wzs90pg7qldfasxz34ljm"))))
f0f7bf95
RW
4471 (build-system cmake-build-system)
4472 (arguments
4473 `(#:configure-flags
4474 (list (string-append "-DCDOGS_DATA_DIR="
4475 (assoc-ref %outputs "out")
4476 "/share/cdogs-sdl/"))))
4477 (inputs
e97b75d9
TGR
4478 `(("mesa" ,mesa)
4479 ("sdl2" ,sdl2)
f0f7bf95
RW
4480 ("sdl2-image" ,sdl2-image)
4481 ("sdl2-mixer" ,sdl2-mixer)))
e97b75d9 4482 (home-page "https://cxong.github.io/cdogs-sdl/")
f0f7bf95
RW
4483 (synopsis "Classic overhead run-and-gun game")
4484 (description "C-Dogs SDL is a classic overhead run-and-gun game,
4485supporting up to 4 players in co-op and deathmatch modes. Customize your
4486player, choose from many weapons, and blast, slide and slash your way through
4487over 100 user-created campaigns.")
4488 ;; GPLv2+ for code (includes files under BSD-2 and BSD-3),
4489 ;; CC0/CC-BY/CC-BY-SA for assets.
4490 (license (list license:gpl2+
4491 license:bsd-2
4492 license:bsd-3
4493 license:cc0
4494 license:cc-by3.0
4495 license:cc-by-sa3.0))))
bd71525b
RW
4496
4497(define-public kiki
4498 (package
4499 (name "kiki")
4500 (version "1.0.2")
4501 (source (origin
4502 (method url-fetch)
4503 (uri (string-append "mirror://sourceforge/kiki/kiki-src/"
4504 version "/kiki-" version "-src.tgz"))
4505 (sha256
4506 (base32
4507 "0ihjdsxbn8z3cz0gpcprafiipcqaiskgdnh1rhmw4qff8dszalbn"))
4508 (modules '((guix build utils)))
4509 (snippet
4510 '(begin
4511 (for-each delete-file (find-files "." "\\.dll$"))
4512 #t))
4513 (patches
4514 (search-patches "kiki-level-selection-crash.patch"
4515 "kiki-makefile.patch"
4516 "kiki-missing-includes.patch"
4517 "kiki-portability-64bit.patch"))))
4518 (build-system gnu-build-system)
4519 (arguments
4520 `(#:tests? #f ; there are no tests
4521 #:make-flags '("CXX=g++")
4522 #:phases
4523 (modify-phases %standard-phases
4524 (replace 'configure
4525 (lambda* (#:key inputs outputs #:allow-other-keys)
4526 (setenv "CPLUS_INCLUDE_PATH"
4527 (string-append (assoc-ref inputs "sdl-union")
4528 "/include/SDL:"
4529 (assoc-ref inputs "python")
4530 "/include/python2.7:"
4531 (getenv "CPLUS_INCLUDE_PATH")))
4532 (substitute* "src/main/main.cpp"
4533 (("#include <SDL.h>" line)
4534 (string-append line "
4535#define K_INCLUDE_GLUT
4536#include \"KIncludeTools.h\""))
4537 (("// initialize SDL" line)
4538 (string-append "glutInit(&argc,argv);\n" line)))
4539 (substitute* "src/main/KikiController.cpp"
4540 (("getenv\\(\"KIKI_HOME\"\\)")
4541 (string-append "\"" (assoc-ref outputs "out") "/share/kiki/\"")))
4542 (substitute* "linux/Makefile"
4543 (("CXXOPTS =" line)
4544 (string-append line " -fpermissive"))
4545 (("PYTHON_VERSION=.*") "PYTHON_VERSION=2.7")
4546 (("PYTHONHOME =.*")
4547 (string-append "PYTHONHOME = "
4548 (assoc-ref inputs "python")
4549 "/lib/python2.7/"))
4550 (("\\$\\(GLLIBS\\)" line)
4551 (string-append line " -lm -lpython2.7")))
4552 (substitute* "src/main/KikiPythonWidget.h"
4553 (("#define __KikiPythonWidget" line)
4554 (string-append line "\n#include \"KikiPython.h\"")))
4555 #t))
4556 (add-before 'build 'build-kodilib
4557 (lambda* (#:key make-flags #:allow-other-keys)
4558 (with-directory-excursion "kodilib/linux"
4559 (zero? (apply system* "make" make-flags)))))
4560 (add-after 'build-kodilib 'chdir
4561 (lambda _ (chdir "linux") #t))
4562 (replace 'install
4563 (lambda* (#:key outputs #:allow-other-keys)
4564 (let* ((out (assoc-ref outputs "out"))
4565 (bin (string-append out "/bin"))
4566 (share (string-append out "/share/kiki")))
4567 (mkdir-p bin)
4568 (mkdir-p share)
4569 (install-file "kiki" bin)
4570 (copy-recursively "../py" (string-append share "/py"))
4571 (copy-recursively "../sound" (string-append share "/sound"))
4572 #t))))))
4573 (inputs
4574 `(("glu" ,glu)
4575 ;; Kiki builds fine with freeglut 3.0.0 but segfaults on start.
4576 ("freeglut" ,freeglut-2.8)
4577 ("sdl-union" ,(sdl-union (list sdl
4578 sdl-mixer
4579 sdl-image)))
4580 ("python" ,python-2)))
4581 (native-inputs
4582 `(("swig" ,swig)))
4583 (home-page "http://kiki.sourceforge.net/")
4584 (synopsis "3D puzzle game")
4585 (description "Kiki the nano bot is a 3D puzzle game. It is basically a
4586mixture of the games Sokoban and Kula-World. Your task is to help Kiki, a
4587small robot living in the nano world, repair its maker.")
4588 ;; See <http://metadata.ftp-master.debian.org/changelogs/main/k/
4589 ;; kiki-the-nano-bot/kiki-the-nano-bot_1.0.2+dfsg1-4_copyright>
4590 ;; for a statement from the author.
4591 (license license:public-domain)))
b77e3a1c
RW
4592
4593(define-public teeworlds
4594 (package
4595 (name "teeworlds")
4596 (version "0.6.4")
4597 (source (origin
4598 (method url-fetch)
4599 (uri (string-append "https://github.com/teeworlds/teeworlds/"
4600 "archive/" version "-release.tar.gz"))
4601 (file-name (string-append name "-" version ".tar.gz"))
4602 (sha256
4603 (base32
4604 "1mqhp6xjl75l49050cid36wxyjn1qr0vjx1c709dfg1lkvmgs6l3"))
4605 (modules '((guix build utils)))
4606 (snippet
4607 '(begin
4608 (for-each delete-file-recursively
4609 '("src/engine/external/wavpack/"
4610 "src/engine/external/zlib/"))
4611 #t))
4612 (patches
4613 (search-patches "teeworlds-use-latest-wavpack.patch"))))
4614 (build-system gnu-build-system)
4615 (arguments
4616 `(#:tests? #f ; no tests included
4617 #:phases
4618 (modify-phases %standard-phases
4619 (replace 'configure
4620 (lambda* (#:key outputs #:allow-other-keys)
4621 ;; Embed path to assets.
4622 (substitute* "src/engine/shared/storage.cpp"
4623 (("#define DATA_DIR.*")
4624 (string-append "#define DATA_DIR \""
4625 (assoc-ref outputs "out")
4626 "/share/teeworlds/data"
4627 "\"")))
4628
4629 ;; Bam expects all files to have a recent time stamp.
4630 (for-each (lambda (file)
4631 (utime file 1 1))
4632 (find-files "."))
4633
4634 ;; Do not use bundled libraries.
4635 (substitute* "bam.lua"
4636 (("if config.zlib.value == 1 then")
4637 "if true then")
4638 (("wavpack = .*")
4639 "wavpack = {}
4640settings.link.libs:Add(\"wavpack\")\n"))
4641 (substitute* "src/engine/client/sound.cpp"
4642 (("#include <engine/external/wavpack/wavpack.h>")
4643 "#include <wavpack/wavpack.h>"))
4644 #t))
4645 (replace 'build
4646 (lambda _
4647 (zero? (system* "bam" "-a" "-v" "release"))))
4648 (replace 'install
4649 (lambda* (#:key outputs #:allow-other-keys)
4650 (let* ((out (assoc-ref outputs "out"))
4651 (bin (string-append out "/bin"))
4652 (data (string-append out "/share/teeworlds/data")))
4653 (mkdir-p bin)
4654 (mkdir-p data)
4655 (for-each (lambda (file)
4656 (install-file file bin))
4657 '("teeworlds" "teeworlds_srv"))
4658 (copy-recursively "data" data)
4659 #t))))))
4660 ;; FIXME: teeworlds bundles the sources of "pnglite", a two-file PNG
4661 ;; library without a build system.
4662 (inputs
4663 `(("freetype" ,freetype)
4664 ("glu" ,glu)
4665 ("mesa" ,mesa)
4666 ("sdl-union" ,(sdl-union (list sdl
4667 sdl-mixer
4668 sdl-image)))
4669 ("wavpack" ,wavpack)
4670 ("zlib" ,zlib)))
4671 (native-inputs
4672 `(("bam" ,bam)
4673 ("python" ,python-2)))
4674 (home-page "https://www.teeworlds.com")
4675 (synopsis "2D retro multiplayer shooter game")
4676 (description "Teeworlds is an online multiplayer game. Battle with up to
467716 players in a variety of game modes, including Team Deathmatch and Capture
4678The Flag. You can even design your own maps!")
4679 (license license:bsd-3)))
e02f1663 4680
162a4a03
RW
4681(define-public enigma
4682 (package
4683 (name "enigma")
4684 (version "1.21")
4685 (source (origin
4686 (method url-fetch)
4687 (uri (string-append "mirror://sourceforge/enigma-game/"
4688 "Release%20" version "/enigma-"
4689 version ".tar.gz"))
4690 (sha256
4691 (base32
4692 "00ffh9pypj1948pg3q9sjp1nmiabh52p5c8wpg9n1dcfgl3cywnq"))))
4693 (build-system gnu-build-system)
4694 (arguments
4695 `(#:configure-flags
4696 (list "--with-system-enet")
4697 #:phases
4698 (modify-phases %standard-phases
4699 (add-after 'unpack 'find-sdl
4700 (lambda _
4701 (substitute* "configure"
4702 (("SDL_ttf.h") "SDL/SDL_ttf.h"))
4703 (substitute* '("tools/ttf2bmf.cc"
4704 "lib-src/enigma-core/ecl_font.cc"
4705 "lib-src/enigma-core/ecl_video.cc"
4706 "lib-src/enigma-core/ecl_buffer.hh"
4707 "src/SoundEngine.cc"
4708 "src/SoundEngine.hh"
4709 "src/MusicManager.cc"
4710 "src/MusicManager.hh"
4711 "src/d_models.cc"
4712 "src/main.cc"
4713 "src/network.cc")
4714 (("#include \"SDL_(image|ttf|mixer|types|syswm|mutex).h\"" line header)
4715 (string-append "#include \"SDL/SDL_" header ".h\"")))
4716 (substitute* "src/main.cc"
4717 (("#include <SDL_(image|ttf|mixer).h>" line header)
4718 (string-append "#include \"SDL/SDL_" header ".h\"")))
4719 #t)))))
4720 (inputs
4721 `(("xerces-c" ,xerces-c)
4722 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
4723 ("curl" ,curl)
4724 ("enet" ,enet)))
4725 (native-inputs
4726 `(("pkg-config" ,pkg-config)
4727 ("imagemagick" ,imagemagick)))
340978d7 4728 (home-page "https://www.nongnu.org/enigma")
162a4a03
RW
4729 (synopsis "Puzzle game with a dexterity component")
4730 (description "Enigma is a puzzle game with 550 unique levels. The object
4731of the game is to find and uncover pairs of identically colored ‘Oxyd’ stones.
4732Simple? Yes. Easy? Certainly not! Hidden traps, vast mazes, laser beams,
4733and most of all, countless hairy puzzles usually block your direct way to the
4734Oxyd stones. Enigma’s game objects (and there are hundreds of them, lest you
4735get bored) interact in many unexpected ways, and since many of them follow the
4736laws of physics (Enigma’s special laws of physics, that is), controlling them
4737with the mouse isn’t always trivial.")
4738 (license license:gpl2+)))
4739
e02f1663
RW
4740(define-public fillets-ng
4741 (package
4742 (name "fillets-ng")
4743 (version "1.0.1")
4744 (source (origin
4745 (method url-fetch)
4746 (uri (string-append "mirror://sourceforge/fillets/"
4747 "Fish%20Fillets%20-%20Next%20Generation/"
4748 version "/fillets-ng-" version ".tar.gz"))
4749 (sha256
4750 (base32
4751 "1nljp75aqqb35qq3x7abhs2kp69vjcj0h1vxcpdyn2yn2nalv6ij"))))
4752 (build-system gnu-build-system)
4753 (arguments
4754 `(#:configure-flags
4755 (list (string-append "--with-lua="
4756 (assoc-ref %build-inputs "lua")))
4757 #:make-flags
4758 (list (string-append "CFLAGS=-I"
4759 (assoc-ref %build-inputs "sdl-union")
4760 "/include/SDL")
4761 (string-append "CXXFLAGS=-I"
4762 (assoc-ref %build-inputs "sdl-union")
4763 "/include/SDL"))
4764 #:phases
4765 (modify-phases %standard-phases
4766 ;; Lua 5.1 does not provide it.
4767 (add-after 'unpack 'do-not-link-with-lualib
4768 (lambda _
4769 (substitute* "configure"
4770 (("-llualib") ""))
4771 #t))
4772 (add-after 'install 'install-data
4773 (lambda* (#:key inputs outputs #:allow-other-keys)
4774 (let ((data (string-append (assoc-ref outputs "out")
4775 "/share/games/fillets-ng")))
4776 (mkdir-p data)
4777 (zero? (system* "tar" "-xvf"
4778 (assoc-ref inputs "fillets-ng-data")
4779 "--strip-components=1"
4780 "-C" data))))))))
4781 (inputs
4782 `(("sdl-union" ,(sdl-union (list sdl
4783 sdl-mixer
4784 sdl-image
4785 sdl-ttf)))
4786 ("fribidi" ,fribidi)
4787 ("libx11" ,libx11)
4788 ("lua" ,lua-5.1)))
4789 (native-inputs
4790 `(("pkg-config" ,pkg-config)
4791 ("fillets-ng-data"
4792 ,(origin
4793 (method url-fetch)
4794 (uri (string-append "mirror://sourceforge/fillets/"
4795 "Fish%20Fillets%20-%20Next%20Generation/"
4796 version "/fillets-ng-data-" version ".tar.gz"))
4797 (sha256
4798 (base32
4799 "169p0yqh2gxvhdilvjc2ld8aap7lv2nhkhkg4i1hlmgc6pxpkjgh"))))))
4800 (home-page "http://fillets.sourceforge.net/")
4801 (synopsis "Puzzle game")
4802 (description "Fish Fillets NG is strictly a puzzle game. The goal in
4803every of the seventy levels is always the same: find a safe way out. The fish
4804utter witty remarks about their surroundings, the various inhabitants of their
4805underwater realm quarrel among themselves or comment on the efforts of your
4806fish. The whole game is accompanied by quiet, comforting music.")
4807 (license license:gpl2+)))
dd37a545 4808
4809(define-public crawl
4810 (package
4811 (name "crawl")
a6542e96 4812 (version "0.21.0")
dd37a545 4813 (source
4814 (origin
4815 (method url-fetch)
4816 (uri (list
4817 ;; Older releases get moved into a versioned directory
4818 (string-append "http://crawl.develz.org/release/"
4819 (version-major+minor version) "/stone_soup-"
4820 version "-nodeps.tar.xz")
4821 ;; Only the latest release is in this directory
4822 (string-append "http://crawl.develz.org/release/stone_soup-"
4823 version "-nodeps.tar.xz")))
4824 (sha256
4825 (base32
a6542e96 4826 "0mmnkch8s9l7dh136yjvcyjr0vmyzv7z370rlcyir91qz6gg82n1"))
1243aaac 4827 (patches (search-patches "crawl-upgrade-saves.patch"))))
dd37a545 4828 (build-system gnu-build-system)
4829 (inputs
4830 `(("lua51" ,lua-5.1)
4831 ("ncurses" ,ncurses)
4832 ("sqlite" ,sqlite)
4833 ("zlib" ,zlib)))
4834 (native-inputs
4835 `(("bison" ,bison)
4836 ("flex" ,flex)
4837 ("perl" ,perl)
4838 ("pkg-config" ,pkg-config)))
4839 (arguments
4840 '(#:make-flags
4841 (let* ((sqlite (assoc-ref %build-inputs "sqlite"))
4842 (out (assoc-ref %outputs "out")))
4843 (list (string-append "SQLITE_INCLUDE_DIR=" sqlite "/include")
4844 (string-append "prefix=" out)
4845 "SAVEDIR=~/.crawl"
dd37a545 4846 ;; don't build any bundled dependencies
4847 "BUILD_LUA="
4848 "BUILD_SQLITE="
4849 "BUILD_ZLIB="
4850 "-Csource"))
4851 #:phases
4852 (modify-phases %standard-phases
4853 (delete 'configure)
4854 (delete 'check)
4855 ;; Test cases require the source to be rebuild with the -DDEBUG define.
4856 ;; Do 'check before 'build to avoid a 3rd build on make install.
4857 (add-before 'build 'check
4858 (lambda* (#:key inputs outputs make-flags #:allow-other-keys)
4859 (setenv "HOME" (getcwd))
4860 ;; Fake a terminal for the test cases.
4861 (setenv "TERM" "xterm-256color")
4862 (zero? (apply system* "make" "debug" "test"
4863 (format #f "-j~d" (parallel-job-count))
ae548434 4864 ;; Force command line build for test cases.
4865 (append make-flags '("GAME=crawl" "TILES=")))))))))
dd37a545 4866 (synopsis "Roguelike dungeon crawler game")
4867 (description "Dungeon Crawl Stone Soup is a roguelike adventure through
4868dungeons filled with dangerous monsters in a quest to find the mystifyingly
4869fabulous Orb of Zot.")
4870 (home-page "https://crawl.develz.org")
4871 (license (list license:gpl2+
4872 license:bsd-2
4873 license:bsd-3
4874 license:cc0
4875 license:expat
4876 license:zlib
4877 license:asl2.0))))
cae491ab 4878
1243aaac 4879;; The linter here claims that patch file names should start with the package
4880;; name. But, in this case, the patches are inherited from crawl with the
4881;; "crawl-" prefix instead of "crawl-tiles-".
ae548434 4882(define-public crawl-tiles
4883 (package
4884 (inherit crawl)
4885 (name "crawl-tiles")
4886 (arguments
4887 (substitute-keyword-arguments
4888 (package-arguments crawl)
4889 ((#:make-flags flags)
4890 `(let ((dejavu (assoc-ref %build-inputs "font-dejavu")))
4891 (cons*
4892 (string-append "PROPORTIONAL_FONT=" dejavu
4893 "/share/fonts/truetype/DejaVuSans.ttf")
4894 (string-append "MONOSPACED_FONT=" dejavu
4895 "/share/fonts/truetype/DejaVuSansMono.ttf")
4896 "TILES=y"
4897 ;; Rename the executable to allow parallel installation with crawl.
4898 "GAME=crawl-tiles"
4899 ,flags)))))
4900 (inputs
4901 `(,@(package-inputs crawl)
4902 ("font-dejavu" ,font-dejavu)
4903 ("freetype6" ,freetype)
4904 ("glu" ,glu)
4905 ("libpng" ,libpng)
4906 ("sdl2" ,sdl2)
4907 ("sdl2-image" ,sdl2-image)
4908 ("sdl2-mixer" ,sdl2-mixer)))
4909 (native-inputs
4910 `(,@(package-native-inputs crawl)
6438a468 4911 ("pngcrush" ,pngcrush)
ae548434 4912 ("which" ,which)))
4913 (synopsis "Graphical roguelike dungeon crawler game")))
4914
cae491ab
JL
4915(define-public lugaru
4916 (package
4917 (name "lugaru")
4918 (version "1.2")
4919 (source (origin
4920 (method url-fetch)
4921 (uri (string-append "https://bitbucket.org/osslugaru/lugaru/downloads/"
4922 name "-" version ".tar.xz"))
4923 (sha256
4924 (base32
4925 "15zgcshy22q51rm72zi6y9z7qlgnz5iw3gczjdlir4bqmxy4gspk"))))
4926 (build-system cmake-build-system)
4927 (arguments
4928 `(#:configure-flags
4929 (list "-DSYSTEM_INSTALL=ON")
4930 ;; no test target
4931 #:tests? #f))
4932 (native-inputs
4933 `(("pkg-config" ,pkg-config)))
4934 (inputs
4935 `(("sdl2" ,sdl2)
4936 ("glu" ,glu)
4937 ("libjpeg" ,libjpeg-turbo)
4938 ("libpng" ,libpng)
4939 ("openal" ,openal)
4940 ("vorbis" ,libvorbis)
4941 ("zlib" ,zlib)))
4942 (home-page "https://osslugaru.gitlab.io")
4943 (synopsis "Cross-platform third-person action game")
4944 (description "Lugaru is a third-person action game. The main character,
4945Turner, is an anthropomorphic rebel bunny rabbit with impressive combat skills.
4946In his quest to find those responsible for slaughtering his village, he uncovers
4947a far-reaching conspiracy involving the corrupt leaders of the rabbit republic
4948and the starving wolves from a nearby den. Turner takes it upon himself to
4949fight against their plot and save his fellow rabbits from slavery.")
4950 (license (list license:gpl2+ ; code
4951 ;; assets:
4952 license:cc-by-sa3.0
4953 license:cc-by-sa4.0))))
bff33e6c
CL
4954
4955(define-public 0ad-data
4956 (package
4957 (name "0ad-data")
9bb47d7d 4958 (version "0.0.22-alpha")
bff33e6c
CL
4959 (source
4960 (origin
4961 (method url-fetch)
4962 (uri (string-append "http://releases.wildfiregames.com/0ad-"
4963 version "-unix-data.tar.xz"))
4964 (file-name (string-append name "-" version ".tar.xz"))
4965 (sha256
4966 (base32
9bb47d7d 4967 "0vknk9ay9h2p34r7mym2g066f3s3c5d5vmap0ckcs5b86h5cscjc"))
bff33e6c
CL
4968 (modules '((guix build utils)))
4969 (snippet
4970 #~(begin
4971 (for-each
4972 (lambda (name)
4973 (let* ((dir (string-append "binaries/data/mods/" name))
4974 (file (string-append dir "/" name ".zip"))
4975 (unzip #$(file-append unzip "/bin/unzip")))
4976 (system* unzip "-d" dir file)
4977 (delete-file file)))
4978 '("mod" "public"))
4979 #t))))
4980 (build-system trivial-build-system)
4981 (native-inputs `(("tar" ,tar)
4982 ("xz" ,xz)))
4983 (arguments
4984 `(#:modules ((guix build utils))
4985 #:builder
4986 (begin
4987 (use-modules (guix build utils))
4988 (let ((out (assoc-ref %outputs "out"))
4989 (source (assoc-ref %build-inputs "source"))
4990 (tar (string-append (assoc-ref %build-inputs "tar") "/bin/tar"))
4991 (xz-path (string-append (assoc-ref %build-inputs "xz") "/bin")))
4992 (setenv "PATH" xz-path)
4993 (mkdir out)
4994 (zero? (system* tar "xvf" source "-C" out "--strip=3"))))))
4995 (synopsis "Data files for 0ad")
4996 (description "0ad-data provides the data files required by the game 0ad.")
4997 (home-page "https://play0ad.com")
4998 (license (list (license:fsdg-compatible
4999 "http://tavmjong.free.fr/FONTS/ArevCopyright.txt"
5000 (license:license-comment
5001 (package-license font-bitstream-vera)))
5002 (package-license font-bitstream-vera)
5003 license:cc-by-sa3.0
5004 license:expat
5005 license:gfl1.0
5006 license:gpl2+
5007 license:gpl3+))))
5008
5009(define-public 0ad
5010 (package
5011 (name "0ad")
9bb47d7d 5012 (version "0.0.22-alpha")
bff33e6c
CL
5013 (source
5014 (origin
5015 (method url-fetch)
5016 (uri (string-append "http://releases.wildfiregames.com/0ad-"
5017 version "-unix-build.tar.xz"))
5018 (file-name (string-append name "-" version ".tar.xz"))
5019 (sha256
5020 (base32
9bb47d7d 5021 "1cgmr4g5g9wv36v7ylbrvqhsjwgcsdgbqwc8zlqmnayk9zgkdpgx"))
bff33e6c
CL
5022 ;; A snippet here would cause a build failure because of timestamps
5023 ;; reset. See https://bugs.gnu.org/26734.
5024 ))
5025 (inputs
5026 `(("0ad-data" ,0ad-data)
5027 ("curl" ,curl)
5028 ("enet" ,enet)
5029 ("gloox" ,gloox)
5030 ("icu4c" ,icu4c)
5031 ("libpng" ,libpng)
5032 ("libvorbis" ,libvorbis)
5033 ("libxcursor" ,libxcursor)
5034 ("libxml2" ,libxml2)
5035 ("miniupnpc" ,miniupnpc)
5036 ("mozjs-38" ,mozjs-38)
5037 ("openal" ,openal)
5038 ("sdl2" ,sdl2)
5039 ("wxwidgets" ,wxwidgets)
5040 ("zlib" ,zlib)))
5041 (native-inputs
5042 `(("boost" ,boost)
5043 ("cmake" ,cmake)
5044 ("mesa" ,mesa)
5045 ("pkg-config" ,pkg-config)
5046 ("python-2" ,python-2)))
5047 (build-system gnu-build-system)
5048 (arguments
809b8842
CB
5049 `(#:make-flags '("config=release" "verbose=1" "-C" "build/workspaces/gcc")
5050 #:phases
bff33e6c
CL
5051 (modify-phases %standard-phases
5052 (add-after 'unpack 'delete-bundles
5053 (lambda _
5054 (delete-file-recursively "libraries/source/spidermonkey")
5055 #t))
5056 (add-after 'unpack 'fix-x11-includes
5057 (lambda _
5058 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5059 (("<Xlib.h>") "<X11/Xlib.h>"))
5060 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5061 (("<Xatom.h>") "<X11/Xatom.h>"))
5062 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5063 (("<Xcursor/Xcursor.h>") "<X11/Xcursor/Xcursor.h>"))
5064 #t))
5065 (replace 'configure
5066 (lambda* (#:key inputs outputs #:allow-other-keys)
5067 (let* ((jobs (number->string (parallel-job-count)))
5068 (out (assoc-ref outputs "out"))
5069 (lib (string-append out "/lib"))
5070 (data (string-append out "/share/0ad")))
5071 (setenv "JOBS" (string-append "-j" jobs))
5072 (setenv "CC" "gcc")
5073 (with-directory-excursion "build/workspaces"
5074 (zero? (system* "./update-workspaces.sh"
5075 (string-append "--libdir=" lib)
5076 (string-append "--datadir=" data)
bff33e6c
CL
5077 ;; TODO: "--with-system-nvtt"
5078 "--with-system-mozjs38"))))))
bff33e6c
CL
5079 (delete 'check)
5080 (replace 'install
5081 (lambda* (#:key inputs outputs #:allow-other-keys)
809b8842 5082 (chdir "binaries")
bff33e6c
CL
5083 (let* ((out (assoc-ref outputs "out"))
5084 (bin (string-append out "/bin"))
5085 (lib (string-append out "/lib"))
5086 (data (string-append out "/share/0ad"))
5087 (applications (string-append out "/share/applications"))
5088 (pixmaps (string-append out "/share/pixmaps"))
5089 (0ad-data (assoc-ref inputs "0ad-data")))
5090 ;; data
5091 (copy-recursively "data" data)
5092 (for-each (lambda (file)
5093 (symlink (string-append 0ad-data "/" file)
5094 (string-append data "/" file)))
5095 '("config" "mods/mod" "mods/public" "tools"))
5096 ;; libraries
5097 (for-each (lambda (file)
5098 (install-file file lib))
5099 (find-files "system" "\\.so$"))
5100 ;; binaries
5101 (install-file "system/pyrogenesis" bin)
5102 (with-directory-excursion bin
5103 (symlink "pyrogenesis" "0ad"))
5104 ;; resources
5105 (with-directory-excursion "../build/resources"
5106 (install-file "0ad.desktop" applications)
5107 (install-file "0ad.png" pixmaps))
5108 #t)))
5109 (add-after 'install 'check
5110 (lambda _
5111 (with-directory-excursion "system"
5112 (zero? (system* "./test"))))))))
5113 (home-page "https://play0ad.com")
5114 (synopsis "3D real-time strategy game of ancient warfare")
5115 (description "0 A.D. is a real-time strategy (RTS) game of ancient
5116warfare. It's a historically-based war/economy game that allows players to
5117relive or rewrite the history of twelve ancient civilizations, each depicted
5118at their peak of economic growth and military prowess.
5119
51200ad needs a window manager that supports 'Extended Window Manager Hints'.")
5121 (license (list license:bsd-2
5122 license:bsd-3
5123 license:expat
5124 license:gpl2+
5125 license:ibmpl1.0
5126 license:isc
5127 license:lgpl2.1
5128 license:lgpl3
5129 license:mpl2.0
5130 license:zlib))))
dec63df4 5131
5132;; There have been no official releases.
5133(define-public open-adventure
be6e2c30 5134 (let* ((commit "d43854f0f6bb8e9eea7fbce80348150e7e7fc34d")
5135 (revision "2"))
dec63df4 5136 (package
5137 (name "open-adventure")
5138 (version (string-append "2.5-" revision "." (string-take commit 7)))
5139 (source (origin
5140 (method git-fetch)
5141 (uri (git-reference
5142 (url "https://gitlab.com/esr/open-adventure")
5143 (commit commit)))
5144 (file-name (string-append name "-" version "-checkout"))
5145 (sha256
5146 (base32
be6e2c30 5147 "08bwrvf4axb1rsfd6ia1fddsky9pc1p350vjskhaakg2czc6dsk0"))))
dec63df4 5148 (build-system gnu-build-system)
5149 (arguments
5150 `(#:make-flags (list "CC=gcc")
5151 #:parallel-build? #f ; not supported
5152 #:phases
5153 (modify-phases %standard-phases
be6e2c30 5154 (replace 'configure
5155 (lambda* (#:key inputs outputs #:allow-other-keys)
6b1c3efa 5156 ;; Linenoise is meant to be included, so we have to
5157 ;; copy it into the working directory.
be6e2c30 5158 (let* ((linenoise (assoc-ref inputs "linenoise"))
5159 (noisepath (string-append linenoise "/include/linenoise"))
5160 (out (assoc-ref outputs "out")))
5161 (copy-recursively noisepath "linenoise"))
5162 #t))
dec63df4 5163 (add-before 'build 'use-echo
5164 (lambda _
5165 (substitute* "tests/Makefile"
5166 (("/bin/echo") (which "echo")))
5167 #t))
5168 (add-after 'build 'build-manpage
5169 (lambda _
5170 ;; This target is missing a dependency
5171 (substitute* "Makefile"
be6e2c30 5172 ((".adoc.6:" line)
5173 (string-append line " advent.adoc")))
5174 (zero? (system* "make" ".adoc.6"))))
dec63df4 5175 ;; There is no install target
5176 (replace 'install
5177 (lambda* (#:key outputs #:allow-other-keys)
5178 (let* ((out (assoc-ref outputs "out"))
5179 (bin (string-append out "/bin"))
5180 (man (string-append out "/share/man/man6")))
5181 (install-file "advent" bin)
5182 (install-file "advent.6" man))
5183 #t)))))
5184 (native-inputs
be6e2c30 5185 `(("asciidoc" ,asciidoc)
5186 ("linenoise" ,linenoise)
5187 ("python" ,python)
5188 ("python-pyyaml" ,python-pyyaml)))
dec63df4 5189 (home-page "https://gitlab.com/esr/open-adventure")
5190 (synopsis "Colossal Cave Adventure")
5191 (description "The original Colossal Cave Adventure from 1976 was the
5192origin of all text adventures, dungeon-crawl (computer) games, and
5193computer-hosted roleplaying games. This is the last version released by
5194Crowther & Woods, its original authors, in 1995. It has been known as
5195\"adventure 2.5\" and \"430-point adventure\".")
5196 (license license:bsd-2))))
1f88f189
OP
5197
5198(define-public tome4
5199 (package
5200 (name "tome4")
5201 (version "1.5.5")
5202 (synopsis "Single-player, RPG roguelike game set in the world of Eyal")
5203 (source
5204 (origin
5205 (method url-fetch)
5206 (uri (string-append "https://te4.org/dl/t-engine/t-engine4-src-"
5207 version ".tar.bz2"))
5208 (sha256
5209 (base32
5210 "0v2qgdfpvdzd1bcbp9v8pfahj1bgczsq2d4xfhh5wg11jgjcwz03"))
5211 (modules '((guix build utils)))
5212 (snippet
53ac6977
OP
5213 '(substitute* '("src/music.h" "src/tSDL.h")
5214 (("#elif defined(__FreeBSD__)" line)
5215 (string-append
5216 line " || defined(__GNUC__)"))))))
1f88f189
OP
5217 (build-system gnu-build-system)
5218 (native-inputs
5219 `(("unzip" ,unzip)))
5220 (inputs
5221 `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
5222 ("glu" ,glu)
5223 ("premake4" ,premake4)
5224 ("openal" ,openal)
5225 ("vorbis" ,libvorbis)
5226 ("luajit" ,luajit)))
5227 (arguments
5228 `(#:make-flags '("CC=gcc" "config=release")
5229 #:phases (modify-phases %standard-phases
5230 (replace 'configure
5231 (lambda _
5232 (zero? (system* "premake4" "gmake"))
5233 #t))
5234 (add-after 'set-paths 'set-sdl-paths
5235 (lambda* (#:key inputs #:allow-other-keys)
5236 (setenv "CPATH"
5237 (string-append (assoc-ref inputs "sdl-union")
5238 "/include/SDL2"))
5239 #t))
5240 (delete 'check)
5241 ;; premake doesn't provide install target
5242 (replace 'install
5243 (lambda* (#:key inputs outputs #:allow-other-keys)
5244 (let* ((out (assoc-ref outputs "out"))
5245 (usr (string-append out "/usr"))
5246 (bin (string-append out "/bin"))
5247 (licenses (string-append out "/share/licenses"))
5248 (documents (string-append out "/share/doc"))
5249 (pixmaps (string-append out "/share/pixmaps"))
5250 (icon "te4-icon.png")
5251 (data (string-append out "/share/" ,name))
5252 (applications (string-append
5253 out "/share/applications"))
5254 (unzip (string-append
5255 (assoc-ref inputs "unzip") "/bin/unzip"))
5256 (wrapper (string-append bin "/" ,name)))
5257 ;; icon
5258 (mkdir-p pixmaps)
5259 (system* unzip "-j"
5260 (string-append
5261 "game/engines/te4-" ,version ".teae")
5262 (string-append
5263 "data/gfx/" icon) "-d" pixmaps)
5264 ;; game executable
5265 (install-file "t-engine" data)
5266 (mkdir-p bin)
5267 (with-output-to-file wrapper
5268 (lambda ()
5269 (display
5270 (string-append
5271 "#!/bin/sh\n"
5272 ;; No bootstrap code found,
5273 ;; defaulting to working directory
5274 ;; for engine code!
5275 "cd " data "\n"
5276 "exec -a tome4 ./t-engine \"$@\"\n"))))
5277 (chmod wrapper #o555)
5278 ;; licenses
5279 (for-each (lambda (file)
5280 (install-file file licenses))
5281 '("COPYING" "COPYING-MEDIA"))
5282 ;; documents
5283 (for-each (lambda (file)
5284 (install-file file documents))
5285 '("CONTRIBUTING" "CREDITS"))
5286 ;; data
5287 (copy-recursively "bootstrap" (string-append
5288 data "/bootstrap"))
5289 (copy-recursively "game" (string-append data "/game"))
5290 ;; launcher
5291 (mkdir-p applications)
5292 (with-output-to-file (string-append applications "/"
5293 ,name ".desktop")
5294 (lambda ()
5295 (display
5296 (string-append
5297 "[Desktop Entry]
5298Name=ToME4
5299Comment=" ,synopsis "\n"
5300"Exec=" ,name "\n"
5301"Icon=" icon "\n"
5302"Terminal=false
5303Type=Application
5304Categories=Game;RolePlaying;\n")))))
5305 #t)))))
5306 (home-page "https://te4.org")
5307 (description "Tales of Maj’Eyal (ToME) RPG, featuring tactical turn-based
5308combat and advanced character building. Play as one of many unique races and
5309classes in the lore-filled world of Eyal, exploring random dungeons, facing
5310challenging battles, and developing characters with your own tailored mix of
5311abilities and powers. With a modern graphical and customisable interface,
5312intuitive mouse control, streamlined mechanics and deep, challenging combat,
5313Tales of Maj’Eyal offers engaging roguelike gameplay for the 21st century.")
5314 (license license:gpl3+)))
7a070f02 5315
5316(define-public quakespasm
5317 (package
5318 (name "quakespasm")
5319 (version "0.93.0")
5320 (source
5321 (origin
5322 (method url-fetch)
5323 (uri (string-append "mirror://sourceforge/quakespasm/Source/quakespasm-"
5324 version ".tgz"))
5325 (sha256
5326 (base32
5327 "0b2nz7w4za32pc34r62ql270z692qcjs2pm0i3svkxkvfammhdfq"))))
5328 (arguments
5329 `(#:tests? #f
5330 #:make-flags '("CC=gcc"
5331 "MP3LIB=mpg123"
5332 "USE_CODEC_FLAC=1"
5333 "USE_CODEC_MIKMOD=1"
5334 "USE_SDL2=1"
5335 "-CQuake")
5336 #:phases (modify-phases %standard-phases
5337 (delete 'configure)
5338 (add-after 'unpack 'fix-makefile-paths
5339 (lambda* (#:key outputs #:allow-other-keys)
5340 (let ((out (assoc-ref outputs "out")))
5341 (mkdir-p (string-append out "/bin"))
5342 (substitute* "Quake/Makefile"
5343 (("/usr/local/games")
5344 (string-append out "/bin")))
5345 #t))))))
5346 (build-system gnu-build-system)
5347 (inputs `(("libmikmod" ,libmikmod)
5348 ("libvorbis" ,libvorbis)
5349 ("flac" ,flac)
5350 ("mesa" ,mesa)
5351 ("mpg123" ,mpg123)
5352 ("sdl2" ,sdl2)))
5353 (synopsis "First person shooter engine for Quake 1")
5354 (description "Quakespasm is a modern engine for id software's Quake 1.
5355It includes support for 64 bit CPUs, custom music playback, a new sound driver,
5356some graphical niceities, and numerous bug-fixes and other improvements.")
5357 (home-page "http://quakespasm.sourceforge.net/")
5358 (license license:gpl2+)))
916bb947 5359
5360(define-public yamagi-quake2
5361 (package
5362 (name "yamagi-quake2")
5363 (version "7.10")
5364 (source
5365 (origin
5366 (method url-fetch)
5367 (uri (string-append "https://deponie.yamagi.org/quake2/quake2-"
5368 version ".tar.xz"))
5369 (sha256
5370 (base32
5371 "0psinbg25mysd58k99s1n34w31w5hj1vppb39gdjb0zqi6sl6cps"))))
5372 (build-system gnu-build-system)
5373 (arguments
5374 `(#:tests? #f
5375 #:make-flags
5376 (list "CC=gcc"
5377 ;; link openAL instead of using dlopen at runtime
5378 "DLOPEN_OPENAL=\"no\""
5379 ;; an optional directory where it will look for quake2 data files
5380 ;; in addition to the current working directory
5381 "WITH_SYSTEMWIDE=yes"
5382 "WITH_SYSTEMDIR=\"/opt/quake2\"")
5383 #:phases
5384 (modify-phases %standard-phases
5385 (delete 'configure)
5386 (replace 'install
5387 (lambda* (#:key outputs #:allow-other-keys)
5388 (let ((out (assoc-ref outputs "out")))
5389 (mkdir-p (string-append out "/lib"))
5390 (mkdir-p (string-append out "/bin"))
5391 ;; The yamagi-quake2 binary must be in the same directory
5392 ;; as it's engine libraries, but symlinking it to /bin is okay
5393 ;; https://github.com/yquake2/yquake2/blob/master/stuff/packaging.md
5394 (copy-recursively "release"
5395 (string-append out "/lib/yamagi-quake2"))
5396 (symlink (string-append out "/lib/yamagi-quake2/quake2")
5397 (string-append out "/bin/yamagi-quake2"))
5398 (symlink (string-append out "/lib/yamagi-quake2/q2ded")
5399 (string-append out "/bin/yamagi-q2ded"))))))))
5400 (inputs `(("sdl2" ,sdl2)
5401 ("mesa" ,mesa)
5402 ("libvorbis" ,libvorbis)
5403 ("zlib" ,zlib)
5404 ("openal" ,openal)))
5405 (native-inputs `(("pkg-config" ,pkg-config)))
5406 (synopsis "First person shooter engine based on quake2")
5407 (description "Yamagi Quake II is an enhanced client for id Software's Quake II.
5408The main focus is an unchanged single player experience like back in 1997,
5409thus the gameplay and the graphics are unaltered. However the user may use one
5410of the unofficial retexturing packs. In comparison with the official client,
5411over 1000 bugs were fixed and an extensive code audit done,
5412making Yamagi Quake II one of the most solid Quake II implementations available.")
5413 (home-page "https://www.yamagi.org/quake2/")
5414 (license (list license:gpl2+ ; game and server
5415 (license:non-copyleft ; info-zip
5416 "file://LICENSE"
5417 "See Info-Zip section.")
5418 license:public-domain)))) ; stb
c1228231
NG
5419
5420(define-public the-butterfly-effect
5421 (package
5422 (name "the-butterfly-effect")
5423 (version "0.9.3.1")
5424 (source
5425 (origin
5426 (method url-fetch)
5427 (uri (string-append
5428 "https://github.com/the-butterfly-effect/tbe/archive/"
5429 "v" version ".tar.gz"))
5430 (file-name (string-append name "-" version ".tar.gz"))
5431 (sha256
5432 (base32
5433 "18qkp7fgdvyl3haqqa693mgyic7afsznsxgz98z9wn4csaqxsnby"))))
5434 (build-system gnu-build-system)
5435 (arguments
5436 `(#:phases
5437 (modify-phases %standard-phases
5438 (delete 'configure)
5439 ;; There is no "install" phase. By default, tbe is installed
5440 ;; in the build directory. Provide our own installation.
5441 (replace 'install
5442 (lambda* (#:key outputs #:allow-other-keys)
5443 (let* ((out (assoc-ref outputs "out"))
5444 (bin (string-append out "/bin"))
5445 (share (string-append out "/share")))
5446 (install-file "usr/games/tbe" bin)
5447 (mkdir-p share)
5448 (copy-recursively "usr/share" share)
5449 #t))))
5450 ;; Test suite requires a running Xorg server. Even when
5451 ;; provided, it fails with "D-Bus library appears to be
5452 ;; incorrectly set up; failed to read machine uuid: Failed to
5453 ;; open "/etc/machine-id": No such file or directory" along
5454 ;; with multiple "QPainter:: ... Painter not active" warnings.
5455 #:tests? #f))
5456 (inputs
5457 `(("qtbase" ,qtbase)
5458 ("qtsvg" ,qtsvg)))
5459 (native-inputs
5460 `(("cmake" ,cmake)
5461 ("gettext-minimal" ,gettext-minimal)
5462 ("qttools" ,qttools)))
5463 (synopsis "Realistic physics puzzle game")
5464 (description "The Butterfly Effect (tbe) is a game that uses
5465realistic physics simulations to combine lots of simple mechanical
5466elements to achieve a simple goal in the most complex way possible.")
5467 (home-page "http://the-butterfly-effect.org/")
5468 ;; Main license is GPL2-only. However, artwork is distributed
5469 ;; under various licenses, listed here.
5470 (license (list license:gpl2 license:public-domain license:expat
5471 license:cc-by-sa3.0 license:gpl3+ license:wtfpl2))))
aac1aa75
EB
5472
5473(define-public pioneer
5474 (package
5475 (name "pioneer")
5476 (version "20171001")
5477 (source (origin
5478 (method url-fetch)
5479 (uri (string-append "https://github.com/pioneerspacesim/pioneer/"
5480 "archive/" version ".tar.gz"))
5481 (file-name (string-append name "-" version ".tar.gz"))
5482 (sha256
5483 (base32
5484 "1nxhx22swfqq6lfvcnpfm31wig3sjv5pp0rslj79nbxc7nyihh8m"))))
5485 (build-system gnu-build-system)
5486 (native-inputs
5487 `(("autoconf" ,autoconf)
5488 ("automake" ,automake)
5489 ("pkg-config" ,pkg-config)))
5490 (inputs
5491 `(("assimp" ,assimp)
5492 ("curl" ,curl)
5493 ("freetype" ,freetype)
5494 ("glu" ,glu)
5495 ("libpng" ,libpng)
5496 ("libsigc++" ,libsigc++)
5497 ("libvorbis" ,libvorbis)
5498 ("lua" ,lua-5.2) ;not compatible with 5.3
5499 ("mesa" ,mesa)
5500 ("sdl" ,(sdl-union (list sdl2 sdl2-image)))))
5501 (arguments
5502 `(#:tests? #f ;tests are broken
5503 #:configure-flags (list "--with-external-liblua"
5504 (string-append "PIONEER_DATA_DIR="
5505 %output "/share/games/pioneer"))
5506 #:phases (modify-phases %standard-phases
5507 (add-after 'unpack 'bootstrap
5508 (lambda _ (zero? (system* "sh" "bootstrap"))))
5509 (add-before 'bootstrap 'fix-lua-check
5510 (lambda _
5511 (substitute* "configure.ac"
5512 (("lua5.2")
5513 (string-append "lua-" ,(version-major+minor
5514 (package-version lua-5.2))))))))))
5515 (home-page "http://pioneerspacesim.net")
5516 (synopsis "Game of lonely space adventure")
5517 (description
5518 "Pioneer is a space adventure game set in our galaxy at the turn of the
551931st century. The game is open-ended, and you are free to eke out whatever
5520kind of space-faring existence you can think of. Look for fame or fortune by
5521exploring the millions of star systems. Turn to a life of crime as a pirate,
5522smuggler or bounty hunter. Forge and break alliances with the various
5523factions fighting for power, freedom or self-determination. The universe is
5524whatever you make of it.")
5525 (license license:gpl3)))
57f9671d 5526
5527(define-public badass
5528 (let ((commit "3c3cd669b4fc8f73a102e3702788f7b28dc47dbb")
5529 (revision "0"))
5530 (package
5531 (name "badass")
5532 (version (git-version "0.0" revision commit))
5533 (source (origin
5534 (method git-fetch)
5535 (uri (git-reference
5536 (url "https://github.com/umayr/badass.git")
5537 (commit commit)))
5538 (file-name (git-file-name name version))
5539 (sha256
5540 (base32
5541 "05c9vdcb5ym3z0n5ll3v39mw4yl9jcjnlydmn0yl89ai9pv71zb6"))))
5542 (build-system go-build-system)
5543 (arguments
5544 '(#:import-path "github.com/umayr/badass"))
5545 (synopsis "Hacking contribution graphs in git")
5546 (description
5547 "Badass generates false commits for a range of dates, essentially
5548hacking the gamification of contribution graphs on platforms such as
5549Github or Gitlab.")
5550 (home-page "https://github.com/umayr/badass")
5551 (license license:expat))))