From c86a0010584bd4bb08b5b17293654a2797479b1f Mon Sep 17 00:00:00 2001 From: Vitaliy Shatrov Date: Sat, 28 Mar 2020 23:49:31 +0700 Subject: [PATCH] games.scm: add "neverball" and "neverputt" (bundled together). gnu/packages/games.scm: Added: * a game neverball and it's "addon", neverputt. * the #:use-module "copy-build-system". --- gnu/packages/games.scm | 97 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 42f2230482..8bf12feab3 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -172,6 +172,7 @@ #:use-module (gnu packages xml) #:use-module (gnu packages messaging) #:use-module (gnu packages networking) + #:use-module (guix build-system copy) #:use-module (guix build-system glib-or-gtk) #:use-module (guix build-system gnu) #:use-module (guix build-system go) @@ -10352,3 +10353,99 @@ to conquer opponents by defeating them in war (with troops or machines), capturing their buildings with spies, or offering opponents money for their kingdom.") (license license:gpl2+))) + +(define-public neverball + ;; git-version is 6-years younger than latest release + (let ((commit "760a25d32a5fb0661b99426d4ddcb9ac9f3d1644") + (revision "1")) + (package + (name "neverball") + (version (git-version "1.6.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Neverball/neverball.git") + (commit commit))) + (sha256 + (base32 + "0bwh67df3lyf33bv710y25l3frjdd34j9b7gsjadwxviz6r1vpj5")) + (file-name (git-file-name name version)))) + (build-system copy-build-system) + (arguments + `(#:install-plan + '(("neverball" "bin/") + ("neverputt" "bin/") + ("mapc" "bin/") + ("data" "share/games/neverball/") ;; Octocat seem to be non-free + ("locale" "share/") + ("dist/" "share/games/neverball" #:include ("neverball_replay.png" + "neverlogos.svg" + "svg readme.txt")) + ;; https://gitlab.com/xonotic/netradiant + ;;("NeverballPack" "share/games/neverball/") + ("dist/" "share/applications" #:include ("neverball.desktop" + "neverputt.desktop")) + ("dist/" "share/man/man1" #:include ("mapc.1")) + ("dist/" "share/man/man6" #:include ("neverball.6" + "neverputt.6")) + ("doc/" "share/doc/neverball") + ("README.md" "share/doc/neverball/")) + #:phases + (modify-phases %standard-phases + (add-before 'install 'build + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (sdl (assoc-ref inputs "sdl"))) + (invoke "make" "-j" (number->string (parallel-job-count)) + "--environment-overrides" + "CC=gcc" "BUILD=release" + (string-append "DATADIR=" out "/share/games/neverball/data") + (string-append "LOCALEDIR=" out "/share/locale") + (string-append "SDL_CPPFLAGS=-I" sdl "/include/SDL2/")) + ;; Debian doesn't strip it, though. i'm dummy + (delete-file-recursively "data/ball/octocat")) + #t)) + (add-after 'install 'fix-some-broken-fonts + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out"))) + (wrap-program (string-append out "/bin/neverball") + `("LANG" = ("en_US.utf8"))) + (wrap-program (string-append out "/bin/neverputt") + `("LANG" = ("en_US.utf8")))) + #t)) + (add-after 'install 'install-icons + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out"))) + (with-directory-excursion "dist" + (for-each + (lambda (size) + (let* ((icons (string-append out "/share/icons/hicolor/" + size "x" size "/apps"))) + (mkdir-p icons) + (for-each + (lambda (file) + (copy-file (string-append file "_" size ".png") + (string-append icons "/" file ".png"))) + '("neverball" "neverputt")))) + '("16" "24" "32" "48" + "64" "128" "256" "512")))) + #t))))) + (inputs + `(("libjpeg" ,libjpeg) + ("libpng" ,libpng) + ("libvorbis" ,libvorbis) + ("physfs" ,physfs) + ("sdl" ,(sdl-union (list sdl2 + sdl2-ttf))))) + (native-inputs + `(("gettext" ,gettext-minimal))) ;for msgfmt + (home-page "https://neverball.org/") + (synopsis "3D floor-tilting game") + (description + "Also included is Neverputt, which is a 3D miniature golf game. +In the grand tradition of Marble Madness and Super Monkey Ball, +Neverball has you guide a rolling ball through dangerous territory. +Balance on narrow bridges, navigate mazes, ride moving platforms, and +dodge pushers and shovers to get to the goal. Race against the clock to +collect coins to earn extra balls.") ;; mouse on sway cause crash + (license license:gpl2+)))) -- 2.25.1