diff --git a/deploy/colmena.nix b/deploy/colmena.nix index b0cfff07..c0815abf 100644 --- a/deploy/colmena.nix +++ b/deploy/colmena.nix @@ -8,19 +8,15 @@ let utils = import ../utils { inherit lib; }; hostDirNames = utils.dirNames ../hosts; - mkNode = hostname: tags: { + mkNode = hostname: meta: { imports = [ ../hosts/${hostname} ]; deployment = { - targetHost = self.nixosConfigurations.${hostname}.config.ssh.publicHostname; - targetUser = self.nixosConfigurations.${hostname}.config.host.username; - buildOnTarget = builtins.any (t: t != "local" && t != "arm") tags; - inherit tags; + inherit (meta.deployment) targetHost targetUser tags; + buildOnTarget = builtins.any (t: t != "local" && t != "arm") meta.deployment.tags; }; }; - nodes = lib.genAttrs hostDirNames ( - hostname: mkNode hostname (utils.hostMeta ../hosts/${hostname}).deployment.tags - ); + nodes = lib.genAttrs hostDirNames (hostname: mkNode hostname (utils.hostMeta ../hosts/${hostname})); in inputs.colmena.lib.makeHive ( { diff --git a/home/modules/ssh/default.nix b/home/modules/ssh/default.nix index 25ff5028..961da13c 100644 --- a/home/modules/ssh/default.nix +++ b/home/modules/ssh/default.nix @@ -1,18 +1,15 @@ { - outputs, + myUtils, lib, pkgs, ... }: let - nixosConfigs = builtins.attrNames outputs.nixosConfigurations; - homeConfigs = map (n: lib.last (lib.splitString "@" n)) ( - builtins.attrNames outputs.homeConfigurations - ); - allHosts = lib.unique (homeConfigs ++ nixosConfigs); + hostDir = ../../hosts; + hostNames = myUtils.dirNames hostDir; hostsWithKeys = lib.filter ( - hostname: builtins.pathExists ../../hosts/${hostname}/ssh_host.pub - ) allHosts; + hostname: builtins.pathExists (hostDir + "/${hostname}/ssh_host.pub") + ) hostNames; in { home.packages = with pkgs; [ sshfs ]; @@ -25,15 +22,14 @@ in lib.genAttrs hostsWithKeys ( hostname: let - hostConfig = outputs.nixosConfigurations.${hostname}.config; - inherit (hostConfig.ssh) publicHostname username; + meta = myUtils.hostMeta (hostDir + "/${hostname}"); in { host = hostname; - user = username; + user = meta.deployment.targetUser; } - // lib.optionalAttrs (publicHostname != "") { - hostname = publicHostname; + // lib.optionalAttrs (meta.deployment.targetHost != "") { + hostname = meta.deployment.targetHost; } ) // { diff --git a/hosts/andromache/meta.nix b/hosts/andromache/meta.nix index a913e4b6..04f3b7de 100644 --- a/hosts/andromache/meta.nix +++ b/hosts/andromache/meta.nix @@ -1,5 +1,9 @@ { system = "x86_64-linux"; - deployment.tags = [ "local" ]; + deployment = { + tags = [ "local" ]; + targetHost = ""; + targetUser = "h"; + }; role = "desktop"; } diff --git a/hosts/astyanax/meta.nix b/hosts/astyanax/meta.nix index c818983b..14cc0e60 100644 --- a/hosts/astyanax/meta.nix +++ b/hosts/astyanax/meta.nix @@ -1,5 +1,9 @@ { system = "x86_64-linux"; - deployment.tags = [ "local" ]; + deployment = { + tags = [ "local" ]; + targetHost = ""; + targetUser = "h"; + }; role = "laptop"; } diff --git a/hosts/eetion-02/default.nix b/hosts/eetion-02/default.nix index f8dc4755..b214d6c0 100644 --- a/hosts/eetion-02/default.nix +++ b/hosts/eetion-02/default.nix @@ -12,7 +12,6 @@ ]; ssh = { - publicHostname = config.host.name; authorizedHosts = [ "andromache" "astyanax" diff --git a/hosts/eetion-02/meta.nix b/hosts/eetion-02/meta.nix index 3fee3acf..0bdb7789 100644 --- a/hosts/eetion-02/meta.nix +++ b/hosts/eetion-02/meta.nix @@ -1,5 +1,9 @@ { system = "aarch64-linux"; - deployment.tags = [ "arm" ]; + deployment = { + tags = [ "arm" ]; + targetHost = "eetion-02"; + targetUser = "h"; + }; role = "embedded"; } diff --git a/hosts/eetion/default.nix b/hosts/eetion/default.nix index 8d22f3d4..d98196fd 100644 --- a/hosts/eetion/default.nix +++ b/hosts/eetion/default.nix @@ -13,7 +13,6 @@ ]; ssh = { - publicHostname = config.host.name; authorizedHosts = [ "andromache" "astyanax" diff --git a/hosts/eetion/meta.nix b/hosts/eetion/meta.nix index 3fee3acf..ebdea5c8 100644 --- a/hosts/eetion/meta.nix +++ b/hosts/eetion/meta.nix @@ -1,5 +1,9 @@ { system = "aarch64-linux"; - deployment.tags = [ "arm" ]; + deployment = { + tags = [ "arm" ]; + targetHost = "eetion"; + targetUser = "h"; + }; role = "embedded"; } diff --git a/hosts/hecuba/default.nix b/hosts/hecuba/default.nix index b11387ca..7ca13bed 100644 --- a/hosts/hecuba/default.nix +++ b/hosts/hecuba/default.nix @@ -19,7 +19,6 @@ networking.hostName = config.host.name; ssh = { - publicHostname = "server.hektormisplon.xyz"; authorizedHosts = [ "andromache" "astyanax" diff --git a/hosts/hecuba/meta.nix b/hosts/hecuba/meta.nix index b737ba67..573994f3 100644 --- a/hosts/hecuba/meta.nix +++ b/hosts/hecuba/meta.nix @@ -1,5 +1,9 @@ { system = "x86_64-linux"; - deployment.tags = [ "cloud" ]; + deployment = { + tags = [ "cloud" ]; + targetHost = "server.hektormisplon.xyz"; + targetUser = "username"; + }; role = "server"; } diff --git a/hosts/vm/meta.nix b/hosts/vm/meta.nix index 7fde780f..371bb909 100644 --- a/hosts/vm/meta.nix +++ b/hosts/vm/meta.nix @@ -1,5 +1,9 @@ { system = "x86_64-linux"; - deployment.tags = [ "local" ]; + deployment = { + tags = [ "local" ]; + targetHost = ""; + targetUser = "h"; + }; role = "vm"; } diff --git a/modules/ssh/authorized-keys.nix b/modules/ssh/authorized-keys.nix index 72b57df8..7ad6eddf 100644 --- a/modules/ssh/authorized-keys.nix +++ b/modules/ssh/authorized-keys.nix @@ -9,10 +9,6 @@ in type = lib.types.listOf lib.types.str; default = [ ]; }; - publicHostname = lib.mkOption { - type = lib.types.str; - default = ""; - }; }; # auto generate authorized_keys from `authorizedHosts`