mirror of
https://github.com/NotAShelf/stash.git
synced 2026-04-12 14:07:42 +00:00
63 lines
1.5 KiB
Nix
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";
|
|
};
|
|
}
|