I see the pyo3 crate constantly rebuilding
The pyo3 crate uses checks $PYO3_PYTHON for a path to the python binary it
should use during the build. If this environment variable is not set, pyo3
will look for whatever version of python is on the $PATH, which
unfortunately results in the crate being rebuilt when $PATH changes (i.e.
whenever the cargo artifacts are used in a derivation which may have different
build inputs).
The way to remedy this is to explicitly set PYO3_PYTHON to point to the
version of python that will be used by the derivation:
let
chosenPython = pkgs.python3;
in
craneLib.buildPackage {
env.PYO3_PYTHON = "${chosenPython}/bin/python";
nativeBuildInputs = [
chosenPython
];
# etc...
}