Compare commits

...

2 commits

Author SHA1 Message Date
5acb380fc0 home/git: add alias for git tree-sync sync
I decided to implement this as a shell alias, to allow directly
referencing the package here instead of relying on it to be in path.
2026-02-27 23:36:23 +01:00
5a0ca84534 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.
2026-02-27 23:35:25 +01:00
3 changed files with 72 additions and 13 deletions

View file

@ -47,6 +47,7 @@
programs.git = { programs.git = {
enable = true; enable = true;
settings = { settings = {
alias.ts = "!${lib.getExe pkgs.fc-scripts.git-tree-sync} sync";
credential.helper = "cache"; credential.helper = "cache";
push.default = "simple"; push.default = "simple";
push.forceIfIncludes = true; # avoid accidental force overrides when remote is autofetched in background push.forceIfIncludes = true; # avoid accidental force overrides when remote is autofetched in background

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";
buildInputs = [ python3 ]; 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; dontBuild = true;
dontConfigure = true;
buildInputs = [ python3 ];
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 = [
(python3.withPackages (ps: [ ps.asyncio-dgram ]))
mosh
openssh
];
};
mosh-dualstack-proxy = mkFcScriptDrv {
pname = "mosh-dualstack-proxy";
propagatedBuildInputs = [
python3
mosh
openssh
];
};
runHook postInstall
'';
} }