about summary refs log tree commit diff stats
path: root/modules/by-name/ne/networking/module.nix
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-10-24 14:44:27 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-10-24 14:44:27 +0200
commitf2ed99cd297040568170fb93e7481919060f29e7 (patch)
treea983e405f4a347519c7e31d6f5b17940d163489c /modules/by-name/ne/networking/module.nix
parentfeat(modules/nix): Switch to `lix` (diff)
downloadnixos-config-f2ed99cd297040568170fb93e7481919060f29e7.tar.gz
nixos-config-f2ed99cd297040568170fb93e7481919060f29e7.zip
refactor(modules/impermanence): Move all optional dirs to their modules
This increases the locality of configurations and makes it easier to
see, what happens, when you enable a module.
Diffstat (limited to 'modules/by-name/ne/networking/module.nix')
-rw-r--r--modules/by-name/ne/networking/module.nix107
1 files changed, 59 insertions, 48 deletions
diff --git a/modules/by-name/ne/networking/module.nix b/modules/by-name/ne/networking/module.nix
index c5f0e491..8448e9b3 100644
--- a/modules/by-name/ne/networking/module.nix
+++ b/modules/by-name/ne/networking/module.nix
@@ -29,60 +29,71 @@ in {
     };
   };
 
-  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";
+  config =
+    lib.mkIf cfg.enable
+    (lib.modules.mkMerge [
+      {
+        networking.hostName = cfg.hostName;
+      }
+      (lib.mkIf (cfg.mode == "systemd-networkd") {
+        systemd.network = {
+          networks = {
+            "tap0" = {
+              name = "tap0";
+              bridge = [
+                "virbr0"
+              ];
+            };
+            "enp4s0" = {
+              name = "enp4s0";
+              networkConfig = {
+                DHCP = "yes";
+                DNSOverTLS = "yes";
+                DNSSEC = "yes";
+              };
+              bridge = [
+                "virbr0"
+              ];
+            };
           };
-          bridge = [
-            "virbr0"
-          ];
-        };
-      };
 
-      netdevs = {
-        "tap0" = {
-          netdevConfig = {
-            Name = "tap0";
-            Kind = "tap";
-          };
-          tapConfig = {
-            User = config.users.users."${cfg.userName}".uid;
-            Group = "libvirtd";
+          netdevs = {
+            "tap0" = {
+              netdevConfig = {
+                Name = "tap0";
+                Kind = "tap";
+              };
+              tapConfig = {
+                User = config.users.users."${cfg.userName}".uid;
+                Group = "libvirtd";
+              };
+            };
+            "virbr0" = {
+              netdevConfig = {
+                Name = "br0";
+                Kind = "bridge";
+              };
+            };
           };
         };
-        "virbr0" = {
-          netdevConfig = {
-            Name = "br0";
-            Kind = "bridge";
+      })
+
+      (lib.mkIf (cfg.mode == "NetworkManager") {
+        networking.networkmanager = {
+          enable = true;
+          dns = "default";
+          wifi = {
+            powersave = true;
           };
         };
-      };
-    };
 
-    networking.networkmanager = lib.mkIf (cfg.mode == "NetworkManager") {
-      enable = true;
-      dns = "default";
-      wifi = {
-        powersave = true;
-      };
-    };
+        soispha.impermanence.directories = [
+          "/etc/NetworkManager"
+        ];
 
-    users.users."${cfg.userName}".extraGroups = lib.mkIf (cfg.mode == "NetworkManager") [
-      "networkmanager" # allows to configure NetworkManager as this user
-    ];
-  };
+        users.users."${cfg.userName}".extraGroups = [
+          "networkmanager" # allows to configure NetworkManager as this user
+        ];
+      })
+    ]);
 }