diff options
Diffstat (limited to 'lib/mkMultiMCPack.nix')
| -rw-r--r-- | lib/mkMultiMCPack.nix | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/lib/mkMultiMCPack.nix b/lib/mkMultiMCPack.nix new file mode 100644 index 0000000..0c28d6c --- /dev/null +++ b/lib/mkMultiMCPack.nix @@ -0,0 +1,55 @@ +{ + lib, + stdenvNoCC, + zip, + strip-nondeterminism, + packwiz-installer-bootstrap, +}: { + pname ? null, + version ? "", + src ? null, + extraFiles ? {}, + instanceCfg, + ... +} @ args: +stdenvNoCC.mkDerivation (finalAttrs: + { + pname = src.pname or pname; + version = src.version or version; + + dontUnpack = true; + dontConfig = true; + dontBuild = true; + + nativeBuildInputs = [zip]; + + installPhase = let + modpackFiles = + { + "packwiz-installer-bootstrap.jar" = packwiz-installer-bootstrap; + "instance.cfg" = instanceCfg; + } + // extraFiles; + in + '' + runHook preInstall + + mkdir -p $out + tmp="$(mktemp -d)" + '' + + (lib.concatLines ( + lib.mapAttrsToList + (name: file: '' + mkdir -p "$tmp"/"$(dirname ${name})" + cp -as ${file} "$tmp"/${name} + '') + modpackFiles + )) + + '' + cd "$tmp" + zip -r $out/${finalAttrs.pname}-${finalAttrs.version}.zip {*,.*} + + ${lib.getExe strip-nondeterminism} $out/${finalAttrs.pname}-${finalAttrs.version}.zip + ''; + } + // args) |
