clanInternals.machines: invert system and machine name

This commit is contained in:
Jörg Thalheim
2023-09-27 17:25:17 +02:00
parent 59f0a912ea
commit 756820e4ca
4 changed files with 31 additions and 24 deletions

View File

@@ -26,12 +26,9 @@ let
inherit specialArgs; inherit specialArgs;
}; };
nixosConfigurations = lib.mapAttrs allMachines = machinesDirs // machines;
(name: _:
nixosConfiguration { inherit name; })
(machinesDirs // machines);
systems = [ supportedSystems = [
"x86_64-linux" "x86_64-linux"
"aarch64-linux" "aarch64-linux"
"riscv64-linux" "riscv64-linux"
@@ -39,16 +36,26 @@ let
"aarch64-darwin" "aarch64-darwin"
]; ];
nixosConfigurations = lib.mapAttrs (name: _: nixosConfiguration { inherit name; }) allMachines;
# This instantiates nixos for each system that we support:
# clanInternals.machinesForAllSystems.<system>.<machine>
# We need this to build nixos secret generators for each system
machinesForAllSystems = builtins.listToAttrs
(builtins.map
(system: lib.nameValuePair system
(lib.mapAttrs (name: _: nixosConfiguration { inherit name system; }) allMachines))
supportedSystems);
in
{
inherit nixosConfigurations;
clanInternals = { clanInternals = {
machines = lib.mapAttrs machines = lib.mapAttrs
(name: _: (_: lib.mapAttrs (_: machine: {
(builtins.listToAttrs (map inherit (machine.config.system.clan) uploadSecrets generateSecrets;
(system: inherit (machine.config.clan.networking) deploymentAddress;
lib.nameValuePair system (nixosConfiguration { inherit name system; }) }))
) machinesForAllSystems;
systems))
)
(machinesDirs // machines);
}; };
in }
{ inherit nixosConfigurations clanInternals; }

View File

@@ -4,7 +4,7 @@ import os
import subprocess import subprocess
from ..dirs import get_clan_flake_toplevel from ..dirs import get_clan_flake_toplevel
from ..nix import nix_command, nix_eval from ..nix import nix_command, nix_config, nix_eval
from ..secrets.generate import generate_secrets from ..secrets.generate import generate_secrets
from ..secrets.upload import upload_secrets from ..secrets.upload import upload_secrets
from ..ssh import Host, HostGroup, HostKeyCheck, parse_deployment_address from ..ssh import Host, HostGroup, HostKeyCheck, parse_deployment_address
@@ -78,12 +78,14 @@ def deploy_nixos(hosts: HostGroup) -> None:
def update(args: argparse.Namespace) -> None: def update(args: argparse.Namespace) -> None:
clan_dir = get_clan_flake_toplevel().as_posix() clan_dir = get_clan_flake_toplevel().as_posix()
machine = args.machine machine = args.machine
config = nix_config()
system = config["system"]
address = json.loads( address = json.loads(
subprocess.run( subprocess.run(
nix_eval( nix_eval(
[ [f'{clan_dir}#clanInternals."{system}"."{machine}".deploymentAddress']
f'{clan_dir}#nixosConfigurations."{machine}".config.clan.networking.deploymentAddress'
]
), ),
stdout=subprocess.PIPE, stdout=subprocess.PIPE,
check=True, check=True,

View File

@@ -19,7 +19,7 @@ def generate_secrets(machine: str) -> None:
cmd = nix_build( cmd = nix_build(
[ [
f'path:{clan_dir}#clanInternals.machines."{machine}".{system}.config.system.clan.generateSecrets' f'path:{clan_dir}#clanInternals.machines."{system}"."{machine}".generateSecrets'
] ]
) )
proc = subprocess.run(cmd, stdout=subprocess.PIPE, text=True) proc = subprocess.run(cmd, stdout=subprocess.PIPE, text=True)

View File

@@ -15,9 +15,7 @@ def upload_secrets(machine: str) -> None:
proc = subprocess.run( proc = subprocess.run(
nix_build( nix_build(
[ [f'{clan_dir}#clanInternals.machines."{system}"."{machine}".uploadSecrets']
f'{clan_dir}#clanInternals.machines."{machine}".{system}.config.system.clan.uploadSecrets'
]
), ),
stdout=subprocess.PIPE, stdout=subprocess.PIPE,
text=True, text=True,
@@ -30,7 +28,7 @@ def upload_secrets(machine: str) -> None:
subprocess.run( subprocess.run(
nix_eval( nix_eval(
[ [
f'{clan_dir}#clanInternals.machines."{machine}".{system}.config.clan.networking.deploymentAddress' f'{clan_dir}#clanInternals.machines."{system}"."{machine}".deploymentAddress'
] ]
), ),
stdout=subprocess.PIPE, stdout=subprocess.PIPE,