nixconfigs/packages/fc-scripts.nix
Trolli Schmittlauch a87738a2ff fc-scripts: more fine-grained packaging
It makes sense to put each individual script into its own derivation, as
some of the scripts require certain other dependencies that others
don't.
2026-02-27 23:45:05 +01:00

80 lines
1.8 KiB
Nix

{
lib,
fetchFromGitHub,
python3,
stdenvNoCC,
makeWrapper,
git,
openssh,
mosh,
}:
let
src = fetchFromGitHub {
owner = "flyingcircusio";
repo = "scripts";
rev = "887f066006829fc3ee44b3cfbe748c578ea2e7c1";
hash = "sha256-mrL/dULb0NKw8cH9ferzfDdRjhWANrWQg/u7FNCtzWw=";
};
version = "20260202";
mkFcScriptDrv =
{
pname,
propagatedBuildInputs,
python ? python3,
...
}@args:
stdenvNoCC.mkDerivation (finalAttrs: {
inherit (args)
pname
propagatedBuildInputs
;
inherit src version; # not passed via function args, but can be overridden later via overrideAttrs
dontBuild = true;
dontConfigure = true;
buildInputs = [ python ]; # the python interpreter utilised by patchShebangs
nativeBuildInputs = [ makeWrapper ];
installPhase = ''
runHook preInstall
mkdir -p $out/bin
install -m 0755 ${pname}* $out/bin/${pname}
''
+ lib.optionalString (finalAttrs.propagatedBuildInputs != [ ]) ''
wrapProgram $out/bin/${pname} --prefix PATH : \
${lib.makeBinPath finalAttrs.propagatedBuildInputs}
''
+ "runHook postInstall";
meta.mainProgram = pname;
});
in
{
git-tree-sync = mkFcScriptDrv {
pname = "git-tree-sync";
propagatedBuildInputs = [
git
openssh
];
};
ssh-multi-proxy = mkFcScriptDrv {
pname = "ssh-multi-proxy";
propagatedBuildInputs = [ openssh ];
};
mosh-tunnel = mkFcScriptDrv {
pname = "mosh-tunnel";
propagatedBuildInputs = [
mosh
openssh
];
python = python3.withPackages (ps: [ ps.asyncio-dgram ]);
};
mosh-dualstack-proxy = mkFcScriptDrv {
pname = "mosh-dualstack-proxy";
propagatedBuildInputs = [
python3
mosh
openssh
];
};
}