Change:
Building this package twice does not produce the bit-by-bit identical result each time, making it harder to detect CI breaches. You can read more about this at https://reproducible- . nix-build '<nixpkgs' -A python3Packages.bootstrapped-pip --check --keep-failed You can use to analyze the differences in the output of the two builds. To view the build log of the build that produced the artifact in the binary cache: nix-store --read-log $(nix-instantiate '<nixpkgs' -A python3Packages.bootstrapped-pip) Tested on All single-character differences, swapping and . I cannot reproduce the problem with , so perhaps (like with ) we should simply wait until Python 3.11 is released and use that instead.
A later run () also has a different timestamp and checksum for vendored .exe files
was released Oct. 24, 2022 but it looks like we're still using 3.10 as the default .
Correct, following the update schedule () we can expect the update 'real soon now' :)

Discussion:
<del> { lib, stdenv, python, makeWrapper, unzip , pipInstallHook , setuptoolsBuildHook , wheel, pip, setuptools }: stdenv.mkDerivation rec { pname = "pip"; inherit (pip) version; name = "${python.libPrefix}-bootstrapped-${pname}-${version}"; srcs = [ wheel.src pip.src setuptools.src ]; sourceRoot = "."; dontUseSetuptoolsBuild = true; dontUsePipInstall = true; # Should be propagatedNativeBuildInputs propagatedBuildInputs = [ # Override to remove dependencies to prevent infinite recursion. (pipInstallHook.override{pip=null;}) (setuptoolsBuildHook.override{setuptools=null; wheel=null;}) ]; postPatch = '' mkdir -p $out/bin '' + (pip.postPatch or ""); # `pip` does not necessarily have a `postPatch` field. nativeBuildInputs = [ makeWrapper unzip ]; buildInputs = [ python ]; dontBuild = true; installPhase = lib.optionalString (!stdenv.hostPlatform.isWindows) '' export SETUPTOOLS_INSTALL_WINDOWS_SPECIFIC_FILES=0 '' + '' # Give folders a known name mv pip* pip mv setuptools* setuptools mv wheel* wheel # Set up PYTHONPATH: # - pip and setuptools need to be in PYTHONPATH to install setuptools, wheel, and pip. # - $out is where we are installing to and takes precedence, and is where wheel will end so we can install pip. export PYTHONPATH="$out/${python.sitePackages}:$(pwd)/pip/src:$(pwd)/setuptools:$(pwd)/setuptools/pkg_resources:$PYTHONPATH" echo "Building setuptools wheel..." pushd setuptools rm pyproject.toml ${python.pythonForBuild.interpreter} -m pip install --no-build-isolation --no-index --prefix=$out  --ignore-installed --no-dependencies --no-cache . popd echo "Building wheel wheel..." pushd wheel ${python.pythonForBuild.interpreter} -m pip install --no-build-isolation --no-index --prefix=$out  --ignore-installed --no-dependencies --no-cache . popd echo "Building pip wheel..." pushd pip rm pyproject.toml ${python.pythonForBuild.interpreter} -m pip install --no-build-isolation --no-index --prefix=$out  --ignore-installed --no-dependencies --no-cache . popd ''; meta = { description = "Version of pip used for bootstrapping"; license = lib.unique (pip.meta.license ++ setuptools.meta.license ++ wheel.meta.license); homepage = pip.meta.homepage; }; } </del>

}); }; <del> bootstrapped-pip = toPythonModule (callPackage ../development/python-modules/bootstrapped-pip { }); </del> setuptools = callPackage ../development/python-modules/setuptools { }; a2wsgi = callPackage ../development/python-modules/a2wsgi { };