Skip to content

Commit

Permalink
Fix crane.nix: do not wrap non-binary derivations
Browse files Browse the repository at this point in the history
  • Loading branch information
yannham committed Jan 13, 2025
1 parent c0f3f7b commit 10b1bda
Showing 1 changed file with 23 additions and 6 deletions.
29 changes: 23 additions & 6 deletions nix/crane.nix
Original file line number Diff line number Diff line change
Expand Up @@ -32,33 +32,50 @@ let
cargoTestCommand = "cargo test --profile release";
});

# Crane buildPackage arguments for every crate
crates = {
# Crane buildPackage arguments for every crate. The whole set takes an
# additioinal argument indicating if we're producing a binary or not (the
# other possibilities being documentation, derivation that runs clippy, etc.).
# Otherwise, the binary-specific gymnastics such as `makeWrapper` errors out
# on non-binary derivatives.
crates = { binary ? true }: {
genealogos = (common-crane-args // {
cargoExtraArgs = "-p genealogos";
});

genealogos-cli = (common-crane-args // {
pname = "genealogos-cli";
cargoExtraArgs = "-p genealogos-cli";
}
// pkgs.lib.attrsets.optionalAttrs binary {
passthru.exePath = "/bin/genealogos";
nativeBuildInputs = common-crane-args.nativeBuildInputs ++ [ pkgs.makeWrapper ];
preFixup = ''
wrapProgram $out/bin/genealogos \
--prefix PATH : ${pkgs.lib.makeBinPath [ pkgs.nix ]}
'';
});

genealogos-api = (common-crane-args // {
pname = "genealogos-api";
cargoExtraArgs = "-p genealogos-api";
} // pkgs.lib.attrsets.optionalAttrs binary {
nativeBuildInputs = common-crane-args.nativeBuildInputs ++ [ pkgs.makeWrapper ];
preFixup = ''
wrapProgram $out/bin/genealogos-api \
--prefix PATH : ${pkgs.lib.makeBinPath [ pkgs.nix ]}
'';
});
};

# The collection of genealogos crates to be used when producing binary
# packages.
binaryCrates = crates { binary = true; };
# The collection of genealogos crates to be used when deriving non binary
# byproducts, such as documentation or checks.
nonBinaryCrates = crates { binary = false; };

rust-packages =
builtins.mapAttrs (_: crane-lib.buildPackage) crates;
builtins.mapAttrs (_: crane-lib.buildPackage) binaryCrates;
in
rec {
checks =
Expand All @@ -69,11 +86,11 @@ rec {
(_: args: crane-lib.cargoClippy (args // {
cargoClippyExtraArgs = "--all-targets -- --deny warnings";
}))
crates
nonBinaryCrates
# Doc
// builtins.mapAttrs (_: crane-lib.cargoDoc) crates
// builtins.mapAttrs (_: crane-lib.cargoDoc) nonBinaryCrates
# fmt
// builtins.mapAttrs (_: crane-lib.cargoFmt) crates;
// builtins.mapAttrs (_: crane-lib.cargoFmt) nonBinaryCrates;

packages =
rust-packages // {
Expand Down

0 comments on commit 10b1bda

Please sign in to comment.