|Jun 19, 2023
|Jun 9, 2023
|Jun 9, 2023
#161 in Cargo plugins
A cargo builder that uses the
buildRustCrate from the nix package manager.
This yields the following benefits:
- Sandbox builds: A malicious dependency in project
Acannot alter the filesystem or inject source code into libraries that will affect the build of another project
- Shared cache: If project
Ahas a dependency on some crate, let's say
tokio, with features
rt, then this builder will cache each dependency individually. So if project
tokiowith the same features and version, then the
tokiodependency will not be rebuild.
- Reproducible: Given the same version and targets, any project will build exactly the same on different machines.
cargo install cargo-nbuild
⚠️ The nix package manager needs to be installed on your system.
💡 You also need to enable the new nix command in the user specific configuration or system wide configuration.
From a Rust project run
This builder is still in early days and is missing features
- Choosing target: like with
cargo build --target ...
- Choosing workspace package: builds only work when inside the workspace member, and not when you are at the workspace root. Ie the
cargo build --package ...equavalent is missing.
- Remote builds: nix supports remote builds which are not currently possible
- Custom rust version: it should be possible to change the version of rustc used for the compiles
- ... other