nixpkgs/pkgs/by-name/va/vanillatd/passthru-packages.nix
2025-08-11 22:24:42 +02:00

103 lines
3.5 KiB
Nix

{
lib,
stdenvNoCC,
unar,
appName,
fetchurl,
...
}:
builtins.mapAttrs
(
name: buildCommand:
stdenvNoCC.mkDerivation {
inherit name buildCommand;
nativeBuildInputs = [ unar ];
meta = {
sourceProvenance = with lib.sourceTypes; [
binaryBytecode
];
license = with lib.licenses; [
unfree
];
};
}
)
(
if appName == "vanillatd" then
let
CCDEMO1_ZIP = fetchurl {
url = "https://archive.org/download/CommandConquerDemo/cc1demo1.zip";
hash = "sha256-KdM4SctFCocmJCbMWbJbql4DO5TC40leyU+BPzvAn4c=";
};
CCDEMO2_ZIP = fetchurl {
url = "https://archive.org/download/CommandConquerDemo/cc1demo2.zip";
hash = "sha256-pCgEuE5AFcJur3qUOTmP3GCb/Wp7p7JyVn8Yeq17PEg=";
};
demo = ''
unar -no-directory ${CCDEMO1_ZIP} DEMO.MIX DEMOL.MIX SOUNDS.MIX SPEECH.MIX
unar -no-directory ${CCDEMO2_ZIP} DEMOM.MIX
mkdir -p $out
mv DEMO.MIX $out/demo.mix
mv DEMOL.MIX $out/demol.mix
mv SOUNDS.MIX $out/sounds.mix
mv SPEECH.MIX $out/speech.mix
mv DEMOM.MIX $out/demom.mix
'';
in
# see https://github.com/TheAssemblyArmada/Vanilla-Conquer/wiki/Installing-VanillaTD
{
inherit demo;
}
else if appName == "vanillara" then
let
RA95DEMO_ZIP = fetchurl {
url = "https://archive.org/download/CommandConquerRedAlert_1020/ra95demo.zip";
hash = "sha256-jEi9tTUj6k01OnkU2SNM5OPm9YMu60eztrAFhT6HSNI=";
};
demo = ''
unar -no-directory ${RA95DEMO_ZIP} ra95demo/INSTALL/MAIN.MIX ra95demo/INSTALL/REDALERT.MIX
install -D ra95demo/INSTALL/REDALERT.MIX $out/redalert.mix
install -D ra95demo/INSTALL/MAIN.MIX $out/main.mix
'';
REDALERT_ALLIED_ISO = fetchurl {
url = "https://archive.org/download/cnc-red-alert/redalert_allied.iso";
hash = "sha256-Npx6hSTJetFlcb/Fi3UQEGuP0iLk9LIrRmAI7WgEtdw=";
};
REDALERT_SOVIETS_ISO = fetchurl {
url = "https://archive.org/download/cnc-red-alert/redalert_soviets.iso";
hash = "sha256-aJGr+w1BaGaLwX/pU0lMmu6Cgn9pZ2D/aVafBdtds2Q=";
};
retail-allied = ''
unar -output-directory allied -no-directory ${REDALERT_ALLIED_ISO} MAIN.MIX INSTALL/REDALERT.MIX
mkdir -p $out/allied/
mv allied/INSTALL/REDALERT.MIX $out/redalert.mix
mv allied/MAIN.MIX $out/allied/main.mix
'';
retail-soviet = ''
unar -output-directory soviet -no-directory ${REDALERT_SOVIETS_ISO} MAIN.MIX INSTALL/REDALERT.MIX
mkdir -p $out/soviet/
mv soviet/INSTALL/REDALERT.MIX $out/redalert.mix
mv soviet/MAIN.MIX $out/soviet/main.mix
'';
retail = ''
unar -output-directory allied -no-directory ${REDALERT_ALLIED_ISO} MAIN.MIX INSTALL/REDALERT.MIX
unar -output-directory soviet -no-directory ${REDALERT_SOVIETS_ISO} MAIN.MIX
mkdir -p $out/allied/ $out/soviet/
mv allied/INSTALL/REDALERT.MIX $out/redalert.mix
mv allied/MAIN.MIX $out/allied/main.mix
mv soviet/MAIN.MIX $out/soviet/main.mix
'';
in
# see https://github.com/TheAssemblyArmada/Vanilla-Conquer/wiki/Installing-VanillaRA
{
inherit
demo
retail-allied
retail-soviet
retail
;
}
else
{ }
)