21 releases
| new 0.15.0 | Jan 28, 2026 |
|---|---|
| 0.14.1 | Jun 30, 2024 |
| 0.14.0 | Apr 11, 2024 |
| 0.13.0 | Jan 7, 2024 |
| 0.7.0-alpha.4 | Nov 30, 2019 |
#204 in Unix APIs
160KB
4K
SLoC
crate2nix
crate2nix generates Nix build files for
Rust/Cargo projects,
building each crate individually for precise, incremental rebuilds.
- Incremental CI builds -- only rebuild the crates that actually changed.
- Full Nix integration -- remote builds, binary caches, Docker images, NixOS modules.
- Local dev unchanged -- keep using
cargoandrust-analyzeras usual.
Quick start
Without installing
nix run nixpkgs#crate2nix -- generate
nix build -f Cargo.nix rootCrate.build
With a flake template
nix flake init --template github:nix-community/crate2nix
Installing
# From nixpkgs
nix profile install nixpkgs#crate2nix
# Latest development version
nix profile install github:nix-community/crate2nix
Then, inside your project:
crate2nix generate # creates Cargo.nix
nix build -f Cargo.nix rootCrate.build
How it works
crate2nix reads Cargo.toml and Cargo.lock, resolves the full dependency
tree via cargo metadata, prefetches source hashes, and renders a Cargo.nix
file through Tera templates. The generated file contains one Nix derivation per
crate, so Nix rebuilds only what changed.
Two generation strategies are supported:
| Strategy | Pros | Cons |
|---|---|---|
Manual (crate2nix generate) |
No IFD, full build parallelism | Must regenerate when deps change |
| Auto (Import From Derivation) | Always in sync with Cargo.lock |
May reduce parallelism |
Nix API
tools.nix exposes helpers for use in your own Nix expressions:
let
crate2nix = builtins.fetchTarball "https://github.com/nix-community/crate2nix/tarball/master";
tools = import "${crate2nix}/tools.nix" { inherit pkgs; };
generated = tools.generatedCargoNix {
name = "my-project";
src = ./.;
};
project = pkgs.callPackage "${generated}/default.nix" {};
in
project.rootCrate.build
Or the shorthand appliedCargoNix which combines generation and import.
Documentation
Full documentation is at https://nix-community.github.io/crate2nix/, covering:
- Installation options
- Generation strategies
- Building binaries
- Feature selection
- Crate overrides
- Known restrictions
- Changelog
Contributing
Contributions are welcome! See the contributing guide for details.
License
Apache-2.0
Dependencies
~12–17MB
~295K SLoC