From 3c79a42686239c84ab6531f21f51882e4c622732 Mon Sep 17 00:00:00 2001 From: Collin Williams <96917990+bluedragon1221@users.noreply.github.com> Date: Tue, 30 Dec 2025 10:26:25 -0600 Subject: allow for configuring dhcp via networkd --- modules/services/options.nix | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) (limited to 'modules/services/options.nix') diff --git a/modules/services/options.nix b/modules/services/options.nix index 78a5a8f..59b8e01 100644 --- a/modules/services/options.nix +++ b/modules/services/options.nix @@ -7,21 +7,29 @@ in { options = { collinux.services = { - networking = { + networking = let + ip_addr = lib.types.strMatching "^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$"; + ip_addr_cidr = lib.types.strMatching "^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])/(3[0-2]|[12]?[0-9])$"; + in { enable = mkEnableOption "wifi"; + iwd.enable = mkEnableOption "lightweight wifi daemon"; networkmanager.enable = mkEnableOption "heavier wifi daemon"; - static = let - ip_addr = - lib.types.strMatching - "^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$"; - in { + networkd = { enable = mkEnableOption "set static IP (systemd-networkd)"; ssid = mkOption {type = lib.types.str;}; - ip = mkOption {type = ip_addr;}; - gateway = mkOption {type = ip_addr;}; pskFile = mkOption {type = lib.types.str;}; + + static = lib.mkOption { + type = lib.types.nullOr (lib.types.submodule { + options = { + ip = mkOption {type = ip_addr_cidr;}; + gateway = mkOption {type = ip_addr;}; + }; + }); + default = null; + }; }; tailscale.enable = mkEnableOption "tailscale"; sshd.enable = mkEnableOption "OpenSSH server"; @@ -46,7 +54,12 @@ in { }; }; adguard.enable = mkEnableOption "AdGuardHome network-wide adblocking"; - caddy.enable = mkEnableOption "caddy https server"; + caddy = { + enable = mkEnableOption "caddy https server"; + envFile = mkOption { + type = lib.types.str; + }; + }; }; }; }; @@ -54,7 +67,7 @@ in { config = { assertions = [ { - assertion = with config.collinux.services.networking; (iwd.enable && !networkmanager.enable && !static.enable) || (!iwd.enable && networkmanager.enable && !static.enable) || (!iwd.enable && !networkmanager.enable && static.enable); + assertion = with config.collinux.services.networking; (iwd.enable && !networkmanager.enable && !networkd.enable) || (!iwd.enable && networkmanager.enable && !networkd.enable) || (!iwd.enable && !networkmanager.enable && networkd.enable); message = "only one networking method (iwd, networkmanager, static) can be active"; } ]; -- cgit v1.3.1