about summary refs log tree commit diff
path: root/nixpkgs/pkgs/games/xsokoban/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/games/xsokoban/default.nix')
-rw-r--r--nixpkgs/pkgs/games/xsokoban/default.nix54
1 files changed, 54 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/games/xsokoban/default.nix b/nixpkgs/pkgs/games/xsokoban/default.nix
new file mode 100644
index 000000000000..cf08db68cf03
--- /dev/null
+++ b/nixpkgs/pkgs/games/xsokoban/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, fetchurl, libX11, xorgproto, libXpm, libXt }:
+
+stdenv.mkDerivation rec {
+  name = "xsokoban-${version}";
+  version = "3.3c";
+
+  src = fetchurl {
+    url = "https://www.cs.cornell.edu/andru/release/${name}.tar.gz";
+    sha256 = "006lp8y22b9pi81x1a9ldfgkl1fbmkdzfw0lqw5y9svmisbafbr9";
+  };
+
+  buildInputs = [ libX11 xorgproto libXpm libXt ];
+
+  NIX_CFLAGS_COMPILE = "-I${libXpm.dev}/include/X11";
+
+  hardeningDisable = [ "format" ];
+
+  prePatch = ''
+    substituteInPlace Makefile.in --replace 4755 0755
+  '';
+
+  preConfigure = ''
+    sed -e 's/getline/my_getline/' -i score.c
+
+    chmod a+rw config.h
+    cat >>config.h <<EOF
+    #define HERE "@nixos-packaged"
+    #define WWW 0
+    #define OWNER "$(whoami)"
+    #define ROOTDIR "$out/lib/xsokoban"
+    #define ANYLEVEL 1
+    #define SCOREFILE ".xsokoban-score"
+    #define LOCKFILE ".xsokoban-score-lock"
+    EOF
+
+    sed -i main.c \
+      -e 's/getpass[(][^)]*[)]/PASSWORD/' \
+      -e '/if [(]owner[)]/iowner=1;'
+  '';
+
+  preBuild = ''
+    sed -i Makefile \
+      -e "s@/usr/local/@$out/@" \
+      -e "s@ /bin/@ @"
+    mkdir -p $out/bin $out/share $out/man/man1 $out/lib
+  '';
+
+  meta = with stdenv.lib; {
+    description = "X sokoban";
+    license = licenses.publicDomain;
+    maintainers = [ maintainers.raskin ];
+    platforms = platforms.linux;
+  };
+}