aboutsummaryrefslogtreecommitdiffstats
path: root/modules/system
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-05-24 13:58:41 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-05-24 13:58:41 +0200
commit4b28aa44913f18e57ffa0e40909642368b1a0f2d (patch)
treef0d17bb4013426f9e6d46b6f8a8824db66935c94 /modules/system
parentfix(modules/system/{hardware,fonts}): Fix typesystem stuff (diff)
downloadnixos-config-4b28aa44913f18e57ffa0e40909642368b1a0f2d.zip
fix(modules/system/networking): Enforce mutually exclusivity between networkd and NetworkManager
Diffstat (limited to 'modules/system')
-rw-r--r--modules/system/networking/default.nix107
1 files changed, 57 insertions, 50 deletions
diff --git a/modules/system/networking/default.nix b/modules/system/networking/default.nix
index aaaab782..c5f0e491 100644
--- a/modules/system/networking/default.nix
+++ b/modules/system/networking/default.nix
@@ -8,8 +8,18 @@ in {
options.soispha.networking = {
enable = lib.mkEnableOption "networking";
- networkManager = {
- enable = lib.mkEnableOption "NetworkManager";
+ mode = lib.mkOption {
+ type = lib.types.enum ["NetworkManager" "systemd-networkd"];
+ example = "systemd-networkd";
+ description = "The daemon used to setup networking.";
+ };
+
+ userName = lib.mkOption {
+ type = lib.types.str;
+ default = "soispha";
+ description = ''
+ The name of the user to allow access to the configured network
+ '';
};
hostName = lib.mkOption {
@@ -19,63 +29,60 @@ in {
};
};
- config =
- lib.mkIf cfg.enable {
- systemd.network = {
- networks = {
- "tap0" = {
- name = "tap0";
- bridge = [
- "virbr0"
- ];
- };
- "enp4s0" = {
- name = "enp4s0";
- networkConfig = {
- DHCP = "yes";
- DNSOverTLS = "yes";
- DNSSEC = "yes";
- };
- bridge = [
- "virbr0"
- ];
+ config = {
+ networking.hostName = cfg.hostName;
+
+ systemd.network = lib.mkIf (cfg.mode == "systemd-networkd") {
+ networks = {
+ "tap0" = {
+ name = "tap0";
+ bridge = [
+ "virbr0"
+ ];
+ };
+ "enp4s0" = {
+ name = "enp4s0";
+ networkConfig = {
+ DHCP = "yes";
+ DNSOverTLS = "yes";
+ DNSSEC = "yes";
};
+ bridge = [
+ "virbr0"
+ ];
};
+ };
- netdevs = {
- "tap0" = {
- netdevConfig = {
- Name = "tap0";
- Kind = "tap";
- };
- tapConfig = {
- User = "${config.users.users.soispha.uid}";
- Group = "libvirtd";
- };
+ netdevs = {
+ "tap0" = {
+ netdevConfig = {
+ Name = "tap0";
+ Kind = "tap";
};
- "virbr0" = {
- netdevConfig = {
- Name = "br0";
- Kind = "bridge";
- };
+ tapConfig = {
+ User = config.users.users."${cfg.userName}".uid;
+ Group = "libvirtd";
};
};
- };
- }
- // lib.mkIf cfg.networkManager.enable {
- networking = {
- networkmanager = {
- enable = true;
- dns = "default";
- wifi = {
- powersave = true;
+ "virbr0" = {
+ netdevConfig = {
+ Name = "br0";
+ Kind = "bridge";
};
};
- inherit (cfg) hostName;
};
+ };
- users.users.soispha.extraGroups = [
- "networkmanager" # allows to configure networkmanager as this user
- ];
+ networking.networkmanager = lib.mkIf (cfg.mode == "NetworkManager") {
+ enable = true;
+ dns = "default";
+ wifi = {
+ powersave = true;
+ };
};
+
+ users.users."${cfg.userName}".extraGroups = lib.mkIf (cfg.mode == "NetworkManager") [
+ "networkmanager" # allows to configure NetworkManager as this user
+ ];
+ };
}