eh/nix/package.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";
};
})