{pkgs', ...}: let

  bashFktScript = import ./bash-fkt.nix {
    inherit pkgs';
  };

  packageData = builtins.fromJSON (builtins.readFile ../../package.json);
  version = packageData.version;
  lib = pkgs'.lib;
  root = ../..;
  source = ../../source;
  test = ../../test;

  releasedPackageJson = {
    description = packageData.description;
    name = packageData.name;
    version = version;
    dependencies = packageData.dependencies;
    keywords = packageData.keywords;
    license = packageData.license;
    repository = packageData.repository;
    author = packageData.author;
    homepage = packageData.homepage;
    type = "module";
    main = "source/monster.mjs";
    module = "source/monster.mjs";
  };
in
  pkgs'.writeShellScriptBin "build" ''
  
    set -e
  
    source ${pkgs'.common}/bin/common
    ${bashFktScript}

    export PATH=${lib.makeBinPath [pkgs'.gzip pkgs'.gnutar]}

    export HOME=$NIX_BUILD_TOP # Some packages need a writable HOME

    if ! ${pkgs'.rsync}/bin/rsync -a --exclude-from="${root}/.gitignore" "${source}/." "./source/"
    then
      echo_fail "Failed to copy source files. Exiting."
      exit 1
    fi

    if ! ${pkgs'.rsync}/bin/rsync -a --exclude-from="${root}/.gitignore" "${test}/." "./test/"
    then
      echo_fail "Failed to copy test files. Exiting."
      exit 1
    fi

    if ! ${pkgs'.coreutils}/bin/cp ${root}/README.md "./"
    then
      echo_fail "Failed to copy README.md. Exiting."
      exit 1
    fi

    if ! ${pkgs'.coreutils}/bin/cp ${root}/LICENSE "./"
    then
      echo_fail "Failed to copy LICENSE. Exiting."
      exit 1
    fi

    if ! ${pkgs'.coreutils}/bin/cp ${root}/CHANGELOG.md "./"
    then
        echo_fail "Failed to copy CHANGELOG.md. Exiting."
        exit 1
    fi
    
    if ! ${pkgs'.coreutils}/bin/cp ${root}/.npmignore "./"
    then
        echo_fail "Failed to copy .gitignore Exiting."
        exit 1
    fi

    if ! echo '${builtins.toJSON releasedPackageJson}' > package.json
    then
      echo_fail "Failed to write package.json. Exiting."
      exit 1
    fi
    
    ${pkgs'.coreutils}/bin/mkdir -p $out

    if ! ${pkgs'.nodejs_20}/bin/npm pack --pack-destination $out/ ; then
      echo_fail "Failed to create tarball. Exiting."
      exit 1
    fi    
    
    echo_ok "Tarball created successfully."
  ''