diff --git a/pkgs/SpaceCadetPinball/cab_list.nix b/pkgs/SpaceCadetPinball/cab_list.nix new file mode 100644 index 0000000..8b9bf1e --- /dev/null +++ b/pkgs/SpaceCadetPinball/cab_list.nix @@ -0,0 +1,45 @@ +[ + "PINBALL.DAT" + "PINBALL.MID" + "SOUND1.WAV" + "SOUND3.WAV" + "SOUND4.WAV" + "SOUND5.WAV" + "SOUND7.WAV" + "SOUND8.WAV" + "SOUND9.WAV" + "SOUND12.WAV" + "SOUND14.WAV" + "SOUND16.WAV" + "SOUND17.WAV" + "SOUND18.WAV" + "SOUND19.WAV" + "SOUND20.WAV" + "SOUND21.WAV" + "SOUND22.WAV" + "SOUND24.WAV" + "SOUND25.WAV" + "SOUND26.WAV" + "SOUND27.WAV" + "SOUND28.WAV" + "SOUND29.WAV" + "SOUND30.WAV" + "SOUND34.WAV" + "SOUND35.WAV" + "SOUND36.WAV" + "SOUND38.WAV" + "SOUND39.WAV" + "SOUND43.WAV" + "SOUND45.WAV" + "SOUND49.WAV" + "SOUND49D.WAV" + "SOUND50.WAV" + "SOUND54.WAV" + "SOUND55.WAV" + "SOUND57.WAV" + "SOUND104.WAV" + "SOUND105.WAV" + "SOUND108.WAV" + "SOUND111.WAV" + "SOUND131.WAV" +] diff --git a/pkgs/SpaceCadetPinball/default.nix b/pkgs/SpaceCadetPinball/default.nix new file mode 100644 index 0000000..631e2b0 --- /dev/null +++ b/pkgs/SpaceCadetPinball/default.nix @@ -0,0 +1,58 @@ +{ lib +, stdenv +, fetchFromGitHub +, cmake +, SDL2 +, SDL2_mixer +, p7zip +, requireFile +}: +let + + extractCab = file: + let + cab = lib.substring 0 ((lib.stringLength file) - 1) file; + in + '' + ${p7zip}/bin/7z x I386/${cab}_ + cp ${lib.toLower file} $out/${file} + ''; + + spacecadet_files = stdenv.mkDerivation { + name = "spacecadet_files"; + src = requireFile rec { + name = "en_windows_xp_professional_with_service_pack_3_x86_cd_x14-80428.iso"; + sha256 = "62b6c91563bad6cd12a352aa018627c314cfc5162d8e9f8af0756a642e602a46"; + message = '' + Windows iso required for SpaceCadetPinball. + nix-store --add-fixed sha256 ${name} + ''; + }; + dontBuild = true; + unpackPhase = "${p7zip}/bin/7z x $src"; + installPhase = '' + mkdir -p $out + '' + (lib.concatMapStrings extractCab (import ./cab_list.nix)); + }; + +in +stdenv.mkDerivation rec { + pname = "SpaceCadetPinball"; + version = "2021-10-25"; + + src = fetchFromGitHub { + owner = "k4zmu2a"; + repo = pname; + sha256 = "DJM+bh+JqCqCp4ub9CpuOiAeQ+DKiKVFUTcY09XEOZA="; + rev = "3ec96b84add67921a2a2ca552b0bbd400d14d70a"; + }; + + nativeBuildInputs = [ cmake SDL2 SDL2_mixer ]; + + installPhase = '' + mkdir -p $out/share/${pname} $out/bin + mv ../bin/SpaceCadetPinball $out/share/${pname}/ + cp ${spacecadet_files}/* $out/share/${pname}/ + ln -s $out/share/${pname}/SpaceCadetPinball $out/bin/SpaceCadetPinball + ''; +} diff --git a/pkgs/default.nix b/pkgs/default.nix index 39a81f1..06a900d 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -7,6 +7,7 @@ let { commander-x16 = pkgs.callPackage ./commander-x16 { }; gef = pkgs.callPackage ./gef { }; + SpaceCadetPinball = pkgs.callPackage ./SpaceCadetPinball { }; stretchy-spaces = pkgs.callPackage ./stretchy-spaces { }; webshells = pkgs.callPackage ./webshells { }; weevely = pkgs.callPackage ./weevely { };