diff options
Diffstat (limited to 'modules/services/options.nix')
| -rw-r--r-- | modules/services/options.nix | 33 |
1 files changed, 23 insertions, 10 deletions
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"; } ]; |
