ccc838126d
format with nixpkgs-fmt |
||
---|---|---|
.circleci | ||
builtins | ||
nix | ||
test | ||
build.nix | ||
config.nix | ||
default.nix | ||
lib.nix | ||
README.md | ||
test.nix |
Naersk
Nix support for building cargo crates.
Install
Use niv:
$ niv add nmattia/naersk
And then
let
pkgs = import <nixpkgs> {};
sources = import ./nix/sources.nix;
naersk = pkgs.callPackage sources.naersk {};
in naersk.buildPackage ./path/to/rust
NOTE: ./path/to/rust/
should contain a Cargo.lock
.
The buildPackage
function also accepts an attribute set. For more
information, consult config.nix
.
Comparison
There are two other notable Rust frameworks in Nix: rustPlatform
and
carnix
.
naersk
uses cargo
directly, as opposed to carnix
which emulates cargo
's
build logic. Moreover naersk
sources build information directly from the
project's Cargo.lock
which makes any code generation unnecessary.
For the same reason, naersk
does not need anything like rustPlatform
's
cargoSha256
. All crates are downloaded using the sha256
checksums provided
in the project's Cargo.lock
. Because cargo
doesn't register checksums for
git
dependencies, naersk
does not support git
dependencies.
Finally naersk
supports incremental builds by first performing a
dependency-only build, and then a build that depends on the top-level crate's
code and configuration.