From 1995c04b1db3e8672e24fe0c4a83effd03bdfbfb Mon Sep 17 00:00:00 2001 From: hektor Date: Fri, 12 Jun 2026 20:30:08 +0200 Subject: [PATCH] refactor: merge 'host.nix' into 'meta.nix' --- deploy/colmena.nix | 24 ++++++++++++++++-------- home/modules/ssh/default.nix | 7 ++++--- hosts/andromache/default.nix | 4 +++- hosts/andromache/host.nix | 7 ------- hosts/andromache/meta.nix | 11 ++++++----- hosts/astyanax/default.nix | 6 +++++- hosts/astyanax/host.nix | 7 ------- hosts/astyanax/meta.nix | 11 ++++++----- hosts/eetion-02/default.nix | 6 +++++- hosts/eetion-02/host.nix | 5 ----- hosts/eetion-02/meta.nix | 9 ++++----- hosts/eetion/default.nix | 6 +++++- hosts/eetion/host.nix | 5 ----- hosts/eetion/meta.nix | 9 ++++----- hosts/hecuba/default.nix | 7 +++++-- hosts/hecuba/host.nix | 5 ----- hosts/hecuba/meta.nix | 9 ++++----- hosts/vm/default.nix | 6 +++++- hosts/vm/host.nix | 5 ----- hosts/vm/meta.nix | 9 ++++----- utils/hosts.nix | 4 ++-- 21 files changed, 78 insertions(+), 84 deletions(-) delete mode 100644 hosts/andromache/host.nix delete mode 100644 hosts/astyanax/host.nix delete mode 100644 hosts/eetion-02/host.nix delete mode 100644 hosts/eetion/host.nix delete mode 100644 hosts/hecuba/host.nix delete mode 100644 hosts/vm/host.nix diff --git a/deploy/colmena.nix b/deploy/colmena.nix index a8d2eb56..ade76e4d 100644 --- a/deploy/colmena.nix +++ b/deploy/colmena.nix @@ -8,16 +8,24 @@ let utils = import ../utils { inherit lib; }; hostnames = utils.dirNames ../hosts; - mkNode = hostname: meta: { - imports = [ ../hosts/${hostname} ]; - host.name = hostname; - deployment = { - inherit (meta.deployment) targetHost targetUser tags; - buildOnTarget = builtins.any (t: t != "local" && t != "arm") meta.deployment.tags; + mkNode = + hostname: + let + meta = utils.hostMeta ../hosts/${hostname}; + isLocal = builtins.elem "local" meta.tags; + in + { + imports = [ ../hosts/${hostname} ]; + host.name = hostname; + deployment = { + inherit (meta) tags; + targetUser = meta.host.username; + targetHost = if isLocal then "" else hostname; + buildOnTarget = builtins.any (t: t != "local" && t != "arm") meta.tags; + }; }; - }; - nodes = lib.genAttrs hostnames (hostname: mkNode hostname (utils.hostMeta ../hosts/${hostname})); + nodes = lib.genAttrs hostnames mkNode; in inputs.colmena.lib.makeHive ( { diff --git a/home/modules/ssh/default.nix b/home/modules/ssh/default.nix index 358dc85d..48704f82 100644 --- a/home/modules/ssh/default.nix +++ b/home/modules/ssh/default.nix @@ -29,12 +29,13 @@ in hostname: let meta = myUtils.hostMeta (hostDir + "/${hostname}"); + isLocal = builtins.elem "local" meta.tags; in { - User = meta.deployment.targetUser; + User = meta.host.username; } - // lib.optionalAttrs (meta.deployment.targetHost != "") { - HostName = meta.deployment.targetHost; + // lib.optionalAttrs (!isLocal) { + HostName = hostname; } ) // { diff --git a/hosts/andromache/default.nix b/hosts/andromache/default.nix index 6281946e..952f3137 100644 --- a/hosts/andromache/default.nix +++ b/hosts/andromache/default.nix @@ -7,13 +7,13 @@ }: let + meta = import ./meta.nix; wolInterfaces = import ./wol-interfaces.nix; in { imports = [ inputs.disko.nixosModules.disko ./hard.nix - ./host.nix inputs.nixos-hardware.nixosModules.common-cpu-intel inputs.nixos-hardware.nixosModules.common-pc inputs.nixos-hardware.nixosModules.common-pc-ssd @@ -24,6 +24,8 @@ in }) ]; + inherit (meta) host; + home-manager.users.${config.host.username} = import ../../home/hosts/${config.host.name}; "ai-tools".enable = true; diff --git a/hosts/andromache/host.nix b/hosts/andromache/host.nix deleted file mode 100644 index 92971ba1..00000000 --- a/hosts/andromache/host.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ - host = { - username = "h"; - highRam = true; - admin = true; - }; -} diff --git a/hosts/andromache/meta.nix b/hosts/andromache/meta.nix index 04f3b7de..c286ffe8 100644 --- a/hosts/andromache/meta.nix +++ b/hosts/andromache/meta.nix @@ -1,9 +1,10 @@ { system = "x86_64-linux"; - deployment = { - tags = [ "local" ]; - targetHost = ""; - targetUser = "h"; - }; role = "desktop"; + tags = [ "local" ]; + host = { + username = "h"; + highRam = true; + admin = true; + }; } diff --git a/hosts/astyanax/default.nix b/hosts/astyanax/default.nix index 31568086..f5adabbc 100644 --- a/hosts/astyanax/default.nix +++ b/hosts/astyanax/default.nix @@ -6,11 +6,13 @@ ... }: +let + meta = import ./meta.nix; +in { imports = [ inputs.disko.nixosModules.disko ./hard.nix - ./host.nix inputs.nixos-hardware.nixosModules.common-pc inputs.nixos-hardware.nixosModules.common-pc-ssd # inputs.nixos-hardware.nixosModules.lenovo-thinkpad-e14-intel-gen7 (not available yet?) @@ -21,6 +23,8 @@ }) ]; + inherit (meta) host; + home-manager.users.${config.host.username} = import ../../home/hosts/${config.host.name}; "ai-tools".enable = true; diff --git a/hosts/astyanax/host.nix b/hosts/astyanax/host.nix deleted file mode 100644 index 92971ba1..00000000 --- a/hosts/astyanax/host.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ - host = { - username = "h"; - highRam = true; - admin = true; - }; -} diff --git a/hosts/astyanax/meta.nix b/hosts/astyanax/meta.nix index 14cc0e60..eb93152d 100644 --- a/hosts/astyanax/meta.nix +++ b/hosts/astyanax/meta.nix @@ -1,9 +1,10 @@ { system = "x86_64-linux"; - deployment = { - tags = [ "local" ]; - targetHost = ""; - targetUser = "h"; - }; role = "laptop"; + tags = [ "local" ]; + host = { + username = "h"; + highRam = true; + admin = true; + }; } diff --git a/hosts/eetion-02/default.nix b/hosts/eetion-02/default.nix index 667f0f79..9bbd078a 100644 --- a/hosts/eetion-02/default.nix +++ b/hosts/eetion-02/default.nix @@ -3,13 +3,17 @@ # Raspberry Pi 3 # See +let + meta = import ./meta.nix; +in { imports = [ ./hard.nix - ./host.nix ../../modules ]; + inherit (meta) host; + ssh.enable = true; boot = { diff --git a/hosts/eetion-02/host.nix b/hosts/eetion-02/host.nix deleted file mode 100644 index 30e5748d..00000000 --- a/hosts/eetion-02/host.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - host = { - username = "h"; - }; -} diff --git a/hosts/eetion-02/meta.nix b/hosts/eetion-02/meta.nix index 0bdb7789..a9a0031c 100644 --- a/hosts/eetion-02/meta.nix +++ b/hosts/eetion-02/meta.nix @@ -1,9 +1,8 @@ { system = "aarch64-linux"; - deployment = { - tags = [ "arm" ]; - targetHost = "eetion-02"; - targetUser = "h"; - }; role = "embedded"; + tags = [ "arm" ]; + host = { + username = "h"; + }; } diff --git a/hosts/eetion/default.nix b/hosts/eetion/default.nix index 0685e1db..adc7f811 100644 --- a/hosts/eetion/default.nix +++ b/hosts/eetion/default.nix @@ -3,13 +3,17 @@ # Orange Pi Zero2 H616 # See +let + meta = import ./meta.nix; +in { imports = [ ./hard.nix - ./host.nix ../../modules ]; + inherit (meta) host; + ssh.enable = true; tailscale.enable = true; diff --git a/hosts/eetion/host.nix b/hosts/eetion/host.nix deleted file mode 100644 index 30e5748d..00000000 --- a/hosts/eetion/host.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - host = { - username = "h"; - }; -} diff --git a/hosts/eetion/meta.nix b/hosts/eetion/meta.nix index ebdea5c8..a9a0031c 100644 --- a/hosts/eetion/meta.nix +++ b/hosts/eetion/meta.nix @@ -1,9 +1,8 @@ { system = "aarch64-linux"; - deployment = { - tags = [ "arm" ]; - targetHost = "eetion"; - targetUser = "h"; - }; role = "embedded"; + tags = [ "arm" ]; + host = { + username = "h"; + }; } diff --git a/hosts/hecuba/default.nix b/hosts/hecuba/default.nix index 0d1632b4..285a9170 100644 --- a/hosts/hecuba/default.nix +++ b/hosts/hecuba/default.nix @@ -7,16 +7,19 @@ # also see +let + meta = import ./meta.nix; +in { imports = [ inputs.disko.nixosModules.disko ./hard.nix inputs.comin.nixosModules.comin - ./host.nix ../../modules ]; - docker.enable = true; + inherit (meta) host; + ssh.enable = true; tailscale.enable = true; diff --git a/hosts/hecuba/host.nix b/hosts/hecuba/host.nix deleted file mode 100644 index 5c134599..00000000 --- a/hosts/hecuba/host.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - host = { - username = "username"; - }; -} diff --git a/hosts/hecuba/meta.nix b/hosts/hecuba/meta.nix index a89298e2..2fa15241 100644 --- a/hosts/hecuba/meta.nix +++ b/hosts/hecuba/meta.nix @@ -1,9 +1,8 @@ { system = "x86_64-linux"; - deployment = { - tags = [ "cloud" ]; - targetHost = "hecuba"; - targetUser = "username"; - }; role = "server"; + tags = [ "cloud" ]; + host = { + username = "username"; + }; } diff --git a/hosts/vm/default.nix b/hosts/vm/default.nix index b21f4eeb..2645cf10 100644 --- a/hosts/vm/default.nix +++ b/hosts/vm/default.nix @@ -3,15 +3,19 @@ config, ... }: +let + meta = import ./meta.nix; +in { imports = [ inputs.disko.nixosModules.disko ./hard.nix - ./host.nix ./disk.nix ../../modules ]; + inherit (meta) host; + home-manager.users.${config.host.username} = import ../../home/hosts/vm; "ai-tools".enable = true; diff --git a/hosts/vm/host.nix b/hosts/vm/host.nix deleted file mode 100644 index 30e5748d..00000000 --- a/hosts/vm/host.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - host = { - username = "h"; - }; -} diff --git a/hosts/vm/meta.nix b/hosts/vm/meta.nix index 371bb909..f46dfe50 100644 --- a/hosts/vm/meta.nix +++ b/hosts/vm/meta.nix @@ -1,9 +1,8 @@ { system = "x86_64-linux"; - deployment = { - tags = [ "local" ]; - targetHost = ""; - targetUser = "h"; - }; role = "vm"; + tags = [ "local" ]; + host = { + username = "h"; + }; } diff --git a/utils/hosts.nix b/utils/hosts.nix index 617c8ada..08b08234 100644 --- a/utils/hosts.nix +++ b/utils/hosts.nix @@ -9,11 +9,11 @@ in if builtins.pathExists (hostDir + "/meta.nix") then import (hostDir + "/meta.nix") else - throw "meta.nix required in ${hostDir}"; + throw "meta.nix required in ${toString hostDir}"; adminHosts = hostsPath: - builtins.filter (host: ((import (hostsPath + "/${host}/host.nix")).host.admin or false)) ( + builtins.filter (host: ((import (hostsPath + "/${host}/meta.nix")).host.admin or false)) ( fs.dirNames hostsPath ); }