summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorseth <[email protected]>2023-09-19 00:31:11 -0400
committerseth <[email protected]>2023-09-19 01:26:05 -0400
commit92ef4547a654cbad32ee2f6488bd816717cbfe96 (patch)
tree17b5061e496d4e519eb4b46ce7194141c7951c89 /lib
parentf924887c4b646aa2ce762039070f8741ab933221 (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.nix1
-rw-r--r--lib/mkMultiMCPack.nix55
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)