aboutsummaryrefslogtreecommitdiff
path: root/modules/system/options.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/system/options.nix')
-rw-r--r--modules/system/options.nix56
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.";
+ }
+ ];
}