49 lines
1.3 KiB
Nix
49 lines
1.3 KiB
Nix
{
|
|
lib,
|
|
rustPlatform,
|
|
stdenv,
|
|
}:
|
|
rustPlatform.buildRustPackage (finalAttrs: {
|
|
pname = "eh";
|
|
version = (builtins.fromTOML (builtins.readFile ../Cargo.toml)).workspace.package.version;
|
|
|
|
src = let
|
|
fs = lib.fileset;
|
|
s = ../.;
|
|
in
|
|
fs.toSource {
|
|
root = s;
|
|
fileset = fs.unions (map (dir: (s + /${dir})) [
|
|
".cargo"
|
|
"eh"
|
|
"xtask"
|
|
"Cargo.toml"
|
|
"Cargo.lock"
|
|
]);
|
|
};
|
|
|
|
# xtask doesn't support passing --targe
|
|
# but nix hooks expect the folder structure from when it's set
|
|
env.CARGO_BUILD_TARGET = stdenv.hostPlatform.rust.cargoShortTarget;
|
|
cargoLock.lockFile = "${finalAttrs.src}/Cargo.lock";
|
|
enableParallelBuilding = true;
|
|
|
|
postInstall = ''
|
|
# Install required files with the 'dist' task
|
|
$out/bin/xtask multicall \
|
|
--bin-dir $out/bin \
|
|
--main-binary $out/bin/eh
|
|
|
|
# The xtask output has been built as a part of the build phase. If
|
|
# we don't remove it, it'll be linked in $out/bin alongside the actual
|
|
# binary and populate $PATH with a dedicated 'xtask' command. Remove.
|
|
rm -rf $out/bin/xtask
|
|
'';
|
|
|
|
meta = {
|
|
description = "Ergonomic Nix CLI helper";
|
|
maintainers = with lib.licenses; [NotAShelf];
|
|
license = lib.licenses.mpl20;
|
|
mainProgram = "eh";
|
|
};
|
|
})
|