Merge pull request 'clan: improve machine completions' (#1572) from kenji/clan-core:clan/dynamic-completions into main

Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/1572
This commit is contained in:
kenji
2024-06-05 11:38:50 +00:00

View File

@@ -44,23 +44,23 @@ def complete_machines(
def run_cmd() -> None: def run_cmd() -> None:
try: try:
# In my tests this was consistently faster than:
# nix eval .#nixosConfigurations --apply builtins.attrNames
cmd = ["nix", "flake", "show", "--system", "no-eval", "--json"]
if (clan_dir_result := clan_dir(None)) is not None: if (clan_dir_result := clan_dir(None)) is not None:
cmd.append(clan_dir_result) flake = clan_dir_result
result = subprocess.run( else:
cmd, flake = "."
check=True, services_result = json.loads(
capture_output=True, run(
text=True, nix_eval(
flags=[
f"{flake}#nixosConfigurations",
"--apply",
"builtins.attrNames",
],
),
).stdout.strip()
) )
data = json.loads(result.stdout) machines.extend(services_result)
try:
machines.extend(data.get("nixosConfigurations").keys())
except KeyError:
pass
except subprocess.CalledProcessError: except subprocess.CalledProcessError:
pass pass