nix-community / crate2nix

rebuild only changed crates in CI with crate2nix and nix
https://nix-community.github.io/crate2nix/
Apache License 2.0
338 stars 82 forks source link

Add `additionalCrateHashes` to `generatedCargoNix` #283

Closed Ericson2314 closed 1 year ago

Ericson2314 commented 1 year ago

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.