From ec3bf1cde1ea94d827605f0e9e73ec1843800a97 Mon Sep 17 00:00:00 2001 From: Kleidi Bujari Date: Mon, 16 Feb 2026 13:25:02 -0800 Subject: define simple shared network with mdns for local hosts --- modules/network.nix | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 modules/network.nix (limited to 'modules/network.nix') diff --git a/modules/network.nix b/modules/network.nix new file mode 100644 index 0000000..790d159 --- /dev/null +++ b/modules/network.nix @@ -0,0 +1,68 @@ +{ config, lib, ... }: +let + cfg = config.depot.net; + inherit (lib) + mkOption + types + ; + + quad9 = [ + "9.9.9.9#dns.quad9.net" + "149.112.112.112#dns.quad9.net" + "2620:fe::fe#dns.quad9.net" + "2620:fe::9#dns.quad9.net" + ]; + + cloudflare = [ + "1.1.1.1#one.one.one.one" + "1.0.0.1#one.one.one.one" + "2606:4700:4700::1111#one.one.one.one" + "2606:4700:4700::1001#one.one.one.one" + ]; + +in +{ + imports = [ + ./sshd.nix + ]; + + options.depot.net = { + v6Token = mkOption { + type = types.str; + default = "eui64"; + description = "Token for global v6 address, defaults to eui64"; + }; + }; + + config = { + # networkd handles this + networking.useDHCP = false; + + systemd.network.enable = true; + systemd.network.networks = { + "10-base" = { + matchConfig = { + Name = "*"; + Type = "ether"; + }; + + ipv6AcceptRAConfig.Token = cfg.v6Token; + + networkConfig = { + DHCP = "ipv4"; + UseDomains = true; + + # Enable MDNS resolve/publish over this network + MulticastDNS = true; + }; + }; + }; + + networking.firewall.allowedUDPPorts = [ 5353 ]; + + services.resolved = { + enable = true; + settings.Resolve.FallBackDNS = quad9 ++ cloudflare; + }; + }; +} -- cgit v1.3.1