Enhance flake with more robust setup
This commit is contained in:
parent
41f79a992e
commit
de00301c39
56
flake.nix
56
flake.nix
@ -67,39 +67,43 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
my-crate = craneLib.buildPackage (
|
# Build *just* the cargo dependencies, so we can reuse
|
||||||
|
# all of that work (e.g. via cachix) when running in CI
|
||||||
|
cargoArtifacts = craneLib.buildDepsOnly (commonArgs);
|
||||||
|
|
||||||
|
# Run clippy (and deny all warnings) on the crate source,
|
||||||
|
# reusing the dependency artifacts (e.g. from build scripts or
|
||||||
|
# proc-macros) from above.
|
||||||
|
#
|
||||||
|
# Note that this is done as a separate derivation so it
|
||||||
|
# does not impact building just the crate by itself.
|
||||||
|
myCrateClippy = craneLib.cargoClippy (
|
||||||
commonArgs
|
commonArgs
|
||||||
// {
|
// {
|
||||||
cargoArtifacts = craneLib.buildDepsOnly commonArgs;
|
# Again we apply some extra arguments only to this derivation
|
||||||
|
# and not every where else. In this case we add some clippy flags
|
||||||
# Additional environment variables or build phases/hooks can be set
|
inherit cargoArtifacts;
|
||||||
# here *without* rebuilding all dependency crates
|
cargoClippyExtraArgs = "--all-targets -- --deny warnings";
|
||||||
# MY_CUSTOM_VAR = "some value";
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
# Build the actual crate itself, reusing the dependency
|
||||||
|
# artifacts from above.
|
||||||
|
myCrate = craneLib.buildPackage (commonArgs // { inherit cargoArtifacts; });
|
||||||
|
|
||||||
|
# Also run the crate tests under cargo-tarpaulin so that we can keep
|
||||||
|
# track of code coverage
|
||||||
|
myCrateCoverage = craneLib.cargoTarpaulin (commonArgs // { inherit cargoArtifacts; });
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
packages.default = myCrate;
|
||||||
checks = {
|
checks = {
|
||||||
inherit my-crate;
|
inherit
|
||||||
};
|
# Build the crate as part of `nix flake check` for convenience
|
||||||
|
myCrate
|
||||||
packages.default = my-crate;
|
myCrateClippy
|
||||||
|
myCrateCoverage
|
||||||
apps.default = flake-utils.lib.mkApp { drv = my-crate; };
|
;
|
||||||
|
|
||||||
devShells.default = craneLib.devShell {
|
|
||||||
# Inherit inputs from checks.
|
|
||||||
checks = self.checks.${system};
|
|
||||||
|
|
||||||
# Additional dev-shell environment variables can be set directly
|
|
||||||
# MY_CUSTOM_DEVELOPMENT_VAR = "something else";
|
|
||||||
|
|
||||||
# Extra inputs can be added here; cargo and rustc are provided by default.
|
|
||||||
packages = with pkgs; [
|
|
||||||
# rustPackages.clippy
|
|
||||||
# rustfmt
|
|
||||||
# pre-commit
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user