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.
80 lines
1.8 KiB
Nix
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
|
|
];
|
|
};
|
|
|
|
}
|