diff --git a/pkgs/games/build-support/build-game.nix b/pkgs/games/build-support/build-game.nix index 459fca75..57fbe23c 100644 --- a/pkgs/games/build-support/build-game.nix +++ b/pkgs/games/build-support/build-game.nix @@ -9,7 +9,6 @@ assert withPulseAudio -> libpulseaudio != null; { buildInputs ? [] , nativeBuildInputs ? [] , preUnpack ? "" -, setSourceRoot ? "" , runtimeDependencies ? [] , sandbox ? {} , ... @@ -30,7 +29,7 @@ buildSandbox (stdenv.mkDerivation ({ # Try to evade tarbombs setSourceRoot = '' popd &> /dev/null - '' + lib.optionalString (setSourceRoot == "") '' + '' + attrs.setSourceRoot or '' sourceRoot="$(find "$name" -type d -exec sh -c ' ndirs="$(find "$1" -mindepth 1 -maxdepth 1 -type d -printf x | wc -m)" nelse="$(find "$1" -mindepth 1 -maxdepth 1 ! -type d -printf x | wc -m)" diff --git a/pkgs/games/humblebundle/default.nix b/pkgs/games/humblebundle/default.nix index 656c06db..95996624 100644 --- a/pkgs/games/humblebundle/default.nix +++ b/pkgs/games/humblebundle/default.nix @@ -28,6 +28,7 @@ let owlboy = callPackage ./owlboy.nix {}; pico-8 = callPackage ./pico-8.nix {}; rocketbirds = callPackage ./rocketbirds.nix {}; + spacechem = callPackage ./spacechem.nix {}; spaz = callPackage ./spaz.nix {}; starbound = callPackage ./starbound.nix {}; swordsandsoldiers = callPackage ./swordsandsoldiers.nix {}; diff --git a/pkgs/games/humblebundle/spacechem.nix b/pkgs/games/humblebundle/spacechem.nix new file mode 100644 index 00000000..ca6e252e --- /dev/null +++ b/pkgs/games/humblebundle/spacechem.nix @@ -0,0 +1,71 @@ +{ stdenv, lib, fetchHumbleBundle, buildGame +, SDL, SDL_mixer, SDL_image, SDL_net, SDL_gfx, SDL_ttf, smpeg +, mono4, sqlite, coreutils, makeWrapper}: + +with lib; + +buildGame rec { + version = "1013_FIXED"; + name = "spacechem-${version}"; + + src = fetchHumbleBundle { + name = "SpaceChem_Linux_v1013_FIXED.zip"; + machineName = "spacechem_android_pc_soundtrack_linux"; + downloadName = "download"; + md5 = "c290e8631ae3380b7e70362501a5adb6"; + }; + + buildInputs = [ makeWrapper ]; + + postPatch = let + dllmap = { + SDL = "${SDL}/lib/libSDL.so"; + SDL_image = "${SDL_image}/lib/libSDL_image.so"; + SDL_mixer = "${SDL_mixer}/lib/libSDL_mixer.so"; + SDL_ttf = "${SDL_ttf}/lib/libSDL_ttf.so"; + SDL_net = "${SDL_net}/lib/libSDL_net.so"; + smpeg = "${smpeg}/lib/libsmpeg.so"; + SDL_gfx = "${SDL_gfx}/lib/libSDL_gfx.so"; + }; + in '' + ${concatStrings (mapAttrsToList (dll: target: '' + sed -i -e '//,/<\/dllmap>/ { + /dllentry os="linux"/s!dll="[^"]*"!dll="'"${target}"'"! + }' SpaceChem/Tao.Sdl.dll.config + '') dllmap)} + + rm SpaceChem/Mono.Security.dll + rm SpaceChem/spacechem-launcher.sh + + cat > SpaceChem/System.Data.SQLite.dll.config < + + + EOF + cat > SpaceChem/SpaceChem.exe.config < + + + + EOF + ''; + # + # + + installPhase = '' + runHook preInstall + + mkdir -p $out/lib + cp -rvt $out/lib SpaceChem + + runHook postInstall + ''; + + # coreutils because Tao.OpenGL relies on uname for platform detection + postInstall = '' + makeWrapper ${mono4}/bin/mono $out/bin/spacechem \ + --prefix PATH : ${coreutils}/bin \ + --run "cd $out/lib/SpaceChem" \ + --add-flags $out/lib/SpaceChem/SpaceChem.exe + ''; +}