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 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,79 @@
{ {
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";
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 ]; installPhase = ''
dontBuild = true; runHook preInstall
installPhase = '' mkdir -p $out/bin
runHook preInstall 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 meta.mainProgram = pname;
cp *.py $out/bin/ });
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
'';
} }