eh/nix/package.nix
NotAShelf 502636ff69
Some checks failed
Rust / build (push) Has been cancelled
nix: fix
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I31625305400ea72112babe3202561ebe6a6a6964
2026-01-31 04:40:51 +03:00

65 lines
1.6 KiB
Nix

{
lib,
rustPlatform,
stdenv,
installShellFiles,
versionCheckHook,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "eh";
version = (lib.importTOML ../Cargo.toml).workspace.package.version;
src = let
fs = lib.fileset;
s = ../.;
in
fs.toSource {
root = s;
fileset = fs.unions (map (dir: (s + /${dir})) [
".cargo"
"crates"
"eh"
"Cargo.toml"
"Cargo.lock"
]);
};
# xtask doesn't support passing --targe
# but nix hooks expect the folder structure from when it's set
cargoLock.lockFile = "${finalAttrs.src}/Cargo.lock";
enableParallelBuilding = true;
# xtask doesn't support passing --target
# but nix hooks expect the folder structure from when it's set
env.CARGO_BUILD_TARGET = stdenv.hostPlatform.rust.cargoShortTarget;
nativeInstallCheckInputs = [versionCheckHook];
versionCheckProgram = "${placeholder "out"}/bin/${finalAttrs.meta.mainProgram}";
versionCheckProgramArg = "--version";
doInstallCheck = true;
strictDeps = true;
nativeBuildInputs = [installShellFiles];
postInstall = ''
# Install required files with the 'dist' task
cargo xtask multicall \
--bin-dir $out/bin \
--main-binary $out/bin/eh
# Generate shell completions and install them.
for shell in bash zsh fish; do
cargo xtask completions $shell
done
installShellCompletion completions/*
'';
meta = {
description = "Ergonomic Nix CLI helper";
maintainers = with lib.maintainers; [NotAShelf];
license = lib.licenses.mpl20;
mainProgram = "eh";
};
})