From 9abae8d2f5c5b0b8784ab423958087c9732b80aa Mon Sep 17 00:00:00 2001 From: mikl Date: Mon, 3 Aug 2026 00:36:52 +0300 Subject: [PATCH] fix(mesh): create heather identity interface with systemd --- hosts/heather/default.nix | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/hosts/heather/default.nix b/hosts/heather/default.nix index 40aabd7..df1e3ec 100644 --- a/hosts/heather/default.nix +++ b/hosts/heather/default.nix @@ -27,10 +27,25 @@ # The private key is generated on the live host and stays outside the flake. environment.systemPackages = [ pkgs.wireguard-tools ]; - systemd.network.netdevs."10-mesh0" = { - netdevConfig = { Name = "mesh0"; Kind = "dummy"; }; + # NixOS uses scripted networking here (not systemd-networkd), so create the + # dummy identity interface through a small idempotent systemd unit. + systemd.services.mesh-identity = { + description = "Create mesh identity interface"; + wantedBy = [ "network.target" ]; + after = [ "wireguard-wg-mesh.service" "network-addresses-wg-mesh.service" ]; + wants = [ "wireguard-wg-mesh.service" ]; + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + ExecStart = pkgs.writeShellScript "mesh-identity-up" '' + set -eu + ${pkgs.iproute2}/bin/ip link show mesh0 >/dev/null 2>&1 || ${pkgs.iproute2}/bin/ip link add mesh0 type dummy + ${pkgs.iproute2}/bin/ip addr replace 10.0.0.1/32 dev mesh0 + ${pkgs.iproute2}/bin/ip link set mesh0 up + ''; + ExecStop = "${pkgs.iproute2}/bin/ip link del mesh0"; + }; }; - networking.interfaces.mesh0.ipv4.addresses = [ { address = "10.0.0.1"; prefixLength = 32; } ]; networking.wireguard.interfaces.wg-mesh = { ips = [ "10.99.0.1/30" ];