diff --git a/nixosModules/clanCore/networking.nix b/nixosModules/clanCore/networking.nix index 048e52da..f6f8d93a 100644 --- a/nixosModules/clanCore/networking.nix +++ b/nixosModules/clanCore/networking.nix @@ -14,7 +14,8 @@ - user@machine2.example.com - root@example.com:2222&IdentityFile=/path/to/private/key ''; - type = lib.types.str; + default = null; + type = lib.types.nullOr lib.types.str; }; buildHost = lib.mkOption { description = '' diff --git a/nixosModules/clanCore/outputs.nix b/nixosModules/clanCore/outputs.nix index d5f39bf9..924728cb 100644 --- a/nixosModules/clanCore/outputs.nix +++ b/nixosModules/clanCore/outputs.nix @@ -20,13 +20,13 @@ ''; }; deployment.buildHost = lib.mkOption { - type = lib.types.str; + type = lib.types.nullOr lib.types.str; description = '' the hostname of the build host where nixos-rebuild is run ''; }; deployment.targetHost = lib.mkOption { - type = lib.types.str; + type = lib.types.nullOr lib.types.str; description = '' the hostname of the target host to be deployed to ''; diff --git a/pkgs/clan-cli/clan_cli/machines/machines.py b/pkgs/clan-cli/clan_cli/machines/machines.py index 2ed45746..b1c7eeee 100644 --- a/pkgs/clan-cli/clan_cli/machines/machines.py +++ b/pkgs/clan-cli/clan_cli/machines/machines.py @@ -3,6 +3,7 @@ import logging from pathlib import Path from ..cmd import run +from ..errors import ClanError from ..nix import nix_build, nix_config, nix_eval, nix_metadata from ..ssh import Host, parse_deployment_address @@ -48,10 +49,14 @@ class Machine: @property def target_host(self) -> str: # deploymentAddress is deprecated. - return ( + val = ( self.deployment_info.get("targetHost") or self.deployment_info["deploymentAddress"] ) + if val is None: + msg = f"the 'clan.networking.targetHost' nixos option is not set for machine '{self.name}'" + raise ClanError(msg) + return val @target_host.setter def target_host(self, value: str) -> None: diff --git a/pkgs/clan-cli/clan_cli/machines/update.py b/pkgs/clan-cli/clan_cli/machines/update.py index dbb2114c..d613c106 100644 --- a/pkgs/clan-cli/clan_cli/machines/update.py +++ b/pkgs/clan-cli/clan_cli/machines/update.py @@ -154,14 +154,11 @@ def get_all_machines(clan_dir: Path) -> HostGroup: hosts = [] for name, machine_data in machines.items(): # very hacky. would be better to do a MachinesGroup instead + machine = Machine(name=name, flake=clan_dir, deployment_info=machine_data) host = parse_deployment_address( name, - machine_data.get("targetHost") or machine_data.get("deploymentAddress"), - meta={ - "machine": Machine( - name=name, flake=clan_dir, deployment_info=machine_data - ) - }, + host=machine.target_host, + meta={"machine": machine}, ) hosts.append(host) return HostGroup(hosts)