From 2d3728f28b846737b34b62e452c7b8d6828664e5 Mon Sep 17 00:00:00 2001 From: Geir Okkenhaug Jerstad Date: Sat, 7 Jun 2025 15:07:17 +0000 Subject: [PATCH] feat: create shared extraHosts module with Tailscale IPs - Create modules/network/extraHosts.nix with Tailscale IP mappings - Replace hardcoded networking.extraHosts in all machine configs - Add extraHosts module import to all machines - Enable Tailscale service by default in the module - Use Tailscale mesh network IPs for reliable connectivity --- .../congenital-optimist/configuration.nix | 6 +++-- machines/grey-area/configuration.nix | 6 +---- machines/reverse-proxy/configuration.nix | 1 + machines/sleeper-service/configuration.nix | 1 + modules/network/extraHosts.nix | 26 +++++++++++++++++++ 5 files changed, 33 insertions(+), 7 deletions(-) create mode 100644 modules/network/extraHosts.nix diff --git a/machines/congenital-optimist/configuration.nix b/machines/congenital-optimist/configuration.nix index f8115f3..095df8f 100644 --- a/machines/congenital-optimist/configuration.nix +++ b/machines/congenital-optimist/configuration.nix @@ -12,6 +12,9 @@ # Security modules ../../modules/security/ssh-keys.nix + # Network modules + ../../modules/network/extraHosts.nix + # Hardware modules ../../modules/hardware/amd-workstation.nix @@ -45,8 +48,7 @@ path = "/boot"; } ]; - }; -# ZFS services for this machine + }; # ZFS services for this machine services.zfs = { autoScrub.enable = true; trim.enable = true; diff --git a/machines/grey-area/configuration.nix b/machines/grey-area/configuration.nix index 8b7cb23..7939910 100644 --- a/machines/grey-area/configuration.nix +++ b/machines/grey-area/configuration.nix @@ -8,6 +8,7 @@ # Shared modules ../../modules/common/base.nix ../../modules/network/common.nix + ../../modules/network/extraHosts.nix ../../modules/virtualization/podman.nix ../../modules/virtualization/libvirt.nix ../../modules/virtualization/incus.nix @@ -64,11 +65,6 @@ # Networking networking.hostName = "grey-area"; networking.networkmanager.enable = true; - - # Add hostname resolution for sleeper-service NFS server - networking.extraHosts = '' - 10.0.0.8 sleeper-service - ''; # Set your time zone. time.timeZone = "Europe/Oslo"; diff --git a/machines/reverse-proxy/configuration.nix b/machines/reverse-proxy/configuration.nix index f7a5ac3..eb391d6 100644 --- a/machines/reverse-proxy/configuration.nix +++ b/machines/reverse-proxy/configuration.nix @@ -4,6 +4,7 @@ imports = [ ./gandicloud.nix ../../modules/common/base.nix + ../../modules/network/extraHosts.nix ../../modules/users/sma.nix ../../modules/security/ssh-keys.nix ]; diff --git a/machines/sleeper-service/configuration.nix b/machines/sleeper-service/configuration.nix index 40d62eb..3d16891 100644 --- a/machines/sleeper-service/configuration.nix +++ b/machines/sleeper-service/configuration.nix @@ -5,6 +5,7 @@ ../../modules/security/ssh-keys.nix # Network configuration ./network-sleeper-service.nix + ../../modules/network/extraHosts.nix # Services ./nfs.nix ./services/transmission.nix diff --git a/modules/network/extraHosts.nix b/modules/network/extraHosts.nix new file mode 100644 index 0000000..7ec9b14 --- /dev/null +++ b/modules/network/extraHosts.nix @@ -0,0 +1,26 @@ +# Network hostname resolution module +# Provides consistent hostname-to-IP mapping across all home lab machines +# Uses Tailscale IPs for reliable connectivity across the mesh network + +{ config, lib, ... }: + +{ + # Add hostname entries for all home lab machines using Tailscale IPs + networking.extraHosts = '' + # Home Lab Infrastructure (Tailscale mesh network) + 100.109.28.53 congenital-optimist + 100.81.15.84 sleeper-service + 100.119.86.92 grey-area + 100.96.189.104 reverse-proxy vps1 + + # Additional network devices + 100.103.143.108 pihole + 100.126.202.40 wordpresserver + ''; + + # Enable Tailscale by default for all machines using this module + services.tailscale = { + enable = true; + useRoutingFeatures = "client"; + }; +} \ No newline at end of file