{
  lib,
  runCommand,
  nix,
  tarballs,
}:

runCommand "installer-script"
  {
    buildInputs = [ nix ];
  }
  ''
    mkdir -p $out/nix-support

    # Converts /nix/store/50p3qk8k...-nix-2.4pre20201102_550e11f/bin/nix to 50p3qk8k.../bin/nix.
    tarballPath() {
      # Remove the store prefix
      local path=''${1#${builtins.storeDir}/}
      # Get the path relative to the derivation root
      local rest=''${path#*/}
      # Get the derivation hash
      local drvHash=''${path%%-*}
      echo "$drvHash/$rest"
    }

    substitute ${./install.in} $out/install \
      ${
        lib.concatMapStrings (
          tarball:
          let
            inherit (tarball.stdenv.hostPlatform) system;
          in
          ''
            \
                   --replace '@tarballHash_${system}@' $(nix --experimental-features nix-command hash-file --base16 --type sha256 ${tarball}/*.tar.xz) \
                   --replace '@tarballPath_${system}@' $(tarballPath ${tarball}/*.tar.xz) \
          ''
        ) tarballs
      } --replace '@nixVersion@' ${nix.version}

    echo "file installer $out/install" >> $out/nix-support/hydra-build-products
  ''
