# Regenerate nix/Cargo.nix after Cargo.lock changes: nix run .#cargo-nix
{
lib,
callPackage,
rustc,
cargo,
}:
callPackage ./Cargo.nix {
buildRustCrateForPkgs = pkgs:
pkgs.buildRustCrate.override {
inherit rustc cargo;
defaultCrateOverrides =
pkgs.defaultCrateOverrides
# crate2nix doesn't read cargo profiles, so the binaries get [profile.release]'s lto here
// lib.genAttrs ["bobbin" "knot-migrate" "knot-server" "knotmirror" "shuttle" "tranquil-gate"] (_: _: {
extraRustcOpts = ["-C" "lto=fat"];
})
// {
# crate2nix builds each crate from its own directory, so build scripts
# cannot reach the workspace-root lexicons/ dir they default to.
lexicons = _: {
TANGLED_LEXICONS_DIR = ../lexicons;
};
knot-lexicons = _: {
TANGLED_LEXICONS_DIR = ../lexicons;
};
prost-protovalidate-types = _: {
nativeBuildInputs = [pkgs.buildPackages.protobuf];
};
};
};
}