Files
sqlx-utils/default.nix
2025-08-11 12:50:01 +02:00

76 lines
1.6 KiB
Nix

{
pkgs,
crane,
}:
let
rustToolchain = pkgs.fenix.stable.withComponents [
"cargo"
"rustc"
"rustfmt"
"rust-std"
"rust-analyzer"
"clippy"
];
# more info on https://crane.dev/API.html
craneLib = (crane.mkLib pkgs).overrideToolchain rustToolchain;
cargoToml = builtins.fromTOML (builtins.readFile ./Cargo.toml);
craneArgs = {
pname = cargoToml.workspace.package.name or cargoToml.package.name;
version = cargoToml.workspace.package.version or cargoToml.package.version;
src = craneLib.cleanCargoSource ./.;
strictDeps = true;
cargoExtraArgs = "--locked --workspace";
# can add `nativeBuildInputs` or `buildInputs` here
env = {
# print backtrace on compilation failure
RUST_BACKTRACE = "1";
# treat warnings as errors
RUSTFLAGS = "-Dwarnings";
RUSTDOCFLAGS = "-Dwarnings";
};
};
cargoArtifacts = craneLib.buildDepsOnly craneArgs;
craneBuildArgs = craneArgs // {
inherit cargoArtifacts;
};
in
{
package = craneLib.buildPackage (
craneBuildArgs
// {
passthru = {
tests = {
test = craneLib.cargoTest craneBuildArgs;
doc = craneLib.cargoDoc craneBuildArgs;
clippy = craneLib.cargoClippy craneBuildArgs;
};
};
}
);
docs = craneLib.cargoDoc (
craneBuildArgs
// {
# used to disable `--no-deps`, which crane enables by default,
# so we include all packages in the resulting docs, to have fully-functional
# offline docs
cargoDocExtraArgs = "";
}
);
inherit rustToolchain cargoToml;
}