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.
79 lines
1.7 KiB
Nix
79 lines
1.7 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,
|
|
...
|
|
}@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 = [ python3 ];
|
|
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 = [
|
|
(python3.withPackages (ps: [ ps.asyncio-dgram ]))
|
|
mosh
|
|
openssh
|
|
];
|
|
};
|
|
mosh-dualstack-proxy = mkFcScriptDrv {
|
|
pname = "mosh-dualstack-proxy";
|
|
propagatedBuildInputs = [
|
|
python3
|
|
mosh
|
|
openssh
|
|
];
|
|
};
|
|
|
|
}
|