From 724fe6767efb30582138c41108b711d69a906e93 Mon Sep 17 00:00:00 2001 From: Martin Berg Alstad Date: Mon, 2 Jun 2025 21:02:33 +0200 Subject: [PATCH] :recycle: [shared] Refactor system configs --- flake.nix | 8 +++++--- shared/base/home-manager/ssh.nix | 9 ++++++--- shared/base/modules/security/ssh.nix | 8 ++++++-- shared/common.nix | 4 ++++ 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/flake.nix b/flake.nix index 94db4db..f2fda50 100644 --- a/flake.nix +++ b/flake.nix @@ -74,13 +74,11 @@ systems = builtins.map (config: defaultAttrs // config) [ { hostName = "desktop"; - system = "x86_64-linux"; nvidia.enable = true; ssh.publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMSzXyTuQyTrWsfORQbvgrqt/33+hfSUDXeMg6D1T2wz"; } { hostName = "thinkpad"; - system = "x86_64-linux"; ssh.publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILNlHKE/BD8kKfhJD7GBk1A3whZf3gTjk9VEgGAj3qsH"; } { @@ -88,16 +86,20 @@ system = "aarch64-linux"; wayland.enable = false; ssh.publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJE9m7YiITe1sDqSZ7Pa8luIw3WToLsypixZEqE4wCQE"; + address.private = common.localIpAddr 188; } { hostName = "homelab"; - system = "x86_64-linux"; wayland.enable = false; ssh.publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIARDv5nRlfPDXdV+Db4FaqeSJZ3/3MO0frYGzuVeqYAl"; + address.private = common.localIpAddr 231; + address.tailnet = common.tailnetAddr "admin"; } ]; defaultAttrs = { + hostName = builtins.abort "hostName is required"; + system = "x86_64-linux"; username = common.username; version = common.system.version; wayland.enable = true; diff --git a/shared/base/home-manager/ssh.nix b/shared/base/home-manager/ssh.nix index babe10f..861ac78 100644 --- a/shared/base/home-manager/ssh.nix +++ b/shared/base/home-manager/ssh.nix @@ -15,13 +15,16 @@ with builtins; name = system.hostName; value = let - # TODO rename desktop to homelab - hostName = if system.hostName == "homelab" then "admin" else system.hostName; + hostName = + if (system ? address && system.address ? tailnet) then + system.address.tailnet + else + common.tailnetAddr system.hostName; in { port = 22; user = systemConfig.username; - hostname = "${hostName}.dns.${common.domain}"; + hostname = hostName; }; }) systems ); diff --git a/shared/base/modules/security/ssh.nix b/shared/base/modules/security/ssh.nix index 0125cda..a9f501e 100644 --- a/shared/base/modules/security/ssh.nix +++ b/shared/base/modules/security/ssh.nix @@ -8,7 +8,6 @@ }: with builtins; let - domain = "dns.${common.domain}"; allSystems = knownSystems ++ systems; in { @@ -17,7 +16,12 @@ in name = system.hostName; value = { extraHostNames = [ - "${system.hostName}.${domain}" + ( + if (system ? address && system.address ? tailnet) then + system.address.tailnet + else + common.tailnetAddr system.hostName + ) ]; publicKey = system.ssh.publicKey; }; diff --git a/shared/common.nix b/shared/common.nix index 43e282a..c10fa46 100644 --- a/shared/common.nix +++ b/shared/common.nix @@ -14,6 +14,10 @@ rec { }; domain = "martials.no"; + tailnetDomain = "dns.${domain}"; + localIpPrefix = "192.168.10."; + localIpAddr = subAddr: "${localIpPrefix}${builtins.toString subAddr}"; + tailnetAddr = host: "${host}.${tailnetDomain}"; keymaps = { layout = "gb,no";