summaryrefslogtreecommitdiff
path: root/lib/mkMultiMCPack.nix
blob: 0c28d6cf53ab42143cd4c723ea0949ce0fef850a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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)