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.
This commit is contained in:
Trolli Schmittlauch 2026-02-27 23:24:56 +01:00
parent 4b11a0c633
commit 5a0ca84534
2 changed files with 71 additions and 13 deletions

View file

@ -85,8 +85,14 @@ let
nix-output-monitor # putting this here as a plain `nix` alternative
fc-scripts # this might turn out to be useful even in non-work environments?
]
++ (with fc-scripts; [
git-tree-sync
ssh-multi-proxy
mosh-tunnel
mosh-dualstack-proxy # this might turn out to be useful even in non-work environments?
])
++ lib.optionals pkgs.stdenv.isLinux [
xclip
smbnetfs # for FUSE smb mounting

View file

@ -1,27 +1,79 @@
{
lib,
fetchFromGitHub,
runCommand,
python3,
stdenvNoCC,
makeWrapper,
git,
openssh,
mosh,
}:
stdenvNoCC.mkDerivation {
pname = "fc-scripts";
version = "20260202";
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 ];
buildInputs = [ python3 ];
dontBuild = true;
installPhase = ''
runHook preInstall
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";
mkdir -p $out/bin
cp *.py $out/bin/
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
];
};
runHook postInstall
'';
}