;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2016, 2017 Rodger Fox <thylakoid@openmailbox.org>
;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
-;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
+;;; Copyright © 2016, 2017 ng0 <ng0@infotropique.org>
;;; Copyright © 2016 Albin Söderqvist <albin@fripost.org>
-;;; Copyright © 2016, 2017 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net>
;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org>
;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017 nee <nee-git@hidamari.blue>
+;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
+;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
+;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
#: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 avahi)
#:use-module (gnu packages boost)
#:use-module (gnu packages documentation)
+ #:use-module (gnu packages docbook)
#:use-module (gnu packages fltk)
#:use-module (gnu packages fribidi)
#:use-module (gnu packages game-development)
#: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 guile)
#:use-module (gnu packages imagemagick)
#:use-module (gnu packages libcanberra)
+ #:use-module (gnu packages libedit)
#:use-module (gnu packages libunwind)
#:use-module (gnu packages haskell)
#:use-module (gnu packages mp3)
#:use-module (gnu packages image)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages netpbm)
+ #:use-module (gnu packages networking)
#:use-module (gnu packages ocaml)
#:use-module (gnu packages python)
#:use-module (gnu packages readline)
+ #:use-module (gnu packages textutils)
#:use-module (gnu packages xorg)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages databases)
+ #:use-module (gnu packages shells)
#:use-module (gnu packages sdl)
#:use-module (gnu packages swig)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages compression)
#:use-module (gnu packages pulseaudio)
#:use-module (gnu packages linux)
- #:use-module (gnu packages zip)
#:use-module (gnu packages xiph)
#:use-module (gnu packages curl)
#:use-module (gnu packages lua)
#:use-module (gnu packages messaging)
#:use-module (gnu packages upnp)
#:use-module (gnu packages wxwidgets)
+ #:use-module (gnu packages bison)
+ #:use-module (gnu packages flex)
+ #:use-module (gnu packages cmake)
+ #:use-module (gnu packages gnuzilla)
+ #:use-module (gnu packages icu4c)
+ #:use-module (gnu packages networking)
#:use-module (guix build-system gnu)
#:use-module (guix build-system haskell)
#:use-module (guix build-system python)
#:use-module (guix build-system cmake)
#:use-module (guix build-system trivial))
+(define-public armagetronad
+ (package
+ (name "armagetronad")
+ (version "0.2.8.3.4")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/" name "/stable/"
+ version "/" name "-" 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 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 cataclysm-dda
+ (package
+ (name "cataclysm-dda")
+ (version "0.C")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/CleverRaven/Cataclysm-DDA/"
+ "archive/" version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1xlajmgl9cviqyjpp5g5q4rbljy9gqc49v54bi8gpzr68s14gsb9"))
+ (modules '((guix build utils)))
+ (snippet
+ ;; Import cmath header for the std::pow function.
+ '(for-each (lambda (file)
+ (substitute* file
+ (("#include <math.h>")
+ "#include <cmath>")))
+ (find-files "src")))))
+ (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")
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda _
+ (substitute* "Makefile"
+ (("ncursesw5-config") "ncursesw6-config")
+ (("RELEASE_FLAGS = -Werror") "RELEASE_FLAGS ="))
+ #t))
+ (add-after 'build 'build-tiles
+ (lambda* (#:key make-flags outputs #:allow-other-keys)
+ ;; Change prefix directory and enable tile graphics and sound.
+ (zero?
+ (apply system* "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)
+ (zero?
+ (apply system* "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 "http://en.cataclysmdda.com/")
+ (synopsis "Survival horror roguelike video game")
+ (description
+ "Cataclysm: Dark Days Ahead 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 cowsay
+ (package
+ (name "cowsay")
+ (version "3.03")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://web.archive.org/web/20071026043648/"
+ "http://www.nog.net:80/~tony/warez/"
+ "cowsay-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1bxj802na2si2bk5zh7n0b7c33mg8a5n2wnvh0vihl9bmjkp51hb"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (delete 'install)
+ (replace 'build
+ (lambda* (#:key outputs #:allow-other-keys)
+ (zero? (system* "sh" "install.sh"
+ (assoc-ref outputs "out")))))
+ (replace 'check
+ (lambda* (#:key outputs #:allow-other-keys)
+ (zero? (system* (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/"))
+ (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 @code{cowthink}.")
+ ;; Any version of the GPL.
+ (license license:gpl3+)))
+
(define-public freedoom
(package
(name "freedoom")
- (version "0.11.2")
+ (version "0.11.3")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/" name "/" name
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0b9k61f97spivi75f76zwwg8a3bgc6iil2hidqfj8s50lhqggwbb"))))
+ "1bjijdfqhpazyifx1qda7scj7dry1azhjrnl8h8zn2vqfgdmlh0q"))))
(build-system gnu-build-system)
(arguments
'(#:make-flags `(,(string-append "prefix=" (assoc-ref %outputs "out")))
#:tests? #f ; no check target
#:phases
(modify-phases %standard-phases
- (add-before 'unpack 'no (lambda _ #t))
(replace 'configure
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((dejavu (assoc-ref inputs "font-dejavu"))
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/"
+ name "-" 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"))
+ #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 prboom-plus
(package
(name "prboom-plus")
"PrBoom+ is a Doom source port developed from the original PrBoom project.")
(license license:gpl2+)))
+(define-public retux
+ (package
+ (name "retux")
+ (version "1.3.4")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://savannah/retux/"
+ (version-major+minor version) "/retux-"
+ version "-src.tar.gz"))
+ (sha256
+ (base32
+ "1wgvh3q96kfgymb2jpd58xsms9hmckhhc4fq7v2k61gh2l11cvdj"))))
+ (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)))))))
+ (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 xshogi
(package
(name "xshogi")
(define-public chess
(package
(name "chess")
- (version "6.2.4")
+ (version "6.2.5")
(source
(origin
(method url-fetch)
".tar.gz"))
(sha256
(base32
- "1vw2w3jwnmn44d5vsw47f8y70xvxcsz9m5msq9fgqlzjch15qhiw"))))
+ "00j8s0npgfdi41a0mr5w9qbdxagdk2v41lcr42rwl1jp6miyk6cs"))))
(build-system gnu-build-system)
(home-page "https://www.gnu.org/software/chess/")
(synopsis "Full chess implementation")
(define minetest-data
(package
(name "minetest-data")
- (version "0.4.15")
+ (version "0.4.16")
(source (origin
(method url-fetch)
(uri (string-append
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "12kxklcd1b5n0f369zf3xxhvkrizxj4d9xv0dh8crfqiymaym0zm"))))
+ "0nibpm600rbv9dg1zgcsl5grlbqx0b5l6cg1lp6sqkwvjialb4ga"))))
(build-system trivial-build-system)
(native-inputs
`(("source" ,source)
(define-public minetest
(package
(name "minetest")
- (version "0.4.15")
+ (version "0.4.16")
(source (origin
(method url-fetch)
(uri (string-append
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "1ag3jcj7kpq3ph12zirk1c0mj9i0g50wmw932f8gi11liq8yd12n"))))
+ "0mbnf1ma4gsw9ah68ply04059xkfx5psdxwalxp78sgmx4ypkwqf"))))
(build-system cmake-build-system)
(arguments
'(#:configure-flags
(define-public fizmo
(package
(name "fizmo")
- (version "0.7.9")
+ (version "0.8.4")
(source (origin
(method url-fetch)
(uri (string-append "https://christoph-ender.de/fizmo/source/"
name "-" version ".tar.gz"))
(sha256
(base32
- "1w7cgyjrhgkadjrazijzhq7zh0pl5bfc6wl7mdpgh020y4kp46d7"))))
+ "1sd988db2302r7cbfcfghbmg8ck43c6hvnlnlpb0rqxb7pm9cwyy"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
- `(("libjpeg" ,libjpeg)
+ `(("freetype" ,freetype)
+ ("libjpeg" ,libjpeg)
("libpng" ,libpng)
("libsndfile" ,libsndfile)
("libxml2" ,libxml2)
("ncurses" ,ncurses)
- ("sdl" ,sdl)))
+ ("sdl2" ,sdl2)))
(home-page "https://christoph-ender.de/fizmo/")
(synopsis "Z-machine interpreter")
(description
(define-public retroarch
(package
(name "retroarch")
- (version "1.5.0")
+ (version "1.6.7")
(source
(origin
(method url-fetch)
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "1rbdax3i33myg1v938pxy28117ihff2lml1ky6g70c8099fkirjx"))))
+ (base32 "13vp5skf95a4fla3dwdk2v48dgnmrvimvp9fgpr1vppb7wfjhbr1"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; no tests
(native-inputs
`(("pkg-config" ,pkg-config)
("which" ,which)))
- (home-page "http://www.libretro.com/")
+ (home-page "https://www.libretro.com/")
(synopsis "Reference frontend for the libretro API")
(description
"Libretro is a simple but powerful development interface that allows for
(sha256
(base32
"10l2ljmd7mv8f9ylarqmxxryicdnph2qkm3g5maxnsm2k2q0n20b"))
+ (patches (search-patches "supertuxkart-angelscript-ftbfs.patch"))
(modules '((guix build utils)))
(snippet
;; Delete bundled library sources
(define-public gamine
(package
(name "gamine")
- (version "1.4")
+ (version "1.5")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/gamine-game/"
"gamine-" version ".tar.gz"))
(sha256
(base32
- "1iny959i1kl2ab6z5xi4s66mrvrwcarxyvjfp2k1sx532s8knk8h"))))
+ "08wnk7w84c2413hwny89j2cn89cvfdf67bfc6wl0bf475if0mf4h"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
(define-public manaplus
(package
(name "manaplus")
- (version "1.7.3.4")
+ (version "1.7.6.10")
(source (origin
(method url-fetch)
(uri (string-append
version "/manaplus-" version ".tar.xz"))
(sha256
(base32
- "0mbxzsgjg16pqa3jnxkd7wwvw1lrx455r7fvwjfhzp0yv7acrn10"))))
+ "0l7swvpzq20am4w2rsjpp6fsvbjv07il6wbfy45a7h9zsdihmqhl"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags
("curl" ,curl)
("libxml2" ,libxml2)
("mesa" ,mesa)
- ("physfs" ,physfs)
("sdl-union" ,(sdl-union))))
(home-page "http://manaplus.org")
(synopsis "Client for 'The Mana World' and similar games")
(define openttd-engine
(package
(name "openttd-engine")
- (version "1.6.1")
+ (version "1.7.1")
(source
(origin (method url-fetch)
(uri (string-append "http://binaries.openttd.org/releases/"
version "/openttd-" version "-source.tar.xz"))
(sha256
(base32
- "1ak32fj5xkk2fvmm3g8i7wzmk4bh2ijsp8fzvvw5wj6365p9j24v"))
+ "0dhv5bbbg1dmmq7fi3xss0a9jq2rqgb5sf9fsqzlsjcdm590j6b1"))
(modules '((guix build utils)))
(snippet
;; The DOS port contains proprietary software.
passengers by land, water and air. It is a re-implementation of Transport
Tycoon Deluxe with many enhancements including multiplayer mode,
internationalization support, conditional orders and the ability to clone,
-autoreplace and autoupdate vehicles. This package only includes the game engine. When you start
-it you will be prompted to download a graphics set.")
+autoreplace and autoupdate vehicles. This package only includes the game
+engine. When you start it you will be prompted to download a graphics set.")
(home-page "http://openttd.org/")
;; This package is GPLv2, except for a few files located in
;; "src/3rdparty/" which are under the 3-clause BSD, LGPLv2.1+ and Zlib
;; 'openttd' a wrapper around them. The engine is playable by itself,
;; but it asks a user to download graphics if it's not found.
+(define openttd-opengfx
+ (package
+ (name "openttd-opengfx")
+ (version "0.5.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "http://binaries.openttd.org/extra/opengfx/"
+ version "/opengfx-" version "-source.tar.xz"))
+ (sha256
+ (base32
+ "0iz66q7p1mf00njfjbc4vibh3jaybki7armkl18iz7p6x4chp9zv"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:make-flags (list "CC=gcc"
+ (string-append "INSTALL_DIR="
+ (assoc-ref %outputs "out")
+ "/share/openttd/baseset"))
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda _
+ ;; Make sure HOME is writable for GIMP.
+ (setenv "HOME" (getcwd))
+
+ ;; Redirect stdout, not stderr, to /dev/null. This prevents
+ ;; dos2unix from receiving its version information as a flag.
+ (substitute* "Makefile"
+ (("\\$\\(UNIX2DOS\\) -q --version 2>/dev/null")
+ "$(UNIX2DOS) -q --version 1>/dev/null")))))
+ ;; The check phase for this package only checks the md5sums of the built
+ ;; GRF files against the md5sums of the release versions. Because we use
+ ;; different software versions than upstream does, some of the md5sums
+ ;; are different. However, the package is still reproducible, it's safe
+ ;; to disable this test.
+ #:tests? #f))
+ (native-inputs `(("dos2unix" ,dos2unix)
+ ("gimp" ,gimp)
+ ("grfcodec" ,grfcodec)
+ ("nml" ,nml)
+ ("python" ,python-2)))
+ (home-page "http://dev.openttdcoop.org/projects/opengfx")
+ (synopsis "Base graphics set for OpenTTD")
+ (description
+ "The OpenGFX projects is an implementation of the OpenTTD base grahics
+set that aims to ensure the best possible out-of-the-box experience.
+
+OpenGFX provides you with...
+@enumerate
+@item All graphics you need to enjoy OpenTTD.
+@item Uniquely drawn rail vehicles for every climate.
+@item Completely snow-aware rivers.
+@item Different river and sea water.
+@item Snow-aware buoys.
+@end enumerate")
+ (license license:gpl2)))
+
(define-public openttd
(package
(inherit openttd-engine)
- (name "openttd")))
+ (name "openttd")
+ (arguments
+ (substitute-keyword-arguments (package-arguments openttd-engine)
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (add-after 'install 'install-data
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let*
+ ((opengfx (assoc-ref inputs "opengfx"))
+ (out (assoc-ref outputs "out"))
+ (gfx-dir
+ (string-append out
+ "/share/games/openttd/baseset/opengfx")))
+ (mkdir-p gfx-dir)
+ (copy-recursively opengfx gfx-dir))
+ #t))))))
+ (native-inputs
+ `(("opengfx" ,openttd-opengfx)
+ ,@(package-native-inputs openttd-engine)))))
(define-public pinball
(package
(define-public higan
(package
(name "higan")
- (version "101")
+ (version "104")
(source
(origin
(method url-fetch)
version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "0qavwkmzc63p6qplmxii4gc541z5mcs8gjwh3m4y7i576r7rcbk9"))
+ (base32 "18by01ir2mvdi9hq571in1hk18gw2bd0ynq4avfs1qj0qra35fqb"))
(patches (search-patches "higan-remove-march-native-flag.patch"))))
(build-system gnu-build-system)
(native-inputs
;; - higan/emulator/emulator.hpp
(license license:gpl3)))
+(define-public mgba
+ (package
+ (name "mgba")
+ (version "0.6.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/mgba-emu/mgba/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "01zy2w5pihlkrmbm51icgyff6iqyqa5ha6qrm4aj8ibzznz03kyq"))
+ (modules '((guix build utils)))
+ (snippet
+ ;; Make sure we don't use the bundled software.
+ '(for-each
+ (lambda (subdir)
+ (let ((lib-subdir (string-append "src/third-party/" subdir)))
+ (delete-file-recursively lib-subdir)))
+ '("libpng" "lzma" "sqlite3" "zlib")))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:tests? #f ;no "test" target
+ #:configure-flags
+ (list "-DUSE_LZMA=OFF" ;do not use bundled LZMA
+ "-DUSE_LIBZIP=OFF" ;use "zlib" instead
+ ;; Validate RUNPATH phase fails ("error: depends on
+ ;; 'libmgba.so.0.6', which cannot be found in RUNPATH") without
+ ;; the following S-exp.
+ (string-append "-DCMAKE_INSTALL_LIBDIR="
+ (assoc-ref %outputs "out")
+ "/lib"))))
+ (native-inputs `(("pkg-config" ,pkg-config)))
+ (inputs `(("ffmpeg" ,ffmpeg)
+ ("imagemagick" ,imagemagick)
+ ("libedit" ,libedit)
+ ("libepoxy" ,libepoxy)
+ ("libpng" ,libpng)
+ ("mesa" ,mesa)
+ ("minizip" ,minizip)
+ ("ncurses" ,ncurses)
+ ("qtbase" ,qtbase)
+ ("qtmultimedia" ,qtmultimedia)
+ ("qttools" ,qttools)
+ ("sdl2" ,sdl2)
+ ("sqlite" ,sqlite)
+ ("zlib" ,zlib)))
+ (home-page "https://mgba.io")
+ (synopsis "Game Boy Advance emulator")
+ (description
+ "mGBA is an emulator for running Game Boy Advance games. It aims to be
+faster and more accurate than many existing Game Boy Advance emulators, as
+well as adding features that other emulators lack. It also supports Game Boy
+and Game Boy Color games.")
+ ;; Code is mainly MPL 2.0. "blip_buf.c" is LGPL 2.1+ and "inih.c" is
+ ;; BSD-3.
+ (license (list license:mpl2.0 license:lgpl2.1+ license:bsd-3))))
+
(define-public grue-hunter
(package
(name "grue-hunter")
capture it and get out alive?")
(license license:agpl3+)))
+(define-public lierolibre
+ (package
+ (name "lierolibre")
+ (version "0.5")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://launchpad.net/lierolibre/trunk/"
+ version "/+download/lierolibre-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "1cf1gvsn4qq190lrf9k5bpjnqwlcfw7pajvdnh7z5r4jqw0rsbl9"))
+ (patches
+ (search-patches "lierolibre-check-unaligned-access.patch"
+ "lierolibre-try-building-other-arch.patch"
+ "lierolibre-remove-arch-warning.patch"
+ "lierolibre-newer-libconfig.patch"
+ "lierolibre-is-free-software.patch"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Delete pre-compiled files.
+ (delete-file "data/LIERO.CHR")
+ (delete-file "data/LIERO.SND")
+ #t))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("imagemagick" ,imagemagick)
+ ("pkg-config" ,pkg-config)
+ ("util-linux" ,util-linux)
+ ("sox" ,sox)))
+ (inputs
+ `(("boost" ,boost)
+ ("libconfig" ,libconfig)
+ ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
+ ("zlib" ,zlib)))
+ (home-page "https://gitlab.com/lierolibre/lierolibre")
+ (synopsis "Old-school earthworm action game")
+ (description
+ "lierolibre is an earthworm action game where you fight another player
+(or the computer) underground using a wide array of weapons.
+
+Features:
+@itemize
+@item 2 worms, 40 weapons, great playability, two game modes: Kill'em All
+and Game of Tag, plus AI-players without true intelligence!
+@item Dat nostalgia.
+@item Extensions via a hidden F1 menu:
+@itemize
+@item Replays
+@item Game controller support
+@item Powerlevel palettes
+@end itemize
+@item Ability to write game variables to plain text files.
+@item Ability to load game variables from both EXE and plain text files.
+@item Scripts to extract and repack graphics, sounds and levels.
+@end itemize
+
+To switch between different window sizes, use F6, F7 and F8, to switch to
+fullscreen, use F5 or Alt+Enter.")
+ ;; Code mainly BSD-2, some parts under Boost 1.0. All assets are WTFPL2.
+ (license (list license:bsd-2 license:boost1.0 license:wtfpl2))))
+
(define-public warzone2100
(package
(name "warzone2100")
(lambda _
(substitute* "icons/Makefile.in"
(("\\$\\(INSTALL_DATA\\) \\$\\(srcdir\\)/warzone2100.appdata.xml.*") ""))
+ #t))
+ (add-after 'unpack 'patch-for-qt5.8
+ (lambda _
+ (substitute* "lib/widget/editbox.cpp"
+ (("== '\\\\0'")
+ "== QChar('\\0')"))
#t)))))
(native-inputs `(("pkg-config" ,pkg-config)
("unzip" ,unzip)
("libxrandr" ,libxrandr)
("openal" ,openal)
("physfs" ,physfs)
- ("qt" ,qt)
+ ("qtbase" ,qtbase)
+ ("qtscript" ,qtscript)
("openssl" ,openssl)
("quesoglc" ,quesoglc)
("sdl2" ,sdl2)))
,(string-append "PREFIX=" %output)
"GNOME_PREFIX=$(PREFIX)"
"COMPLETIONDIR=$(PREFIX)/etc/bash_completion.d")
+ #:parallel-build? #f ;fails on some systems
#:tests? #f ;No tests
#:phases (modify-phases %standard-phases
(delete 'configure) ;no configure phase
(define-public hyperrogue
(package
(name "hyperrogue")
- (version "9.4c")
+ (version "10.0e")
;; When updating this package, be sure to update the "hyperrogue-data"
;; origin in native-inputs.
(source (origin
"-src.tgz"))
(sha256
(base32
- "1ri5fllnhqjm3dlnl1xbb9mlv79iigc940vbvcnk0v5k6p58pavq"))))
+ "1p6fam73khhys54098qsgmp52d0rnqc3k5hknjig0znvfb2kwi38"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no check target
+ #:make-flags '("CXXFLAGS=-std=c++11")
#:phases
(modify-phases %standard-phases
(add-after 'set-paths 'set-sdl-paths
"/share/fonts/truetype"))
(dejavu-font "DejaVuSans-Bold.ttf")
(music-file "hyperrogue-music.txt"))
- (substitute* "graph.cpp"
+ (substitute* "basegraph.cpp"
((dejavu-font)
(string-append dejavu-dir "/" dejavu-font)))
(substitute* "sound.cpp"
(string-append
"hyperrogue"
(string-join (string-split ,version #\.) "")
- "-win/sounds/credits.txt") "-d" sounds))
+ "/sounds/credits.txt") "-d" sounds))
;; Extract sounds and music into sounds directory.
(zero?
(system* "unzip" "-j" data
(string-append
"hyperrogue"
(string-join (string-split ,version #\.) "")
- "-win/*.ogg") "-d" sounds)))))))))
+ "/*.ogg") "-d" sounds)))))))))
(native-inputs
`(("hyperrogue-data"
,(origin
"-win.zip"))
(sha256
(base32
- "1cyyrsnrixygg3zyz97hpsm6jzwbhydiwk3kl0lm7qjnw2nzkhhh"))))
+ "1z9w3nd57ybnf4w7ckhhp5vfws2hwd8x26fx6h496f6160fgcj6m"))))
("unzip" ,unzip)))
(inputs
`(("font-dejavu" ,font-dejavu)
(define-public freeciv
(package
(name "freeciv")
- (version "2.5.6")
+ (version "2.5.7")
(source
(origin
(method url-fetch)
- (uri (string-append
- "http://download.gna.org/freeciv/"
- "stable/freeciv-" version ".tar.bz2"))
+ (uri (list (string-append
+ "http://files.freeciv.org/stable/freeciv-"
+ version ".tar.bz2")
+ (string-append
+ "mirror://sourceforge/freeciv/Freeciv%20"
+ (version-major+minor version) "/" version
+ "/freeciv-" version ".tar.bz2")))
(sha256
(base32
- "16wrnsx5rmbz6rjs03bhy0vn20i6n6g73lx7fjpai98ixhzc5bfg"))))
+ "1lmydnnqraa947l7gdz6xgm0bgks1ywsivp9h4v8jr3avcv6gqzz"))))
(build-system gnu-build-system)
(inputs
`(("curl" ,curl)
(define-public cdogs-sdl
(package
(name "cdogs-sdl")
- (version "0.6.4")
+ (version "0.6.5")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/cxong/cdogs-sdl/"
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "08c3y8ijimx6mp0gm90abz4lsnbflqka519q2v0id0096vsc2pxn"))))
+ "17llrpdrrwi8h37vjpkxk2asj7h8qdfp2zy28wiwb7cjzribmz3k"))))
(build-system cmake-build-system)
(arguments
`(#:configure-flags
(assoc-ref %outputs "out")
"/share/cdogs-sdl/"))))
(inputs
- `(("sdl2" ,sdl2)
+ `(("mesa" ,mesa)
+ ("sdl2" ,sdl2)
("sdl2-image" ,sdl2-image)
("sdl2-mixer" ,sdl2-mixer)))
- (home-page "http://cxong.github.io/cdogs-sdl/")
+ (home-page "https://cxong.github.io/cdogs-sdl/")
(synopsis "Classic overhead run-and-gun game")
(description "C-Dogs SDL is a classic overhead run-and-gun game,
supporting up to 4 players in co-op and deathmatch modes. Customize your
The Flag. You can even design your own maps!")
(license license:bsd-3)))
+(define-public enigma
+ (package
+ (name "enigma")
+ (version "1.21")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/enigma-game/"
+ "Release%20" version "/enigma-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "00ffh9pypj1948pg3q9sjp1nmiabh52p5c8wpg9n1dcfgl3cywnq"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:configure-flags
+ (list "--with-system-enet")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'find-sdl
+ (lambda _
+ (substitute* "configure"
+ (("SDL_ttf.h") "SDL/SDL_ttf.h"))
+ (substitute* '("tools/ttf2bmf.cc"
+ "lib-src/enigma-core/ecl_font.cc"
+ "lib-src/enigma-core/ecl_video.cc"
+ "lib-src/enigma-core/ecl_buffer.hh"
+ "src/SoundEngine.cc"
+ "src/SoundEngine.hh"
+ "src/MusicManager.cc"
+ "src/MusicManager.hh"
+ "src/d_models.cc"
+ "src/main.cc"
+ "src/network.cc")
+ (("#include \"SDL_(image|ttf|mixer|types|syswm|mutex).h\"" line header)
+ (string-append "#include \"SDL/SDL_" header ".h\"")))
+ (substitute* "src/main.cc"
+ (("#include <SDL_(image|ttf|mixer).h>" line header)
+ (string-append "#include \"SDL/SDL_" header ".h\"")))
+ #t)))))
+ (inputs
+ `(("xerces-c" ,xerces-c)
+ ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
+ ("curl" ,curl)
+ ("enet" ,enet)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("imagemagick" ,imagemagick)))
+ (home-page "http://www.nongnu.org/enigma")
+ (synopsis "Puzzle game with a dexterity component")
+ (description "Enigma is a puzzle game with 550 unique levels. The object
+of the game is to find and uncover pairs of identically colored ‘Oxyd’ stones.
+Simple? Yes. Easy? Certainly not! Hidden traps, vast mazes, laser beams,
+and most of all, countless hairy puzzles usually block your direct way to the
+Oxyd stones. Enigma’s game objects (and there are hundreds of them, lest you
+get bored) interact in many unexpected ways, and since many of them follow the
+laws of physics (Enigma’s special laws of physics, that is), controlling them
+with the mouse isn’t always trivial.")
+ (license license:gpl2+)))
+
(define-public fillets-ng
(package
(name "fillets-ng")
underwater realm quarrel among themselves or comment on the efforts of your
fish. The whole game is accompanied by quiet, comforting music.")
(license license:gpl2+)))
+
+(define-public crawl
+ (package
+ (name "crawl")
+ (version "0.20.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (list
+ ;; Older releases get moved into a versioned directory
+ (string-append "http://crawl.develz.org/release/"
+ (version-major+minor version) "/stone_soup-"
+ version "-nodeps.tar.xz")
+ ;; Only the latest release is in this directory
+ (string-append "http://crawl.develz.org/release/stone_soup-"
+ version "-nodeps.tar.xz")))
+ (sha256
+ (base32
+ "0127dgldij2h4m7cf32yy9ndv4vcz03g4km71lmxrsi5mw7ljgpd"))
+ (patches (search-patches "crawl-upgrade-saves.patch"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("lua51" ,lua-5.1)
+ ("ncurses" ,ncurses)
+ ("sqlite" ,sqlite)
+ ("zlib" ,zlib)))
+ (native-inputs
+ `(("bison" ,bison)
+ ("flex" ,flex)
+ ("perl" ,perl)
+ ("pkg-config" ,pkg-config)))
+ (arguments
+ '(#:make-flags
+ (let* ((sqlite (assoc-ref %build-inputs "sqlite"))
+ (out (assoc-ref %outputs "out")))
+ (list (string-append "SQLITE_INCLUDE_DIR=" sqlite "/include")
+ (string-append "prefix=" out)
+ "SAVEDIR=~/.crawl"
+ ;; don't build any bundled dependencies
+ "BUILD_LUA="
+ "BUILD_SQLITE="
+ "BUILD_ZLIB="
+ "-Csource"))
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (delete 'check)
+ ;; Test cases require the source to be rebuild with the -DDEBUG define.
+ ;; Do 'check before 'build to avoid a 3rd build on make install.
+ (add-before 'build 'check
+ (lambda* (#:key inputs outputs make-flags #:allow-other-keys)
+ (setenv "HOME" (getcwd))
+ ;; Fake a terminal for the test cases.
+ (setenv "TERM" "xterm-256color")
+ (zero? (apply system* "make" "debug" "test"
+ (format #f "-j~d" (parallel-job-count))
+ ;; Force command line build for test cases.
+ (append make-flags '("GAME=crawl" "TILES=")))))))))
+ (synopsis "Roguelike dungeon crawler game")
+ (description "Dungeon Crawl Stone Soup is a roguelike adventure through
+dungeons filled with dangerous monsters in a quest to find the mystifyingly
+fabulous Orb of Zot.")
+ (home-page "https://crawl.develz.org")
+ (license (list license:gpl2+
+ license:bsd-2
+ license:bsd-3
+ license:cc0
+ license:expat
+ license:zlib
+ license:asl2.0))))
+
+;; The linter here claims that patch file names should start with the package
+;; name. But, in this case, the patches are inherited from crawl with the
+;; "crawl-" prefix instead of "crawl-tiles-".
+(define-public crawl-tiles
+ (package
+ (inherit crawl)
+ (name "crawl-tiles")
+ (arguments
+ (substitute-keyword-arguments
+ (package-arguments crawl)
+ ((#:make-flags flags)
+ `(let ((dejavu (assoc-ref %build-inputs "font-dejavu")))
+ (cons*
+ (string-append "PROPORTIONAL_FONT=" dejavu
+ "/share/fonts/truetype/DejaVuSans.ttf")
+ (string-append "MONOSPACED_FONT=" dejavu
+ "/share/fonts/truetype/DejaVuSansMono.ttf")
+ "TILES=y"
+ ;; Rename the executable to allow parallel installation with crawl.
+ "GAME=crawl-tiles"
+ ,flags)))))
+ (inputs
+ `(,@(package-inputs crawl)
+ ("font-dejavu" ,font-dejavu)
+ ("freetype6" ,freetype)
+ ("glu" ,glu)
+ ("libpng" ,libpng)
+ ("sdl2" ,sdl2)
+ ("sdl2-image" ,sdl2-image)
+ ("sdl2-mixer" ,sdl2-mixer)))
+ (native-inputs
+ `(,@(package-native-inputs crawl)
+ ;; TODO: Add advpng or pngcrush for additional PNG optimization.
+ ("which" ,which)))
+ (synopsis "Graphical roguelike dungeon crawler game")))
+
+(define-public lugaru
+ (package
+ (name "lugaru")
+ (version "1.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://bitbucket.org/osslugaru/lugaru/downloads/"
+ name "-" version ".tar.xz"))
+ (sha256
+ (base32
+ "15zgcshy22q51rm72zi6y9z7qlgnz5iw3gczjdlir4bqmxy4gspk"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:configure-flags
+ (list "-DSYSTEM_INSTALL=ON")
+ ;; no test target
+ #:tests? #f))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs
+ `(("sdl2" ,sdl2)
+ ("glu" ,glu)
+ ("libjpeg" ,libjpeg-turbo)
+ ("libpng" ,libpng)
+ ("openal" ,openal)
+ ("vorbis" ,libvorbis)
+ ("zlib" ,zlib)))
+ (home-page "https://osslugaru.gitlab.io")
+ (synopsis "Cross-platform third-person action game")
+ (description "Lugaru is a third-person action game. The main character,
+Turner, is an anthropomorphic rebel bunny rabbit with impressive combat skills.
+In his quest to find those responsible for slaughtering his village, he uncovers
+a far-reaching conspiracy involving the corrupt leaders of the rabbit republic
+and the starving wolves from a nearby den. Turner takes it upon himself to
+fight against their plot and save his fellow rabbits from slavery.")
+ (license (list license:gpl2+ ; code
+ ;; assets:
+ license:cc-by-sa3.0
+ license:cc-by-sa4.0))))
+
+(define-public 0ad-data
+ (package
+ (name "0ad-data")
+ (version "0.0.22-alpha")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "http://releases.wildfiregames.com/0ad-"
+ version "-unix-data.tar.xz"))
+ (file-name (string-append name "-" version ".tar.xz"))
+ (sha256
+ (base32
+ "0vknk9ay9h2p34r7mym2g066f3s3c5d5vmap0ckcs5b86h5cscjc"))
+ (modules '((guix build utils)))
+ (snippet
+ #~(begin
+ (for-each
+ (lambda (name)
+ (let* ((dir (string-append "binaries/data/mods/" name))
+ (file (string-append dir "/" name ".zip"))
+ (unzip #$(file-append unzip "/bin/unzip")))
+ (system* unzip "-d" dir file)
+ (delete-file file)))
+ '("mod" "public"))
+ #t))))
+ (build-system trivial-build-system)
+ (native-inputs `(("tar" ,tar)
+ ("xz" ,xz)))
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (guix build utils))
+ (let ((out (assoc-ref %outputs "out"))
+ (source (assoc-ref %build-inputs "source"))
+ (tar (string-append (assoc-ref %build-inputs "tar") "/bin/tar"))
+ (xz-path (string-append (assoc-ref %build-inputs "xz") "/bin")))
+ (setenv "PATH" xz-path)
+ (mkdir out)
+ (zero? (system* tar "xvf" source "-C" out "--strip=3"))))))
+ (synopsis "Data files for 0ad")
+ (description "0ad-data provides the data files required by the game 0ad.")
+ (home-page "https://play0ad.com")
+ (license (list (license:fsdg-compatible
+ "http://tavmjong.free.fr/FONTS/ArevCopyright.txt"
+ (license:license-comment
+ (package-license font-bitstream-vera)))
+ (package-license font-bitstream-vera)
+ license:cc-by-sa3.0
+ license:expat
+ license:gfl1.0
+ license:gpl2+
+ license:gpl3+))))
+
+(define-public 0ad
+ (package
+ (name "0ad")
+ (version "0.0.22-alpha")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "http://releases.wildfiregames.com/0ad-"
+ version "-unix-build.tar.xz"))
+ (file-name (string-append name "-" version ".tar.xz"))
+ (sha256
+ (base32
+ "1cgmr4g5g9wv36v7ylbrvqhsjwgcsdgbqwc8zlqmnayk9zgkdpgx"))
+ ;; A snippet here would cause a build failure because of timestamps
+ ;; reset. See https://bugs.gnu.org/26734.
+ ))
+ (inputs
+ `(("0ad-data" ,0ad-data)
+ ("curl" ,curl)
+ ("enet" ,enet)
+ ("gloox" ,gloox)
+ ("icu4c" ,icu4c)
+ ("libpng" ,libpng)
+ ("libvorbis" ,libvorbis)
+ ("libxcursor" ,libxcursor)
+ ("libxml2" ,libxml2)
+ ("miniupnpc" ,miniupnpc)
+ ("mozjs-38" ,mozjs-38)
+ ("openal" ,openal)
+ ("sdl2" ,sdl2)
+ ("wxwidgets" ,wxwidgets)
+ ("zlib" ,zlib)))
+ (native-inputs
+ `(("boost" ,boost)
+ ("cmake" ,cmake)
+ ("mesa" ,mesa)
+ ("pkg-config" ,pkg-config)
+ ("python-2" ,python-2)))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'delete-bundles
+ (lambda _
+ (delete-file-recursively "libraries/source/spidermonkey")
+ #t))
+ (add-after 'unpack 'fix-x11-includes
+ (lambda _
+ (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
+ (("<Xlib.h>") "<X11/Xlib.h>"))
+ (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
+ (("<Xatom.h>") "<X11/Xatom.h>"))
+ (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
+ (("<Xcursor/Xcursor.h>") "<X11/Xcursor/Xcursor.h>"))
+ #t))
+ (replace 'configure
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((jobs (number->string (parallel-job-count)))
+ (out (assoc-ref outputs "out"))
+ (lib (string-append out "/lib"))
+ (data (string-append out "/share/0ad")))
+ (setenv "JOBS" (string-append "-j" jobs))
+ (setenv "CC" "gcc")
+ (with-directory-excursion "build/workspaces"
+ (zero? (system* "./update-workspaces.sh"
+ (string-append "--libdir=" lib)
+ (string-append "--datadir=" data)
+ "--minimal-flags"
+ ;; TODO: "--with-system-nvtt"
+ "--with-system-mozjs38"))))))
+ (add-before 'build 'chdir
+ (lambda _
+ (chdir "build/workspaces/gcc")
+ #t))
+ (delete 'check)
+ (replace 'install
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (chdir "../../../binaries")
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (lib (string-append out "/lib"))
+ (data (string-append out "/share/0ad"))
+ (applications (string-append out "/share/applications"))
+ (pixmaps (string-append out "/share/pixmaps"))
+ (0ad-data (assoc-ref inputs "0ad-data")))
+ ;; data
+ (copy-recursively "data" data)
+ (for-each (lambda (file)
+ (symlink (string-append 0ad-data "/" file)
+ (string-append data "/" file)))
+ '("config" "mods/mod" "mods/public" "tools"))
+ ;; libraries
+ (for-each (lambda (file)
+ (install-file file lib))
+ (find-files "system" "\\.so$"))
+ ;; binaries
+ (install-file "system/pyrogenesis" bin)
+ (with-directory-excursion bin
+ (symlink "pyrogenesis" "0ad"))
+ ;; resources
+ (with-directory-excursion "../build/resources"
+ (install-file "0ad.desktop" applications)
+ (install-file "0ad.png" pixmaps))
+ #t)))
+ (add-after 'install 'check
+ (lambda _
+ (with-directory-excursion "system"
+ (zero? (system* "./test"))))))))
+ (home-page "https://play0ad.com")
+ (synopsis "3D real-time strategy game of ancient warfare")
+ (description "0 A.D. is a real-time strategy (RTS) game of ancient
+warfare. It's a historically-based war/economy game that allows players to
+relive or rewrite the history of twelve ancient civilizations, each depicted
+at their peak of economic growth and military prowess.
+
+0ad needs a window manager that supports 'Extended Window Manager Hints'.")
+ (license (list license:bsd-2
+ license:bsd-3
+ license:expat
+ license:gpl2+
+ license:ibmpl1.0
+ license:isc
+ license:lgpl2.1
+ license:lgpl3
+ license:mpl2.0
+ license:zlib))))
+
+;; There have been no official releases.
+(define-public open-adventure
+ (let* ((commit "d43854f0f6bb8e9eea7fbce80348150e7e7fc34d")
+ (revision "2"))
+ (package
+ (name "open-adventure")
+ (version (string-append "2.5-" revision "." (string-take commit 7)))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.com/esr/open-adventure")
+ (commit commit)))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "08bwrvf4axb1rsfd6ia1fddsky9pc1p350vjskhaakg2czc6dsk0"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:make-flags (list "CC=gcc")
+ #:parallel-build? #f ; not supported
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ ;; At this point linenoise is meant to be included,
+ ;; so we have to really copy it into the working directory
+ ;; of s.
+ (let* ((linenoise (assoc-ref inputs "linenoise"))
+ (noisepath (string-append linenoise "/include/linenoise"))
+ (out (assoc-ref outputs "out")))
+ (copy-recursively noisepath "linenoise"))
+ #t))
+ (add-before 'build 'use-echo
+ (lambda _
+ (substitute* "tests/Makefile"
+ (("/bin/echo") (which "echo")))
+ #t))
+ (add-after 'build 'build-manpage
+ (lambda _
+ ;; This target is missing a dependency
+ (substitute* "Makefile"
+ ((".adoc.6:" line)
+ (string-append line " advent.adoc")))
+ (zero? (system* "make" ".adoc.6"))))
+ ;; There is no install target
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (man (string-append out "/share/man/man6")))
+ (install-file "advent" bin)
+ (install-file "advent.6" man))
+ #t)))))
+ (native-inputs
+ `(("asciidoc" ,asciidoc)
+ ("linenoise" ,linenoise)
+ ("python" ,python)
+ ("python-pyyaml" ,python-pyyaml)))
+ (home-page "https://gitlab.com/esr/open-adventure")
+ (synopsis "Colossal Cave Adventure")
+ (description "The original Colossal Cave Adventure from 1976 was the
+origin of all text adventures, dungeon-crawl (computer) games, and
+computer-hosted roleplaying games. This is the last version released by
+Crowther & Woods, its original authors, in 1995. It has been known as
+\"adventure 2.5\" and \"430-point adventure\".")
+ (license license:bsd-2))))
+
+(define-public tome4
+ (package
+ (name "tome4")
+ (version "1.5.5")
+ (synopsis "Single-player, RPG roguelike game set in the world of Eyal")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://te4.org/dl/t-engine/t-engine4-src-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "0v2qgdfpvdzd1bcbp9v8pfahj1bgczsq2d4xfhh5wg11jgjcwz03"))
+ (modules '((guix build utils)))
+ (snippet
+ '(substitute* '("src/music.h" "src/tSDL.h")
+ (("#elif defined(__FreeBSD__)" line)
+ (string-append
+ line " || defined(__GNUC__)"))))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("unzip" ,unzip)))
+ (inputs
+ `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
+ ("glu" ,glu)
+ ("premake4" ,premake4)
+ ("openal" ,openal)
+ ("vorbis" ,libvorbis)
+ ("luajit" ,luajit)))
+ (arguments
+ `(#:make-flags '("CC=gcc" "config=release")
+ #:phases (modify-phases %standard-phases
+ (replace 'configure
+ (lambda _
+ (zero? (system* "premake4" "gmake"))
+ #t))
+ (add-after 'set-paths 'set-sdl-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (setenv "CPATH"
+ (string-append (assoc-ref inputs "sdl-union")
+ "/include/SDL2"))
+ #t))
+ (delete 'check)
+ ;; premake doesn't provide install target
+ (replace 'install
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (usr (string-append out "/usr"))
+ (bin (string-append out "/bin"))
+ (licenses (string-append out "/share/licenses"))
+ (documents (string-append out "/share/doc"))
+ (pixmaps (string-append out "/share/pixmaps"))
+ (icon "te4-icon.png")
+ (data (string-append out "/share/" ,name))
+ (applications (string-append
+ out "/share/applications"))
+ (unzip (string-append
+ (assoc-ref inputs "unzip") "/bin/unzip"))
+ (wrapper (string-append bin "/" ,name)))
+ ;; icon
+ (mkdir-p pixmaps)
+ (system* unzip "-j"
+ (string-append
+ "game/engines/te4-" ,version ".teae")
+ (string-append
+ "data/gfx/" icon) "-d" pixmaps)
+ ;; game executable
+ (install-file "t-engine" data)
+ (mkdir-p bin)
+ (with-output-to-file wrapper
+ (lambda ()
+ (display
+ (string-append
+ "#!/bin/sh\n"
+ ;; No bootstrap code found,
+ ;; defaulting to working directory
+ ;; for engine code!
+ "cd " data "\n"
+ "exec -a tome4 ./t-engine \"$@\"\n"))))
+ (chmod wrapper #o555)
+ ;; licenses
+ (for-each (lambda (file)
+ (install-file file licenses))
+ '("COPYING" "COPYING-MEDIA"))
+ ;; documents
+ (for-each (lambda (file)
+ (install-file file documents))
+ '("CONTRIBUTING" "CREDITS"))
+ ;; data
+ (copy-recursively "bootstrap" (string-append
+ data "/bootstrap"))
+ (copy-recursively "game" (string-append data "/game"))
+ ;; launcher
+ (mkdir-p applications)
+ (with-output-to-file (string-append applications "/"
+ ,name ".desktop")
+ (lambda ()
+ (display
+ (string-append
+ "[Desktop Entry]
+Name=ToME4
+Comment=" ,synopsis "\n"
+"Exec=" ,name "\n"
+"Icon=" icon "\n"
+"Terminal=false
+Type=Application
+Categories=Game;RolePlaying;\n")))))
+ #t)))))
+ (home-page "https://te4.org")
+ (description "Tales of Maj’Eyal (ToME) RPG, featuring tactical turn-based
+combat and advanced character building. Play as one of many unique races and
+classes in the lore-filled world of Eyal, exploring random dungeons, facing
+challenging battles, and developing characters with your own tailored mix of
+abilities and powers. With a modern graphical and customisable interface,
+intuitive mouse control, streamlined mechanics and deep, challenging combat,
+Tales of Maj’Eyal offers engaging roguelike gameplay for the 21st century.")
+ (license license:gpl3+)))