diff options
Diffstat (limited to 'gnu/packages/games.scm')
-rw-r--r-- | gnu/packages/games.scm | 1388 |
1 files changed, 1057 insertions, 331 deletions
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index eac0ae376f..6875acdcac 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -5,9 +5,9 @@ ;;; Copyright © 2014, 2015, 2016, 2017, 2018 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com> ;;; Copyright © 2014 Sylvain Beucler <beuc@beuc.net> -;;; Copyright © 2014, 2015, 2018 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2014, 2015, 2018, 2019 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2015, 2016 Sou Bunnbu <iyzsong@gmail.com> -;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> +;;; 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> @@ -17,7 +17,7 @@ ;;; 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 Kei Kebreau <kkebreau@posteo.net> +;;; 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> @@ -30,7 +30,7 @@ ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2017 Roel Janssen <roel@gnu.org> -;;; Copyright © 2017, 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr> +;;; Copyright © 2017, 2018, 2019 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> @@ -38,6 +38,7 @@ ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com> ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz> ;;; Copyright © 2019 Oleg Pykhalov <go.wigust@gmail.com> +;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -104,6 +105,8 @@ #: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 icu4c) #:use-module (gnu packages image) #:use-module (gnu packages imagemagick) @@ -112,8 +115,8 @@ #: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 haskell) #:use-module (gnu packages man) #:use-module (gnu packages maths) #:use-module (gnu packages mp3) @@ -156,7 +159,6 @@ #: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 haskell) #:use-module (guix build-system meson) #:use-module (guix build-system scons) #:use-module (guix build-system python) @@ -165,14 +167,138 @@ #: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-alpha") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/carstene1ns/alex4/archive/" + version ".tar.gz")) + (sha256 + (base32 "0jj1g3v1a6lyfwp5g2ly0n9z65ryqck8jxvzr01kaqjj3lsfkrhg")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; no check target + #:make-flags + (list "-Csrc" + "CC=gcc" + "CFLAGS=-D_FILE_OFFSET_BITS=64" + (string-append "DATADIR=" (assoc-ref %outputs "out") + "/share/" ,name) + (string-append "PREFIX=" (assoc-ref %outputs "out"))) + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda _ + (substitute* '("src/main.c" + "src/shooter.c") + (("fcos") "fixcos") + (("fmul") "fixmul") + (("fsin") "fixsin")) + #t)) + (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/" name "/stable/" - version "/" name "-" version ".src.tar.gz")) + (uri (string-append "mirror://sourceforge/armagetronad/stable/" + version "/armagetronad-" version ".src.tar.gz")) (sha256 (base32 "1pgy0r80z702qdv94aw3ywdn4ynnr4cdi86ml558pljfc5ygasj4")))) @@ -186,14 +312,17 @@ ("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.") + (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") @@ -313,15 +442,19 @@ canyons and wait for the long I-shaped block to clear four rows at a time.") (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.") + "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 cowsay (package (name "cowsay") @@ -330,7 +463,7 @@ and against the others like yourself, that want what you have.") (method url-fetch) (uri (string-append "https://github.com/tnalpgge/" "rank-amateur-cowsay/archive/" - name "-" version ".tar.gz")) + "cowsay-" version ".tar.gz")) (sha256 (base32 "12w7apbf6a9qffk92r32b16w22na2fjcqbl32rn0n7zw5hrp3f6q")))) @@ -363,80 +496,82 @@ tired of cows, a variety of other ASCII-art messengers are available.") (define-public freedoom (package - (name "freedoom") - (version "0.11.3") - (source (origin - (method url-fetch) - (uri (string-append "https://github.com/" name "/" name - "/archive/v" version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1bjijdfqhpazyifx1qda7scj7dry1azhjrnl8h8zn2vqfgdmlh0q")))) - (build-system gnu-build-system) - (arguments - '(#:make-flags `(,(string-append "prefix=" (assoc-ref %outputs "out"))) - #:parallel-build? #f - #:tests? #f ; no check target - #:phases - (modify-phases %standard-phases - (delete 'bootstrap) - (replace 'configure - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((dejavu (assoc-ref inputs "font-dejavu")) - (freedoom (assoc-ref outputs "out")) - (wad-dir (string-append freedoom "/share/games/doom"))) - ;; Replace the font-searching function in a shell - ;; script with a direct path to the required font. - ;; This is necessary because ImageMagick can only find the - ;; most basic fonts while in the build environment. - (substitute* "graphics/titlepic/create_caption" - (("font=\\$\\(find_font.*$") - (string-append - "font=" dejavu - "/share/fonts/truetype/DejaVuSansCondensed-Bold.ttf\n"))) - ;; Make icon creation reproducible. - (substitute* "dist/Makefile" - (("freedm.png") - "-define png:exclude-chunks=date freedm.png") - (("freedoom1.png") - "-define png:exclude-chunks=date freedoom1.png") - (("freedoom2.png") - "-define png:exclude-chunks=date freedoom2.png")) - ;; 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) - ("font-dejavu" ,font-dejavu) - ("imagemagick" ,imagemagick) - ("python" ,python-2))) - (inputs - `(("prboom-plus" ,prboom-plus))) - (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 + (name "freedoom") + (version "0.11.3") + (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 "0k4dlgr82qk6i7dchp3nybq6awlfag2ivy3zzl1v6vhcrnbvssgl")))) + (build-system gnu-build-system) + (arguments + '(#:make-flags + (list (string-append "prefix=" (assoc-ref %outputs "out"))) + #:parallel-build? #f + #:tests? #f ; no check target + #:phases + (modify-phases %standard-phases + (delete 'bootstrap) + (replace 'configure + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((dejavu (assoc-ref inputs "font-dejavu")) + (freedoom (assoc-ref outputs "out")) + (wad-dir (string-append freedoom "/share/games/doom"))) + ;; Replace the font-searching function in a shell + ;; script with a direct path to the required font. + ;; This is necessary because ImageMagick can only find the + ;; most basic fonts while in the build environment. + (substitute* "graphics/titlepic/create_caption" + (("font=\\$\\(find_font.*$") + (string-append + "font=" dejavu + "/share/fonts/truetype/DejaVuSansCondensed-Bold.ttf\n"))) + ;; Make icon creation reproducible. + (substitute* "dist/Makefile" + (("freedm.png") + "-define png:exclude-chunks=date freedm.png") + (("freedoom1.png") + "-define png:exclude-chunks=date freedoom1.png") + (("freedoom2.png") + "-define png:exclude-chunks=date freedoom2.png")) + ;; 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) + ("font-dejavu" ,font-dejavu) + ("imagemagick" ,imagemagick) + ("python" ,python-2))) + (inputs + `(("prboom-plus" ,prboom-plus))) + (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))) + (license license:bsd-3))) (define-public freedroidrpg (package @@ -680,13 +815,16 @@ destroying an ancient book using a special wand.") ("pkg-config" ,pkg-config))) (home-page "http://gnubg.org") (synopsis "Backgammon game") - (description "The GNU backgammon application 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.") + (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") @@ -746,7 +884,7 @@ Chess). It is similar to standard chess but this variant is far more complicate (origin (method url-fetch) (uri (string-append "http://prdownloads.sourceforge.net/lgames/" - name "-" version ".tar.gz")) + "ltris-" version ".tar.gz")) (sha256 (base32 "1895wv1fqklrj4apkz47rnkcfhfav7zjknskw6p0886j35vrwslg")))) @@ -786,8 +924,9 @@ watch your CPU playing while enjoying a cup of tea!") (source (origin (method url-fetch) - (uri (string-append "https://www.nethack.org/download/" - version "/" name "-361-src.tgz")) + (uri + (string-append "https://www.nethack.org/download/" version "/nethack-" + (string-join (string-split version #\.) "") "-src.tgz")) (sha256 (base32 "1dha0ijvxhx7c9hr0452h93x81iiqsll8bc9msdnp7xdqcfbz32b")))) (inputs @@ -912,10 +1051,9 @@ role, and your gender.") (origin (method url-fetch) (uri (string-append "http://downloads.sourceforge.net/pipewalker/" - name "-" version ".tar.gz")) + "pipewalker-" version ".tar.gz")) (sha256 - (base32 - "1x46wgk0s55562pd96cxagxkn6wpgglq779f9b64ff1k3xzp3myn")))) + (base32 "1x46wgk0s55562pd96cxagxkn6wpgglq779f9b64ff1k3xzp3myn")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -950,11 +1088,10 @@ Every puzzle has a complete solution, although there may be more than one.") (version "2.5.1.4") (source (origin (method url-fetch) - (uri (string-append "mirror://sourceforge/" name "/" name "/" - version "/" name "-" version ".tar.gz")) + (uri (string-append "mirror://sourceforge/prboom-plus/prboom-plus/" + version "/prboom-plus-" version ".tar.gz")) (sha256 - (base32 - "151v6nign86m1a2vqz27krsccpc9m4d1jax4y43v2fa82wfj9qp0")) + (base32 "151v6nign86m1a2vqz27krsccpc9m4d1jax4y43v2fa82wfj9qp0")) (modules '((guix build utils))) (snippet '(begin @@ -1184,13 +1321,13 @@ can be explored and changed freely.") (version "2.0.1") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/nevat/abbayedesmorts-gpl/" - "archive/v" version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (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 - "1a67b0hq6271dd7pvwndjq29cwn2n8gawwz17xafa3k1hrhf8vw3")) + (base32 "1pwqf7r9bqb2p3xrw9i7y8pgr1401fy3mnnqpb1qkhmdl3gqi9hb")) (modules '((guix build utils))) (snippet ;; Unbundle fonts. @@ -1232,6 +1369,9 @@ 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") @@ -1667,7 +1807,7 @@ for common mesh file formats, and collision detection.") (uri (git-reference (url "https://github.com/thelaui/M.A.R.S..git") (commit commit))) - (file-name (string-append name "-" version)) + (file-name (git-file-name name version)) (sha256 (base32 "1r4c5gap1z2zsv4yjd34qriqkxaq4lb4rykapyzkkdf4g36lc3nh")) @@ -1709,7 +1849,7 @@ match, cannon keep, and grave-itation pit.") (define minetest-data (package (name "minetest-data") - (version "5.0.0") + (version "5.0.1") (source (origin (method git-fetch) (uri (git-reference @@ -1718,7 +1858,7 @@ match, cannon keep, and grave-itation pit.") (file-name (git-file-name name version)) (sha256 (base32 - "186i1pna2f3fwa2001y8mw5131h0sndhfdxzfqq2gnr1m83sjm0w")))) + "1hw3n7qqpasq6bivxhq01kr0d58w0gp46s0baxixp1fakd79p8a7")))) (build-system trivial-build-system) (native-inputs `(("source" ,source))) @@ -1736,14 +1876,14 @@ match, cannon keep, and grave-itation pit.") #t)))) (synopsis "Main game data for the Minetest game engine") (description - "Game data for the Minetest infinite-world block sandox game.") + "Game data for the Minetest infinite-world block sandbox game.") (home-page "http://minetest.net") (license license:lgpl2.1+))) (define-public minetest (package (name "minetest") - (version "5.0.0") + (version "5.0.1") (source (origin (method git-fetch) (uri (git-reference @@ -1752,7 +1892,7 @@ match, cannon keep, and grave-itation pit.") (file-name (git-file-name name version)) (sha256 (base32 - "1b8n8nzlvmld1hl3zgs1xg4jbc1nsf1m2bn7fi794vdr06s6n911")) + "11i8fqjpdggqfdlx440k5758zy0nbf9phxan9r63mavc7mph88ay")) (modules '((guix build utils))) (snippet '(begin @@ -1779,7 +1919,7 @@ match, cannon keep, and grave-itation pit.") `(("pkg-config" ,pkg-config))) (inputs `(("curl" ,curl) - ("freetype" ,(@ (gnu packages fontutils) freetype)) + ("freetype" ,freetype) ("gettext" ,gettext-minimal) ("gmp" ,gmp) ("irrlicht" ,irrlicht) @@ -1892,7 +2032,7 @@ reference interpreter, using the Glk API.") (source (origin (method url-fetch) (uri (string-append "https://fizmo.spellbreaker.org/source/" - name "-" version ".tar.gz")) + "fizmo-" version ".tar.gz")) (sha256 (base32 "1amyc4n41jf08kxmdgkk30bzzx54miaxa97w28f417qwn8lrl98w")))) @@ -1980,7 +2120,7 @@ This game is based on the GPL version of the famous game TuxRacer.") (define-public supertuxkart (package (name "supertuxkart") - (version "0.9.3") + (version "1.0") (source (origin (method url-fetch) @@ -1988,55 +2128,36 @@ This game is based on the GPL version of the famous game TuxRacer.") version "/supertuxkart-" version "-src.tar.xz")) (sha256 (base32 - "1c4w47ibj87lgwiqygq8qi7jiz6gklj4dwf5bs5zk15s0rqlw0fq")) + "106rlp99hq18b4q1kdri3pl06cc4v7iqfp1hp9k2f8751lzz923d")) (modules '((guix build utils))) (snippet ;; Delete bundled library sources '(begin - ;; FIXME: try to unbundle enet, and angelscript + ;; 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 (for-each delete-file-recursively '("lib/zlib" "lib/libpng" "lib/jpeglib" "lib/glew" - "lib/wiiuse")) - (substitute* "CMakeLists.txt" - ;; 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 - (("add_subdirectory\\(.*/(glew|zlib)\"\\)") "")) + "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 + ;; Do not use the bundled zlib, glew and enet. "-DNO_IRR_COMPILE_WITH_ZLIB_=TRUE" + "-DUSE_SYSTEM_GLEW=TRUE" + "-DUSE_SYSTEM_ENET=TRUE" ;; FIXME: needs libopenglrecorder "-DBUILD_RECORDER=0" ;; Irrlicht returns an integer instead of a boolean - "-DCMAKE_C_FLAGS=-fpermissive") - #:phases - (modify-phases %standard-phases - ;; see https://github.com/supertuxkart/stk-code/issues/3557 - (add-after 'unpack 'patch-for-mesa-18.3 - (lambda _ - (substitute* "src/graphics/gl_headers.hpp" - (("#if !defined\\(USE_GLES2\\)") - "#if !defined(USE_GLES2)\n# define __gl_glext_h_")) - #t)) - (add-after 'unpack 'unbundle - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "CMakeLists.txt" - (("glew") - (string-append (assoc-ref inputs "glew") - "/lib/libGLEW.a")) - (("include_directories\\(\"\\$\\{PROJECT_SOURCE_DIR\\}/lib/glew/include\"\\)") - (string-append "include_directories(\"" - (assoc-ref inputs "glew") - "/include\")"))) - #t))))) + "-DCMAKE_C_FLAGS=-fpermissive"))) (inputs `(("glew" ,glew) ("zlib" ,zlib) @@ -2050,7 +2171,9 @@ This game is based on the GPL version of the famous game TuxRacer.") ("curl" ,curl) ;; The following input is needed to build the bundled and modified ;; version of irrlicht. - ("libjpeg" ,libjpeg))) + ("libjpeg" ,libjpeg) + ("openssl" ,openssl) + ("enet" ,enet))) (native-inputs `(("pkg-config" ,pkg-config))) (home-page "https://supertuxkart.net/") @@ -2135,6 +2258,9 @@ experience and advance levels, and are carried over from one scenario to the next campaign.") (license license:gpl2+))) +(define-public the-battle-for-wesnoth + (deprecated-package "the-battle-for-wesnoth" wesnoth)) + (define-public wesnoth-server (package (inherit wesnoth) @@ -2151,6 +2277,9 @@ next campaign.") (description "This package contains a dedicated server for @emph{The Battle for Wesnoth}."))) +(define-public the-battle-for-wesnoth-server + (deprecated-package "the-battle-for-wesnoth-server" wesnoth-server)) + (define-public gamine (package (name "gamine") @@ -2197,48 +2326,6 @@ on the screen and keyboard to display letters.") ;; Most files under gpl2+ or gpl3+, but eat.wav under gpl3 (license license:gpl3))) -(define-public raincat - (package - (name "raincat") - (version "1.2.1") - (source - (origin - (method url-fetch) - (uri (string-append "http://hackage.haskell.org/package/Raincat/" - "Raincat-" version ".tar.gz")) - (sha256 - (base32 - "10y9zi22m6hf13c9h8zd9vg7mljpwbw0r3djb6r80bna701fdf6c")))) - (build-system haskell-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'install 'wrap-executable - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (wrap-program (string-append out "/bin/raincat") - `("LD_LIBRARY_PATH" ":" = - (,(string-append (assoc-ref inputs "freeglut") - "/lib")))) - #t)))))) - (inputs - `(("ghc-extensible-exceptions" ,ghc-extensible-exceptions) - ("ghc-random" ,ghc-random) - ("ghc-glut" ,ghc-glut) - ("freeglut" ,freeglut) - ("ghc-opengl" ,ghc-opengl) - ("ghc-sdl2" ,ghc-sdl2) - ("ghc-sdl2-image" ,ghc-sdl2-image) - ("ghc-sdl2-mixer" ,ghc-sdl2-mixer))) - (home-page "http://www.bysusanlin.com/raincat/") - (synopsis "Puzzle game with a cat in lead role") - (description "Project Raincat is a game developed by Carnegie Mellon -students through GCS during the Fall 2008 semester. Raincat features game -play inspired from classics Lemmings and The Incredible Machine. The project -proved to be an excellent learning experience for the programmers. Everything -is programmed in Haskell.") - (license license:bsd-3))) - (define-public manaplus (package (name "manaplus") @@ -2599,12 +2686,13 @@ Transport Tycoon Deluxe.") (version "0.2.2") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/OpenRCT2/OpenRCT2/archive/v" - version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/OpenRCT2/OpenRCT2.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 - (base32 "0yxaphgfq85piaacnnfy6lrvmnqmfj1891rxlkl5ndngq0zh0ysb")) - (file-name (string-append name "-" version ".tar.gz")))) + (base32 "1bfqmb6cbmsjcvj77vppy5lw1m4lkvxd1w3f218ah4788xnkysq2")))) (build-system cmake-build-system) (arguments `(#:configure-flags (list "-DDOWNLOAD_OBJECTS=OFF" @@ -2780,7 +2868,6 @@ is attributed to Albert Einstein.") (uri (string-append "https://www.hoopajoo.net/static/projects/powwow-" version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 "1gf0jc1vfv05lxij51n3c1dqn3aiiy2kj1v6q14an3wm7yl7cllp")))) @@ -2800,58 +2887,59 @@ http://lavachat.symlynx.com/unix/") (let ((release "1.6.0") (revision 0) (data-sources - '(("acerspyro" "07mzgdahnr3w3w7kf8nmy20r199rimfx9ryqxjdr793sw0vawqd3") - ("actors" "1hkgscfhg0kmwgym0mw56fhcckzbb2hh3nsvd45v4mdfyk0xnrm7") - ("appleflap" "1q4xs3x904mrrbxzv6lpr3lywm8p6i8339ijzy9j091s2wdl51ka") - ("blendbrush" "004md2haysr9w8fj6l7bj9wcfjqrq9wx1rrjf9dv16k5sbrkqza9") - ("caustics" "1qmmv8ds70j1ixy4rvli309vbcyjq1l5j1wri6nbnjay10f9fcgq") - ("crosshairs" "0q1vadg5cai9i6igl6y08774fd05gav0kinbgb2757n47ig50bns") - ("dziq" "1s9248ky2qqy24z9c2vgpisz500dvsaj249pv1fkrxgsypjm1z6v") - ("elyvisions" "15synpms05996v4c4kdl0h899spl4z7si9kl8c4m7rvc2yvin1ga") - ("fonts" "1l4727ai8mphi7n3wcjp2lh3p47nh6w82s5dpqbbjpqr9gilb69j") - ("freezurbern" "0hcdbzs02mvpsfhmahhqjv6pd8lbsag1bm6rpy61ns5qwmhg96ys") - ("john" "1whyvlx87mb83kfb7jhhnwz9s7lry4li8l3xar61vmlqgmsnz33d") - ("jojo" "02wxa93f5al4rlnsdjpd0hlnca0ympnj8481lgdxx70hny8zi3qi") - ("jwin" "1gb4l7lbhr150hml1y0wbyx7266q5nslh6n494wwrrsvp11s2qk8") - ("luckystrike" "0wy2spvhx5k233fsl283250ym5bqvkk8i6i19sw3zvzyxp2p4yq9") - ("maps" "1dmvp9mskval606z5srjd909jpm6qz4fdcpaszkkhfr5ajbj30vq") - ("mayhem" "0hkzzx0rxda70ixw9lfh9v1dpsbn2dj86jrr3zxjgasbgaxw37ax") - ("mikeplus64" "144fxhp4qjqjw3gvhf7ym6rnfxvxc0zvd3f54jg1jgnccc1hfyah") - ("misc" "0bpvibyc6vjhbzsf67xxn85yq2h97xs96icbskwzs2wsd860kq8c") - ("nieb" "0d72wsibk9sg9nhin3fwzz9zljiccyln0fn42y2q2xbd4my23b1k") - ("nobiax" "19lr36ys98cmpp739svjar1j942fbxz6r062gi7ygh89zh9yrgfy") - ("particles" "02pnq8ksl7f6kqxss3aza98jssdq2s41rhkhki71ynavp2a5akar") - ("philipk" "1xkrb7wa1pyhbs4xxx7vnnzsxrqzswk7gjbdac7i7rj0lwnfaij2") - ("projectiles" "1hra0f1ifiddh16fv4pqcr2amf046lf445v0653zkyri43zgrj5f") - ("props" "0ff6a8pz62f4nsk4c9cr50kirw108a661y5j6fvlsjickw3xjmyv") - ("skyboxes" "1lq58dhrdiivq7llkiyqwpi3bwa89r8hbi98p7zjhw7wdn34i6n2") - ("snipergoth" "0d5qf01bxd4dlffgxf8i91zq6mbyjmfd00dpyligpfj6fdbz87gc") - ("sounds" "0z6jmxsr3w735hrdnxypdb0gi399pwkaycv9grjpiqy43j3ic7gj") - ("textures" "0k5a47g2z99xn17vw7bqbp0w726gxmk33g5gwmqvfhxxxzzwimvi") - ("torley" "12x23l8xcv9ard5v76lb210lvp66whsns2p3k3xkd1sabp5ixbd5") - ("trak" "03kmwj47yb3dqzb6k9kilna9ja8c6jcnblvbs72x15767fl496pb") - ("ulukai" "0vvd016a7x981ixif6dnlg45s0ak7i89pgyrgwy2fpd94nl2am15") - ("unnamed" "18sxvdha41njp6g8wn56mjy6w9x778c793gh8fr0h9cnysb5gfmi") - ("vanities" "1p38mc2566bmb4vdyr9n9s6fkwmynp2xlpdq2a97gzgi4nmm0232") - ("vegetation" "0pf3qvqzabdcri5za61z6m89b5hq7sd3q0idkazmx88a62mcclkb") - ("weapons" "1jr05y9qhhx53plvir35srvv3cmn6wa065p3bskx6h1x6dcbx3c6") - ("wicked" "14b9f92h8hccp7a015z6rqgbs8236sdyxnwsq991ylnap7cbwvam")))) + '(("acerspyro" "12b0bngl7hlxw4iwdbn99jp081yl6z1ic0s788nm349drbr2pck8") + ("actors" "0x7qqx67679q6ark9zz02skwhzgabid69kwi6zmhfpfgicn4927r") + ("appleflap" "08xslwqfqz3j4m03pv5ry2gdzj5k2ns51z8n6sln3sa94i9x8qkm") + ("blendbrush" "18zf5i2ax4p14x4c9nhk9fq6l1xgbxw62gm72vx59vbfdpjrw3cg") + ("caustics" "172fxwx7kbz5nmbjq98kr52ips505wb99fibgnpg8cj02syrya8k") + ("crosshairs" "14w8ysqzdsx9bzpfbl700jzngbh14rdghhjdf6zd6jlkvrl6754r") + ("dziq" "056imqszvp90j7cgz52ly0f31px64gsrmvm9k2c78ldbx87jnhc3") + ("elyvisions" "1bsgr0gr7njydj8fqclh0a27lrsyic3xfd5a4vwggw7g54azpgk2") + ("fonts" "00ibisza1qci0ghf2rynyf28l6r3nqhfzjf80k6gg76q4v7p1myx") + ("freezurbern" "07l9ldk9b82f12c13wcg5xxdf15bw0yjxk3vvk8v3ygrl2mwksyr") + ("john" "1jdmwkrdi5b9pivkm22rxhmkk1db9dx6l54wzcc23cvdz04ij93k") + ("jojo" "0f7kjy43fbk9kw8fip6bbw4gn3pryh0fndlahjfkaysrx98krdj3") + ("jwin" "0nc8dndnpqk2ad6316a8k6kgzsrkpwvk8s4gyh7aqfi4axfclril") + ("luckystrike" "04jiipqahphmvz5cd74dygr62dlvv6l4iglb8hzh4pp8frhls8bq") + ("maps" "0an46ipjvw4h0nxvb6qvnzp1cdkzlkiinqz4zh9lmxy1ds0gclim") + ("mayhem" "15k10imm2wr6c6fq35n4r99k7kz7n9zdnjlw6dmdq6fba67i6sbc") + ("mikeplus64" "0v4wiiivm3829j4phlavy22n4c6k6ib9ixxpdz7r6ysg5cdkaw33") + ("misc" "13rfgwrlfhflz6inbkg3fypyf8im0m49sw112b17qrw2zgp8i1rz") + ("nieb" "0z0h9jdn2gkkjil3vsvwidb1p2k09pi5n3wjxza12hhvqmcs7q8f") + ("nobiax" "08bfp4q6gbfis18bp1h4d0hqssk79jc4fhyjxnv21dbam4v4mnkn") + ("particles" "1vsx3fgg19xggxfhz3vlrh6nqhmw7kl9kmxrvb2j84blp00vd6z2") + ("philipk" "14irscg80607i5k5l2ci0n9nwibvda2f3xsykgv96d0vldrp5n5a") + ("projectiles" "09bnfsrywirwgjm6d7ff5nicx6w6b7w9568x9pb5q0ncaps3l85s") + ("props" "1dlabbprlkif8af3daf9nbgcwgxiymvj0yiphqhlri8ylfy2vpz4") + ("skyboxes" "14bi3md5y47cvb9ybipdvksz40gqsqw2r0lh3zzqb4acq367w18y") + ("snipergoth" "0m8rvvy5n8n9pm0b5cqvzsxsw51mqk8m7s1h3qc849b38isliwq2") + ("sounds" "0ivf3w5bphz5pzzx6kwcb67vbly1l19cgv3s0cyp8n87afiqj5rd") + ("textures" "0qdmgx7zbcqnb9rrga2izr93p5inirczhddfxs504rsnv0v8vyxm") + ("torley" "05ppyhghq859cbbxzj3dnl9fcx3ghy04ds1pylypwg2hsxzbjwcd") + ("trak" "0g3vq86q91a3syli38lwc8ca4ychfwsmmqf85kqzfzyd627ybclm") + ("ulukai" "0asa5fz400impklcg6dy2f7jiaqfc1sn1c36fpg8jd01gw66lw93") + ("unnamed" "0rz5683j7sfwkcycfypbv4b0ihp0qwn9rzskfsabwc1s5g324917") + ("vanities" "13f18783rc8cjf22p61zr8m5g1migzlx05fzl8xnbjdkqq4cdyix") + ("vegetation" "1y5d97nfmvax7y4fr0y5v0c8zb1ajkqwx76kjd4qc9n4spdsi5sc") + ("weapons" "103g1dhxv5ffz4ddg2xcbshbgv9606chsbas3pzk6h9ybqsyjrqh") + ("wicked" "1884rk34a2dj83gz82rc4zh3ch0dyj5221hvsr0a5h60578i7yj6")))) (package (name "red-eclipse") (version (if (zero? revision) release (string-append release "-" (number->string revision)))) - (source (origin - (method url-fetch) - (uri (string-append "https://github.com/red-eclipse/base" - "/archive/v" release ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1vs9k6f5fgsiy1n72imlqm8khjwm8cryc08zwd4gr7yxlxv45bs0")) - (patches - (search-patches "red-eclipse-remove-gamma-name-hack.patch")))) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/red-eclipse/base.git") + (commit (string-append "v" release)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0qy9kmq21wc4bdhwifasxc5dv1y5c53sn7dfmyc5y3zyz8wjyij4")) + (patches + (search-patches "red-eclipse-remove-gamma-name-hack.patch")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no check target @@ -2866,15 +2954,10 @@ http://lavachat.symlynx.com/unix/") (lambda* (#:key inputs #:allow-other-keys) (delete-file-recursively "data") (mkdir "data") - (for-each (lambda (name) - (invoke "tar" "-xvf" - (assoc-ref inputs name) - "-Cdata" - "--transform" - (string-append "s/" - name "-" ,release "/" - name "/"))) - (list ,@(map car data-sources))) + (with-directory-excursion "data" + (for-each (lambda (name) + (copy-recursively (assoc-ref inputs name) name)) + (list ,@(map car data-sources)))) #t)) (add-after 'unpack-data 'add-store-data-package-path-as-default (lambda* (#:key outputs #:allow-other-keys) @@ -2946,7 +3029,8 @@ exec -a \"$0\" ~a/.redeclipse_server_linux-real~%" (chmod "redeclipse_linux" #o555) (chmod "redeclipse_server_linux" #o555))) #t))))) - (native-inputs `(("pkg-config" ,pkg-config))) + (native-inputs + `(("pkg-config" ,pkg-config))) (inputs `(("curl" ,curl) ("glu" ,glu) @@ -2958,13 +3042,14 @@ exec -a \"$0\" ~a/.redeclipse_server_linux-real~%" ((name hash) (list name (origin - (method url-fetch) - (uri (string-append - "https://github.com/red-eclipse/" - name "/archive/v" release ".tar.gz")) + (method git-fetch) + (uri + (git-reference + (url (string-append "https://github.com/" + "red-eclipse/" name ".git")) + (commit (string-append "v" release)))) (sha256 (base32 hash)) - (file-name (string-append name "-" version - ".tar.gz")))))) + (file-name (git-file-name name version)))))) data-sources))) (home-page "http://redeclipse.net/") (synopsis "Arena shooter derived from the Cube 2 engine") @@ -2986,7 +3071,7 @@ Red Eclipse provides fast paced and accessible gameplay.") (version "1.0") (source (origin (method url-fetch) - (uri (string-append "https://jxself.org/" name ".tar.gz")) + (uri (string-append "https://jxself.org/grue-hunter.tar.gz")) (sha256 (base32 "1hjcpy5439qs3v2zykis7hsi0i17zjs62gks3zd8mnfw9ni4i2h3")))) @@ -3103,14 +3188,15 @@ fullscreen, use F5 or Alt+Enter.") (package (name "warzone2100") (version "3.2.3") - (source (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/" name - "/releases/" version "/" name "-" version - ".tar.xz")) - (sha256 - (base32 - "10kmpr4cby95zwqsl1zwx95d9achli6khq7flv6xmrq30a39xazw")))) + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/warzone2100/archives/" + "unsupported/Warzone2100-" + (version-major+minor version) "/" version + "/warzone2100-" version ".tar.xz")) + (sha256 + (base32 "10kmpr4cby95zwqsl1zwx95d9achli6khq7flv6xmrq30a39xazw")))) (build-system gnu-build-system) (arguments `(#:configure-flags '("--with-distributor=Guix") @@ -3171,7 +3257,7 @@ tactics.") (uri (string-append "mirror://savannah/starfighter/" (version-major+minor version) "/" - name "-" version "-src.tar.gz")) + "starfighter-" version "-src.tar.gz")) (sha256 (base32 "1646hpjq8bz2fkfkja1dah511hn7zd2r7da4w9c9blhad3p5732v")))) @@ -3197,15 +3283,18 @@ in strikes against the evil corporation.") license:cc0 license:public-domain)))) +(define-public project-starfighter + (deprecated-package "project-starfighter" starfighter)) + (define-public chromium-bsu (package (name "chromium-bsu") (version "0.9.16.1") (source (origin (method url-fetch) - (uri (string-append "mirror://sourceforge/" name + (uri (string-append "mirror://sourceforge/chromium-bsu" "/Chromium B.S.U. source code/" - name "-" version ".tar.gz")) + "chromium-bsu-" version ".tar.gz")) (sha256 (base32 "0jk2w5b6s6nkzri585bbz16cif2fhqcnl5l1mq3rd98r9nil3hd1")))) @@ -3476,7 +3565,7 @@ Linux / Mac OS X servers, and an auto mapper with a VT100 map display.") (origin (method url-fetch) (uri (string-append "https://github.com/sgimenez/laby/archive/" - name "-" version ".tar.gz")) + "laby-" version ".tar.gz")) (sha256 (base32 "0gyrfa95l1qka7gbjf7l6mk7mbfvph00l0c995ia272qdw7rjhyf")) @@ -3485,12 +3574,19 @@ Linux / Mac OS X servers, and an auto mapper with a VT100 map display.") (inputs `(("lablgtk" ,lablgtk) ("ocaml" ,ocaml) - ("ocaml-findlib" ,ocaml-findlib))) + ("ocaml-findlib" ,ocaml-findlib) + ("ocamlbuild" ,ocamlbuild))) (arguments '(#:phases (modify-phases %standard-phases (delete 'configure) - (add-before 'build 'setenv + (add-before 'build 'allow-unsafe-strings + ;; Fix a build failure with ocaml >=4.06.0. + ;; See <https://github.com/sgimenez/laby/issues/53>. + (lambda _ + (setenv "OCAMLPARAM" "safe-string=0,_") + #t)) + (add-before 'build 'set-library-path (lambda* (#:key inputs #:allow-other-keys) (let ((lablgtk (assoc-ref inputs "lablgtk"))) (setenv "LD_LIBRARY_PATH" @@ -3559,7 +3655,7 @@ colors, pictures, and sounds.") (method url-fetch) (uri (string-append "https://github.com/SimonLarsen/mrrescue/releases/" - "download/" version "/" name version ".love")) + "download/" version "/mrrescue" version ".love")) (file-name (string-append name "-" version ".love")) (sha256 (base32 @@ -3628,8 +3724,8 @@ throwing people around in pseudo-randomly generated buildings.") (source (origin (method url-fetch) (uri (string-append - "https://www.roguetemple.com/z/hyper/" - name (string-join (string-split version #\.) "") + "https://www.roguetemple.com/z/hyper/hyperrogue" + (string-join (string-split version #\.) "") "-src.tgz")) (sha256 (base32 @@ -3706,7 +3802,7 @@ throwing people around in pseudo-randomly generated buildings.") (method url-fetch) (uri (string-append - "https://www.roguetemple.com/z/hyper/" name + "https://www.roguetemple.com/z/hyper/hyperrogue" (string-join (string-split version #\.) "") "-win.zip")) (sha256 @@ -3814,13 +3910,13 @@ to the Space Age.") (version "0.3.3") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/bartobri/no-more-secrets/" - "archive/v" version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/bartobri/no-more-secrets.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 - (base32 - "1kpx1rirc3i7fb4lymp0hx5rqr0s2ay4za261rw3bcy6d23l1kyg")))) + (base32 "1zfv4qabikf8w9winsr4brxrdvs3f0d7xvydksyx8bydadsm2v2h")))) (build-system gnu-build-system) (arguments `(#:tests? #f @@ -4115,6 +4211,9 @@ small robot living in the nano world, repair its maker.") ;; for a statement from the author. (license license:public-domain))) +(define-public kiki-the-nano-bot + (deprecated-package "kiki-the-nano-bot" kiki)) + (define-public teeworlds (package (name "teeworlds") @@ -4404,10 +4503,13 @@ 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 fish-fillets-ng + (deprecated-package "fish-fillets-ng" fillets-ng)) + (define-public crawl (package (name "crawl") - (version "0.23.1") + (version "0.23.2") (source (origin (method url-fetch) @@ -4420,8 +4522,7 @@ fish. The whole game is accompanied by quiet, comforting music.") (string-append "http://crawl.develz.org/release/stone_soup-" version "-nodeps.tar.xz"))) (sha256 - (base32 - "0c3mx49kpz6i2xvv2dwsaj9s7mm4mif1h2qdkfyi80lv2j1ay51h")) + (base32 "1hw10hqhh688mrqs9vxrl17y1dzfjzsmxz6izg1a9dzmjlhrc01a")) (patches (search-patches "crawl-upgrade-saves.patch")))) (build-system gnu-build-system) (inputs @@ -4443,7 +4544,7 @@ fish. The whole game is accompanied by quiet, comforting music.") (list (string-append "SQLITE_INCLUDE_DIR=" sqlite "/include") (string-append "prefix=" out) "SAVEDIR=~/.crawl" - ;; Don't compile with SSE on systems which don't use it + ;; Don't compile with SSE on systems which don't have it. ,@(match (%current-system) ((or "i686-linux" "x86_64-linux") '()) @@ -4472,9 +4573,9 @@ fish. The whole game is accompanied by quiet, comforting music.") ;; 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.") + (description "Dungeon Crawl Stone Soup (also known as \"Crawl\" or DCSS +for short) 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 @@ -4484,6 +4585,9 @@ fabulous Orb of Zot.") license:zlib license:asl2.0)))) +(define-public dungeon-crawl-stone-soup + (deprecated-package "dungeon-crawl-stone-soup" crawl)) + ;; 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-". @@ -4520,6 +4624,9 @@ fabulous Orb of Zot.") ("which" ,which))) (synopsis "Graphical roguelike dungeon crawler game"))) +(define-public dungeon-crawl-stone-soup-tiles + (deprecated-package "dungeon-crawl-stone-soup-tiles" crawl-tiles)) + (define-public lugaru (package (name "lugaru") @@ -4527,7 +4634,7 @@ fabulous Orb of Zot.") (source (origin (method url-fetch) (uri (string-append "https://bitbucket.org/osslugaru/lugaru/downloads/" - name "-" version ".tar.xz")) + "lugaru-" version ".tar.xz")) (sha256 (base32 "15zgcshy22q51rm72zi6y9z7qlgnz5iw3gczjdlir4bqmxy4gspk")))) @@ -4678,11 +4785,11 @@ fight against their plot and save his fellow rabbits from slavery.") (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) - ;; TODO: "--with-system-nvtt" - "--with-system-mozjs38")))))) + (invoke "./update-workspaces.sh" + (string-append "--libdir=" lib) + (string-append "--datadir=" data) + ;; TODO: "--with-system-nvtt" + "--with-system-mozjs38"))))) (delete 'check) (replace 'install (lambda* (#:key inputs outputs #:allow-other-keys) @@ -4716,7 +4823,7 @@ fight against their plot and save his fellow rabbits from slavery.") (add-after 'install 'check (lambda _ (with-directory-excursion "system" - (zero? (system* "./test")))))))) + (invoke "./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 @@ -4778,7 +4885,7 @@ at their peak of economic growth and military prowess. (substitute* "Makefile" ((".adoc.6:" line) (string-append line " advent.adoc"))) - (zero? (system* "make" ".adoc.6")))) + (invoke "make" ".adoc.6"))) ;; There is no install target (replace 'install (lambda* (#:key outputs #:allow-other-keys) @@ -4925,6 +5032,9 @@ intuitive mouse control, streamlined mechanics and deep, challenging combat, Tales of Maj’Eyal offers engaging roguelike gameplay for the 21st century.") (license license:gpl3+))) +(define-public tales-of-maj-eyal + (deprecated-package "tales-of-maj-eyal" tome4)) + (define-public quakespasm (package (name "quakespasm") @@ -5307,22 +5417,22 @@ You can save humanity and get programming skills!") (define-public gzdoom (package (name "gzdoom") - (version "3.3.0") + (version "3.7.2") (source (origin (method url-fetch) (uri - (string-append "https://zdoom.org/files/gzdoom/src/gzdoom-g" + (string-append "https://zdoom.org/files/gzdoom/src/gzdoom-src-g" version ".zip")) (sha256 (base32 - "09a4kx3ry8pc9r578m7yprwa7zsdqxjpn10lyc92r5g9sx4l1m1a")) + "0182f160m8d0c3nywjw3dxvnz93xjs4cn8akx7137cha4s05wdq7")) (patches (search-patches "gzdoom-search-in-installed-share.patch")) (modules '((guix build utils))) (snippet '(begin (delete-file-recursively "bzip2") (delete-file-recursively "game-music-emu") - (delete-file-recursively "jpeg-6b") + (delete-file-recursively "jpeg") (delete-file-recursively "zlib") #t)))) (arguments @@ -5386,6 +5496,8 @@ renderer. It improves modding support with ZDoom's advanced mapping features and the new ZScript language. In addition to Doom, it supports Heretic, Hexen, Strife, Chex Quest, and fan-created games like Harmony, Hacx and Freedoom.") (home-page "https://zdoom.org/index") + ;; The source uses x86 assembly + (supported-systems '("x86_64-linux" "i686-linux")) (license (list license:gpl3+ ; gzdoom game license:lgpl3+ ; gzdoom renderer license:expat ; gdtoa @@ -5393,6 +5505,34 @@ Strife, Chex Quest, and fan-created games like Harmony, Hacx and Freedoom.") "file://dumb/licence.txt" "Dumb license, explicitly GPL compatible."))))) +(define-public odamex + (package + (name "odamex") + (version "0.8.0") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://sourceforge/odamex/Odamex/" version "/" + "odamex-src-" version ".tar.gz")) + (sha256 + (base32 + "1sh6lqj7vsdmnqz17hw0b6vy7xx6dp41k2sdw99ympsfa2xd1d2j")))) + (build-system cmake-build-system) + (arguments `(#:tests? #f)) ; no tests. + (inputs + `(("sdl" ,sdl) + ("sdl-mixer" ,sdl-mixer) + ("zlib" ,zlib) + ("libpng" ,libpng) + ("alsa-lib" ,alsa-lib))) + (home-page "https://odamex.net/") + (synopsis "Multiplayer Doom port") + (description "Odamex is a modification of the Doom engine that +allows players to easily join servers dedicated to playing Doom +online.") + (license license:gpl2+))) + (define-public fortune-mod (package (name "fortune-mod") @@ -5402,7 +5542,7 @@ Strife, Chex Quest, and fan-created games like Harmony, Hacx and Freedoom.") (method git-fetch) (uri (git-reference (url "https://github.com/shlomif/fortune-mod") - (commit (string-append name "-" version)))) + (commit (string-append "fortune-mod-" version)))) (file-name (git-file-name name version)) (sha256 (base32 @@ -5711,10 +5851,10 @@ open-source FPS of its kind.") (method url-fetch) (uri (list (string-append "http://www.ifarchive.org/if-archive/infocom/interpreters/" - name "/" name "-" version ".tar.gz") + "frotz/frotz-" version ".tar.gz") (string-append "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/" - name "/" name "-" version ".tar.gz"))) + "frotz/frotz-" version ".tar.gz"))) (sha256 (base32 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k")))) @@ -5760,10 +5900,10 @@ ncurses for text display.") (method url-fetch) (uri (list (string-append "http://www.ifarchive.org/if-archive/infocom/interpreters/" - "frotz" "/" "frotz" "-" version ".tar.gz") + "frotz/frotz-" version ".tar.gz") (string-append "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/" - "frotz" "/" "frotz" "-" version ".tar.gz"))) + "frotz/frotz-" version ".tar.gz"))) (sha256 (base32 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k")))) @@ -5865,9 +6005,9 @@ when packaged in Blorb container files or optionally from individual files.") (version "0.2.2") (source (origin (method url-fetch) - (uri (string-append "mirror://gnome/sources/" name "/" + (uri (string-append "mirror://gnome/sources/libmanette/" (version-major+minor version) "/" - name "-" version ".tar.xz")) + "libmanette-" version ".tar.xz")) (sha256 (base32 "1lpprk2qz1lsqf9xj6kj2ciyc1zmjhj5lwd584qkh7jgz2x9y6wb")))) @@ -5894,9 +6034,9 @@ GameController.") (version "3.31.3") (source (origin (method url-fetch) - (uri (string-append "mirror://gnome/sources/" name "/" + (uri (string-append "mirror://gnome/sources/quadrapassel/" (version-major+minor version) "/" - name "-" version ".tar.xz")) + "quadrapassel-" version ".tar.xz")) (sha256 (base32 "08i01nsgfb502xzzrrcxxbs7awb0j1h4c08vmj0j18ipa1sz8vb8")))) @@ -6037,6 +6177,22 @@ civilized than your own.") "/lib/glib-2.0/include")) #:phases (modify-phases %standard-phases + (add-after 'unpack 'ensure-application-files-can-be-found + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* "src/arch/LoadingWindow/LoadingWindow_Gtk.cpp" + (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\" \\+ \"GtkModule.so\"") + (string-append "\"" out + "/share/stepmania/GtkModule.so\""))) + (substitute* "src/arch/ArchHooks/ArchHooks_Unix.cpp" + (("Root = sDirOfExecutable") + (string-append "Root = \"" out "/share/stepmania/\"")) + (("sDirOfExecutable \\+ \"/(Packages|Songs)\"" _ dir) + (string-append "\"" out "/share/stepmania/" dir "\""))) + (substitute* "src/RageFileManager.cpp" + (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\"") + (string-append "\"" out "/share/stepmania/\"")))) + #t)) (add-after 'unpack 'fix-install-subdir ;; Installation would be done in "%out/stepmania-X.Y", but we ;; prefer the more common layout "%out/share/stepmania". @@ -6192,15 +6348,19 @@ to download and install them in @file{$HOME/.stepmania-X.Y/Songs} directory.") ("zip" ,zip))) (home-page "http://btanks.sourceforge.net") (synopsis "Multiplayer tank battle game") - (description "Battle Tanks is a funny battle game, where you can choose -one of three vehicles and eliminate your enemy using the whole arsenal of -weapons. It has original cartoon-like graphics and cool music, it’s fun and -dynamic, it has several network modes for deathmatch and cooperative.") + (description "Battle Tanks (also known as \"btanks\") is a funny battle +game, where you can choose one of three vehicles and eliminate your enemy +using the whole arsenal of weapons. It has original cartoon-like graphics and +cool music, it’s fun and dynamic, it has several network modes for deathmatch +and cooperative.") ;; Some parts (e.g. mrt/b64.cpp) are LGPLv2.1+, but the whole package is ;; released under GPLv2 or later. It comes with extra exceptions for the ;; developers. (license (list license:gpl2+ license:lgpl2.1+)))) +(define-public battle-tanks + (deprecated-package "battle-tanks" btanks)) + (define-public slingshot (package (name "slingshot") @@ -6358,7 +6518,7 @@ the desired spell.") (define-public edgar (package (name "edgar") - (version "1.30") + (version "1.31") (source (origin (method url-fetch) @@ -6366,10 +6526,9 @@ the desired spell.") (string-append "https://github.com/riksweeney/edgar/releases/download/" version "/edgar-" version "-1.tar.gz")) (sha256 - (base32 - "0bhbs33dg0nb8wqlh6px1jj41j05f89ngdqwdkffabmjk7wq5isx")))) + (base32 "0i4851ci8a86ql4bhdq3xdfmf4b9z5zrd4xpc6vhi06697zgm13i")))) (build-system gnu-build-system) - (arguments '(#:tests? #f ; there are no tests + (arguments '(#:tests? #f ; there are no tests #:make-flags (list "CC=gcc" (string-append "PREFIX=" (assoc-ref %outputs "out")) @@ -6379,14 +6538,13 @@ the desired spell.") (delete 'configure) (add-before 'build 'fix-env (lambda* (#:key inputs #:allow-other-keys) - (setenv "CPATH" (string-append (assoc-ref inputs "sdl") - "/include/SDL/")) + (setenv "CPATH" + (string-append (assoc-ref inputs "sdl2-union") + "/include/SDL2")) #t))))) - (inputs `(("sdl" ,sdl) - ("sdl-img" ,sdl-image) - ("sdl-mixer" ,sdl-mixer) - ("sdl-ttf" ,sdl-ttf) - ("zlib" ,zlib))) + (inputs + `(("sdl2-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf))) + ("zlib" ,zlib))) (native-inputs `(("pkg-config" ,pkg-config) ("autoconf" ,autoconf) @@ -6401,3 +6559,571 @@ Edgar fears the worst: he has been captured by the evil sorcerer who lives in a fortress beyond the forbidden swamp.") (home-page "https://www.parallelrealities.co.uk/games/edgar/") (license license:gpl2+))) + +(define-public the-legend-of-edgar + (deprecated-package "the-legend-of-edgar" edgar)) + +(define-public openclonk + (package + (name "openclonk") + (version "8.1") + (source (origin + (method url-fetch) + (uri (string-append + "https://www.openclonk.org/builds/release/" version "/" + "openclonk-" version "-src.tar.bz2")) + (sha256 + (base32 + "0imkqjp8lww5p0cnqf4k4mb2v682mnsas63qmiz17rspakr7fxik")))) + (build-system cmake-build-system) + (arguments + `(#:configure-flags '("-DAudio_TK=OpenAL") + #:test-target "tests" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'prepare-gmock + (lambda* (#:key inputs #:allow-other-keys) + (mkdir "gmock") + (copy-recursively (assoc-ref inputs "googlemock") "gmock") + (substitute* "tests/CMakeLists.txt" + (("/usr/src/gmock") + (string-append (getcwd) "/gmock/googlemock")) + (("/usr/src/gtest") + (string-append (getcwd) "/gmock/googletest")) + (("PATH_SUFFIXES \"src\" \"gtest\"") + "PATH_SUFFIXES \"src\"")) + #t)) + (add-after 'unpack 'add-libiberty + ;; Build fails upon linking executables without this. + (lambda _ + (substitute* "thirdparty/backward-cpp/BackwardConfig.cmake" + (("set\\(LIBBFD_LIBRARIES (.*?)\\)" _ libraries) + (string-append "set(LIBBFD_LIBRARIES " libraries " iberty)"))) + #t)) + (add-after 'add-libiberty 'lax-freealut-requirement + ;; TODO: We provide freealut 1.1.0, but pkg-config somehow detects + ;; it as 1.0.1. Force minimal version. + (lambda _ + (substitute* "cmake/FindAudio.cmake" + (("freealut>=1.1.0") "freealut>=1.0.1")) + #t)) + (add-after 'lax-freealut-requirement 'fix-directories + ;; Prefer "$out/share/openclonk" over + ;; "$out/share/games/openclonk". Also install "openclonk" + ;; binary in "bin/", not "games/". + (lambda _ + (substitute* "CMakeLists.txt" + (("share/games/openclonk") "share/openclonk") + (("TARGETS openclonk DESTINATION games") + "TARGETS openclonk DESTINATION bin")) + #t))))) + (native-inputs + `(("googlemock" ,(package-source googletest)) + ("googletest" ,googletest) + ("pkg-config" ,pkg-config))) + (inputs + `(("freealut" ,freealut) + ("freetype" ,freetype) + ("glew" ,glew) + ("libiberty" ,libiberty) + ("libjpeg" ,libjpeg-turbo) + ("libogg" ,libogg) + ("libpng" ,libpng) + ("libvorbis" ,libvorbis) + ("libxrandr" ,libxrandr) + ("mesa" ,mesa) + ("miniupnpc" ,miniupnpc) + ("openal" ,openal) + ("qtbase" ,qtbase) + ("readline" ,readline) + ("sdl" ,sdl2) + ("tinyxml" ,tinyxml) + ("zlib" ,zlib))) + (home-page "https://www.openclonk.org/") + (synopsis + "Multiplayer action game where you control small and nimble humanoids") + (description "OpenClonk is a multiplayer action/tactics/skill game. It is +often referred to as a mixture of The Settlers and Worms. In a simple 2D +antfarm-style landscape, the player controls his crew of Clonks, small but +robust humanoid beings. The game encourages free play but the normal goal is +to either exploit valuable resources from the earth by building a mine or +fight each other on an arena-like map.") + ;; Software as a whole is licensed under ISC, artwork under CC-BY. + (license (list license:isc license:cc-by3.0)))) + +(define-public flare-engine + (package + (name "flare-engine") + (version "1.09.01") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/flareteam/flare-engine.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1117nxir0zwz4pipx7sxj64p68ig6gbz94lkkjbgrk44lhs0hz8p")))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f ;no test + #:configure-flags '("-DBINDIR=bin" "-DDATADIR=share/flare"))) + (inputs + `(("hicolor-icon-theme" ,hicolor-icon-theme) + ("python" ,python-wrapper) + ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf))))) + (home-page "http://www.flarerpg.org/") + (synopsis "Action Roleplaying Engine") + (description "Flare (Free Libre Action Roleplaying Engine) is a simple +game engine built to handle a very specific kind of game: single-player 2D +action RPGs.") + (license license:gpl3+))) + +(define-public flare-game + (package + (name "flare-game") + (version "1.09.01") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/flareteam/flare-game.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1hn2cchqsbvvgzqc6zvblnl3qrr6sp5rqxpsrcvdmbjm7b37x37b")))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f ;no test + #:configure-flags '("-DDATADIR=share/flare") + #:phases + (modify-phases %standard-phases + ;; Flare expects the mods to be located in the same folder. + ;; Yet, "default" mod is in the engine, whereas the others + ;; are in the current package. Merge everything here with + ;; a symlink. + (add-after 'install 'add-default-mod + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (mods (string-append out "/share/flare/mods"))) + (with-directory-excursion mods + (symlink (string-append (assoc-ref inputs "flare-engine") + "/share/flare/mods/default") + "default"))) + #t)) + (add-after 'install 'install-executable + ;; The package only provides assets for the game, the + ;; executable coming from "flare-engine". Since more than + ;; one game may use the engine, we create a new executable, + ;; "flare-game", which launches the engine with appropriate + ;; parameters. + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bash (string-append (assoc-ref inputs "bash") + "/bin/bash")) + (flare (string-append (assoc-ref inputs "flare-engine") + "/bin/flare")) + (script (string-append out "/bin/flare-game"))) + (mkdir-p (dirname script)) + (call-with-output-file script + (lambda (port) + (format port + "#!~a +exec ~a --data-path=~a/share/flare --mods=empyrean_campaign~%" + bash + flare + out))) + (chmod script #o755)) + #t))))) + (inputs + `(("flare-engine" ,flare-engine))) + (home-page "http://www.flarerpg.org/") + (synopsis "Fantasy action RPG using the FLARE engine") + (description "Flare is a single-player 2D action RPG with +fast-paced action and a dark fantasy style.") + (license license:cc-by-sa3.0))) + +(define-public meritous + (package + (name "meritous") + (version "1.5") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/meritous/meritous.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0n5jm4g0arjllgqmd2crv8h02i6hs3hlh1zyc7ng7yfpg1mbd8p8")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ;no test + #:make-flags + (list "CC=gcc" + (string-append "prefix=" (assoc-ref %outputs "out"))) + #:phases + (modify-phases %standard-phases + (delete 'configure) + (add-after 'unpack 'fix-sdl-path + ;; XXX: For some reason, `sdl-config' reports stand-alone SDL + ;; directory, not SDL-union provided as an input to the package. + ;; We force the latter with "--prefix=" option. + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "Makefile" + (("sdl-config" command) + (string-append command " --prefix=" (assoc-ref inputs "sdl")))) + #t)) + (add-after 'unpack 'fix-crash + ;; XXX: Songs are not present in the repository, due to licensing + ;; issues. Yet, the game tries to load them, and, since it cannot + ;; find them, crashes. Users cannot add them back, the store being + ;; read-only, so we turn off background music altogether. + (lambda _ + (substitute* "src/audio.c" + (("PlayBackgroundMusic\\(new_track\\);" all) + (string-append "// " all))) + #t))))) + (native-inputs + `(("intltool" ,intltool))) + (inputs + `(("sdl" ,(sdl-union (list sdl sdl-image sdl-mixer))) + ("zlib" ,zlib))) + (home-page "https://gitlab.com/meritous/meritous") + (synopsis "Action-adventure dungeon crawl game") + (description "Far below the surface of the planet is a place of limitless +power. Those that seek to control such a utopia will soon bring an end to +themselves. Seeking an end to the troubles that plague him, PSI user Merit +journeys into the hallowed Orcus Dome in search of answers. + +Meritous is a action-adventure game with simple controls but a challenge to +find a balance of power versus recovery time during real-time battles. Set in +a procedurally generated world, the player can explore thousands of rooms in +search of powerful artifacts, tools to help them, and to eventually free the +Orcus Dome from evil.") + (license license:gpl3+))) + +(define-public marble-marcher + (let ((commit "e580460a0c3826f9b28ab404607942a8ecb625d7") + (revision "1")) + (package + (name "marble-marcher") + (version (git-version "0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/HackerPoet/MarbleMarcher.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0jjv832hl1v170n6gryp2sr3lgqndi9ab841qvgqk68bks8701mx")))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f ; there are none + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'embed-asset-directory + (lambda* (#:key outputs #:allow-other-keys) + (let ((assets (string-append (assoc-ref outputs "out") + "/share/marble-marcher/assets/"))) + ;; Some of the files we're patching are + ;; ISO-8859-1-encoded, so choose it as the default + ;; encoding so the byte encoding is preserved. + (with-fluids ((%default-port-encoding #f)) + (substitute* "src/Resource.rc" + (("../assets/icon.ico") + (string-append assets "icon.ico"))) + (substitute* "src/Res.h" + (("assets/") assets)))) + #t)) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (assets (string-append out "/share/marble-marcher/assets")) + (bin (string-append out "/bin/"))) + (mkdir-p bin) + (mkdir-p assets) + (copy-recursively "../source/assets" assets) + (install-file "MarbleMarcher" bin)) + #t))))) + (inputs + `(("eigen" ,eigen) + ("mesa" ,mesa) + ("sfml" ,sfml))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "https://codeparade.itch.io/marblemarcher") + (synopsis "Guide a marble across fractal landscapes") + (description "Marble Marcher is a video game that uses a fractal physics +engine and fully procedural rendering to produce beautiful and unique +gameplay. The game is played on the surface of evolving fractals. The goal +of the game is to get your marble to the flag as quickly as possible. But be +careful not to fall off the level or get crushed by the fractal! There are 24 +levels to unlock.") + ;; Code is under GPLv2+, assets are under CC-BY-SA 3.0 and OFL 1.1. + (license (list license:gpl2+ + license:silofl1.1 + license:cc-by-sa3.0))))) + +;; This must be updated together with flightgear. +(define simgear + (package + (name "simgear") + (version "2018.3.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/flightgear/release-" + (version-major+minor version) "/" + "simgear-" version ".tar.bz2")) + (sha256 + (base32 + "1941ay8rngz4vwsx37bbpxr48hpcvcbj3xw1hy264lq4qnl99c68")))) + (build-system cmake-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + ;; Skip tests that require internet access. + (invoke "ctest" "-E" "(http|dns)")))))) + (inputs + `(("boost" ,boost-for-mysql) ; fails with 1.69 + ("curl" ,curl) + ("expat" ,expat) + ("mesa" ,mesa) + ("openal" ,openal) + ("openscenegraph" ,openscenegraph-3.4) + ("zlib" ,zlib))) + (home-page "https://home.flightgear.org/") + (synopsis "Libraries for 3D simulations and games") + (description "SimGear is a set of libraries designed to be used as +building blocks for quickly assembling 3D simulations, games, and +visualization applications. SimGear is developed by the FlightGear project +and also provides the base for the FlightGear Flight Simulator.") + (license license:lgpl2.0+))) + +(define-public flightgear + (package + (name "flightgear") + (version (package-version simgear)) + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/flightgear/release-" + (version-major+minor version) "/" + "flightgear-" version ".tar.bz2")) + (sha256 + (base32 + "0lzy524cjzs8vldcjcc750bgg5c4mq9fkymxxxzqf68ilc4d1jss")) + (modules '((guix build utils))) + (snippet + '(begin + ;; There are some bundled libraries. + (for-each delete-file-recursively + '("3rdparty/sqlite3/")) + #t)))) + (build-system cmake-build-system) + (arguments + `(#:configure-flags + (list "-DSYSTEM_SQLITE=ON" + (string-append "-DFG_DATA_DIR=" + (assoc-ref %outputs "out") + "/share/flightgear")) + ;; TODO: test cannot be run because the "run_test_suite" executable + ;; does not seem to be built. + #:tests? #f + #:phases + (modify-phases %standard-phases + (add-after 'install 'wrap-executable + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (wrap-program (string-append out "/bin/fgfs") + `("QT_PLUGIN_PATH" ":" prefix + ,(map (lambda (label) + (string-append (assoc-ref inputs label) + "/lib/qt5/plugins")) + '("qtbase" "qtdeclarative" "qtsvg"))) + `("QML2_IMPORT_PATH" ":" prefix + ,(map (lambda (label) + (string-append (assoc-ref inputs label) + "/lib/qt5/qml")) + '("qtdeclarative" "qtsvg")))) + #t))) + (add-after 'install 'install-data + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((share (string-append (assoc-ref outputs "out") "/share/flightgear"))) + (mkdir-p share) + (with-directory-excursion share + (invoke "tar" "xf" (assoc-ref inputs "flightgear-data") + "--strip-components=1"))) + #t))))) + (inputs + `(("boost" ,boost-for-mysql) ; same as simgear + ("dbus" ,dbus) + ("eudev" ,eudev) + ("freeglut" ,freeglut) + ("freetype" ,freetype) + ("glew" ,glew) + ("libpng" ,libpng) + ("openal" ,openal) + ("openscenegraph" ,openscenegraph-3.4) + ("plib" ,plib) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtsvg" ,qtsvg) + ("simgear" ,simgear) + ("speexdsp" ,speexdsp) + ("sqlite" ,sqlite) + ("zlib" ,zlib))) + (native-inputs + `(("cppunit" ,cppunit) + ("pkg-config" ,pkg-config) + ("qttools" ,qttools) + ("flightgear-data" + ,(origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/flightgear/release-" + (version-major+minor version) "/" + "FlightGear-" version "-data.tar.bz2")) + (sha256 + (base32 + "0h4npa7gqpf5fw6pv2bpw0wbwr7fa2vhia21cjbigfgd75x82zi7")))))) + (home-page "https://home.flightgear.org/") + (synopsis "Flight simulator") + (description "The goal of the FlightGear project is to create a +sophisticated flight simulator framework for use in research or academic +environments, pilot training, as an industry engineering tool, for DIY-ers to +pursue their favorite interesting flight simulation idea, and last but +certainly not least as a fun, realistic, and challenging desktop flight +simulator.") + (license license:gpl2+))) + +(define-public jumpnbump + (package + (name "jumpnbump") + (version "1.60") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/LibreGames/jumpnbump.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0gwi58ck4magvdim8wmxdqnsi0fqdpvqia9kcc7q73nqf34jjz3v")))) + (build-system gnu-build-system) + (arguments + `(#:make-flags + (list "CC=gcc" + (string-append "PREFIX=" (assoc-ref %outputs "out"))) + #:tests? #f ;no test + #:phases + (modify-phases %standard-phases + (delete 'configure) ;no configure script + (add-after 'unpack 'fix-sdl-path + ;; XXX: For some reason, `sdl2-config' reports stand-alone SDL + ;; directory, not SDL-union provided as an input to the package. + ;; We force the latter with "--prefix=" option. + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "Makefile" + (("sdl2-config" command) + (string-append command " --prefix=" (assoc-ref inputs "sdl")))) + #t))))) + (inputs + `(("bzip2" ,bzip2) + ("sdl" ,(sdl-union (list sdl2 sdl2-mixer sdl2-net))) + ("zlib" ,zlib))) + (native-inputs + `(("gettext" ,gettext-minimal))) ;for msgfmt + (home-page "https://gitlab.com/LibreGames/jumpnbump") + (synopsis "Multiplayer platform game with bunnies") + (description "You, as a bunny, have to jump on your opponents to make them +explode. It is a true multiplayer game; you cannot play this alone. You can +play with up to four players simultaneously. It has network support.") + (license license:gpl2+))) + +(define-public hedgewars + (package + (name "hedgewars") + (version "0.9.25") + (source (origin + (method url-fetch) + (uri (string-append "https://www.hedgewars.org/download/releases/" + "hedgewars-src-" version ".tar.bz2")) + (sha256 + (base32 + "08x7fqpy0hpnbfq2k06g522xayi7s53bca819zfhalvqnqs76pdk")))) + (build-system cmake-build-system) + (arguments + ;; XXX: Engine is built as Pascal source code, requiring Free Pascal + ;; Compiler, which we haven't packaged yet. With the flag below, we use + ;; a Pascal to C translator and Clang instead. + `(#:configure-flags (list "-DBUILD_ENGINE_C=ON") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'remove-failing-test + ;; XXX: Remove single failing test. Note: it is marked + ;; a "non-critical" test. + (lambda _ + (delete-file-recursively "tests/lua_noncritical") + #t)) + (add-after 'unpack 'fix-compiler + ;; XXX: Flag BUILD_ENGINE_C, as set above, implies using Clang to + ;; compile files. However, using `clang' globally leads to the + ;; error: qtbase-5.11.3/include/qt5/QtCore/qglobal.h:45:12: fatal + ;; error: 'type_traits' file not found. + ;; + ;; Therefore, we make sure to use `c++' everywhere but in the + ;; engine. + (lambda _ + (substitute* "project_files/hwc/CMakeLists.txt" + (("find_package\\(SDL2_ttf 2 REQUIRED\\)" all) + (string-append all "\n" + "set(CMAKE_C_COMPILER ${CLANG_EXECUTABLE})\n" + "set(CMAKE_CXX_COMPILER ${CLANG_EXECUTABLE})"))) + (substitute* "CMakeLists.txt" + (("set\\(CMAKE_C(XX)?_COMPILER" all) (string-append "#" all))) + #t)) + (replace 'check + (lambda _ + (invoke "ctest")))))) + (inputs + `(("ffmpeg" ,ffmpeg) + ("freeglut" ,freeglut) + ("ghc-entropy" ,ghc-entropy) + ("ghc-hslogger" ,ghc-hslogger) + ("ghc-network" ,ghc-network) + ("ghc-random" ,ghc-random) + ("ghc-regex-tdfa" ,ghc-regex-tdfa) + ("ghc-sandi" ,ghc-sandi) + ("ghc-sha" ,ghc-sha) + ("ghc-utf8-string" ,ghc-utf8-string) + ("ghc-vector" ,ghc-vector) + ("ghc-zlib" ,ghc-zlib) + ("glew" ,glew) + ("libpng" ,libpng) + ("lua" ,lua-5.1) + ("physfs" ,physfs) + ("qtbase" ,qtbase) + ("sdl" ,(sdl-union + (list sdl2 sdl2-mixer sdl2-net sdl2-ttf sdl2-image))))) + (native-inputs + `(("clang" ,clang) + ("ghc" ,ghc) + ("pkg-config" ,pkg-config) + ("qttools" ,qttools))) + (home-page "https://hedgewars.org/") + (synopsis "Turn-based artillery game featuring fighting hedgehogs") + (description + "Hedgewars is a turn based strategy, artillery, action and comedy game, +featuring the antics of pink hedgehogs with attitude as they battle from the +depths of hell to the depths of space. + +As commander, it's your job to assemble your crack team of hedgehog soldiers +and bring the war to your enemy.") + ;; Software as a whole is licensed under GPL-2 terms. Artwork and + ;; scripts are distributed under various terms. + (license (list license:gpl2 + license:bsd-2 license:bsd-3 license:cc-by3.0 license:cc0 + license:expat license:fdl1.3+ license:public-domain + license:zlib)))) |