diff options
| author | seth <[email protected]> | 2023-09-19 00:31:11 -0400 |
|---|---|---|
| committer | seth <[email protected]> | 2023-09-19 01:26:05 -0400 |
| commit | 92ef4547a654cbad32ee2f6488bd816717cbfe96 (patch) | |
| tree | 17b5061e496d4e519eb4b46ce7194141c7951c89 /lib | |
| parent | f924887c4b646aa2ce762039070f8741ab933221 (diff) | |
feat!: (re)introduce mkMultiMCPackrewrite
this is another **breaking** change which reimplements `mkMultiMCPack`
with `fetchPackwizModpack` and does not bundle the mods with the base
zip
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/default.nix | 1 | ||||
| -rw-r--r-- | lib/mkMultiMCPack.nix | 55 |
2 files changed, 56 insertions, 0 deletions
diff --git a/lib/default.nix b/lib/default.nix index f69ade0..ac879ce 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,5 +1,6 @@ final: prev: { fetchPackwizModpack = final.callPackage ./fetchPackwizModpack.nix {}; + mkMultiMCPack = final.callPackage ./mkMultiMCPack.nix {}; packwiz-installer-bootstrap = prev.callPackage ./packwiz-installer-bootstrap.nix {}; packwiz-installer = prev.callPackage ./packwiz-installer.nix {}; 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) |
