You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
10157 lines
403 KiB
10157 lines
403 KiB
;;; GNU Guix --- Functional package management for GNU
|
|
;;; Copyright © 2013 John Darrington <jmd@gnu.org>
|
|
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
|
|
;;; Copyright © 2014, 2016 David Thompson <dthompson2@worcester.edu>
|
|
;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020 Eric Bavier <bavier@posteo.net>
|
|
;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com>
|
|
;;; Copyright © 2014 Sylvain Beucler <beuc@beuc.net>
|
|
;;; Copyright © 2014, 2015, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
|
|
;;; Copyright © 2014, 2015, 2016 Sou Bunnbu <iyzsong@gmail.com>
|
|
;;; Copyright © 2014, 2015, 2019 Mark H Weaver <mhw@netris.org>
|
|
;;; Copyright © 2015, 2016 Andreas Enge <andreas@enge.fr>
|
|
;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
|
|
;;; Copyright © 2015, 2017, 2018 Christopher Lemmer Webber <cwebber@dustycloud.org>
|
|
;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
|
|
;;; Copyright © 2015, 2016, 2017 Alex Kost <alezost@gmail.com>
|
|
;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
|
|
;;; Copyright © 2016, 2017 Rodger Fox <thylakoid@openmailbox.org>
|
|
;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is>
|
|
;;; Copyright © 2016 Albin Söderqvist <albin@fripost.org>
|
|
;;; Copyright © 2016, 2017, 2018, 2019 Kei Kebreau <kkebreau@posteo.net>
|
|
;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
|
|
;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
|
|
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
|
|
;;; Copyright © 2016 Steve Webber <webber.sl@gmail.com>
|
|
;;; Copyright © 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@hyperbola.info>
|
|
;;; Copyright © 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
|
|
;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
|
|
;;; Copyright © 2017, 2019 nee <nee-git@hidamari.blue>
|
|
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
|
|
;;; Copyright © 2017, 2019 Marius Bakke <mbakke@fastmail.com>
|
|
;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
|
|
;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
|
|
;;; Copyright © 2017, 2018, 2019, 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
|
|
;;; Copyright © 2018 okapi <okapi@firemail.cc>
|
|
;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
|
|
;;; Copyright © 2018 Madalin Ionel-Patrascu <madalinionel.patrascu@mdc-berlin.de>
|
|
;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net>
|
|
;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
|
|
;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
|
|
;;; Copyright © 2019, 2020 Oleg Pykhalov <go.wigust@gmail.com>
|
|
;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
|
|
;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
|
|
;;; Copyright © 2019 Jesse Gibbons <jgibbons2357+guix@gmail.com>
|
|
;;; Copyright © 2019 Dan Frumin <dfrumin@cs.ru.nl>
|
|
;;; Copyright © 2019, 2020 Guillaume Le Vaillant <glv@posteo.net>
|
|
;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar@araneo.si>
|
|
;;; Copyright © 2019 Josh Holland <josh@inv.alid.pw>
|
|
;;; Copyright © 2017, 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
|
|
;;;
|
|
;;; This file is part of GNU Guix.
|
|
;;;
|
|
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
|
;;; under the terms of the GNU General Public License as published by
|
|
;;; the Free Software Foundation; either version 3 of the License, or (at
|
|
;;; your option) any later version.
|
|
;;;
|
|
;;; GNU Guix is distributed in the hope that it will be useful, but
|
|
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
;;; GNU General Public License for more details.
|
|
;;;
|
|
;;; You should have received a copy of the GNU General Public License
|
|
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
(define-module (gnu packages games)
|
|
#:use-module (ice-9 match)
|
|
#:use-module ((guix licenses) #:prefix license:)
|
|
#:use-module (guix utils)
|
|
#:use-module (guix packages)
|
|
#:use-module (guix download)
|
|
#:use-module (guix git-download)
|
|
#:use-module (guix svn-download)
|
|
#:use-module (guix gexp)
|
|
#:use-module (gnu packages)
|
|
#:use-module (gnu packages algebra)
|
|
#:use-module (gnu packages autotools)
|
|
#:use-module (gnu packages backup)
|
|
#:use-module (gnu packages base)
|
|
#:use-module (gnu packages build-tools)
|
|
#:use-module (gnu packages admin)
|
|
#:use-module (gnu packages audio)
|
|
#:use-module (gnu packages avahi)
|
|
#:use-module (gnu packages assembly)
|
|
#:use-module (gnu packages bash)
|
|
#:use-module (gnu packages bison)
|
|
#:use-module (gnu packages boost)
|
|
#:use-module (gnu packages check)
|
|
#:use-module (gnu packages cmake)
|
|
#:use-module (gnu packages compression)
|
|
#:use-module (gnu packages curl)
|
|
#:use-module (gnu packages crypto)
|
|
#:use-module (gnu packages cyrus-sasl)
|
|
#:use-module (gnu packages documentation)
|
|
#:use-module (gnu packages docbook)
|
|
#:use-module (gnu packages emulators)
|
|
#:use-module (gnu packages flex)
|
|
#:use-module (gnu packages fltk)
|
|
#:use-module (gnu packages fonts)
|
|
#:use-module (gnu packages fontutils)
|
|
#:use-module (gnu packages freedesktop)
|
|
#:use-module (gnu packages fribidi)
|
|
#:use-module (gnu packages game-development)
|
|
#:use-module (gnu packages gcc)
|
|
#:use-module (gnu packages gettext)
|
|
#:use-module (gnu packages ghostscript)
|
|
#:use-module (gnu packages gimp)
|
|
#:use-module (gnu packages gl)
|
|
#:use-module (gnu packages glib)
|
|
#:use-module (gnu packages gnome)
|
|
#:use-module (gnu packages gnuzilla)
|
|
#:use-module (gnu packages gperf)
|
|
#:use-module (gnu packages graphics)
|
|
#:use-module (gnu packages gstreamer)
|
|
#:use-module (gnu packages gtk)
|
|
#:use-module (gnu packages guile)
|
|
#:use-module (gnu packages haskell)
|
|
#:use-module (gnu packages haskell-crypto)
|
|
#:use-module (gnu packages haskell-xyz)
|
|
#:use-module (gnu packages icu4c)
|
|
#:use-module (gnu packages image)
|
|
#:use-module (gnu packages imagemagick)
|
|
#:use-module (gnu packages kde)
|
|
#:use-module (gnu packages kde-frameworks)
|
|
#:use-module (gnu packages less)
|
|
#:use-module (gnu packages libcanberra)
|
|
#:use-module (gnu packages libedit)
|
|
#:use-module (gnu packages libunwind)
|
|
#:use-module (gnu packages linux)
|
|
#:use-module (gnu packages llvm)
|
|
#:use-module (gnu packages lua)
|
|
#:use-module (gnu packages man)
|
|
#:use-module (gnu packages maths)
|
|
#:use-module (gnu packages mp3)
|
|
#:use-module (gnu packages music)
|
|
#:use-module (gnu packages multiprecision)
|
|
#:use-module (gnu packages ncurses)
|
|
#:use-module (gnu packages netpbm)
|
|
#:use-module (gnu packages networking)
|
|
#:use-module (gnu packages ocaml)
|
|
#:use-module (gnu packages opencl)
|
|
#:use-module (gnu packages pcre)
|
|
#:use-module (gnu packages perl)
|
|
#:use-module (gnu packages perl-check)
|
|
#:use-module (gnu packages pkg-config)
|
|
#:use-module (gnu packages pulseaudio)
|
|
#:use-module (gnu packages python)
|
|
#:use-module (gnu packages python-xyz)
|
|
#:use-module (gnu packages qt)
|
|
#:use-module (gnu packages readline)
|
|
#:use-module (gnu packages shells)
|
|
#:use-module (gnu packages sdl)
|
|
#:use-module (gnu packages serialization)
|
|
#:use-module (gnu packages sqlite)
|
|
#:use-module (gnu packages squirrel)
|
|
#:use-module (gnu packages swig)
|
|
#:use-module (gnu packages tcl)
|
|
#:use-module (gnu packages terminals)
|
|
#:use-module (gnu packages texinfo)
|
|
#:use-module (gnu packages textutils)
|
|
#:use-module (gnu packages tls)
|
|
#:use-module (gnu packages upnp)
|
|
#:use-module (gnu packages video)
|
|
#:use-module (gnu packages vulkan)
|
|
#:use-module (gnu packages web)
|
|
#:use-module (gnu packages wget)
|
|
#:use-module (gnu packages wxwidgets)
|
|
#:use-module (gnu packages xdisorg)
|
|
#:use-module (gnu packages xorg)
|
|
#:use-module (gnu packages xiph)
|
|
#:use-module (gnu packages xml)
|
|
#:use-module (gnu packages messaging)
|
|
#:use-module (gnu packages networking)
|
|
#:use-module (guix build-system glib-or-gtk)
|
|
#:use-module (guix build-system gnu)
|
|
#:use-module (guix build-system go)
|
|
#:use-module (guix build-system meson)
|
|
#:use-module (guix build-system scons)
|
|
#:use-module (guix build-system python)
|
|
#:use-module (guix build-system cmake)
|
|
#:use-module (guix build-system qt)
|
|
#:use-module (guix build-system trivial)
|
|
#:use-module ((srfi srfi-1) #:hide (zip))
|
|
#:use-module (srfi srfi-26))
|
|
|
|
;; Data package for adanaxisgpl.
|
|
(define adanaxis-mush
|
|
(let ((version "1.1.0"))
|
|
(origin
|
|
(method url-fetch)
|
|
(uri (string-append "http://www.mushware.com/files/adanaxis-mush-"
|
|
version ".tar.gz"))
|
|
(sha256
|
|
(base32 "0mk9ibis5nkdcalcg1lkgnsdxxbw4g5w2i3icjzy667hqirsng03")))))
|
|
|
|
(define-public adanaxisgpl
|
|
(package
|
|
(name "adanaxisgpl")
|
|
(version "1.2.5")
|
|
(source
|
|
(origin
|
|
(method url-fetch)
|
|
(uri (string-append "http://www.mushware.com/files/adanaxisgpl-"
|
|
version ".tar.gz"))
|
|
(sha256
|
|
(base32 "0jkn637jaabvlhd6hpvzb57vvjph94l6fbf7qxbjlw9zpr19dw1f"))
|
|
(modules '((guix build utils)))
|
|
(snippet
|
|
'(begin
|
|
;; Necessary for building with gcc >=4.7.
|
|
(substitute* "src/Mushcore/MushcoreSingleton.h"
|
|
(("SingletonPtrSet\\(new SingletonType\\);")
|
|
"MushcoreSingleton::SingletonPtrSet(new SingletonType);"))
|
|
;; Avoid an "invalid conversion from const char* to char*" error.
|
|
(substitute* "src/Platform/X11/PlatformMiscUtils.cpp"
|
|
(("char \\*end, \\*result;")
|
|
(string-append "const char *end;"
|
|
"\n"
|
|
"char *result;")))
|
|
#t))))
|
|
(build-system gnu-build-system)
|
|
(arguments
|
|
`(#:tests? #f ; no check target
|
|
#:phases
|
|
(modify-phases %standard-phases
|
|
(add-after 'install 'install-data
|
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
|
(let ((data (assoc-ref inputs "adanaxis-mush"))
|
|
(share (string-append (assoc-ref outputs "out")
|
|
"/share/" ,name "-" ,version)))
|
|
(mkdir-p share)
|
|
(invoke "tar" "xvf" data "-C" share)))))))
|
|
(native-inputs
|
|
`(("adanaxis-mush" ,adanaxis-mush))) ; game data
|
|
(inputs
|
|
`(("expat" ,expat)
|
|
("freeglut" ,freeglut)
|
|
("glu" ,glu)
|
|
("libjpeg" ,libjpeg)
|
|
("libogg" ,libogg)
|
|
("libtiff" ,libtiff)
|
|
("libvorbis" ,libvorbis)
|
|
("libx11" ,libx11)
|
|
("libxext" ,libxext)
|
|
("pcre" ,pcre)
|
|
("sdl" ,sdl)
|
|
("sdl-mixer" ,sdl-mixer)))
|
|
(home-page "https://www.mushware.com")
|
|
(synopsis "Action game in four spatial dimensions")
|
|
(description
|
|
"Adanaxis is a fast-moving first person shooter set in deep space, where
|
|
the fundamentals of space itself are changed. By adding another dimension to
|
|
space this game provides an environment with movement in four directions and
|
|
six planes of rotation. Initially the game explains the 4D control system via
|
|
a graphical sequence, before moving on to 30 levels of gameplay with numerous
|
|
enemy, ally, weapon and mission types. Features include simulated 4D texturing,
|
|
mouse and joystick control, and original music.")
|
|
(license license:gpl2)))
|
|
|
|
(define-public alex4
|
|
(package
|
|
(name "alex4")
|
|
(version "1.2.1")
|
|
(source
|
|
(origin
|
|
(method git-fetch)
|
|
(uri (git-reference
|
|
(url "https://github.com/carstene1ns/alex4.git")
|
|
(commit version)))
|
|
(file-name (git-file-name name version))
|
|
(sha256
|
|
(base32 "098wy72mh4lsvq3gm0rhamjssf9l1hp6hhkpzrv7klpb97cwwc3h"))))
|
|
(build-system gnu-build-system)
|
|
(arguments
|
|
`(#:tests? #f ; no check target
|
|
#:make-flags
|
|
(list "CC=gcc"
|
|
"CFLAGS=-D_FILE_OFFSET_BITS=64"
|
|
(string-append "PREFIX=" (assoc-ref %outputs "out")))
|
|
#:phases
|
|
(modify-phases %standard-phases
|
|
(delete 'configure) ; no configure script
|
|
(add-after 'install 'install-data
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
(let ((share (string-append (assoc-ref outputs "out")
|
|
"/share/" ,name)))
|
|
(install-file "alex4.ini" share)
|
|
#t))))))
|
|
(inputs
|
|
`(("allegro" ,allegro-4)
|
|
("dumb" ,dumb-allegro4)))
|
|
(home-page "http://allegator.sourceforge.net/")
|
|
(synopsis "Retro platform game")
|
|
(description
|
|
"Guide Alex the Allegator through the jungle in order to save his
|
|
girlfriend Lola from evil humans who want to make a pair of shoes out of her.
|
|
Plenty of classic platforming in four nice colors guaranteed!
|
|
|
|
The game includes a built-in editor so you can design and share your own maps.")
|
|
(license license:gpl2+)))
|
|
|
|
(define-public armagetronad
|
|
(package
|
|
(name "armagetronad")
|
|
(version "0.2.8.3.4")
|
|
(source (origin
|
|
(method url-fetch)
|
|
(uri (string-append "mirror://sourceforge/armagetronad/stable/"
|
|
version "/armagetronad-" version ".src.tar.gz"))
|
|
(sha256
|
|
(base32
|
|
"1pgy0r80z702qdv94aw3ywdn4ynnr4cdi86ml558pljfc5ygasj4"))))
|
|
(build-system gnu-build-system)
|
|
(inputs
|
|
`(("libxml2" ,libxml2)
|
|
("sdl" ,sdl)
|
|
("sdl-image" ,sdl-image)
|
|
("freeglut" ,freeglut)
|
|
("libpng" ,libpng)
|
|
("libjpeg-turbo" ,libjpeg-turbo)))
|
|
(home-page "http://www.armagetronad.org")
|
|
(synopsis "Tron clone in 3D")
|
|
(description "Armagetron Advanced is a multiplayer game in 3d that
|
|
attempts to emulate and expand on the lightcycle sequence from the movie Tron.
|
|
It's an old school arcade game slung into the 21st century. Highlights
|
|
include a customizable playing arena, HUD, unique graphics, and AI bots. For
|
|
the more advanced player there are new game modes and a wide variety of
|
|
physics settings to tweak as well.")
|
|
(license license:gpl2+)))
|
|
|
|
(define-public armagetron-advanced
|
|
(deprecated-package "armagetron-advanced" armagetronad))
|
|
|
|
(define-public bastet
|
|
(package
|
|
(name "bastet")
|
|
(version "0.43.2")
|
|
(source
|
|
(origin
|
|
(method git-fetch)
|
|
(uri (git-reference
|
|
(url "https://github.com/fph/bastet.git")
|
|
(commit version)))
|
|
(file-name (git-file-name name version))
|
|
(sha256
|
|
(base32 "09kamxapm9jw9przpsgjfg33n9k94bccv65w95dakj0br33a75wn"))
|
|
(patches
|
|
(search-patches "bastet-change-source-of-unordered_set.patch"))))
|
|
(build-system gnu-build-system)
|
|
(arguments
|
|
`(#:make-flags
|
|
(list (string-append "CXXFLAGS=-I"
|
|
(assoc-ref %build-inputs "boost") "/include"))
|
|
#:phases
|
|
(modify-phases %standard-phases
|
|
(delete 'configure) ; no configure script
|
|
(replace 'check
|
|
;; The 'Test' target builds the tests, but doesn't actually run them.
|
|
(lambda* (#:key make-flags #:allow-other-keys)
|
|
(apply invoke "make" "Test" make-flags)
|
|
(setenv "HOME" ".")
|
|
(invoke "./Test")))
|
|
(replace 'install
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
(share (string-append out "/share"))
|
|
(hicolor (string-append share "/icons/hicolor")))
|
|
(install-file "bastet"
|
|
(string-append out "/bin"))
|
|
|
|
(install-file "bastet.desktop"
|
|
(string-append share "/applications"))
|
|
(install-file "bastet.svg"
|
|
(string-append hicolor "/scalable/apps"))
|
|
|
|
(install-file "bastet.appdata.xml"
|
|
(string-append share "/appdata"))
|
|
|
|
(install-file "bastet.6"
|
|
(string-append out "/share/man/man6"))
|
|
#t))))))
|
|
(native-inputs
|
|
`(("hicolor-icon-theme" ,hicolor-icon-theme)))
|
|
(inputs
|
|
`(("boost" ,boost)
|
|
("ncurses" ,ncurses)))
|
|
(home-page "http://fph.altervista.org/prog/bastet.html")
|
|
(synopsis "Antagonistic Tetris-style falling brick game for text terminals")
|
|
(description
|
|
"Bastet (short for Bastard Tetris) is a simple ncurses-based falling brick
|
|
game. Unlike normal Tetris, Bastet does not choose the next brick at random.
|
|
Instead, it uses a special algorithm to choose the worst brick possible.
|
|
|
|
Playing bastet can be a painful experience, especially if you usually make
|
|
canyons and wait for the long I-shaped block to clear four rows at a time.")
|
|
(license license:gpl3+)))
|
|
|
|
(define-public cataclysm-dda
|
|
(let ((commit "9c732a5de48928691ab863d3ab275ca7b0e522fc"))
|
|
(package
|
|
(name "cataclysm-dda")
|
|
(version "0.D")
|
|
(source (origin
|
|
(method git-fetch)
|
|
(uri (git-reference
|
|
(url "https://github.com/CleverRaven/Cataclysm-DDA.git")
|
|
(commit commit)))
|
|
(sha256
|
|
(base32
|
|
"00zzhx1mh1qjq668cga5nbrxp2qk6b82j5ak65skhgnlr6ii4ysc"))
|
|
(file-name (git-file-name name version))))
|
|
(build-system gnu-build-system)
|
|
(arguments
|
|
'(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
|
|
"USE_HOME_DIR=1" "DYNAMIC_LINKING=1" "RELEASE=1"
|
|
"LOCALIZE=1" "LANGUAGES=all")
|
|
#:phases
|
|
(modify-phases %standard-phases
|
|
(delete 'configure)
|
|
(add-after 'build 'build-tiles
|
|
(lambda* (#:key make-flags outputs #:allow-other-keys)
|
|
;; Change prefix directory and enable tile graphics and sound.
|
|
(apply invoke "make" "TILES=1" "SOUND=1"
|
|
(string-append "PREFIX="
|
|
(assoc-ref outputs "tiles"))
|
|
(cdr make-flags))))
|
|
(add-after 'install 'install-tiles
|
|
(lambda* (#:key make-flags outputs #:allow-other-keys)
|
|
(apply invoke "make" "install" "TILES=1" "SOUND=1"
|
|
(string-append "PREFIX="
|
|
(assoc-ref outputs "tiles"))
|
|
(cdr make-flags)))))
|
|
;; TODO: Add libtap++ from https://github.com/cbab/libtappp as a native
|
|
;; input in order to support tests.
|
|
#:tests? #f))
|
|
(outputs '("out"
|
|
"tiles")) ; For tile graphics and sound support.
|
|
(native-inputs
|
|
`(("gettext" ,gettext-minimal)
|
|
("pkg-config" ,pkg-config)))
|
|
(inputs
|
|
`(("freetype" ,freetype)
|
|
("libogg" ,libogg)
|
|
("libvorbis" ,libvorbis)
|
|
("ncurses" ,ncurses)
|
|
("sdl2" ,sdl2)
|
|
("sdl2-image" ,sdl2-image)
|
|
("sdl2-ttf" ,sdl2-ttf)
|
|
("sdl2-mixer" ,sdl2-mixer)))
|
|
(home-page "https://cataclysmdda.org/")
|
|
(synopsis "Survival horror roguelike video game")
|
|
(description
|
|
"Cataclysm: Dark Days Ahead (or \"DDA\" for short) is a roguelike set
|
|
in a post-apocalyptic world. Struggle to survive in a harsh, persistent,
|
|
procedurally generated world. Scavenge the remnants of a dead civilization
|
|
for food, equipment, or, if you are lucky, a vehicle with a full tank of gas
|
|
to get you out of Dodge. Fight to defeat or escape from a wide variety of
|
|
powerful monstrosities, from zombies to giant insects to killer robots and
|
|
things far stranger and deadlier, and against the others like yourself, that
|
|
want what you have.")
|
|
(license license:cc-by-sa3.0))))
|
|
|
|
(define-public cataclysm-dark-days-ahead
|
|
(deprecated-package "cataclysm-dark-days-ahead" cataclysm-dda))
|
|
|
|
(define-public corsix-th
|
|
(package
|
|
(name "corsix-th")
|
|
(version "0.63")
|
|
(source
|
|
(origin
|
|
(method git-fetch)
|
|
(uri (git-reference
|
|
(url "https://github.com/CorsixTH/CorsixTH.git")
|
|
(commit (string-append "v" version))))
|
|
(file-name (git-file-name name version))
|
|
(sha256
|
|
(base32 "1rkyk8g55xny276s0hr5k8mq6f4nzz56d3k2mp09dzfymrqb8hgi"))))
|
|
(build-system cmake-build-system)
|
|
(arguments
|
|
`(#:phases
|
|
(modify-phases %standard-phases
|
|
(add-after 'install 'wrap-binary
|
|
(lambda _
|
|
;; Set Lua module paths and default MIDI soundfont on startup.
|
|
(let* ((out (assoc-ref %outputs "out"))
|
|
(fluid (assoc-ref %build-inputs "fluid-3"))
|
|
(lua-version ,(version-major+minor (package-version lua)))
|
|
(lua-cpath
|
|
(map (lambda (lib)
|
|
(string-append
|
|
(assoc-ref %build-inputs (string-append "lua-" lib))
|
|
"/lib/lua/" lua-version "/?.so"))
|
|
'("filesystem" "lpeg"))))
|
|
(wrap-program (string-append out "/bin/corsix-th")
|
|
`("LUA_CPATH" ";" = ,lua-cpath)
|
|
`("SDL_SOUNDFONTS" ":" suffix
|
|
(,(string-append fluid "/share/soundfonts/FluidR3Mono_GM.sf3")))))
|
|
#t)))
|
|
#:tests? #f)) ; TODO need busted package to run tests
|
|
;; Omit Lua-Socket dependency to disable automatic updates.
|
|
(inputs
|
|
`(("ffmpeg" ,ffmpeg)
|
|
("fluid-3" ,fluid-3)
|
|
("freetype" ,freetype)
|
|
("lua" ,lua)
|
|
("lua-filesystem" ,lua-filesystem)
|
|
("lua-lpeg" ,lua-lpeg)
|
|
("sdl2" ,sdl2)
|
|
("sdl2-mixer" ,sdl2-mixer)))
|
|
(home-page "https://corsixth.com")
|
|
(synopsis "Implementation of the @i{Theme Hospital} game engine")
|
|
(description
|
|
"This package provides a reimplementation of the 1997 Bullfrog business
|
|
simulation game @i{Theme Hospital}. As well as faithfully recreating the
|
|
original engine, CorsixTH adds support for high resolutions, custom levels and
|
|
more. This package does @emph{not} provide the game assets.")
|
|
(license (list
|
|
license:expat ; main license
|
|
license:bsd-3)))) ; CorsixTH/Src/random.c
|
|
|
|
(define-public cowsay
|
|
(package
|
|
(name "cowsay")
|
|
(version "3.04")
|
|
(source (origin
|
|
(method git-fetch)
|
|
(uri (git-reference
|
|
(url "https://github.com/tnalpgge/rank-amateur-cowsay.git")
|
|
(commit (string-append name "-" version))))
|
|
(file-name (git-file-name name version))
|
|
(sha256
|
|
(base32
|
|
"06455kq37hvq1xb7adyiwrx0djs50arsxvjgixyxks16lm1rlc7n"))))
|
|
(build-system gnu-build-system)
|
|
(arguments
|
|
`(#:phases
|
|
(modify-phases %standard-phases
|
|
(delete 'configure) ; no configure script
|
|
(delete 'build) ; nothing to be built
|
|
(replace 'install
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
(invoke "sh" "install.sh"
|
|
(assoc-ref outputs "out"))))
|
|
(delete 'check)
|
|
(add-after 'install 'check
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
(invoke (string-append (assoc-ref outputs "out")
|
|
"/bin/cowsay")
|
|
"We're done!"))))))
|
|
(inputs
|
|
`(("perl" ,perl)))
|
|
(home-page (string-append "https://web.archive.org/web/20071026043648/"
|
|
"http://www.nog.net:80/~tony/warez/cowsay.shtml"))
|
|
(synopsis "Speaking cow text filter")
|
|
(description "Cowsay is basically a text filter. Send some text into it,
|
|
and you get a cow saying your text. If you think a talking cow isn't enough,
|
|
cows can think too: all you have to do is run @command{cowthink}. If you're
|
|
tired of cows, a variety of other ASCII-art messengers are available.")
|
|
(license license:gpl3+)))
|
|
|
|
(define-public lolcat
|
|
(let ((commit "35dca3d0a381496d7195cd78f5b24aa7b62f2154")
|
|
(revision "0"))
|
|
(package
|
|
(name "lolcat")
|
|
(version (git-version "1.0" revision commit))
|
|
(source
|
|
(origin
|
|
(method git-fetch)
|
|
(uri (git-reference
|
|
(url "https://github.com/jaseg/lolcat.git")
|
|
(commit commit)))
|
|
(sha256
|
|
(base32
|
|
"0jjbkqcc2ikjxd1xgdyv4rb0vsw218181h89f2ywg29ffs3ypd8g"))
|
|
(file-name (git-file-name name version))))
|
|
(build-system gnu-build-system)
|
|
(arguments
|
|
`(#:tests? #f ;; no check target
|
|
#:make-flags (list "CC=gcc")
|
|
#:phases
|
|
(modify-phases %standard-phases
|
|
(delete 'bootstrap)
|
|
(delete 'configure)
|
|
(replace 'install
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
(dest (string-append out "/bin")))
|
|
(mkdir-p dest)
|
|
(install-file "lolcat" dest)
|
|
(install-file "censor" dest)
|
|
#t))))))
|
|
(home-page "https://github.com/jaseg/lolcat")
|
|
(synopsis "Rainbow coloring effect for text console display")
|
|
(description "@command{lolcat} concatenates files and streams like
|
|
regular @command{cat}, but it also adds terminal escape codes between
|
|
characters and lines resulting in a rainbow effect.")
|
|
(license license:wtfpl2))))
|
|
|
|
(define-public freedoom
|
|
(package
|
|
(name "freedoom")
|
|
(version "0.12.1")
|
|
(source
|
|
(origin
|
|
(method git-fetch)
|
|
(uri (git-reference
|
|
(url "https://github.com/freedoom/freedoom.git")
|
|
(commit (string-append "v" version))))
|
|
(file-name (git-file-name name version))
|
|
(sha256
|
|
(base32 "1mq60lfwaaxmch7hsz8403pwafnlsmsd5z2df2j77ppwndwcrypb"))))
|
|
(build-system gnu-build-system)
|
|
(arguments
|
|
'(#:make-flags
|
|
(list (string-append "prefix=" (assoc-ref %outputs "out")))
|
|
#:tests? #f ; no check target
|
|
#:phases
|
|
(modify-phases %standard-phases
|
|
(delete 'bootstrap)
|
|
(replace 'configure
|
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
|
(let* ((freedoom (assoc-ref outputs "out"))
|
|
(wad-dir (string-append freedoom "/share/games/doom")))
|
|
;; Make sure that the install scripts know where to find
|
|
;; the appropriate WAD files.
|
|
(substitute* "dist/freedoom"
|
|
(("IWAD=freedm.wad")
|
|
(string-append "IWAD=" wad-dir "/freedm.wad"))
|
|
(("IWAD=freedoom1.wad")
|
|
(string-append "IWAD=" wad-dir "/freedoom1.wad"))
|
|
(("IWAD=freedoom2.wad")
|
|
(string-append "IWAD=" wad-dir "/freedoom2.wad")))
|
|
#t))))))
|
|
(native-inputs
|
|
`(("asciidoc" ,asciidoc)
|
|
("deutex" ,deutex)
|
|
("python" ,python)
|
|
("python-pillow" ,python-pillow)))
|
|
(home-page "https://freedoom.github.io/")
|
|
(synopsis "Free content game based on the Doom engine")
|
|
(native-search-paths
|
|
(list (search-path-specification
|
|
(variable "DOOMWADDIR")
|
|
(files '("share/games/doom")))
|
|
(search-path-specification
|
|
(variable "DOOMWADPATH")
|
|
(files '("share/games/doom")))))
|
|
(description
|
|
"The Freedoom project aims to create a complete free content first person
|
|
shooter game. Freedoom by itself is just the raw material for a game: it must
|
|
be paired with a compatible game engine (such as @code{prboom-plus}) to be
|
|
played. Freedoom complements the Doom engine with free levels, artwork, sound
|
|
effects and music to make a completely free game.")
|
|
(license license:bsd-3)))
|
|
|
|
(define-public freedroidrpg
|
|
(package
|
|
(name "freedroidrpg")
|
|
(version "0.16.1")
|
|
(source
|
|
(origin
|
|
(method url-fetch)
|
|
(uri (string-append "http://ftp.osuosl.org/pub/freedroid/"
|
|
"freedroidRPG-" (version-major+minor version) "/"
|
|
"freedroidRPG-" version ".tar.gz"))
|
|
(sha256
|
|
(base32 "0n4kn38ncmcy3lrxmq8fjry6c1z50z4q1zcqfig0j4jb0dsz2va2"))))
|
|
(build-system gnu-build-system)
|
|
(arguments
|
|
`(#:configure-flags
|
|
(list
|
|
(string-append "CFLAGS="
|
|
"-I" (assoc-ref %build-inputs "sdl-gfx") "/include/SDL "
|
|
"-I" (assoc-ref %build-inputs "sdl-image") "/include/SDL "
|
|
"-I" (assoc-ref %build-inputs "sdl-mixer") "/include/SDL")
|
|
"--enable-opengl")
|
|
;; FIXME: the test suite fails with the following error output:
|
|
;; 4586 Segmentation fault env SDL_VIDEODRIVER=dummy \
|
|
;; SDL_AUDIODRIVER=dummy ./src/freedroidRPG -nb text
|
|
#:tests? #f))
|
|
(native-inputs
|
|
`(("pkg-config" ,pkg-config)))
|
|
(inputs
|
|
`(("glu" ,glu)
|
|
("libjpeg" ,libjpeg)
|
|
("libogg" ,libogg)
|
|
("libpng" ,libpng)
|
|
("libvorbis" ,libvorbis)
|
|
("mesa" ,mesa)
|
|
("python" ,python-wrapper)
|
|
("sdl" ,sdl)
|
|
("sdl-gfx" ,sdl-gfx)
|
|
("sdl-image" ,sdl-image)
|
|
("sdl-mixer" ,sdl-mixer)
|
|
("zlib" ,zlib)))
|
|
(home-page "http://www.freedroid.org/")
|
|
(synopsis "Isometric role-playing game against killer robots")
|
|
(description
|
|
"Freedroid RPG is an @dfn{RPG} (Role-Playing Game) with isometric graphics.
|
|
The game tells the story of a world destroyed by a conflict between robots and
|
|
their human masters. To restore peace to humankind, the player must complete
|
|
numerous quests while fighting off rebelling robots---either by taking control
|
|
of them, or by simply blasting them to pieces with melee and ranged weapons in
|
|
real-time combat.")
|
|
(license (list license:expat ; lua/
|
|
license:gpl3 ; src/gen_savestruct.py
|
|
license:gpl2+)))) ; the rest
|
|
|
|
(define-public golly
|
|
(package
|
|
(name "golly")
|
|
(version "3.3")
|
|
(source (origin
|
|
(method url-fetch)
|
|
(uri (string-append "mirror://sourceforge/golly/golly/golly-"
|
|
version "/golly-" version
|
|
"-src.tar.gz"))
|
|
(sha256
|
|
(base32
|
|
"1j3ksnar4rdam4xiyspgyrs1pifbvxfxkrn65brkwxpx39mpgzc8"))))
|
|
(build-system gnu-build-system)
|
|
(arguments
|
|
'(#:make-flags (list "CC=gcc"
|
|
(string-append "GOLLYDIR="
|
|
(assoc-ref %outputs "out")
|
|
"/share/golly"))
|
|
#:tests? #f ; no check target
|
|
#:phases
|
|
(modify-phases %standard-phases
|
|
(replace 'configure
|
|
(lambda* (#:key inputs #:allow-other-keys)
|
|
;; For some reason, setting the PYTHON_SHLIB make flag doesn't
|
|
;; properly set the path to the Python shared library. This
|
|
;; substitution acheives the same end by different means.
|
|
(substitute* "gui-wx/wxprefs.cpp"
|
|
(("pythonlib = wxT\\(STRINGIFY\\(PYTHON_SHLIB\\)\\)")
|
|
(string-append "pythonlib = \""
|
|
(assoc-ref inputs "python")
|
|
"/lib/libpython-2.7.so\"")))
|
|
#t))
|
|
(replace 'build
|
|
(lambda* (#:key make-flags outputs #:allow-other-keys)
|
|
(with-directory-excursion "gui-wx"
|
|
(apply invoke `("make" ,@make-flags "-f" "makefile-gtk")))))
|
|
(replace 'install
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
(bin (string-append out "/bin"))
|
|
(doc (string-append out "/share/doc/golly"))
|
|
(pixmaps (string-append out "/share/pixmaps"))
|
|
(share (string-append out "/share/golly")))
|
|
(for-each (lambda (binary)
|
|
(install-file binary bin))
|
|
'("bgolly" "golly"))
|
|
(for-each (lambda (document)
|
|
(install-file
|
|
(string-append "docs/" document ".html")
|
|
doc))
|
|
'("License" "ReadMe" "ToDo"))
|
|
(install-file "gui-wx/icons/appicon.xpm" pixmaps)
|
|
(for-each (lambda (folder)
|
|
(copy-recursively
|
|
folder
|
|
(string-append share "/" folder)))
|
|
'("Help" "Patterns" "Rules" "Scripts")))
|
|
#t)))))
|
|
(native-inputs
|
|
`(("lua" ,lua)))
|
|
(inputs
|
|
`(("glu" ,glu)
|
|
("mesa" ,mesa)
|
|
("python" ,python-2)
|
|
("wxwidgets" ,wxwidgets-gtk2)
|
|
("zlib" ,zlib)))
|
|
(home-page "http://golly.sourceforge.net/")
|
|
(synopsis "Software for exploring cellular automata")
|
|
(description
|
|
"Golly simulates Conway's Game of Life and many other types of cellular
|
|
automata. The following features are available:
|
|
@enumerate
|
|
@item Support for bounded and unbounded universes, with cells of up to 256
|
|
states.
|
|
@item Support for multiple algorithms, including Bill Gosper's Hashlife
|
|
algorithm.
|
|
@item Loading patterns from BMP, PNG, GIF and TIFF image files.
|
|
@item Reading RLE, macrocell, Life 1.05/1.06, dblife and MCell files.
|
|
@item Scriptable via Lua or Python.
|
|
@item Extracting patterns, rules and scripts from zip files.
|
|
@item Downloading patterns, rules and scripts from online archives.
|
|
@item Pasting patterns from the clipboard.
|
|
@item Unlimited undo/redo.
|
|
@item Configurable keyboard shortcuts.
|
|
@item Auto fit option to keep patterns within the view.
|
|
@end enumerate")
|
|
(license license:gpl2+)))
|
|
|
|
(define-public julius
|
|
(package
|
|
(name "julius")
|
|
(version "1.3.0")
|
|
(source
|
|
(origin
|
|
(method git-fetch)
|
|
(uri (git-reference
|
|
(url "https://github.com/bvschaik/julius.git")
|
|
(commit (string-append "v" version))))
|
|
(file-name (git-file-name name version))
|
|
(sha256
|
|
(base32 "1ws5lmwdhla73676fj0w26v859n47s0wyxa0mgd0dmkx0x91qriy"))))
|
|
(build-system cmake-build-system)
|
|
(inputs
|
|
`(("sdl2" ,sdl2)
|
|
("sdl2-mixer" ,sdl2-mixer)))
|
|
(home-page "https://github.com/bvschaik/julius")
|
|
(synopsis "Re-implementation of Caesar III game engine")
|
|
(description
|
|
"Engine for Caesar III, a city-building real-time strategy game.
|
|
Julius includes some UI enhancements while preserving the logic (including
|
|
bugs) of the original game, so that saved games are compatible. This package
|
|
does not include game data.")
|
|
(license (list license:agpl3
|
|
license:expat ; ext/dirent
|
|
license:zlib)))) ; ext/tinyfiledialogs
|
|
|
|
(define-public meandmyshadow
|
|
(package
|
|
(name "meandmyshadow")
|
|
(version "0.5a")
|
|
(source (origin
|
|
(method url-fetch)
|
|
(uri (string-append "mirror://sourceforge/meandmyshadow/"
|
|
version "/meandmyshadow-" version
|
|
"-src.tar.gz"))
|
|
(sha256
|
|
(base32
|
|
"0i98v6cgmpsxy7mbb0s2y6f6qq6mkwzk2nrv1nz39ncf948aky2h"))))
|
|
(build-system cmake-build-system)
|
|
(arguments
|
|
`(#:tests? #f)) ; there are no tests
|
|
(native-inputs
|
|
`(("pkg-config" ,pkg-config)))
|
|
(inputs
|
|
`(("curl" ,curl)
|
|
("libarchive" ,libarchive)
|
|
("lua" ,lua)
|
|
("sdl" ,(sdl-union (list sdl2
|
|
sdl2-image
|
|
sdl2-mixer
|
|
sdl2-ttf)))))
|
|
(home-page "https://acmepjz.github.io/meandmyshadow/")
|
|
(synopsis "Puzzle/platform game")
|
|
(description "Me and My Shadow is a puzzle/platform game in which you try
|
|
to reach the exit by solving puzzles. Spikes, moving blocks, fragile blocks
|
|
and much more stand between you and the exit. Record your moves and let your
|
|
shadow mimic them to reach blocks you couldn't reach alone.")
|
|
(license license:gpl3+)))
|
|
|
|
(define-public opensurge
|
|
(package
|
|
(name "opensurge")
|
|
(version "0.5.1.2")
|
|
(source
|
|
(origin
|
|
(method git-fetch)
|
|
(uri (git-reference
|
|
(url "https://github.com/alemart/opensurge.git")
|
|
(commit (string-append "v" version))))
|
|
(file-name (git-file-name name version))
|
|
(sha256
|
|
(base32 "0ih7hlqjnp9rv0m4lqf7c0s1ai532way5i4pk45jq1gqm8325dbv"))))
|
|
(build-system cmake-build-system)
|
|
(arguments
|
|
`(#:tests? #f ;there are no tests
|
|
#:configure-flags
|
|
(let* ((out (assoc-ref %outputs "out"))
|
|
(share (string-append out "/share")))
|
|
(list (string-append "-DCMAKE_INSTALL_PREFIX=" out "/bin")
|
|
(string-append "-DGAME_DATADIR=" share "/" ,name)
|
|
(string-append "-DDESKTOP_ENTRY_PATH=" share "/applications")
|
|
(string-append "-DDESKTOP_ICON_PATH=" share "/pixmaps")
|
|
(string-append "-DDESKTOP_METAINFO_PATH=" share "/metainfo")))
|
|
#:phases
|
|
(modify-phases %standard-phases
|
|
(add-after 'unpack 'fix-xdg-open-path
|
|
(lambda* (#:key inputs #:allow-other-keys)
|
|
;; Look for xdg-open in the store.
|
|
(substitute* "src/core/web.c"
|
|
(("/usr(/bin/xdg-open)" _ bin)
|
|
(string-append (assoc-ref inputs "xdg-utils") bin)))
|
|
#t))
|
|
(add-after 'unpack 'unbundle-fonts
|
|
(lambda* (#:key inputs #:allow-other-keys)
|
|
;; Replace bundled Roboto fonts with links to the store.
|
|
(with-directory-excursion "fonts"
|
|
(let ((roboto-dir (string-append
|
|
(assoc-ref inputs "font-google-roboto")
|
|
"/share/fonts/truetype/")))
|
|
(for-each
|
|
(lambda (font)
|
|
(delete-file font)
|
|
(symlink (string-append roboto-dir font) font))
|
|
'("Roboto-Black.ttf" "Roboto-Bold.ttf" "Roboto-Medium.ttf")))
|
|
#t))))))
|
|
(inputs
|
|
`(("allegro" ,allegro)
|
|
("font-google-roboto" ,font-google-roboto)
|
|
("surgescript" ,surgescript)
|
|
("xdg-utils" ,xdg-utils)))
|
|
(home-page "https://opensurge2d.org")
|
|
(synopsis "2D retro side-scrolling game")
|
|
(description "@code{Open Surge} is a 2D retro side-scrolling platformer
|
|
inspired by the Sonic games. The player runs at high speeds through each
|
|
level while collecting items and avoiding obstacles. The game includes a
|
|
built-in level editor.")
|
|
(license
|
|
;; Code is under GPL 3+, assets are under various licenses.
|
|
;; See src/misc/credits.c for details.
|
|
(list license:gpl3+
|
|
license:cc0
|
|
license:cc-by3.0
|
|
license:cc-by-sa3.0
|
|
license:expat
|
|
license:public-domain
|
|
license:silofl1.1))))
|
|
|
|
(define-public knights
|
|
(package
|
|
(name "knights")
|
|
(version "025")
|
|
(source (origin
|
|
(method url-fetch)
|
|
(uri (string-append "http://www.knightsgame.org.uk/files/knights_"
|
|
version "_src.tar.gz"))
|
|
(sha256
|
|
(base32
|
|
"18vp2ygvn0s0jz8rm585jqf6hjqkam1ximq81k0r9hpmfj7wb88f"))))
|
|
(build-system gnu-build-system)
|
|
(arguments
|
|
'(#:make-flags
|
|
(list (string-append "PREFIX=" (assoc-ref %outputs "out")))
|
|
#:phases
|
|
(modify-phases %standard-phases
|
|
;; No configure script.
|
|
(delete 'configure))
|
|
#:tests? #f)) ;; No check target.
|
|
(inputs
|
|
`(("boost" ,boost)
|
|
("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
|
|
("freetype" ,freetype)
|
|
("fontconfig" ,fontconfig)
|
|
("curl" ,curl)))
|
|
(native-inputs
|
|
`(("pkg-config" ,pkg-config)))
|
|
(home-page "http://www.knightsgame.org.uk/")
|
|
(synopsis "Multiplayer dungeon game involving knights and quests")
|
|
(description "Knights is a multiplayer game involving several knights who
|
|
must run around a dungeon and complete various quests. Each game revolves
|
|
around a quest – for example, you might have to find some items and carry them
|
|
back to your starting point. This may sound easy, but as there are only
|
|
enough items in the dungeon for one player to win, you may end up having to
|
|
kill your opponents to get their stuff! Other quests involve escaping from
|
|
the dungeon, fighting a duel to the death against the enemy knights, or
|
|
destroying an ancient book using a special wand.")
|
|
;; This package includes modified sources of lua (X11), enet (Expat), and
|
|
;; guichan (BSD-3). The "Coercri" library is released under the Boost
|
|
;; license. The whole package is released under GPLv3+.
|
|
(license license:gpl3+)))
|
|
|
|
(define-public gnubg
|
|
(package
|
|
(name "gnubg")
|
|
(version "1.06.002")
|
|
(source
|
|
(origin
|
|
(method url-fetch)
|
|
(uri (string-append "mirror://gnu/gnubg/gnubg-release-"
|
|
version "-sources.tar.gz"))
|
|
(sha256
|
|
(base32
|
|
"11xwhcli1h12k6rnhhyq4jphzrhfik7i8ah3k32pqw803460n6yf"))))
|
|
(build-system gnu-build-system)
|
|
(inputs `(("glib" ,glib)
|
|
("readline" ,readline)
|
|
("gtk+" ,gtk+-2)
|
|
("mesa" ,mesa)
|
|
("glu" ,glu)
|
|
("gtkglext" ,gtkglext)
|
|
("sqlite" ,sqlite)
|
|
("libcanberra" ,libcanberra)))
|
|
(native-inputs `(("python-2" ,python-2)
|
|
("pkg-config" ,pkg-config)))
|
|
(arguments
|
|
`(#:phases
|
|
(modify-phases %standard-phases
|
|
(add-after 'install 'install-desktop-file
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
(apps (string-append out "/share/applications")))
|
|
(mkdir-p apps)
|
|
(with-output-to-file (string-append apps "/gnubg.desktop")
|
|
(lambda _
|
|
(format #t
|
|
"[Desktop Entry]~@
|
|
Name=GNU Backgammon~@
|
|
Exec=~a/bin/gnubg -w~@
|
|
Icon=gnubg~@
|
|
Categories=Game;~@
|
|
Terminal=false~@
|
|
Type=Application~%"
|
|
out))))
|
|
#t)))))
|
|
(home-page "https://www.gnu.org/software/gnubg/")
|
|
(synopsis "Backgammon game")
|
|
(description "The GNU backgammon application (also known as \"gnubg\") can
|
|
be used for playing, analyzing and teaching the game. It has an advanced
|
|
evaluation engine based on artificial neural networks suitable for both
|
|
beginners and advanced players. In addition to a command-line interface, it
|
|
also features an attractive, 3D representation of the playing board.")
|
|
(license license:gpl3+)))
|
|
|
|
(define-public gnubackgammon
|
|
(deprecated-package "gnubackgammon" gnubg))
|
|
|
|
(define-public gnubik
|
|
(package
|
|
(name "gnubik")
|
|
(version "2.4.3")
|
|
(source
|
|
(origin
|
|
(method url-fetch)
|
|
(uri (string-append "mirror://gnu/gnubik/gnubik-"
|
|
version ".tar.gz"))
|
|
(sha256
|
|
(base32
|
|
"1vlf924mq8hg93bsjj0rzvs0crc6psmlxyc6zn0fr7msnmpx6gib"))))
|
|
(build-system gnu-build-system)
|
|
(inputs `(("gtk+" ,gtk+-2)
|
|
("mesa" ,mesa)
|
|
("glu" ,glu)
|
|
("libx11" ,libx11)
|
|
("guile" ,guile-2.0)
|
|
("gtkglext" ,gtkglext)))
|
|
(native-inputs `(("gettext" ,gettext-minimal)
|
|
("pkg-config" ,pkg-config)))
|
|
(home-page "https://www.gnu.org/software/gnubik/")
|
|
(synopsis "3d Rubik's cube game")
|
|
(description
|
|
"GNUbik is a puzzle game in which you must manipulate a cube to make
|
|
each of its faces have a uniform color. The game is customizable, allowing
|
|
you to set the size of the cube (the default is 3x3) or to change the colors.
|
|
You may even apply photos to the faces instead of colors. The game is
|
|
scriptable with Guile.")
|
|
(license license:gpl3+)))
|
|
|
|
(define-public gnushogi
|
|
(package
|
|
(name "gnushogi")
|
|
(version "1.4.2")
|
|
(source
|
|
(origin
|
|
(method url-fetch)
|
|
(uri (string-append "mirror://gnu/gnushogi/gnushogi-"
|
|
version ".tar.gz"))
|
|
(sha256
|
|
(base32
|
|
"0a9bsl2nbnb138lq0h14jfc5xvz7hpb2bcsj4mjn6g1hcsl4ik0y"))))
|
|
(arguments `(#:tests? #f)) ;; No check target.
|
|
(build-system gnu-build-system)
|
|
(home-page "https://www.gnu.org/software/gnushogi/")
|
|
(synopsis "The game of Shogi (Japanese chess)")
|
|
(description "GNU Shogi is a program that plays the game Shogi (Japanese
|
|
Chess). It is similar to standard chess but this variant is far more complicated.")
|
|
(license license:gpl3+)))
|
|
|
|
(define-public ltris
|
|
(package
|
|
(name "ltris")
|
|
(version "1.0.19")
|
|
(source
|
|
(origin
|
|
(method url-fetch)
|
|
(uri (string-append "http://prdownloads.sourceforge.net/lgames/"
|
|
"ltris-" version ".tar.gz"))
|
|
(sha256
|
|
(base32
|
|
"1895wv1fqklrj4apkz47rnkcfhfav7zjknskw6p0886j35vrwslg"))))
|
|
(build-system gnu-build-system)
|
|
(arguments
|
|
'(;; The code in LTris uses traditional GNU semantics for inline functions
|
|
#:configure-flags '("CFLAGS=-fgnu89-inline")
|
|
#:phases
|
|
(modify-phases %standard-phases
|
|
(add-after 'set-paths 'set-sdl-paths
|
|
(lambda* (#:key inputs #:allow-other-keys)
|
|
(setenv "CPATH"
|
|
(string-append (assoc-ref inputs "sdl-union")
|
|
"/include/SDL:"
|
|
(or (getenv "CPATH") "")))
|
|
#t)))))
|
|
(inputs
|
|
`(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))))
|
|
(home-page "http://lgames.sourceforge.net/LTris/")
|
|
(synopsis "Tetris clone based on the SDL library")
|
|
(description
|
|
"LTris is a tetris clone: differently shaped blocks are falling down the
|
|
rectangular playing field and can be moved sideways or rotated by 90 degree
|
|
units with the aim of building lines without gaps which then disappear (causing
|
|
any block above the deleted line to fall down). LTris has three game modes: In
|
|
Classic you play until the stack of blocks reaches the top of the playing field
|
|
and no new blocks can enter. In Figures the playing field is reset to a new
|
|
figure each level and later on tiles and lines suddenly appear. In Multiplayer
|
|
up to three players (either human or CPU) compete with each other sending
|
|
removed lines to all opponents. There is also a Demo mode in which you can
|
|
watch your CPU playing while enjoying a cup of tea!")
|
|
(license license:gpl2+)))
|
|
|
|
(define-public nethack
|
|
(package
|
|
(name "nethack")
|
|
(version "3.6.5")
|
|
(source
|
|
(origin
|
|
(method url-fetch)
|
|
(uri
|
|
(string-append "https://www.nethack.org/download/" version "/nethack-"
|
|
(string-join (string-split version #\.) "") "-src.tgz"))
|
|
(sha256
|
|
(base32 "0xifs8pqfffnmkbpmrcd1xf14yakcj06nl2bbhy4dyacg8myysmv"))))
|
|
(inputs
|
|
`(("ncurses" ,ncurses)
|
|
("bison" ,bison)
|
|
("flex" ,flex)
|
|
("less" ,less)))
|
|
(build-system gnu-build-system)
|
|
(arguments
|
|
'(#:make-flags
|
|
`(,(string-append "PREFIX=" (assoc-ref %outputs "out")))
|
|
#:phases
|
|
(modify-phases %standard-phases
|
|
(add-before 'configure 'patch-paths
|
|
(lambda _
|
|
(substitute* "sys/unix/nethack.sh"
|
|
(("^ *cd .*$") ""))
|
|
(substitute* "sys/unix/Makefile.utl"
|
|
(("^YACC *=.*$") "YACC = bison -y\n")
|
|
(("^LEX *=.*$") "LEX = flex\n")
|
|
(("^# CC = gcc") "CC = gcc"))
|
|
(substitute* "sys/unix/hints/linux"
|
|
(("/bin/gzip") (string-append
|
|
(assoc-ref %build-inputs "gzip")
|
|
"/bin/gzip"))
|
|
(("^WINTTYLIB=.*") "WINTTYLIB=-lncurses"))
|
|
(substitute* "include/config.h"
|
|
(("^.*define CHDIR.*$") "")
|
|
(("^/\\* *#*define *REPRODUCIBLE_BUILD *\\*/")
|
|
;; Honor SOURCE_DATE_EPOCH.
|
|
"#define REPRODUCIBLE_BUILD"))
|
|
|
|
;; Note: 'makedefs' rejects and ignores dates that are too old
|
|
;; or too new, so we must choose something reasonable here.
|
|
(setenv "SOURCE_DATE_EPOCH" "1531865062")
|
|
|
|
(substitute* "sys/unix/Makefile.src"
|
|
(("^# CC = gcc") "CC = gcc"))
|
|
#t))
|
|
(replace 'configure
|
|
(lambda _
|
|
(let ((bash (string-append
|
|
(assoc-ref %build-inputs "bash")
|
|
"/bin/bash")))
|
|
(with-directory-excursion "sys/unix"
|
|
(substitute* "setup.sh" (("/bin/sh") bash))
|
|
(invoke bash "setup.sh" "hints/linux"))
|
|
#t)))
|
|
(add-after 'install 'fixup-paths
|
|
(lambda _
|
|
(let* ((output (assoc-ref %outputs "out"))
|
|
(nethack-script (string-append output "/bin/nethack")))
|
|
(mkdir-p (string-append output "/games/lib/nethackuserdir"))
|
|
(for-each
|
|
(lambda (file)
|
|
(rename-file
|
|
(string-append output "/games/lib/nethackdir/" file)
|
|
(string-append output "/games/lib/nethackuserdir/"
|
|
file)))
|
|
'("xlogfile" "logfile" "perm" "record" "save"))
|
|
(mkdir-p (string-append output "/bin"))
|
|
(call-with-output-file nethack-script
|
|
(lambda (port)
|
|
(format port "#!~a/bin/sh
|
|
PATH=~a:$PATH
|
|
if [ ! -d ~~/.config/nethack ]; then
|
|
mkdir -p ~~/.config/nethack
|
|
cp -r ~a/games/lib/nethackuserdir/* ~~/.config/nethack
|
|
chmod -R +w ~~/.config/nethack
|
|
fi
|
|
|
|
RUNDIR=$(mktemp -d)
|
|
|
|
cleanup() {
|
|
rm -rf $RUNDIR
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
cd $RUNDIR
|
|
for i in ~~/.config/nethack/*; do
|
|
ln -s $i $(basename $i)
|
|
done
|
|
for i in ~a/games/lib/nethackdir/*; do
|
|
ln -s $i $(basename $i)
|
|
done
|
|
~a/games/nethack"
|
|
(assoc-ref %build-inputs "bash")
|
|
(list->search-path-as-string
|
|
(list
|
|
(string-append
|
|
(assoc-ref %build-inputs "coreutils") "/bin")
|
|
(string-append
|
|
(assoc-ref %build-inputs "less") "/bin"))
|
|
":")
|
|
output
|
|
output
|
|
output)))
|
|
(chmod nethack-script #o555)
|
|
#t)))
|
|
(delete 'check))))
|
|
(home-page "https://nethack.org")
|
|
(synopsis "Classic dungeon crawl game")
|
|
(description "NetHack is a single player dungeon exploration game that runs
|
|
on a wide variety of computer systems, with a variety of graphical and text
|
|
interfaces all using the same game engine. Unlike many other Dungeons &
|
|
Dragons-inspired games, the emphasis in NetHack is on discovering the detail of
|
|
the dungeon and not simply killing everything in sight - in fact, killing
|
|
everything in sight is a good way to die quickly. Each game presents a
|
|
different landscape - the random number generator provides an essentially
|
|
unlimited number of variations of the dungeon and its denizens to be discovered
|
|
by the player in one of a number of characters: you can pick your race, your
|
|
role, and your gender.")
|
|
(license
|
|
(license:fsdg-compatible
|
|
"https://nethack.org/common/license.html"))))
|
|
|
|
(define-public pipewalker
|
|
(package
|
|
(name "pipewalker")
|
|
(version "0.9.4")
|
|
(source
|
|
(origin
|
|
(method url-fetch)
|
|
(uri (string-append "http://downloads.sourceforge.net/pipewalker/"
|
|
"pipewalker-" version ".tar.gz"))
|
|
(sha256
|
|
(base32 "1x46wgk0s55562pd96cxagxkn6wpgglq779f9b64ff1k3xzp3myn"))))
|
|
(build-system gnu-build-system)
|
|
(arguments
|
|
`(#:configure-flags
|
|
(list (string-append "--docdir=" (assoc-ref %outputs "out")
|
|
"/share/doc/" ,name "-" ,version))
|
|
#:phases
|
|
(modify-phases %standard-phases
|
|
(add-after 'configure 'patch-docdir
|
|
;; Makefile.in ignores configure's ‘--docdir=...’ option. Fix that.
|
|
(lambda _
|
|
(substitute* "Makefile"
|
|
(("(pkgdocdatadir = ).*" _ assignment)
|
|
(string-append assignment "$(docdir)\n")))
|
|
#t)))))
|
|
(inputs
|
|
`(("libpng" ,libpng)
|
|
("mesa" ,mesa)
|
|
("sdl" ,sdl)))
|
|
(home-page "http://pipewalker.sourceforge.net/")
|
|
(synopsis "Logical tile puzzle")
|
|
(description
|
|
"PipeWalker is a simple puzzle game with many diffent themes: connect all
|
|
computers to one network server, bring water from a source to the taps, etc.
|
|
The underlying mechanism is always the same: you must turn each tile in the
|
|
grid in the right direction to combine all components into a single circuit.
|
|
Every puzzle has a complete solution, although there may be more than one.")
|
|
(license license:gpl3+)))
|
|
|
|
(define-public prboom-plus
|
|
(package
|
|
(name "prboom-plus")
|
|
(version "2.5.1.4")
|
|
(source (origin
|
|
(method url-fetch)
|
|
(uri (string-append "mirror://sourceforge/prboom-plus/prboom-plus/"
|
|
version "/prboom-plus-" version ".tar.gz"))
|
|
(sha256
|
|
(base32 "151v6nign86m1a2vqz27krsccpc9m4d1jax4y43v2fa82wfj9qp0"))
|
|
(modules '((guix build utils)))
|
|
(snippet
|
|
'(begin
|
|
(substitute* "src/version.c"
|
|
(("__DATE__") "")
|
|
(("__TIME__") ""))
|
|
#t))))
|
|
(build-system gnu-build-system)
|
|
(arguments
|
|
'(#:configure-flags '("--disable-cpu-opt")
|
|
#:make-flags `(,(string-append "gamesdir="
|
|
(assoc-ref %outputs "out") "/bin"))
|
|
#:phases
|
|
(modify-phases %standard-phases
|
|
(add-after 'set-paths 'set-sdl'paths
|
|
(lambda* (#:key inputs #:allow-other-keys)
|
|
(setenv "CPATH"
|
|
(string-append (assoc-ref inputs "sdl-union")
|
|
"/include/SDL:"
|
|
(or (getenv "CPATH") "")))
|
|
#t)))))
|
|
(inputs
|
|
`(("fluidsynth" ,fluidsynth)
|
|
("glu" ,glu)
|
|
("libmad" ,libmad)
|
|
("libpng" ,libpng)
|
|
("libvorbis" ,libvorbis)
|
|
("pcre" ,pcre)
|
|
("portmidi" ,portmidi)
|
|
("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-net)))))
|
|
(home-page "http://prboom-plus.sourceforge.net/")
|
|
(synopsis "Version of the classic 3D shoot'em'up game Doom")
|
|
(description
|
|
"PrBoom+ is a Doom source port developed from the original PrBoom project.")
|
|
(license license:gpl2+)))
|
|
|
|
(define-public retux
|
|
(package
|
|
(name "retux")
|
|
(version "1.3.6")
|
|
(source (origin
|
|
(method url-fetch)
|
|
(uri (string-append "mirror://savannah/retux/"
|
|
(version-major+minor version) "/retux-"
|
|
version "-src.tar.gz"))
|
|
(sha256
|
|
(base32
|
|
"01bidh4zisjp3nc436x0g85v60dvwb3ig37i7y01sa71j8fm4fmb"))))
|
|
(build-system python-build-system)
|
|
(arguments
|
|
`(#:tests? #f ; no check target
|
|
#:phases
|
|
(modify-phases %standard-phases
|
|
;; no setup.py script
|
|
(delete 'build)
|
|
(replace 'install
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
(bin (string-append out "/bin"))
|
|
(data (string-append out "/share/retux"))
|
|
(doc (string-append out "/share/doc/retux")))
|
|
(mkdir-p bin)
|
|
|
|
(substitute* "retux.py"
|
|
;; Use the correct data directory.
|
|
(("os\\.path\\.join\\(os\\.path\\.dirname\\(__file__\\), \"data\"\\),")
|
|
(string-append "\"" data "\","))
|
|
;; Use Python 3 so the patch-shebangs phase works properly.
|
|
((".*python2.*") "#!/usr/bin/python3"))
|
|
|
|
(copy-file "retux.py" (string-append bin "/retux"))
|
|
|
|
(copy-recursively "data" data)
|
|
|
|
(install-file "COPYING" doc)
|
|
#t))))))
|
|
(inputs
|
|
`(("python-sge-pygame" ,python-sge-pygame)
|
|
("python-six" ,python-six)
|
|
("python-xsge" ,python-xsge)))
|
|
(home-page "http://retux.nongnu.org")
|
|
(synopsis "Action platformer game")
|
|
(description
|
|
"ReTux is an action platformer loosely inspired by the Mario games,
|
|
utilizing the art assets from the @code{SuperTux} project.")
|
|
;; GPL version 3 or later is the license for the code and some art.
|
|
;; The rest of the licenses are for the art exclusively, as listed in
|
|
;; data/LICENSES.
|
|
(license (list license:cc0
|
|
license:cc-by3.0
|
|
license:cc-by-sa3.0
|
|
license:cc-by-sa4.0
|
|
license:gpl2+
|
|
license:gpl3+))))
|
|
|
|
(define-public roguebox-adventures
|
|
(package
|
|
(name "roguebox-adventures")
|
|
(version "2.2.1")
|
|
(source
|
|
(origin
|
|
(method url-fetch)
|
|
(uri (string-append
|
|
"http://download.tuxfamily.org/rba/RogueBoxAdventures_v"
|
|
(string-join (string-split version #\.) "_") "_Source.zip"))
|
|
(file-name (string-append name "-" version ".zip"))
|
|
(sha256
|
|
(base32
|
|
"0kmzdgnik8fsf3bg55546l77p3mfxn2awkzfzzdn20n82rd2babw"))))
|
|
(build-system python-build-system)
|
|
(arguments
|
|
`(#:tests? #f ; no check target
|
|
#:phases
|
|
(modify-phases %standard-phases
|
|
(replace 'unpack
|
|
(lambda* (#:key source #:allow-other-keys)
|
|
(and (invoke "unzip" source)
|
|
;; The actual source is buried a few directories deep.
|
|
(chdir (string-append "RogueBoxAdventures_v"
|
|
(string-join
|
|
(string-split ,version #\.) "_")
|
|
"_Source")))))
|
|
;; no setup.py script
|
|
(replace 'build
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
(data (string-append
|
|
out "/share/games/roguebox-adventures")))
|
|
;; Use the correct data directory.
|
|
(substitute* '("main.py" "LIB/getch.py" "LIB/getch_gcwz.py")
|
|
(("basic_path + os\\.sep + 'DATA'")
|
|
(string-append "'" data "'"))
|
|
(("^basic_path.*$")
|
|
(string-append "basic_path ='" data "'\n")))
|
|
(substitute* "LIB/gra_files.py"
|
|
(("basic_path = b_path\\.replace\\('/LIB',''\\)")
|
|
(string-append "basic_path ='" data "'\n")))
|
|
|
|
;; The game must save in the user's home directory because
|
|
;; the store is read-only.
|
|
(substitute* "main.py"
|
|
(("home_save = False") "home_save = True")
|
|
(("'icon_small.png'")
|
|
(string-append "'" data "/icon_small.png'"))))
|
|
#t))
|
|
(replace 'install
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
(bin (string-append out "/bin"))
|
|
(roguebox-adventures
|
|
(string-append bin "/roguebox-adventures"))
|
|
(data (string-append
|
|
out "/share/games/roguebox-adventures"))
|
|
(lib (string-append data "/LIB"))
|
|
(doc (string-append
|
|
out "/share/doc/roguebox-adventures")))
|
|
(mkdir-p bin)
|
|
(mkdir-p doc)
|
|
|
|
(for-each (lambda (file)
|
|
(copy-recursively file
|
|
(string-append data "/" file)))
|
|
'("AUDIO" "FONT" "GRAPHIC" "LIB" "LICENSE"
|
|
"icon_big.png" "icon_small.png"))
|
|
(for-each (lambda (file)
|
|
(chmod file #o555)
|
|
(install-file file lib))
|
|
'("main.py" "run.py"))
|
|
|
|
(copy-recursively "DOC" doc)
|
|
|
|
(call-with-output-file
|
|
roguebox-adventures
|
|
(lambda (p)
|
|
(format p "\
|
|
#!~a
|
|
export PYTHONPATH=~a/LIB:~a
|
|
exec -a \"~a\" ~a \"$@\"\n"
|
|
(which "bash") data (getenv "PYTHONPATH")
|
|
(which "python3")
|
|
(string-append lib "/main.py"))))
|
|
(chmod roguebox-adventures #o555))
|
|
#t)))))
|
|
(native-inputs
|
|
`(("unzip" ,unzip)))
|
|
(inputs
|
|
`(("python-pygame" ,python-pygame)
|
|
("python-tmx" ,python-tmx)))
|
|
(home-page "https://rogueboxadventures.tuxfamily.org")
|
|
(synopsis "A classical roguelike/sandbox game")
|
|
(description
|
|
"RogueBox Adventures is a graphical roguelike with strong influences
|
|
from sandbox games like Minecraft or Terraria. The main idea of RogueBox
|
|
Adventures is to offer the player a kind of roguelike toy-world. This world
|
|
can be explored and changed freely.")
|
|
;; The GPL3+ is for code, the rest are for art.
|
|
(license (list license:cc0
|
|
license:cc-by3.0
|
|
license:gpl3+
|
|
license:silofl1.1))))
|
|
|
|
(define-public xshogi
|
|
(package
|
|
(name "xshogi")
|
|
(version "1.4.2")
|
|
(source
|
|
(origin
|
|
(method url-fetch)
|
|
(uri (string-append "mirror://gnu/gnushogi/xshogi-"
|
|
version ".tar.gz"))
|
|
(sha256
|
|
(base32
|
|
"1dns0nhymak44by18sv48m4xb2skiwbi2i3nb9hl6w9iwd2i2brf"))))
|
|
(build-system gnu-build-system)
|
|
(inputs
|
|
`(("libxaw" ,libxaw)
|
|
("libxt" ,libxt)))
|
|
(home-page "https://www.gnu.org/software/gnushogi/")
|
|
(synopsis "User interface for gnushogi")
|
|
(description "A graphical user interface for the package @code{gnushogi}.")
|
|
;; Contains a copy of GPLv3 but the licence notices simply
|
|
;; state "GNU General Public Licence" without specifying a version.
|
|
(license license:gpl1+)))
|
|
|
|
(define-public abbaye
|
|
(package
|
|
(name "abbaye")
|
|
(version "2.0.1")
|
|
(source
|
|
(origin
|
|
(method git-fetch)
|
|
(uri (git-reference
|
|
(url "https://github.com/nevat/abbayedesmorts-gpl.git")
|
|
(commit (string-append "v" version))))
|
|
(file-name (git-file-name name version))
|
|
(sha256
|
|
(base32 "1pwqf7r9bqb2p3xrw9i7y8pgr1401fy3mnnqpb1qkhmdl3gqi9hb"))
|
|
(modules '((guix build utils)))
|
|
(snippet
|
|
;; Unbundle fonts.
|
|
'(begin
|
|
(delete-file-recursively "fonts")
|
|
#t))))
|
|
(build-system gnu-build-system)
|
|
(arguments
|
|
'(#:make-flags '("CC=gcc")
|
|
#:phases (modify-phases %standard-phases
|
|
(add-after 'set-paths 'set-sdl-paths
|
|
(lambda* (#:key inputs #:allow-other-keys)
|
|
(setenv "CPATH"
|
|
(string-append (assoc-ref inputs "sdl-union")
|
|
"/include/SDL:"
|
|
(or (getenv "CPATH") "")))))
|
|
(add-after 'patch-source-shebangs 'patch-makefile
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
;; Replace /usr with package output directory.
|
|
(substitute* "Makefile"
|
|
(("/usr") (assoc-ref outputs "out")))))
|
|
(add-before 'install 'make-install-dirs
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
(let ((prefix (assoc-ref outputs "out")))
|
|
;; Create directories that the makefile assumes exist.
|
|
(mkdir-p (string-append prefix "/bin"))
|
|
(mkdir-p (string-append prefix "/share/applications"))
|
|
(mkdir-p (string-append prefix "/share/pixmaps")))))
|
|
;; No configure script.
|
|
(delete 'configure))
|
|
#:tests? #f)) ;; No check target.
|
|
(native-inputs `(("pkg-config" ,pkg-config)))
|
|
(inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer)))))
|
|
(home-page "https://github.com/nevat/abbayedesmorts-gpl")
|
|
(synopsis "GNU/Linux port of the indie game \"l'Abbaye des Morts\"")
|
|
(description "L'Abbaye des Morts is a 2D platform game set in 13th century
|
|
France. The Cathars, who preach about good Christian beliefs, were being
|
|
expelled by the Catholic Church out of the Languedoc region in France. One of
|
|
them, called Jean Raymond, found an old church in which to hide, not knowing
|
|
that beneath its ruins lay buried an ancient evil.")
|
|
(license license:gpl3)))
|
|
|
|
(define-public l-abbaye-des-morts
|
|
(deprecated-package "l-abbaye-des-morts" abbaye))
|
|
|
|
(define-public angband
|
|
(package
|
|
(name "angband")
|
|
(version "4.2.0")
|
|
(source
|
|
(origin
|
|
(method url-fetch)
|
|
(uri (string-append "http://rephial.org/downloads/"
|
|
(version-major+minor version)
|
|
"/angband-" version ".tar.gz"))
|
|
(sha256
|
|
(base32
|
|
"0vdm1ymm28wawp94nl1p5q3lhc0k7cnn2kkvvrkfx962gif4kqfk"))
|
|
(modules '((guix build utils)))
|
|
(snippet
|
|
;; So, some of the sounds/graphics/tilesets are under different
|
|
;; licenses... some of them even nonfree! This is a console-only
|
|
;; version of this package so we just remove them.
|
|
;; In the future, if someone tries to make a graphical variant of
|
|
;; this package, they can deal with that mess themselves. :)
|
|
'(begin
|
|
(for-each (lambda (subdir)
|
|
(let ((lib-subdir (string-append "lib/" subdir)))
|
|
(delete-file-recursively lib-subdir)))
|
|
'("fonts" "icons" "sounds" "tiles"))
|
|
(substitute* "lib/Makefile"
|
|
;; And don't try to invoke makefiles in the directories we removed.
|
|
(("gamedata customize help screens fonts tiles sounds icons user")
|
|
"gamedata customize help screens user"))
|
|
#t))))
|
|
(build-system gnu-build-system)
|
|
(arguments
|
|
`(#:tests? #f ; no check target
|
|
#:configure-flags (list (string-append "--bindir=" %output "/bin"))
|
|
#:phases
|
|
(modify-phases %standard-phases
|
|
(replace 'bootstrap
|
|
(lambda _
|
|
(substitute* "acinclude.m4"
|
|
(("ncursesw5-config") "ncursesw6-config"))
|
|
(invoke "sh" "autogen.sh"))))))
|
|
(native-inputs
|
|
`(("autoconf" ,autoconf)
|
|
("automake" ,automake)))
|
|
(inputs `(("ncurses" ,ncurses)))
|
|
(home-page "http://rephial.org/")
|
|
(synopsis "Dungeon exploration roguelike")
|
|
(description "Angband is a Classic dungeon exploration roguelike. Explore
|
|
the depths below Angband, seeking riches, fighting monsters, and preparing to
|
|
fight Morgoth, the Lord of Darkness.")
|
|
(license license:gpl2)))
|
|
|
|
(define-public pingus
|
|
(package
|
|
(name "pingus")
|
|
(version "0.7.6")
|
|
(source
|
|
(origin
|
|
(method git-fetch)
|
|
(uri (git-reference
|
|
(url "https://gitlab.com/pingus/pingus.git")
|
|
(commit (string-append "v" version))))
|
|
(file-name (git-file-name name version))
|
|
(sha256
|
|
(base32
|
|
"0wp06kcmknsnxz7bjnsndb8x062z7r23fb3yrnbfnj68qhz18y74"))
|
|
(patches (search-patches "pingus-boost-headers.patch"
|
|
"pingus-sdl-libs-config.patch"))
|
|
(modules '((guix build utils)))
|
|
(snippet
|
|
'(begin
|
|
(substitute* "src/pingus/screens/demo_session.cpp"
|
|
(("#include <iostream>")
|
|
;; std::function moved to <functional> with C++ 11.
|
|
;; Remove this for versions newer than 0.7.6.
|
|
"#include <iostream>\n#include <functional>"))
|
|
#t))))
|
|
(build-system gnu-build-system)
|
|
(native-inputs `(("pkg-config" ,pkg-config)
|
|
("scons-python2" ,scons-python2)))
|
|
(inputs `(("sdl" ,sdl)
|
|
("sdl-image" ,sdl-image)
|
|
("sdl-mixer" ,sdl-mixer)
|
|
("mesa" ,mesa)
|
|
("glu" ,glu)
|
|
("libpng" ,libpng)
|
|
("boost" ,boost)))
|
|
(arguments
|
|
'(#:make-flags (list (string-append "PREFIX=" %output))
|
|
#:tests? #f ; no check target
|
|
#:phases
|
|
(modify-phases %standard-phases
|
|
(delete 'configure)))) ; no configure script
|
|
(home-page "https://pingus.seul.org/")
|
|
(synopsis "Lemmings clone")
|
|
(description
|
|
"Pingus is a free Lemmings-like puzzle game in which the player takes
|
|
command of a bunch of small animals and has to guide them through levels.
|
|
Since the animals walk on their own, the player can only influence them by
|
|
giving them commands, like build a bridge, dig a hole, or redirect all animals
|
|
in the other direction. Multiple such commands are necessary to reach the
|
|
level's exit. The game is presented in a 2D side view.")
|
|
;; Some source files are under bsd-3 and gpl2+ licenses.
|
|
(license license:gpl3+)))
|
|
|
|
(define-public talkfilters
|
|
(package
|
|
(name "talkfilters")
|
|
(version "2.3.8")
|
|
(source
|
|
(origin
|
|
(method url-fetch)
|
|
(uri (string-append "http://www.hyperrealm.com/" name "/"
|
|
name "-" version ".tar.gz"))
|
|
(sha256
|
|
(base32 "19nc5vq4bnkjvhk8srqddzhcs93jyvpm9r6lzjzwc1mgf08yg0a6"))))
|
|
(build-system gnu-build-system)
|
|
(home-page "https://www.gnu.org/software/talkfilters/")
|
|
(synopsis "Convert English text to humorous dialects")
|
|
(description "The GNU Talk Filters are programs that convert English text
|
|
into stereotyped or otherwise humorous dialects. The filters are provided as
|
|
a C library, so they can easily be integrated into other programs.")
|
|
(license license:gpl2+)))
|
|
|
|
(define-public cmatrix
|
|
(package
|
|
(name "cmatrix")
|
|
(version "2.0")
|
|
(source
|
|
(origin
|
|
(method git-fetch)
|
|
(uri (git-reference
|
|
(url "https://github.com/abishekvashok/cmatrix.git")
|
|
(commit (string-append "v" version))))
|
|
(file-name (git-file-name name version))
|
|
(sha256
|
|
(base32
|
|
"1h9jz4m4s5l8c3figaq46ja0km1gimrkfxm4dg7mf4s84icmasbm"))))
|
|
(build-system gnu-build-system)
|
|
(native-inputs
|
|
`(("autoconf" ,autoconf)
|
|
("automake" ,automake)))
|
|
(arguments
|
|
'(#:phases
|
|
(modify-phases %standard-phases
|
|
(replace 'configure
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
;; This old ‘configure’ script doesn't support
|
|
;; variables passed as arguments.
|
|
(let ((out (assoc-ref outputs "out")))
|
|
(setenv "CONFIG_SHELL" (which "bash"))
|
|
(invoke "./configure"
|
|
(string-append "--prefix=" out))))))))
|
|
(inputs `(("ncurses" ,ncurses)))
|
|
(home-page "http://www.asty.org/cmatrix")
|
|
(synopsis "Simulate the display from \"The Matrix\"")
|
|
(description "CMatrix simulates the display from \"The Matrix\" and is
|
|
based on the screensaver from the movie's website. It works with terminal
|
|
settings up to 132x300 and can scroll lines all at the same rate or
|
|
asynchronously and at a user-defined speed.")
|
|
(license license:gpl2+)))
|
|
|
|
(define-public chess
|
|
(package
|
|
(name "chess")
|
|
(version "6.2.5")
|
|
(source
|
|
(origin
|
|
(method url-fetch)
|
|
(uri (string-append "mirror://gnu/chess/gnuchess-" version
|
|
".tar.gz"))
|
|
(sha256
|
|
(base32
|
|
"00j8s0npgfdi41a0mr5w9qbdxagdk2v41lcr42rwl1jp6miyk6cs"))))
|
|
(build-system gnu-build-system)
|
|
(home-page "https://www.gnu.org/software/chess/")
|
|
(synopsis "Full chess implementation")
|
|
(description "GNU Chess is a chess engine. It allows you to compete
|
|
against the computer in a game of chess, either through the default terminal
|
|
interface or via an external visual interface such as GNU XBoard.")
|
|
(license license:gpl3+)))
|
|
|
|
(define freedink-engine
|
|
(package
|
|
(name "freedink-engine")
|
|
(version "109.6")
|
|
(source (origin
|
|
(method url-fetch)
|
|
(uri (string-append "mirror://gnu/freedink/freedink-" version
|
|
".tar.gz"))
|
|
(sha256
|
|
(base32
|
|
"00hhk1bjdrc1np2qz44sa5n1mb62qzwxbvsnws3vpms6iyn3a2sy"))))
|
|
(build-system gnu-build-system)
|
|
(arguments
|
|
`(#:configure-flags '("--disable-embedded-resources")
|
|
#:phases
|
|
(modify-phases %standard-phases
|
|
(add-after 'unpack 'disable-graphical-tests
|
|
(lambda _
|
|
;; These tests require a graphical interface.
|
|
(substitute* "src/Makefile.am"
|
|
(("test_gfx_fonts TestIOGfxDisplay") ""))
|
|
#t)))))
|
|
(native-inputs `(("autoconf" ,autoconf)
|
|
("automake" ,automake)
|
|
("cxxtest" ,cxxtest)
|
|
("gettext" ,gettext-minimal)
|
|
("help2man" ,help2man)
|
|
("pkg-config" ,pkg-config)))
|
|
(inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer
|
|
sdl2-ttf sdl2-gfx)))
|
|
("fontconfig" ,fontconfig)
|
|
("glm" ,glm)))
|
|
(properties '((ftp-directory . "/freedink")
|
|
(upstream-name . "freedink")))
|
|
(home-page "https://www.gnu.org/software/freedink/")
|
|
(synopsis "Twisted adventures of young pig farmer Dink Smallwood")
|
|
(description
|
|
"GNU FreeDink is a free and portable re-implementation of the engine
|
|
for the role-playing game Dink Smallwood. It supports not only the original
|
|
game data files but it also supports user-produced game mods or \"D-Mods\".
|
|
To that extent, it also includes a front-end for managing all of your D-Mods.")
|
|
(license license:gpl3+)))
|
|
|
|
(define freedink-data
|
|
(package
|
|
(name "freedink-data")
|
|
(version "1.08.20190120")
|
|
(source (origin
|
|
(method url-fetch)
|
|
(uri (string-append "mirror://gnu/freedink/freedink-data-"
|
|
version ".tar.gz"))
|
|
(sha256
|
|
(base32
|
|
"17gvryadlxk172mblbsil7hina1z5wahwaxnr6g3mdq57dvl8pvi"))))
|
|
(build-system gnu-build-system)
|
|
(arguments
|
|
`(#:phases
|
|
(modify-phases %standard-phases
|
|
(delete 'configure) ; no configure script
|
|
(delete 'check)) ; no tests
|
|
#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))))
|
|
(properties '((ftp-directory . "/freedink")))
|
|
(home-page "https://www.gnu.org/software/freedink/")
|
|
(synopsis "Game data for GNU Freedink")
|
|
(description
|
|
"This package contains the game data of GNU Freedink.")
|
|
(license license:gpl3+)))
|
|
|
|
(define-public freedink-dfarc
|
|
(package
|
|
(name "freedink-dfarc")
|
|
(version "3.14")
|
|
(source (origin
|
|
(method url-fetch)
|
|
(uri (string-append "mirror://gnu/freedink/dfarc-"
|
|
version ".tar.gz"))
|
|
(sha256
|
|
(base32
|
|
"1yp8n3w426xnlp10xk06vfi2y3k9xrcfyck7s7qs1v0ys7n284d5"))))
|
|
(build-system gnu-build-system)
|
|
(native-inputs
|
|
`(("intltool" ,intltool)))
|
|
(inputs
|
|
`(("bzip2" ,bzip2)
|
|
("wxwidgets" ,wxwidgets)))
|
|
(properties '((ftp-directory . "/freedink")
|
|
(upstream-name . "dfarc")))
|
|
(home-page "https://www.gnu.org/software/freedink/")
|
|
(synopsis "Front-end for managing and playing Dink Modules")
|
|
(description "DFArc makes it easy to play and manage the GNU FreeDink game
|
|
and its numerous D-Mods.")
|
|
(license license:gpl3+)))
|
|
|
|
(define-public freedink
|
|
;; This is a wrapper that tells the engine where to find the data.
|
|
(package (inherit freedink-engine)
|
|
(name "freedink")
|
|
(build-system trivial-build-system)
|
|
(arguments
|
|
'(#:builder (begin
|
|
(use-modules (guix build utils))
|
|
|
|
(let* ((output (assoc-ref %outputs "out"))
|
|
(bin (string-append output "/bin"))
|
|
(executable (string-append bin "/freedink")))
|
|
(mkdir-p bin)
|
|
(call-with-output-file executable
|
|
(lambda (port)
|
|
(format port "#!~a/bin/sh
|
|
exec ~a/bin/freedink -refdir ~a/share/dink\n"
|
|
(assoc-ref %build-inputs "bash")
|
|
(assoc-ref %build-inputs "engine")
|
|
(assoc-ref %build-inputs "data"))
|
|
(chmod port #o777)))
|
|
#t))
|
|
#:modules ((guix build utils))))
|
|
(inputs `(("engine" ,freedink-engine)
|
|
("data" ,freedink-data)
|
|
("bash" ,bash)))
|
|
(native-inputs '())))
|
|
|
|
(define-public xboard
|
|
(package
|
|
(name "xboard")
|
|
(version "4.9.1")
|
|
(source
|
|
(origin
|
|
(method url-fetch)
|
|
(uri (string-append "mirror://gnu/xboard/xboard-" version
|
|
".tar.gz"))
|
|
(sha256
|
|
(base32
|
|
"1mkh36xnnacnz9r00b5f9ld9309k32jv6mcavklbdnca8bl56bib"))))
|
|
(build-system gnu-build-system)
|
|
(inputs
|
|
`(("gtk+" ,gtk+-2)
|
|
("librsvg" ,librsvg)))
|
|
(native-inputs
|
|
`(("texinfo" ,texinfo)
|
|
("pkg-config" ,pkg-config)))
|
|
(home-page "https://www.gnu.org/software/xboard/")
|
|
(synopsis "Graphical user interface for chess programs")
|
|
(description "GNU XBoard is a graphical board for all varieties of chess,
|
|
including international chess, xiangqi (Chinese chess), shogi (Japanese chess)
|
|
and Makruk. Several lesser-known variants are also supported. It presents a
|
|
fully interactive graphical interface and it can load and save games in the
|
|
Portable Game Notation.")
|
|
(license license:gpl3+)))
|
|
|
|
(define-public gtypist
|
|
(package
|
|
(name "gtypist")
|
|
(version "2.9.5")
|
|
(source (origin
|
|
(method url-fetch)
|
|
(uri (string-append "mirror://gnu/gtypist/gtypist-"
|
|
version ".tar.xz"))
|
|
(sha256
|
|
(base32
|
|
"0xzrkkmj0b1dw3yr0m9hml2y634cc4h61im6zwcq57s7285z8fn1"))
|
|
(modules '((guix build utils)))
|
|
(snippet
|
|
;; We do not provide `ncurses.h' within an `ncursesw'
|
|
;; sub-directory, so patch the source accordingly. See
|
|
;; <http://bugs.gnu.org/19018>.
|
|
'(begin
|
|
(for-each (lambda (file)
|
|
(substitute* file
|
|
(("ncursesw/ncurses.h")
|
|
"ncurses.h")))
|
|
(find-files "." "configure$|\\.c$"))
|
|
#t))))
|
|
(build-system gnu-build-system)
|
|
(inputs `(("ncurses" ,ncurses)
|
|
("perl" ,perl)))
|
|
(home-page "https://www.gnu.org/software/gtypist/")
|
|
(synopsis "Typing tutor")
|
|
(description
|
|
"GNU Typist is a universal typing tutor. It can be used to learn and
|
|
practice touch-typing. Several tutorials are included; in addition to
|
|
tutorials for the standard QWERTY layout, there are also tutorials for the
|
|
alternative layouts Dvorak and Colemak, as well as for the numpad. Tutorials
|
|
are primarily in English, however some in other languages are provided.")
|
|
(license license:gpl3+)))
|
|
|
|
(define-public irrlicht
|
|
(package
|
|
(name "irrlicht")
|
|
(version "1.8.4")
|
|
(source (origin
|
|
(method url-fetch)
|
|
(uri (string-append
|
|
"mirror://sourceforge/irrlicht/Irrlicht%20SDK/"
|
|
(version-major+minor version)
|
|
"/" version "/irrlicht-" version ".zip"))
|
|
(sha256
|
|
(base32
|
|
"0cz4z4dwrv5ypl19ll67wl6jjpy5k6ly4vr042w4br88qq5jhazl"))
|
|
(patches (search-patches "irrlicht-use-system-libs.patch"))
|
|
(modules '((guix build utils)))
|
|
(snippet
|
|
'(begin
|
|
(for-each delete-file-recursively
|
|
'("bin" ; bundled compiled Windows binaries"
|
|
"source/Irrlicht/MacOSX"
|
|
"source/Irrlicht/bzip2"
|
|
"source/Irrlicht/jpeglib"
|
|
"source/Irrlicht/libpng"
|
|
"source/Irrlicht/lzma"
|
|
"source/Irrlicht/zlib"))
|
|
(delete-file "source/Irrlicht/glext.h")
|
|
(delete-file "source/Irrlicht/glxext.h")
|
|
(delete-file "source/Irrlicht/wglext.h")
|
|
#t))))
|
|
(build-system gnu-build-system)
|
|
(arguments
|
|
`(#:phases
|
|
(modify-phases %standard-phases
|
|
(add-after 'unpack 'chdir-to-source
|
|
(lambda _
|
|
;; The actual source is buried a few directories deep.
|
|
(chdir "source/Irrlicht/")
|
|
#t))
|
|
(add-after 'chdir-to-source 'fix-build-env
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
(let ((out (assoc-ref outputs "out")))
|
|
(substitute* "Makefile"
|
|
(("INSTALL_DIR = /usr/local/lib")
|
|
(string-append "INSTALL_DIR = " out "/lib"))
|
|
;; Add '-fpermissive' to the CXXFLAGS
|
|
(("-Wall") "-Wall -fpermissive")) ; CImageLoaderJPG.cpp
|
|
;; The Makefile assumes these directories exist.
|
|
(mkdir-p (string-append out "/lib"))
|
|
(mkdir-p (string-append out "/include")))))
|
|
(delete 'configure)) ; no configure script
|
|
#:tests? #f ; no check target
|
|
#:make-flags '("CC=gcc" "sharedlib")))
|
|
(inputs
|
|
`(("bzip2" ,bzip2)
|
|
("libjpeg" ,libjpeg)
|
|
("libpng" ,libpng)
|
|
("libx11" ,libx11)
|
|
("libxxf86vm" ,libxxf86vm)
|
|
("mesa" ,mesa)))
|
|
(synopsis "3D game engine written in C++")
|
|
(description
|
|
"The Irrlicht Engine is a high performance realtime 3D engine written in
|
|
C++. Features include an OpenGL renderer, extensible materials, scene graph
|
|
management, character animation, particle and other special effects, support
|
|
for common mesh file formats, and collision detection.")
|
|
(home-page "http://irrlicht.sourceforge.net/")
|
|
(license license:zlib)))
|
|
|
|
(define-public mars
|
|
;; The latest release on SourceForge relies on an unreleased version of SFML
|
|
;; with a different API, so we take the latest version from the official
|
|
;; repository on Github.
|
|
(let ((commit "c855d044094a1d92317e38935d81ba938946132e")
|
|
(revision "1"))
|
|
(package
|
|
(name "mars")
|
|
(version (string-append "0.7.5." revision "." (string-take commit 7) ))
|
|
(source (origin
|
|
(method git-fetch)
|
|
(uri (git-reference
|
|
(url "https://github.com/thelaui/M.A.R.S..git")
|
|
(commit commit)))
|
|
(file-name (git-file-name name version))
|
|
(sha256
|
|
(base32
|
|
"1r4c5gap1z2zsv4yjd34qriqkxaq4lb4rykapyzkkdf4g36lc3nh"))
|
|
(patches (search-patches "mars-sfml-2.3.patch"
|
|
"mars-install.patch"))))
|
|
(build-system cmake-build-system)
|
|
(arguments
|
|
`(#:tests? #f ; There are no tests
|
|
#:phases
|
|
(modify-phases %standard-phases
|
|
(add-after 'unpack 'fix-install-path
|
|
(lambda _
|
|
(substitute* "src/CMakeLists.txt"
|
|
(("\\$\\{CMAKE_INSTALL_PREFIX\\}/games")
|
|
"${CMAKE_INSTALL_PREFIX}/bin"))
|
|
#t))
|
|
(add-after 'unpack 'fix-data-path
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
(substitute* "src/System/settings.cpp"
|
|
(("C_dataPath = \"./data/\";")
|
|
(string-append "C_dataPath = \""
|
|
(assoc-ref outputs "out")
|
|
"/share/games/marsshooter/\";")))
|
|
#t)))))
|
|
(inputs
|
|
`(("mesa" ,mesa)
|
|
("fribidi" ,fribidi)
|
|
("taglib" ,taglib)
|
|
("sfml" ,sfml)))
|
|
(home-page "http://marsshooter.org")
|
|
(synopsis "2D space shooter")
|
|
(description
|
|
"M.A.R.S. is a 2D space shooter with pretty visual effects and
|
|
attractive physics. Players can battle each other or computer controlled
|
|
enemies in different game modes such as space ball, death match, team death
|
|
match, cannon keep, and grave-itation pit.")
|
|
(license license:gpl3+))))
|
|
|
|
(define minetest-data
|
|
(package
|
|
(name "minetest-data")
|
|
(version "5.1.1")
|
|
(source (origin
|
|
(method git-fetch)
|
|
(uri (git-reference
|
|
(url "https://github.com/minetest/minetest_game")
|
|
(commit version)))
|
|
(file-name (git-file-name name version))
|
|
(sha256
|
|
(base32
|
|
"1r9fxz2j24q74a9injvbxbf2xk67fzabv616i676zw2cvgv9hn39"))))
|
|
(build-system trivial-build-system)
|
|
(native-inputs
|
|
`(("source" ,source)))
|
|
(arguments
|
|
`(#:modules ((guix build utils))
|
|
#:builder (begin
|
|
(use-modules (guix build utils))
|
|
(let ((install-dir (string-append
|
|
%output
|
|
"/share/minetest/games/minetest_game")))
|
|
(mkdir-p install-dir)
|
|
(copy-recursively
|
|
(assoc-ref %build-inputs "source")
|
|
install-dir)
|
|
#t))))
|
|
(synopsis "Main game data for the Minetest game engine")
|
|
(description
|
|
"Game data for the Minetest infinite-world block sandbox game.")
|
|
(home-page "https://www.minetest.net/")
|
|
(license license:lgpl2.1+)))
|
|
|
|
(define-public minetest
|
|
(package
|
|
(name "minetest")
|
|
(version "5.1.1")
|
|
(source (origin
|
|
(method git-fetch)
|
|
(uri (git-reference
|
|
(url "https://github.com/minetest/minetest")
|
|
(commit version)))
|
|
(file-name (git-file-name name version))
|
|
(sha256
|
|
(base32
|
|
"0cjj63333b7j4ydfq0h9yc6d2jvmyjd7n7zbd08yrf0rcibrj2k0"))
|
|
(modules '((guix build utils)))
|
|
(snippet
|
|
'(begin
|
|
;; Delete bundled libraries.
|
|
(delete-file-recursively "lib")
|
|
#t))))
|
|
(build-system cmake-build-system)
|
|
(arguments
|
|
'(#:configure-flags
|
|
(list "-DRUN_IN_PLACE=0"
|
|
"-DENABLE_FREETYPE=1"
|
|
"-DENABLE_GETTEXT=1"
|
|
"-DENABLE_SYSTEM_JSONCPP=TRUE"
|
|
(string-append "-DIRRLICHT_INCLUDE_DIR="
|
|
(assoc-ref %build-inputs "irrlicht")
|
|
"/include/irrlicht")
|
|
(string-append "-DCURL_INCLUDE_DIR="
|
|
(assoc-ref %build-inputs "curl")
|
|
"/include/curl"))
|
|
#:tests? #f)) ;no check target
|
|
(native-search-paths
|
|
(list (search-path-specification
|
|
(variable "MINETEST_SUBGAME_PATH")
|
|
(files '("share/minetest/games")))))
|
|
(native-inputs
|
|
`(("pkg-config" ,pkg-config)))
|
|
(inputs
|
|
`(("curl" ,curl)
|
|
("freetype" ,freetype)
|
|
("gettext" ,gettext-minimal)
|
|
("gmp" ,gmp)
|
|
("irrlicht" ,irrlicht)
|
|
("jsoncpp" ,jsoncpp)
|
|
("libjpeg" ,libjpeg)
|
|
("libpng" ,libpng)
|
|
("libogg" ,libogg)
|
|
("libvorbis" ,libvorbis)
|
|
("libxxf86vm" ,libxxf86vm)
|
|
("luajit" ,luajit)
|
|
("mesa" ,mesa)
|
|
("ncurses" ,ncurses)
|
|
("openal" ,openal)
|
|
("sqlite" ,sqlite)))
|
|
(propagated-inputs
|
|
`(("minetest-data" ,minetest-data)))
|
|
(synopsis "Infinite-world block sandbox game")
|
|
(description
|
|
"Minetest is a sandbox construction game. Players can create and destroy
|
|
various types of blocks in a three-dimensional open world. This allows
|
|
forming structures in every possible creation, on multiplayer servers or as a
|
|
single player. Mods and texture packs allow players to personalize the game
|
|
in different ways.")
|
|
(home-page "https://www.minetest.net/")
|
|
(license license:lgpl2.1+)))
|
|
|
|
(define glkterm
|
|
(package
|
|
(name "glkterm")
|
|
(version "1.0.4")
|
|
(source
|
|
(origin
|
|
(method url-fetch)
|
|
(uri (string-append "http://www.ifarchive.org/if-archive/programming/"
|
|
"glk/implementations/glkterm-104.tar.gz"))
|
|
(sha256
|
|
(base32
|
|
"0zlj9nlnkdlvgbiliczinirqygiq8ikg5hzh5vgcmnpg9pvnwga7"))))
|
|
(build-system gnu-build-system)
|
|
(propagated-inputs `(("ncurses" ,ncurses))) ; required by Make.glkterm
|
|
(arguments
|
|
'(#:tests? #f ; no check target
|
|
#:phases
|
|
(modify-phases %standard-phases
|
|
(replace 'install
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
(inc (string-append out "/include"))
|
|
(lib (string-append out "/lib")))
|
|
(for-each
|
|
(lambda (file)
|
|
(install-file file inc))
|
|
'("glk.h" "glkstart.h" "gi_blorb.h" "gi_dispa.h" "Make.glkterm"))
|
|
(install-file "libglkterm.a" lib))
|
|
#t))
|
|
(delete 'configure)))) ; no configure script
|
|
(home-page "http://www.eblong.com/zarf/glk/")
|
|
(synopsis "Curses Implementation of the Glk API")
|
|
(description
|
|
"Glk defines a portable API for applications with text UIs. It was
|
|
primarily designed for interactive fiction, but it should be suitable for many
|
|
interactive text utilities, particularly those based on a command line.
|
|
This is an implementation of the Glk library which runs in a terminal window,
|
|
using the @code{curses.h} library for screen control.")
|
|
(license (license:fsf-free "file://README"))))
|
|
|
|
(define-public glulxe
|
|
(package
|
|
(name "glulxe")
|
|
(version "0.5.4")
|
|
(source
|
|
(origin
|
|
(method url-fetch)
|
|
(uri (string-append "http://www.ifarchive.org/if-archive/programming/"
|
|
"glulx/interpreters/glulxe/glulxe-054.tar.gz"))
|
|
(sha256
|
|
(base32
|
|
"0vipydg6ra90yf9b3ipgppwxyb2xdhcxwvirgjy0v20wlf56zhhz"))))
|
|
(build-system gnu-build-system)
|
|
(inputs `(("glk" ,glkterm)))
|
|
(arguments
|
|
'(#:tests? #f ; no check target
|
|
#:make-flags
|
|
(let* ((glk (assoc-ref %build-inputs "glk")))
|
|
(list (string-append "GLKINCLUDEDIR=" glk "/include")
|
|
(string-append "GLKLIBDIR=" glk "/lib")
|
|
(string-append "GLKMAKEFILE=" "Make.glkterm")))
|
|
#:phases
|
|
(modify-phases %standard-phases
|
|
(replace 'install
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
(bin (string-append out "/bin")))
|
|
(install-file "glulxe" bin))
|
|
#t))
|
|
(delete 'configure)))) ; no configure script
|
|
(home-page "https://www.eblong.com/zarf/glulx/")
|
|
(synopsis "Interpreter for Glulx VM")
|
|
(description
|
|
"Glulx is a 32-bit portable virtual machine intended for writing and
|
|
playing interactive fiction. It was designed by Andrew Plotkin to relieve
|
|
some of the restrictions in the venerable Z-machine format. This is the
|
|
reference interpreter, using the Glk API.")
|
|
(license license:expat)))
|
|
|
|
(define-public fifechan
|
|
(package
|
|
(name "fifechan")
|
|
(version "0.1.5")
|
|
(source (origin
|
|
(method url-fetch)
|
|
(uri (string-append "https://codeload.github.com/fifengine/"
|
|
"fifechan/tar.gz/" version))
|
|
(file-name (string-append name "-" version ".tar.gz"))
|
|
(sha256
|
|
(base32
|
|
"0wxs9vz5x9y8chghd8vp7vfk089lfb0qnzggi17zrqkrngs5zgi9"))))
|
|
(build-system cmake-build-system)
|
|
(inputs
|
|
`(("sdl2" ,sdl2)
|
|
("sdl2-image" ,sdl2-image)
|
|
("mesa" ,mesa)))
|
|
(arguments
|
|
'(#:tests? #f)) ; No included tests
|
|
(home-page "https://fifengine.github.io/fifechan/")
|
|
(synopsis "Cross platform GUI library specifically for games")
|
|
(description
|
|
"Fifechan is a lightweight cross platform GUI library written in C++
|
|
specifically designed for games. It has a built in set of extendable GUI
|
|
Widgets, and allows users to create more.")
|
|
(license license:lgpl2.1+)))
|
|
|
|
(define-public fifengine
|
|
(package
|
|
(name "fifengine")
|
|
(version "0.4.2")
|
|
(source (origin
|
|
(method url-fetch)
|
|
(uri (string-append "https://codeload.github.com/fifengine/"
|
|
"fifengine/tar.gz/" version))
|
|
(file-name (string-append name "-" version ".tar.gz"))
|
|
(sha256
|
|
(base32
|
|
"1y4grw25cq5iqlg05rnbyxw1njl11ypidnlsm3qy4sm3xxdvb0p8"))))
|
|
(build-system cmake-build-system)
|
|
(arguments
|
|
`(#:tests? #f ; TODO The test running fails to run some tests.
|
|
#:modules ((srfi srfi-1)
|
|
(guix build cmake-build-system)
|
|
(guix build utils))
|
|
#:configure-flags
|
|
(list
|
|
(string-append "-DOPENALSOFT_INCLUDE_DIR="
|
|
(assoc-ref %build-inputs "openal")
|
|
"/include/AL")
|
|
(string-append "-DPYTHON_SITE_PACKAGES="
|
|
(assoc-ref %outputs "out")
|
|
"/lib/python3.7/site-packages"))
|
|
#:phases
|
|
(modify-phases %standard-phases
|
|
(add-after 'unpack 'patch-run_tests.py
|
|
(lambda _
|
|
;; Patch the test runner to exit with a status of 1 if any test
|
|
;; fails, to allow detecting failures.
|
|
(substitute* "run_tests.py"
|
|
(("ERROR\\. One or more tests failed!'\\)")
|
|
"ERROR. One or more tests failed!')
|
|
\t\texit(1)"))
|
|
#t))
|
|
;; Run tests after installation so that we can make use of the built
|
|
;; python modules.
|
|
(delete 'check)
|
|
(add-after 'install 'check
|
|
(lambda* (#:key inputs outputs tests? #:allow-other-keys)
|
|
(define python-version
|
|
(let* ((version (last (string-split
|
|
(assoc-ref inputs "python")
|
|
#\-)))
|
|
(components (string-split version #\.))
|
|
(major+minor (take components 2)))
|
|
(string-join major+minor ".")))
|
|
|
|
(when tests?
|
|
;; Set PYTHONPATH so that python finds the installed modules.
|
|
(setenv "PYTHONPATH"
|
|
(string-append (getenv "PYTHONPATH") ":"
|
|
(assoc-ref outputs "out")
|
|
"/lib/python"
|
|
python-version
|
|
"/site-packages"))
|
|
;; The tests require an X server.
|
|
(system "Xvfb :1 &")
|
|
(setenv "DISPLAY" ":1")
|
|
(setenv "XDG_RUNTIME_DIR" "/tmp")
|
|
;; Run tests
|
|
(chdir ,(string-append "../" name "-" version))
|
|
(invoke "python3" "run_tests.py" "-a"))
|
|
#t)))))
|
|
(inputs
|
|
`(("sdl2" ,sdl2)
|
|
("sdl2-image" ,sdl2-image)
|
|
("sdl2-ttf" ,sdl2-ttf)
|
|
("tinyxml" ,tinyxml)
|
|
("openal" ,openal)
|
|
("libogg" ,libogg)
|
|
("glew" ,glew)
|
|
("libvorbis" ,libvorbis)
|
|
("boost" ,boost)
|
|
("fifechan" ,fifechan)
|
|
("swig" ,swig)
|
|
("python" ,python)))
|
|
(native-inputs
|
|
`(("python" ,python)
|
|
("swig" ,swig)
|
|
("xvfb" ,xorg-server)))
|
|
(propagated-inputs
|
|
`(("python-future" ,python-future)))
|
|
(home-page "https://www.fifengine.net/")
|
|
(synopsis "FIFE is a multi-platform isometric game engine written in C++")
|
|
(description
|
|
"@acronym{FIFE, Flexible Isometric Free Engine} is a multi-platform
|
|
isometric game engine. Python bindings are included allowing users to create
|
|
games using Python as well as C++.")
|
|
(license license:lgpl2.1+)))
|
|
|
|
(define-public fizmo
|
|
(package
|
|
(name "fizmo")
|
|
(version "0.8.5")
|
|
(source (origin
|
|
(method url-fetch)
|
|
(uri (string-append "https://fizmo.spellbreaker.org/source/"
|
|
"fizmo-" version ".tar.gz"))
|
|
(sha256
|
|
(base32
|
|
"1amyc4n41jf08kxmdgkk30bzzx54miaxa97w28f417qwn8lrl98w"))))
|
|
(build-system gnu-build-system)
|
|
(arguments
|
|
'(#:configure-flags
|
|
(let ((libjpeg (assoc-ref %build-inputs "libjpeg"))
|
|
(ncurses (assoc-ref %build-inputs "ncurses")))
|
|
(list (string-append "--with-jpeg-includedir=" libjpeg "/include")))))
|
|
(native-inputs
|
|
`(("pkg-config" ,pkg-config)))
|
|
(inputs
|
|
`(("freetype" ,freetype)
|
|
("libjpeg" ,libjpeg)
|
|
("libpng" ,libpng)
|
|
("libsndfile" ,libsndfile)
|
|
("libxml2" ,libxml2)
|
|
("ncurses" ,ncurses)
|
|
("sdl2" ,sdl2)))
|
|
(home-page "https://fizmo.spellbreaker.org/")
|
|
(synopsis "Z-machine interpreter")
|
|
(description
|
|
"Fizmo is a console-based Z-machine interpreter. It is used to play
|
|
interactive fiction, also known as text adventures, which were implemented
|
|
either by Infocom or created using the Inform compiler.")
|
|
(license license:bsd-3)))
|
|
|
|
(define-public gnugo
|
|
(package
|
|
(name "gnugo")
|
|
(version "3.8")
|
|
(source (origin
|
|
(method url-fetch)
|
|
(uri (string-append "mirror://gnu/gnugo/gnugo-" version
|
|
".tar.gz"))
|
|
(sha256
|
|
(base32
|
|
"0wkahvqpzq6lzl5r49a4sd4p52frdmphnqsfdv7gdp24bykdfs6s"))))
|
|
(build-system gnu-build-system)
|
|
(inputs `(("readline" ,readline)))
|
|
(synopsis "Play the game of Go")
|
|
(description
|
|
"GNU Go is a program that plays the game of Go, in which players
|
|
place stones on a grid to form territory or capture other stones. While
|
|
it can be played directly from the terminal, rendered in ASCII characters,
|
|
it is also possible to play GNU Go with 3rd party graphical interfaces or
|
|
even in Emacs. It supports the standard game storage format (SGF, Smart
|
|
Game Format) and inter-process communication format (GMP, Go Modem
|
|
Protocol).")
|
|
(home-page "https://www.gnu.org/software/gnugo/")
|
|
(license license:gpl3+)))
|
|
|
|
(define-public extremetuxracer
|
|
(package
|
|
(name "extremetuxracer")
|
|
(version "0.7.5")
|
|
(source (origin
|
|
(method url-fetch)
|
|
(uri (string-append
|
|
"mirror://sourceforge/extremetuxracer/releases/"
|
|
version "/etr-" version ".tar.xz"))
|
|
(sha256
|
|
(base32
|
|
"1ly63316c07i0gyqqmyzsyvygsvygn0fpk3bnbg25fi6li99rlsg"))))
|
|
(build-system gnu-build-system)
|
|
(native-inputs
|
|
`(("pkg-config" ,pkg-config)))
|
|
(inputs
|
|
`(("glu" ,glu)
|
|
("sfml" ,sfml)))
|
|
(synopsis "High-speed arctic racing game based on Tux Racer")
|
|
;; Snarfed straight from Debian.
|
|
(description "Extreme Tux Racer, or etracer as it is called for short, is
|
|
a simple OpenGL racing game featuring Tux, the Linux mascot. The goal of the
|
|
game is to slide down a snow- and ice-covered mountain as quickly as possible,
|
|
avoiding the trees and rocks that will slow you down.
|
|
|
|
Collect herrings and other goodies while sliding down the hill, but avoid fish
|
|
bones.
|
|
|
|
This game is based on the GPL version of the famous game TuxRacer.")
|
|
(home-page "https://sourceforge.net/projects/extremetuxracer/")
|
|
(license license:gpl2+)))
|
|
|
|
(define-public supertuxkart
|
|
(package
|
|
(name "supertuxkart")
|
|
(version "1.1")
|
|
(source
|
|
(origin
|
|
(method url-fetch)
|
|
(uri (string-append "mirror://sourceforge/supertuxkart/SuperTuxKart/"
|
|
version "/supertuxkart-" version "-src.tar.xz"))
|
|
(sha256
|
|
(base32
|
|
"1s0ai07g3sswck9mr0142989mrgzzq1njc1qxk5als5b245jpc79"))
|
|
(modules '((guix build utils)))
|
|
(snippet
|
|
;; Delete bundled library sources
|
|
'(begin
|
|
;; Supertuxkart uses modified versions of the Irrlicht engine
|
|
;; and the bullet library. The developers gave an explanation
|
|
;; here: http://forum.freegamedev.net/viewtopic.php?f=17&t=3906
|
|
;; FIXME: try to unbundle angelscript and libraqm
|
|
(for-each delete-file-recursively
|
|
'("lib/zlib"
|
|
"lib/libpng"
|
|
"lib/jpeglib"
|
|
"lib/glew"
|
|
"lib/wiiuse"
|
|
"lib/enet"))
|
|
#t))))
|
|
(build-system cmake-build-system)
|
|
(arguments
|
|
`(#:tests? #f ; no check target
|
|
#:configure-flags
|
|
(list "-DUSE_WIIUSE=0"
|
|
;; Do not use the bundled zlib, glew and enet.
|
|
"-DNO_IRR_COMPILE_WITH_ZLIB_=TRUE"
|
|
"-DUSE_SYSTEM_GLEW=TRUE"
|
|
"-DUSE_SYSTEM_ENET=TRUE"
|
|
;; In order to use the system ENet library, IPv6 support (added in
|
|
;; SuperTuxKart version 1.1) must be disabled.
|
|
"-DUSE_IPV6=FALSE"
|
|
;; FIXME: needs libopenglrecorder
|
|
"-DBUILD_RECORDER=0"
|
|
;; Irrlicht returns an integer instead of a boolean
|
|
"-DCMAKE_C_FLAGS=-fpermissive")))
|
|
(inputs
|
|
`(("glew" ,glew)
|
|
("zlib" ,zlib)
|
|
("openal" ,openal)
|
|
("libvorbis" ,libvorbis)
|
|
("freetype" ,freetype)
|
|
("fribidi" ,fribidi)
|
|
("harfbuzz" ,harfbuzz)
|
|
("mesa" ,mesa)
|
|
("libx11" ,libx11)
|
|
("libxrandr" ,libxrandr)
|
|
("curl" ,curl)
|
|
;; The following input is needed to build the bundled and modified
|
|
;; version of irrlicht.
|
|
("libjpeg" ,libjpeg)
|
|
("openssl" ,openssl)
|
|
("enet" ,enet)))
|
|
(native-inputs
|
|
`(("pkg-config" ,pkg-config)))
|
|
(home-page "https://supertuxkart.net/Main_Page")
|
|
(synopsis "3D kart racing game")
|
|
(description "SuperTuxKart is a 3D kart racing game, with a focus on
|
|
having fun over realism. You can play with up to 4 friends on one PC, racing
|
|
against each other or just trying to beat the computer; single-player mode is
|
|
also available.")
|
|
(license license:gpl3+)))
|
|
|
|
(define-public unknown-horizons
|
|
(package
|
|
(name "unknown-horizons")
|
|
(version "2019.1")
|
|
(source (origin
|
|
(method url-fetch)
|
|
(uri (string-append "https://codeload.github.com/unknown-horizons/"
|
|
"unknown-horizons/tar.gz/" version))
|
|
(file-name (string-append name "-" version ".tar.gz"))
|
|
(sha256
|
|
(base32
|
|
"1n747p7h0qp48szgp262swg0xh8kxy1bw8ag1qczs4i26hyzs5x4"))))
|
|
(build-system python-build-system)
|
|
(arguments
|
|
'(#:phases
|
|
(modify-phases %standard-phases
|
|
(add-before 'build 'set-HOME
|
|
(lambda _
|
|
(setenv "HOME" "/tmp")))
|
|
(add-after 'build 'build-extra
|
|
(lambda _
|
|
(invoke "python3" "./setup.py" "build_i18n")
|
|
(invoke "python3" "horizons/engine/generate_atlases.py" "2048")
|
|
#t))
|
|
(add-after 'install 'patch
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
(let ((out (assoc-ref outputs "out")))
|
|
(substitute* (string-append out "/bin/unknown-horizons")
|
|
(("os\\.chdir\\(get\\_content\\_dir\\_parent_path\\(\\)\\)")
|
|
(string-append "os.chdir(\""
|
|
(assoc-ref outputs "out")
|
|
"/share/unknown-horizons\")"))))
|
|
#t))
|
|
;; TODO: Run GUI tests as well
|
|
(replace 'check
|
|
(lambda _
|
|
(substitute* "horizons/constants.py"
|
|
(("IS_DEV_VERSION = False")
|
|
"IS_DEV_VERSION = True"))
|
|
(invoke "pytest" "tests")
|
|
(substitute* "horizons/constants.py"
|
|
(("IS_DEV_VERSION = True")
|
|
"IS_DEV_VERSION = False"))
|
|
#t)))))
|
|
(inputs
|
|
`(("fifengine" ,fifengine)
|
|
("python:tk" ,python "tk")
|
|
("python-pillow" ,python-pillow)
|
|
("python-pyyaml" ,python-pyyaml)))
|
|
(native-inputs
|
|
`(("intltool" ,intltool)
|
|
|
|
;; Required for tests
|
|
("python-greenlet" ,python-greenlet)
|
|
("python-polib" ,python-polib)
|
|
("python-pytest" ,python-pytest)
|
|
("python-pytest-mock" ,python-pytest-mock)))
|
|
(home-page "http://unknown-horizons.org/")
|
|
(synopsis "Isometric realtime strategy, economy and city building simulation")
|
|
(description
|
|
"Unknown Horizons is a 2D realtime strategy simulation with an emphasis
|
|
on economy and city building. Expand your small settlement to a strong and
|
|
wealthy colony, collect taxes and supply your inhabitants with valuable
|
|
goods. Increase your power with a well balanced economy and with strategic
|
|
trade and diplomacy.")
|
|
(license (list
|
|
license:gpl2+ ; Covers code
|
|
license:expat ; tests/dummy.py, ext/polib.py
|
|
license:cc-by-sa3.0 ; Covers some media content
|
|
license:cc-by3.0 ; Covers some media content
|
|
license:bsd-3)))) ; horizons/ext/speaklater.py
|
|
|
|
(define-public gnujump
|
|
(package
|
|
(name "gnujump")
|
|
(version "1.0.8")
|
|
(source (origin
|
|
(method url-fetch)
|
|
(uri (string-append "mirror://gnu/gnujump/gnujump-"
|
|
version ".tar.gz"))
|
|
(sha256
|
|
(base32
|
|
"05syy9mzbyqcfnm0hrswlmhwlwx54f0l6zhcaq8c1c0f8dgzxhqk"))))
|
|
(build-system gnu-build-system)
|
|
(arguments
|
|
'(#:phases
|
|
(modify-phases %standard-phases
|
|
(add-before
|
|
'configure 'link-libm
|
|
(lambda _ (setenv "LIBS" "-lm")))
|
|
(add-after 'install 'create-desktop-entry
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
(apps (string-append out "/share/applications")))
|
|
(mkdir-p apps)
|
|
(with-output-to-file
|
|
(string-append apps "/gnujump.desktop")
|
|
(lambda _
|
|
(format #t
|
|
"[Desktop Entry]~@
|
|
Name=GNUjump~@
|
|
Comment=Jump up the tower to survive~@
|
|
Exec=~a/bin/gnujump~@
|
|
Terminal=false~@
|
|
Type=Application~@
|
|
Categories=Game;ArcadeGame~%"
|
|
out)))))))))
|
|
(inputs
|
|
`(("glu" ,glu)
|
|
("mesa" ,mesa)
|
|
("sdl" ,sdl)
|
|
("sdl-image" ,sdl-image)
|
|
("sdl-mixer" ,sdl-mixer)))
|
<