summary refs log tree commit diff
path: root/nixos/modules/tasks/network-interfaces-systemd.nix
diff options
context:
space:
mode:
authorMajiir Paktu <majiir@nabaal.net>2023-08-25 13:11:40 -0400
committerMajiir Paktu <majiir@nabaal.net>2023-08-25 13:11:40 -0400
commit1f34babe84854576c936969f8a879403be9f2515 (patch)
tree431d2ca9b5601c1fc2b03da0be7e52c241d3a5ff /nixos/modules/tasks/network-interfaces-systemd.nix
parenta3211ceb47e20a4466b95051bbb047b54a7fdd60 (diff)
downloadnixpkgs-1f34babe84854576c936969f8a879403be9f2515.tar
nixpkgs-1f34babe84854576c936969f8a879403be9f2515.tar.gz
nixpkgs-1f34babe84854576c936969f8a879403be9f2515.tar.bz2
nixpkgs-1f34babe84854576c936969f8a879403be9f2515.tar.lz
nixpkgs-1f34babe84854576c936969f8a879403be9f2515.tar.xz
nixpkgs-1f34babe84854576c936969f8a879403be9f2515.tar.zst
nixpkgs-1f34babe84854576c936969f8a879403be9f2515.zip
nixos/network-interfaces-systemd: add bridge interfaces in systemd-initrd
Diffstat (limited to 'nixos/modules/tasks/network-interfaces-systemd.nix')
-rw-r--r--nixos/modules/tasks/network-interfaces-systemd.nix30
1 files changed, 17 insertions, 13 deletions
diff --git a/nixos/modules/tasks/network-interfaces-systemd.nix b/nixos/modules/tasks/network-interfaces-systemd.nix
index adbc7c80c41..679567cbb73 100644
--- a/nixos/modules/tasks/network-interfaces-systemd.nix
+++ b/nixos/modules/tasks/network-interfaces-systemd.nix
@@ -173,6 +173,20 @@ let
     }];
   }));
 
+  bridgeNetworks = mkMerge (flip mapAttrsToList cfg.bridges (name: bridge: {
+    netdevs."40-${name}" = {
+      netdevConfig = {
+        Name = name;
+        Kind = "bridge";
+      };
+    };
+    networks = listToAttrs (forEach bridge.interfaces (bi:
+      nameValuePair "40-${bi}" (mkMerge [ (genericNetwork (mkOverride 999)) {
+        DHCP = mkOverride 0 (dhcpStr false);
+        networkConfig.Bridge = name;
+      } ])));
+  }));
+
   vlanNetworks = mkMerge (flip mapAttrsToList cfg.vlans (name: vlan: {
     netdevs."40-${name}" = {
       netdevConfig = {
@@ -198,9 +212,11 @@ in
     boot.initrd.systemd.network = mkMerge [
       (genericDhcpNetworks true)
       interfaceNetworks
+      bridgeNetworks
       vlanNetworks
     ];
     boot.initrd.availableKernelModules =
+      optional (cfg.bridges != {}) "bridge" ++
       optional (cfg.vlans != {}) "8021q";
   })
 
@@ -231,19 +247,7 @@ in
       }
       (genericDhcpNetworks false)
       interfaceNetworks
-      (mkMerge (flip mapAttrsToList cfg.bridges (name: bridge: {
-        netdevs."40-${name}" = {
-          netdevConfig = {
-            Name = name;
-            Kind = "bridge";
-          };
-        };
-        networks = listToAttrs (forEach bridge.interfaces (bi:
-          nameValuePair "40-${bi}" (mkMerge [ (genericNetwork (mkOverride 999)) {
-            DHCP = mkOverride 0 (dhcpStr false);
-            networkConfig.Bridge = name;
-          } ])));
-      })))
+      bridgeNetworks
       (mkMerge (flip mapAttrsToList cfg.bonds (name: bond: {
         netdevs."40-${name}" = {
           netdevConfig = {