summary refs log tree commit diff
path: root/nixos/modules/tasks
diff options
context:
space:
mode:
authorMajiir Paktu <majiir@nabaal.net>2023-08-25 10:44:43 -0400
committerMajiir Paktu <majiir@nabaal.net>2023-08-25 10:44:43 -0400
commit2cb4671ebcfbe75cff7bca5975ff7202e3fb52de (patch)
tree4f4a2b9c9de3a6cb0fd1b60ce46b4f7deea2e84b /nixos/modules/tasks
parent1f845ebc343350c18e9d292c6999174b9c63fad2 (diff)
downloadnixpkgs-2cb4671ebcfbe75cff7bca5975ff7202e3fb52de.tar
nixpkgs-2cb4671ebcfbe75cff7bca5975ff7202e3fb52de.tar.gz
nixpkgs-2cb4671ebcfbe75cff7bca5975ff7202e3fb52de.tar.bz2
nixpkgs-2cb4671ebcfbe75cff7bca5975ff7202e3fb52de.tar.lz
nixpkgs-2cb4671ebcfbe75cff7bca5975ff7202e3fb52de.tar.xz
nixpkgs-2cb4671ebcfbe75cff7bca5975ff7202e3fb52de.tar.zst
nixpkgs-2cb4671ebcfbe75cff7bca5975ff7202e3fb52de.zip
nixos/network-interfaces-systemd: add VLAN interfaces in systemd-initrd
Diffstat (limited to 'nixos/modules/tasks')
-rw-r--r--nixos/modules/tasks/network-interfaces-systemd.nix34
1 files changed, 21 insertions, 13 deletions
diff --git a/nixos/modules/tasks/network-interfaces-systemd.nix b/nixos/modules/tasks/network-interfaces-systemd.nix
index dfa883a2c33..adbc7c80c41 100644
--- a/nixos/modules/tasks/network-interfaces-systemd.nix
+++ b/nixos/modules/tasks/network-interfaces-systemd.nix
@@ -173,6 +173,19 @@ let
     }];
   }));
 
+  vlanNetworks = mkMerge (flip mapAttrsToList cfg.vlans (name: vlan: {
+    netdevs."40-${name}" = {
+      netdevConfig = {
+        Name = name;
+        Kind = "vlan";
+      };
+      vlanConfig.Id = vlan.id;
+    };
+    networks."40-${vlan.interface}" = (mkMerge [ (genericNetwork (mkOverride 999)) {
+      vlan = [ name ];
+    } ]);
+  }));
+
 in
 
 {
@@ -182,7 +195,13 @@ in
     # Note this is if initrd.network.enable, not if
     # initrd.systemd.network.enable. By setting the latter and not the
     # former, the user retains full control over the configuration.
-    boot.initrd.systemd.network = mkMerge [(genericDhcpNetworks true) interfaceNetworks];
+    boot.initrd.systemd.network = mkMerge [
+      (genericDhcpNetworks true)
+      interfaceNetworks
+      vlanNetworks
+    ];
+    boot.initrd.availableKernelModules =
+      optional (cfg.vlans != {}) "8021q";
   })
 
   (mkIf cfg.useNetworkd {
@@ -377,18 +396,7 @@ in
           } ]);
         };
       })))
-      (mkMerge (flip mapAttrsToList cfg.vlans (name: vlan: {
-        netdevs."40-${name}" = {
-          netdevConfig = {
-            Name = name;
-            Kind = "vlan";
-          };
-          vlanConfig.Id = vlan.id;
-        };
-        networks."40-${vlan.interface}" = (mkMerge [ (genericNetwork (mkOverride 999)) {
-          vlan = [ name ];
-        } ]);
-      })))
+      vlanNetworks
     ];
 
     # We need to prefill the slaved devices with networking options