stash/nix/package.nix
2025-08-14 19:24:07 +04:00

63 lines
1.5 KiB
Nix

{
lib,
craneLib,
runCommandNoCCLocal,
}: let
inherit (craneLib) buildDepsOnly buildPackage mkDummySrc;
pname = "stash";
version = (builtins.fromTOML (builtins.readFile ../Cargo.toml)).package.version;
src = let
fs = lib.fileset;
s = ../.;
in
fs.toSource {
root = s;
fileset = fs.unions [
(fs.fileFilter (file: builtins.any file.hasExt ["rs"]) (s + /src))
(s + /Cargo.lock)
(s + /Cargo.toml)
];
};
# basically avoid crane rebuilding everything
# when the package version changes
replacedSrc = let
rgxIn = ''
name = "${pname}"
version = "${version}"
'';
rgxOut = ''
name = "${pname}"
version = "0.9.6"
'';
in
runCommandNoCCLocal "bakaSrc" {} ''
cp -r ${src} $out
substituteInPlace $out/Cargo.toml \
--replace-fail '${rgxIn}' '${rgxOut}'
substituteInPlace $out/Cargo.lock \
--replace-fail '${rgxIn}' '${rgxOut}'
'';
cargoArtifacts = buildDepsOnly {
name = "${pname}-deps";
strictDeps = true;
dummySrc = mkDummySrc {src = replacedSrc;};
};
in
buildPackage {
inherit cargoArtifacts pname src version;
strictDeps = true;
postInstall = ''
mkdir -p $out
install -Dm755 ${../vendor/stash.service} $out/share/stash.service
'';
meta = {
description = "Wayland clipboard manager with fast persistent history and multi-media support";
maintainers = [lib.maintainers.NotAShelf];
license = lib.licenses.mpl20;
mainProgram = "stash";
};
}