npush: init at 0.7

Also, adding a helper run-npush that takes care of preparing the game to run
with the official levelset.
This commit is contained in:
AndersonTorres 2022-01-19 18:30:06 -03:00
parent 3fe54cd39e
commit 78c338cb10
3 changed files with 81 additions and 0 deletions

View File

@ -0,0 +1,47 @@
{ lib
, stdenv
, fetchurl
, ncurses
}:
stdenv.mkDerivation rec {
pname = "npush";
version = "0.7";
src = fetchurl {
url = "mirror://sourceforge/project/npush/${pname}/${version}/${pname}-${version}.tgz";
hash = "sha256-8hbSsyeehzd4T3fUhDyebyI/oTHOHr3a8ArYAquivNk=";
};
outputs = [ "out" "doc" ];
buildInputs = [
ncurses
];
dontConfigure = true;
makeFlags = [
"CC=${stdenv.cc.targetPrefix}c++"
];
installPhase = ''
runHook preInstall
mkdir -p $out/bin $out/share/npush/levels $doc/share/doc/npush
cp npush $out/bin/
cp levels/* $out/share/npush/levels
cp CHANGES COPYING CREDITS index.html \
readme.txt screenshot1.png screenshot2.png $doc/share/doc/npush/
runHook postInstall
'';
meta = with lib; {
homepage = "http://npush.sourceforge.net/";
description = "A Sokoban-like game";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ AndersonTorres ];
platforms = with platforms; unix;
};
}

31
pkgs/games/npush/run.nix Normal file
View File

@ -0,0 +1,31 @@
{ runtimeShell
, symlinkJoin
, writeShellScriptBin
, npush
}:
let
runScript = writeShellScriptBin "run-npush" ''
set -euo pipefail
CWD=$(pwd)
if [ -d "./levels" ]; then
echo "Directory ./levels found; skipping levelset copy"
else
echo "Directory ./levels not found; copying the official levelset to the current directory"
mkdir -p ./levels
cp ${npush}/share/npush/levels/* levels/
chmod 644 levels/*
fi
echo "Now calling npush"
exec "${npush}/bin/npush"
'';
in
symlinkJoin {
name = "run-npush-${npush.version}";
paths = [
npush
runScript
];
}

View File

@ -30902,6 +30902,9 @@ with pkgs;
njam = callPackage ../games/njam { }; njam = callPackage ../games/njam { };
npush = callPackage ../games/npush { };
run-npush = callPackage ../games/npush/run.nix { };
newtonwars = callPackage ../games/newtonwars { }; newtonwars = callPackage ../games/newtonwars { };
nudoku = callPackage ../games/nudoku { }; nudoku = callPackage ../games/nudoku { };