summary refs log tree commit diff
path: root/pkgs/games/keen4/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/games/keen4/default.nix')
-rw-r--r--pkgs/games/keen4/default.nix35
1 files changed, 32 insertions, 3 deletions
diff --git a/pkgs/games/keen4/default.nix b/pkgs/games/keen4/default.nix
index 59bb30d627f..5e2468a8f9e 100644
--- a/pkgs/games/keen4/default.nix
+++ b/pkgs/games/keen4/default.nix
@@ -2,16 +2,45 @@
 
 stdenv.mkDerivation {
   name = "keen4";
-  builder = ./builder.sh;
 
-  dist = fetchurl {
+  src = fetchurl {
     url = "http://tarballs.nixos.org/keen4.zip";
     sha256 = "12rnc9ksl7v6l8wsxvr26ylkafzq80dbsa7yafzw9pqc8pafkhx1";
   };
 
   nativeBuildInputs = [ unzip ];
 
-  inherit dosbox;
+  installPhase = ''
+    mkdir -p $out/share/keen4
+    mv * $out/share/keen4
+
+    mkdir -p $out/bin
+    cat > $out/bin/keen4 <<EOF
+    #! $SHELL -e
+    if test -z "\$HOME"; then
+        echo "HOME directory not set"
+        exit 1
+    fi
+
+    # Game wants to write in the current directory, but of course we can't
+    # let it write in the Nix store.  So create symlinks to the game files
+    # in ~/.keen4 and execute game from there.
+    mkdir -p \$HOME/.keen4
+    cd \$HOME/.keen4
+
+    ln -sf $out/share/keen4/* .
+
+    ${dosbox}/bin/dosbox ./KEEN4E.EXE -fullscreen -exit || true
+
+    # Cleanup the symlinks.
+    for i in *; do
+        if test -L "\$i"; then
+            rm "\$i"
+        fi
+    done
+    EOF
+    chmod +x $out/bin/keen4
+  '';
 
   meta = {
     description = "Commander Keen Episode 4: Secret of the Oracle";