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 a87738a2ff
2 changed files with 72 additions and 13 deletions

View file

@ -85,8 +85,14 @@ let
nix-output-monitor # putting this here as a plain `nix` alternative 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 [ ++ lib.optionals pkgs.stdenv.isLinux [
xclip xclip
smbnetfs # for FUSE smb mounting smbnetfs # for FUSE smb mounting

View file

@ -1,27 +1,80 @@
{ {
lib,
fetchFromGitHub, fetchFromGitHub,
runCommand,
python3, python3,
stdenvNoCC, stdenvNoCC,
makeWrapper,
git,
openssh,
mosh,
}: }:
stdenvNoCC.mkDerivation { let
pname = "fc-scripts";
version = "20260202";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "flyingcircusio"; owner = "flyingcircusio";
repo = "scripts"; repo = "scripts";
rev = "887f066006829fc3ee44b3cfbe748c578ea2e7c1"; rev = "887f066006829fc3ee44b3cfbe748c578ea2e7c1";
hash = "sha256-mrL/dULb0NKw8cH9ferzfDdRjhWANrWQg/u7FNCtzWw="; hash = "sha256-mrL/dULb0NKw8cH9ferzfDdRjhWANrWQg/u7FNCtzWw=";
}; };
version = "20260202";
buildInputs = [ python3 ]; 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; dontBuild = true;
dontConfigure = true;
buildInputs = [ python ]; # the python interpreter utilised by patchShebangs
nativeBuildInputs = [ makeWrapper ];
installPhase = '' installPhase = ''
runHook preInstall runHook preInstall
mkdir -p $out/bin mkdir -p $out/bin
cp *.py $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
];
};
runHook postInstall
'';
} }