{
  lib,
  fetchurl,
  buildPlatform,
  hostPlatform,
  bash,
  gcc,
  binutils,
  findutils,
  gnumake,
  gnutar,
  gzip,
}:
let
  pname = "bzip2-static";
  version = "1.0.8";

  src = fetchurl {
    url = "https://sourceware.org/pub/bzip2/bzip2-${version}.tar.gz";
    sha256 = "0s92986cv0p692icqlw1j42y9nld8zd83qwhzbqd61p1dqbh6nmb";
  };

  binutilsTargetPrefix = lib.optionalString (
    hostPlatform.config != buildPlatform.config
  ) "${hostPlatform.config}-";
in
bash.runCommand "${pname}-${version}"
  {
    inherit pname version;

    nativeBuildInputs = [
      gcc
      binutils
      findutils
      gnumake
      gnutar
      gzip
    ];

    passthru.tests = {
      get-version =
        result:
        bash.runCommand "${pname}-get-version-${version}" { } ''
          ${result}/bin/bzip2 --help
          mkdir $out
        '';

      compress =
        result:
        bash.runCommand "${pname}-compress-${version}" { } ''
          printf 'bootstrap\n' > input
          ${result}/bin/bzip2 -k input
          ${result}/bin/bunzip2 -c input.bz2 > bunzip2-output
          read -r bunzip2Output < bunzip2-output
          test "$bunzip2Output" = bootstrap
          ${result}/bin/bzcat input.bz2 > bzcat-output
          read -r bzcatOutput < bzcat-output
          test "$bzcatOutput" = bootstrap
          mkdir $out
        '';
    };

    meta = {
      description = "High-quality data compression program";
      homepage = "https://www.sourceware.org/bzip2";
      license = lib.licenses.bsdOriginal;
      platforms = lib.platforms.unix;
      teams = [ lib.teams.minimal-bootstrap ];
    };
  }
  ''
    # Unpack
    tar xf ${src}
    cd bzip2-${version}

    # Build
    make \
      -j $NIX_BUILD_CORES \
      bzip2 \
      CC=${hostPlatform.config}-gcc \
      AR=${binutilsTargetPrefix}ar \
      RANLIB=${binutilsTargetPrefix}ranlib

    # Install
    mkdir -p $out/bin
    cp bzip2 $out/bin/bzip2
    ln -s bzip2 $out/bin/bunzip2
    ln -s bzip2 $out/bin/bzcat

    # Strip
    # Ignore failures, because strip may fail on non-elf files.
    ${binutilsTargetPrefix}strip --strip-debug $out/bin/bzip2 || true
  ''
