From c303524a359d2be84d825acebbf8d7e2ddd8f24a Mon Sep 17 00:00:00 2001 From: Collin Williams <96917990+bluedragon1221@users.noreply.github.com> Date: Fri, 27 Feb 2026 07:57:56 -0600 Subject: refactor network config, add wireguard connection to vps --- modules/system/options.nix | 56 +++++++++++++++++++++++++++++----------------- 1 file changed, 36 insertions(+), 20 deletions(-) (limited to 'modules/system/options.nix') diff --git a/modules/system/options.nix b/modules/system/options.nix index 72d0392..d827387 100644 --- a/modules/system/options.nix +++ b/modules/system/options.nix @@ -27,36 +27,42 @@ in { }; network = { - iwd.enable = mkEnableOption "lightweight wifi daemon"; - networkmanager.enable = mkEnableOption "heavier wifi daemon"; - networkd = { - enable = mkEnableOption "use systemd-networkd"; - ssid = mkOption { - description = "SSID for this network"; - type = lib.types.str; - }; - pskFile = mkOption { - description = "Absolute path to a file containing the pre-shared key for this network in the form `psk:`"; - type = lib.types.str; - example = "/run/secrets.d/wifi-psk"; - }; + static = lib.mkOption { + description = "Set a static IP address for this device on this network. Leave unset to use DHCP"; + type = lib.types.nullOr (lib.types.submodule { + options = { + ip = mkOption { + description = "IP address"; + type = ipAddrCidr; + }; + gateway = mkOption { + description = "default gateway"; + type = ipAddr; + }; + }; + }); + default = null; + }; + wireless = { static = lib.mkOption { - description = "Set a static IP address for this device on this network. Leave unset to use DHCP"; + description = "Set a preconfigured SSID and PSK for the wireless config"; type = lib.types.nullOr (lib.types.submodule { options = { - ip = mkOption { - description = "IP address"; - type = ipAddrCidr; + ssid = mkOption { + description = "SSID for this network"; + type = lib.types.str; }; - gateway = mkOption { - description = "default gateway"; - type = ipAddr; + pskFile = mkOption { + description = "Absolute path to a file containing the pre-shared key for this network in the form `psk:`"; + type = lib.types.str; + example = "/run/secrets.d/wifi-psk"; }; }; }); default = null; }; + dynamic = lib.mkEnableOption "Enable dynamically joining wireless networks with iwd"; }; tailscale.enable = mkEnableOption "tailscale"; @@ -65,4 +71,14 @@ in { audio.enable = mkEnableOption "pipewire and wireplumber"; bluetooth.enable = mkEnableOption "bluetooth"; }; + + config.assertions = [ + { + assertion = let + cfg = config.collinux.system.network.wireless; + in + !(cfg.static != null && cfg.dynamic); + message = "Configure a static wireless connection or a dynamic one; not both."; + } + ]; } -- cgit v1.3.1