created_at2023-06-09 08:56:39.185513
updated_at2023-06-19 16:41:31.360498
descriptionA Rust builder that uses the nix package manager
Jocelyn Boullier (Kazy)



A cargo builder that uses the [`buildRustCrate`][buildRustCrate] from the nix package manager. This yields the following benefits: - **Sandbox builds**: A malicious dependency in project `A` cannot alter the filesystem or inject source code into libraries that will affect the build of another project `B`. - **Shared cache**: If project `A` has a dependency on some crate, let's say `tokio`, with features `macros` and `rt`, then this builder will cache each dependency individually. So if project `B` also uses `tokio` with the same features and version, then the `tokio` dependency will not be rebuild. - **Reproducible**: Given the same version and targets, any project will build exactly the same on different machines. ## Install ``` shell cargo install cargo-nbuild ``` > :warning: The nix package manager needs to be [installed]( on your system. > :bulb: You also need to enable the new [nix command]( in the user specific configuration or system wide configuration. ## Usage From a Rust project run ``` shell cargo nbuild ``` ## Missing 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 `cargo build` options [buildRustCrate]:
Commit count: 4

cargo fmt