pkgs: add clan-autorefresh

This adds a clan-cli shim that always uses nix run to run the pinned
clan-cli version. For this we need to expose the clan-cli via
clanInternals.
This commit is contained in:
lassulus
2025-07-11 16:51:13 +02:00
committed by Jörg Thalheim
parent a04443adb8
commit e18afbc5ea
5 changed files with 34 additions and 3 deletions

View File

@@ -275,6 +275,8 @@ in
templates = lib.mkOption { type = lib.types.raw; };
machines = lib.mkOption { type = lib.types.raw; };
clan-cli = lib.mkOption { type = lib.types.raw; };
};
};
};

View File

@@ -273,6 +273,9 @@ in
# machine specifics
machines = configsPerSystem;
# export clan-cli in clanInternals to tie the CLI to the flake
clan-cli = builtins.mapAttrs (_sys: pkgs: pkgs.clan-cli) clan-core.packages;
};
};
}

View File

@@ -13,7 +13,12 @@
];
perSystem =
{ config, pkgs, ... }:
{
config,
pkgs,
self',
...
}:
{
packages = {
agit = pkgs.callPackage ./agit { };
@@ -28,6 +33,25 @@
classgen = pkgs.callPackage ./classgen { };
zerotierone = pkgs.callPackage ./zerotierone { };
update-clan-core-for-checks = pkgs.callPackage ./update-clan-core-for-checks { };
clan-autorefresh = pkgs.symlinkJoin {
name = "clan";
paths = [
(pkgs.writeScriptBin "clan" ''
#!/bin/sh
set -efu
system=$(nix config show system)
nix \
--extra-experimental-features 'flakes nix-command' \
run ".#clanInternals.clan-cli.$system" -- "$@"
'')
self'.packages.clan-cli
];
postBuild = ''
rm -r $out/lib
'';
};
};
};
}

View File

@@ -25,7 +25,9 @@
]
(system: {
default = clan-core.inputs.nixpkgs.legacyPackages.${system}.mkShell {
packages = [ clan-core.packages.${system}.clan-cli ];
packages = [
clan-core.packages.${system}.clan-autorefresh
];
};
});
};

View File

@@ -28,7 +28,7 @@
perSystem =
{ pkgs, inputs', ... }:
{
devShells.default = pkgs.mkShell { packages = [ inputs'.clan-core.packages.clan-cli ]; };
devShells.default = pkgs.mkShell { packages = [ inputs'.clan-core.packages.clan-autorefresh ]; };
};
};
}