This makes it easy to use a crate-hashes.json that is outside any source tree. By default it is the crate-hashes.json at the root of the source tree. Additional such files next to any Cargo.lock will also be used unconditionally.
Behind the scenes, the vendor support was already reworked to separate more opinionated gathering lockfiles and crate-hashes.json from the basic crate2nix-agnostic work of creating the vendor dir. This cleans up the code, and makes supporting the new feature easier too.
Finally, let me note one thing as future work. In https://github.com/NixOS/nixpkgs/pull/217084 I learned from @winterqt that Nixpkgs now has a importCargoLock. It would be very nice to drop the vendoring logic from tools.nix and use that instead, now that the crate2nix-specific bits have been pulled out as described above.
This makes it easy to use a
crate-hashes.json
that is outside any source tree. By default it is thecrate-hashes.json
at the root of the source tree. Additional such files next to anyCargo.lock
will also be used unconditionally.Behind the scenes, the vendor support was already reworked to separate more opinionated gathering lockfiles and
crate-hashes.json
from the basiccrate2nix
-agnostic work of creating the vendor dir. This cleans up the code, and makes supporting the new feature easier too.Finally, let me note one thing as future work. In https://github.com/NixOS/nixpkgs/pull/217084 I learned from @winterqt that Nixpkgs now has a
importCargoLock
. It would be very nice to drop the vendoring logic fromtools.nix
and use that instead, now that thecrate2nix
-specific bits have been pulled out as described above.