diff options
| author | Collin Williams <96917990+bluedragon1221@users.noreply.github.com> | 2026-02-27 07:57:56 -0600 |
|---|---|---|
| committer | Collin Williams <96917990+bluedragon1221@users.noreply.github.com> | 2026-02-27 07:57:56 -0600 |
| commit | c303524a359d2be84d825acebbf8d7e2ddd8f24a (patch) | |
| tree | af7a7537703b7989dff65478a26f5637c0d1abbd /modules/system/options.nix | |
| parent | 1932c82d72fb74971b180f84e06bcd1724e6271b (diff) | |
refactor network config, add wireguard connection to vps
Diffstat (limited to 'modules/system/options.nix')
| -rw-r--r-- | modules/system/options.nix | 56 |
1 files changed, 36 insertions, 20 deletions
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:<wifi 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:<wifi 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."; + } + ]; } |
