diff --git a/pkgs/games/nethack/default.nix b/pkgs/games/nethack/default.nix index d817cf643238..e5057c27e997 100644 --- a/pkgs/games/nethack/default.nix +++ b/pkgs/games/nethack/default.nix @@ -1,57 +1,75 @@ -a : -let - fetchurl = a.fetchurl; +{ stdenv, fetchurl, writeScript, ncurses, gzip, flex, bison }: + +stdenv.mkDerivation rec { + name = "nethack-3.4.3"; - version = a.lib.attrByPath ["version"] "3.4.3" a; - buildInputs = with a; [ - ncurses flex bison - ]; -in -rec { src = fetchurl { url = "mirror://sourceforge/nethack/nethack-343-src.tgz"; sha256 = "1r3ghqj82j0bar62z3b0lx9hhx33pj7p1ppxr2hg8bgfm79c6fdv"; }; - inherit buildInputs; - configureFlags = []; + buildInputs = [ ncurses ]; - /* doConfigure should be removed if not needed */ - phaseNames = ["preBuild" "doMakeInstall" "postInstall"]; - - preBuild = a.fullDepEntry ('' + nativeBuildInputs = [ flex bison ]; + + preBuild = '' ( cd sys/unix ; sh setup.sh ) - sed -e 's@.*define HACKDIR.*@\#define HACKDIR "/tmp/nethack"@' -i include/config.h + sed -e '/define COMPRESS/d' -i include/config.h - sed -e '1i\#define COMPRESS "/usr/local/bin/gzip"' -i include/config.h + sed -e '1i\#define COMPRESS "${gzip}/bin/gzip"' -i include/config.h sed -e '1i\#define COMPRESS_EXTENSION ".gz"' -i include/config.h + sed -e '/define CHDIR/d' -i include/config.h sed -e '/extern char [*]tparm/d' -i win/tty/*.c + sed -e 's/-ltermlib/-lncurses/' -i src/Makefile sed -e 's/^YACC *=.*/YACC = bison -y/' -i util/Makefile sed -e 's/^LEX *=.*/LEX = flex/' -i util/Makefile - sed -e 's@GAMEDIR = @GAMEDIR = /tmp/nethack@' -i Makefile sed -re 's@^(CH...).*@\1 = true@' -i Makefile - '') ["minInit" "doUnpack"]; - postInstall = a.fullDepEntry ('' + sed -e '/^ *cd /d' -i sys/unix/nethack.sh + ''; + + postInstall = '' + for i in logfile perm record save; do + rm -rf $out/games/lib/nethackdir/$i + done + mkdir -p $out/bin - ln -s $out/games/nethack $out/bin/nethack - sed -i $out/bin/nethack -e '5aNEWHACKDIR="$HOME/.nethack"' - sed -i $out/bin/nethack -e '6amkdir -p "$NEWHACKDIR/save"' - sed -i $out/bin/nethack -e '7afor i in $(find "$NEWHACKDIR" -type l); do if ! test -e $(readlink "$i"); then rm "$i"; fi; done;' - sed -i $out/bin/nethack -e '8aln -s "$HACKDIR"/* "$NEWHACKDIR" &>/dev/null' - sed -i $out/bin/nethack -e '9atest -L "$NEWHACKDIR/record" && rm "$NEWHACKDIR"/record' - sed -i $out/bin/nethack -e '10aexport HACKDIR="$NEWHACKDIR"' - '') ["minInit" "defEnsureDir"]; + cat <$out/bin/nethack + #! ${stdenv.shell} -e + if [ ! -d ~/.nethack ]; then + mkdir -p ~/.nethack/save + for i in logfile perm record; do + [ ! -e ~/.nethack/\$i ] && touch ~/.nethack/\$i + done + fi - makeFlags = [ - "PREFIX=$out" - ]; + cd ~/.nethack - name = "nethack-" + version; - meta = { - description = "rogue-like game"; + cleanup() { + for i in $out/games/lib/nethackdir/*; do + rm -rf \$(basename \$i) + done + } + trap cleanup EXIT + + for i in $out/games/lib/nethackdir/*; do + ln -s \$i \$(basename \$i) + done + $out/games/nethack + EOF + chmod +x $out/bin/nethack + ''; + + makeFlags = [ "PREFIX=$(out)" ]; + + meta = with stdenv.lib; { + description = "Rogue-like game"; + homepage = "http://nethack.org/"; + license = "nethack"; + platforms = platforms.unix; + maintainers = with maintainers; [ abbradar ]; }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 3e15e7b65c3d..3e8b7250b591 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7624,9 +7624,7 @@ let sslSupport = true; }; - nethack = builderDefsPackage (import ../games/nethack) { - inherit ncurses flex bison; - }; + nethack = callPackage ../games/nethack { }; nettle27 = callPackage ../development/libraries/nettle/27.nix { }; nettle = callPackage ../development/libraries/nettle { };