From d0b54231351d70f2bc1c87c206bab2dddc2708e0 Mon Sep 17 00:00:00 2001 From: Erich Blume Date: Tue, 12 May 2026 09:33:57 -0700 Subject: [PATCH] C1: pin ringtail wired IP to 192.168.1.21 (static) Removes DHCP lease renewal as a failure mode on ringtail after an outage on 2026-05-12 where the IP and routes silently disappeared from enp5s0 without any kernel link event. NetworkManager stays enabled for wireless fallback but no longer manages the wired interface. Co-Authored-By: Claude Opus 4.7 (1M context) --- docs/changelog.d/ringtail-static-ip.infra.md | 1 + docs/reference/infrastructure/ringtail.md | 13 +++++++++++++ nixos/ringtail/configuration.nix | 14 +++++++++++++- 3 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 docs/changelog.d/ringtail-static-ip.infra.md diff --git a/docs/changelog.d/ringtail-static-ip.infra.md b/docs/changelog.d/ringtail-static-ip.infra.md new file mode 100644 index 0000000..5137f48 --- /dev/null +++ b/docs/changelog.d/ringtail-static-ip.infra.md @@ -0,0 +1 @@ +Pin ringtail's wired IP to `192.168.1.21` via NixOS scripted networking; NetworkManager no longer manages `enp5s0`. Removes DHCP lease renewal as a failure mode after a silent lease teardown took ringtail offline. diff --git a/docs/reference/infrastructure/ringtail.md b/docs/reference/infrastructure/ringtail.md index 8b93d4d..a4e6837 100644 --- a/docs/reference/infrastructure/ringtail.md +++ b/docs/reference/infrastructure/ringtail.md @@ -25,6 +25,19 @@ Service host and gaming PC. Custom-built PC running NixOS. | **OS** | NixOS 25.11 (Sway/Wayland) | | **Tailscale hostname** | `ringtail.tail8d86e.ts.net` | +## Networking + +| Property | Value | +|----------|-------| +| **Interface (wired)** | `enp5s0` | +| **IP** | `192.168.1.21/24` (static, set by NixOS scripted networking) | +| **Gateway** | `192.168.1.1` (UX7) | +| **DNS** | `192.168.1.1`, `1.1.1.1` (used as Tailscale's upstream resolvers; `/etc/resolv.conf` is owned by Tailscale's MagicDNS at `100.100.100.100`) | +| **DHCP reservation** | UniFi "Fixed IP" tied to ringtail's MAC; belt-and-suspenders so the UX7 won't lease `192.168.1.21` to anyone else even though ringtail no longer asks for it | +| **Wireless** | `wlp6s0` still managed by NetworkManager as a fallback path | + +NetworkManager is enabled but explicitly excluded from managing `enp5s0` via `networking.networkmanager.unmanaged = [ "interface-name:enp5s0" ]`. The wired address is configured by a deterministic `network-addresses-enp5s0.service` oneshot — no daemon, no lease, no renewal. + ## Software Managed declaratively via `nixos/ringtail/configuration.nix`. Home-manager handles ringtail-specific sway/waybar config; chezmoi manages cross-platform dotfiles. diff --git a/nixos/ringtail/configuration.nix b/nixos/ringtail/configuration.nix index 2cc5280..bd46222 100644 --- a/nixos/ringtail/configuration.nix +++ b/nixos/ringtail/configuration.nix @@ -16,8 +16,20 @@ in systemd.tpm2.enable = false; # Networking + # Wired interface (enp5s0) uses a static IP configured by NixOS scripted + # networking; NetworkManager is left enabled for the wireless fallback only. networking.hostName = "ringtail"; - networking.networkmanager.enable = true; + networking.networkmanager = { + enable = true; + unmanaged = [ "interface-name:enp5s0" ]; + }; + networking.useDHCP = false; + networking.interfaces.enp5s0.ipv4.addresses = [{ + address = "192.168.1.21"; + prefixLength = 24; + }]; + networking.defaultGateway = "192.168.1.1"; + networking.nameservers = [ "192.168.1.1" "1.1.1.1" ]; # Time zone time.timeZone = "America/Los_Angeles";