{
  lib,
  config,
}: let
  cfg = config.builders.basic;

  lib' = config.lib;

  inherit (config) foundation;
in {
  config.builders = {
    basic = {
      executable = "${foundation.stage2-bash}/bin/bash";

      build = package: let
        phases = package.phases;
        sorted = lib.dag.sort.topographic phases;

        script =
          lib.strings.concatMapSep "\n" (
            entry:
              if builtins.isFunction entry.value
              then entry.value package
              else entry.value
          )
          sorted.result;

        system = package.platform.build.double;
      in
        builtins.derivation (
          package.env
          // {
            inherit (package) name;
            inherit script system;

            passAsFile = ["script"];

            SHELL = cfg.executable;

            PATH = lib.paths.bin (
              (lib'.packages.dependencies.getPackages package.deps.build.host)
              ++ [
                foundation.stage2-bash
                foundation.stage2-coreutils
              ]
            );

            builder = cfg.executable;

            args = [
              "-e"
              (builtins.toFile "bash-builder.sh" ''
                export CONFIG_SHELL=$SHELL

                # Normalize the NIX_BUILD_CORES variable. The value might be 0, which
                # means that we're supposed to try and auto-detect the number of
                # available CPU cores at run-time.
                NIX_BUILD_CORES="''${NIX_BUILD_CORES:-1}"
                if ((NIX_BUILD_CORES <= 0)); then
                  guess=$(nproc 2>/dev/null || true)
                  ((NIX_BUILD_CORES = guess <= 0 ? 1 : guess))
                fi
                export NIX_BUILD_CORES

                bash -eux $scriptPath
              '')
            ];
          }
        );
    };
  };
}