···1-#!/usr/bin/env bash
2-3-set -o nounset
4-5-# shellcheck source=/dev/null
6-source "${stdenv}/setup"
7-8-mkdir -p "${out}/share/keen4"
9-unzip -j "$dist" -d "${out}/share/keen4"
10-11-mkdir -p "${out}/bin"
12-cat > "${out}/bin/keen4" <<EOF
13-#! $SHELL -e
14-if test -z "\$HOME"; then
15- echo "HOME directory not set"
16- exit 1
17-fi
18-19-# Game wants to write in the current directory, but of course we can't
20-# let it write in the Nix store. So create symlinks to the game files
21-# in ~/.keen4 and execute game from there.
22-mkdir -p \$HOME/.keen4
23-cd \$HOME/.keen4
24-25-ln -sf "${out}/share/keen4/"* .
26-27-"${dosbox}/bin/dosbox" ./KEEN4E.EXE -fullscreen -exit || true
28-29-# Cleanup the symlinks.
30-for i in *; do
31- if test -L "\$i"; then
32- rm "\$i"
33- fi
34-done
35-EOF
36-chmod +x "${out}/bin/keen4"
···23stdenv.mkDerivation {
4 name = "keen4";
056+ src = fetchurl {
7 url = "http://tarballs.nixos.org/keen4.zip";
8 sha256 = "12rnc9ksl7v6l8wsxvr26ylkafzq80dbsa7yafzw9pqc8pafkhx1";
9 };
1011 nativeBuildInputs = [ unzip ];
1213+ installPhase = ''
14+ mkdir -p $out/share/keen4
15+ mv * $out/share/keen4
16+17+ mkdir -p $out/bin
18+ cat > $out/bin/keen4 <<EOF
19+ #! $SHELL -e
20+ if test -z "\$HOME"; then
21+ echo "HOME directory not set"
22+ exit 1
23+ fi
24+25+ # Game wants to write in the current directory, but of course we can't
26+ # let it write in the Nix store. So create symlinks to the game files
27+ # in ~/.keen4 and execute game from there.
28+ mkdir -p \$HOME/.keen4
29+ cd \$HOME/.keen4
30+31+ ln -sf $out/share/keen4/* .
32+33+ ${dosbox}/bin/dosbox ./KEEN4E.EXE -fullscreen -exit || true
34+35+ # Cleanup the symlinks.
36+ for i in *; do
37+ if test -L "\$i"; then
38+ rm "\$i"
39+ fi
40+ done
41+ EOF
42+ chmod +x $out/bin/keen4
43+ '';
4445 meta = {
46 description = "Commander Keen Episode 4: Secret of the Oracle";