From c86a0010584bd4bb08b5b17293654a2797479b1f Mon Sep 17 00:00:00 2001
From: Vitaliy Shatrov <D0dyBo0D0dyBo0@protonmail.com>
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(+)
@@ -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