summaryrefslogtreecommitdiff
path: root/lib/mkMultiMCPack.nix
diff options
context:
space:
mode:
Diffstat (limited to 'lib/mkMultiMCPack.nix')
-rw-r--r--lib/mkMultiMCPack.nix55
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)