crate2nix
rebuild only changed crates in CI with crate2nix and nix (by nix-community)
cargo2nix
Granular caching, development shell, Nix & Rust integration (by cargo2nix)
Our great sponsors
crate2nix | cargo2nix | |
---|---|---|
10 | 12 | |
311 | 310 | |
3.2% | 9.0% | |
9.4 | 7.0 | |
9 days ago | 7 days ago | |
Nix | Nix | |
Apache License 2.0 | MIT License |
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
crate2nix
Posts with mentions or reviews of crate2nix.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2023-06-02.
- Transitioning to Rust as a company
-
Nix shell related questions (for rust)
If you want to iterate with nix instead of cargo, crate2nix and cargo2nix provides more caching and more fine control over your dependencies. I haven't used these two so you would have to decide for yourself. You may also want to try out nocargo for something more experimental.
-
Introducing Crane: Composable and Cacheable Builds with Cargo and Nix
I'm yet to try it out, but from the blog post, the README and the source it appears that Crane builds all dependencies in one derivation (separately from the main crate). This means that if a dependency gets added, removed or changed, all dependencies of a crate will be rebuilt. This is in contrast with https://github.com/kolloch/crate2nix, which does build every dependency in a separate package, thus you don't need to rebuild other dependencies if you only change a small part of the tree.
-
Nixery – Docker images on the fly with Nix
Yes, you will have to package it if it's not already in nixpkgs.
The good news is once you learn how, it's basically trivial with crate2nix[0], which can autogenerate nix derivations from rust crates
-
How do you install packages not in Nixpkgs?
As for your two applications, they're both written in Rust, and I like https://github.com/kolloch/crate2nix as a way to package Rust crates with Nix. BTW, wezterm is already in nixpkgs!
-
Nix-ifying a Rust project
I like the way crate2nix works. I have made a flake template for it here. Sometimes it requires a couple of overrides to fix some misbehaving crates (see https://github.com/balsoft/simple-osd-daemons/blob/master/flake.nix#L29 for an example of such overrides), but otherwise it's fantastic. It doesn't require any hash nonsense, it downloads and builds all the crates separately (unlike naersk or other solutions) so you get all the benefits of Nix (reproducibility and proper caching).
-
How to do a full, reproducible archive of a Rust project?
Crate2nix might help: https://github.com/kolloch/crate2nix
cargo2nix
Posts with mentions or reviews of cargo2nix.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2023-06-02.
- Transitioning to Rust as a company
-
Way to get NVM working in CI/CD systems
- Rust projects are built with https://github.com/cargo2nix/cargo2nix. We chose cargo2nix to get incremental builds, meaning that dependency builds can be shared between our Rust projects and that not all dependencies have to be rebuilt when adding/updating/removing dependencies from a project.
-
[Blog post]: Scaling Rust builds with Bazel
We used cargo2nix to generate top-level Cargo.nix file that we committed to the repository (we didn't allow generating nix files on CI for security and reproducibility reasons).
-
Nix & Rust - cargo2nix 0.11.0 released
For finished binaries, you don't have to provide a Nix build because it can also be done externally as shown in the RustAnalyzer example. The flake is including RustAnalyzer source and RustAnalyzer has no idea and doesn't have to care.
There's a cross compile example that works for at least 3-4 targets on Linux and uses proc macros. Pretty sure the situation you described is no more complex.
-
Rust nix develop & nix build - cargo2nix 0.11.0 released
Release notes. Last announced release was 0.9.0.
- Nix and NixOS Get So Close to Perfect
-
How Go Mitigates Supply Chain Attacks
Nix already solves this problem and can handle dependencies and building projects across a range of languages (including Rust via Cargo2nix) and reproducible machine configuration.
- From nix-shell to nix develop
-
Is using crates more safe than using npm?
Building with nix, for instance with cargo2nix (https://github.com/cargo2nix/cargo2nix), could be safer if sandboxing is enabled.
What are some alternatives?
When comparing crate2nix and cargo2nix you can also consider the following projects:
naersk - Build Rust projects in Nix - no configuration, no code generation, no IFD, sandbox friendly. [maintainer=@AxelSilverdew]
rust-nix-template - Rust project template with Nix (Flakes) and VSCode support
rust-overlay - Pure and reproducible nix overlay of binary distributed rust toolchains
Cargo - The Rust package manager
watt - Runtime for executing procedural macros as WebAssembly
crates.io-index - Registry index for crates.io
nix-templates - Nix Flake templates for various languages
cap-std - Capability-oriented version of the Rust standard library