diff --git a/modules/nixos/profiles/desktop.nix b/modules/nixos/profiles/desktop.nix index f5eae38..870f7fc 100644 --- a/modules/nixos/profiles/desktop.nix +++ b/modules/nixos/profiles/desktop.nix @@ -16,7 +16,7 @@ in { desktop.plasma.enable = true; multimedia.enable = true; - networking.networkmanager.enable = true; + networking.networkmanager = { }; }; }; }; diff --git a/modules/nixos/system/networking/default.nix b/modules/nixos/system/networking/default.nix index 5b892a1..cdb08de 100644 --- a/modules/nixos/system/networking/default.nix +++ b/modules/nixos/system/networking/default.nix @@ -1,9 +1,14 @@ -{ ... }: { +{ lib, ... }: { imports = [ ./networkmanager.nix ]; + + options.cyclamen.system.networking = lib.mkOption { + type = lib.types.attrTag {}; + }; config = { + # always use networkd if declarative networking is selected networking = { useNetworkd = true; }; diff --git a/modules/nixos/system/networking/networkmanager.nix b/modules/nixos/system/networking/networkmanager.nix index 30de1c3..149679d 100644 --- a/modules/nixos/system/networking/networkmanager.nix +++ b/modules/nixos/system/networking/networkmanager.nix @@ -1,11 +1,20 @@ { config, lib, ... }: let cfg = config.cyclamen.system.networking.networkmanager; in { - options.cyclamen.system.networking.networkmanager = { - enable = lib.mkEnableOption "NetworkManager network management daemon"; + options.cyclamen.system.networking = lib.mkOption { + type = lib.types.attrTag { + networkmanager = lib.mkOption { + # TODO: ummm ... do i need any config for networkmanager? if not ... what do we put here ... + type = lib.types.attrsOf lib.types.anything; + }; + }; }; - config = lib.mkIf cfg.enable { + config = lib.mkIf (cfg != null) { + # cyclamen always uses networkd as the backend for the declarative networking config. disabling networkd thus disables the declarative networking all together + # we do that since we want networkmanager to manage the networking instead + systemd.network.enable = lib.mkForce false; + networking.networkmanager = { enable = true; dns = "systemd-resolved";