mirror of
https://github.com/Swarsel/.dotfiles.git
synced 2026-04-14 13:19:09 +02:00
116 lines
2.9 KiB
Nix
116 lines
2.9 KiB
Nix
{ lib, config, globals, ... }:
|
|
{
|
|
|
|
systemd.network = {
|
|
wait-online.anyInterface = true;
|
|
netdevs = {
|
|
"10-veth" = {
|
|
netdevConfig = {
|
|
Kind = "veth";
|
|
Name = "veth-br";
|
|
};
|
|
peerConfig = {
|
|
Name = "veth-int";
|
|
};
|
|
};
|
|
"20-br" = {
|
|
netdevConfig = {
|
|
Kind = "bridge";
|
|
Name = "br";
|
|
};
|
|
};
|
|
} // lib.flip lib.concatMapAttrs globals.networks.home-lan.vlans (
|
|
vlanName: vlanCfg: {
|
|
"30-vlan-${vlanName}" = {
|
|
netdevConfig = {
|
|
Kind = "vlan";
|
|
Name = "vlan-${vlanName}";
|
|
};
|
|
vlanConfig.Id = vlanCfg.id;
|
|
};
|
|
"40-me-${vlanName}" = {
|
|
netdevConfig = {
|
|
Name = "me-${vlanName}";
|
|
Kind = "macvlan";
|
|
};
|
|
extraConfig = ''
|
|
[MACVLAN]
|
|
Mode=bridge
|
|
'';
|
|
};
|
|
}
|
|
);
|
|
networks = {
|
|
"40-br" = {
|
|
matchConfig.Name = "br";
|
|
bridgeConfig = { };
|
|
linkConfig = {
|
|
ActivationPolicy = "always-up";
|
|
RequiredForOnline = "no";
|
|
};
|
|
networkConfig = {
|
|
ConfigureWithoutCarrier = true;
|
|
LinkLocalAddressing = "no";
|
|
};
|
|
};
|
|
"15-veth-br" = {
|
|
matchConfig.Name = "veth-br";
|
|
|
|
linkConfig = {
|
|
RequiredForOnline = "no";
|
|
};
|
|
|
|
networkConfig = {
|
|
Bridge = "br";
|
|
};
|
|
};
|
|
"15-veth-int" = {
|
|
matchConfig.Name = "veth-int";
|
|
|
|
linkConfig = {
|
|
ActivationPolicy = "always-up";
|
|
RequiredForOnline = "no";
|
|
};
|
|
|
|
networkConfig = {
|
|
ConfigureWithoutCarrier = true;
|
|
LinkLocalAddressing = "no";
|
|
};
|
|
|
|
vlan = map (name: "vlan-${name}") (builtins.attrNames globals.networks.home-lan.vlans);
|
|
};
|
|
"90-macvtap-ignore" = {
|
|
matchConfig.Kind = "macvtap";
|
|
linkConfig.ActivationPolicy = "manual";
|
|
linkConfig.Unmanaged = "yes";
|
|
};
|
|
} // lib.flip lib.concatMapAttrs globals.networks.home-lan.vlans (
|
|
vlanName: vlanCfg: {
|
|
"30-vlan-${vlanName}" = {
|
|
matchConfig.Name = "vlan-${vlanName}";
|
|
networkConfig.LinkLocalAddressing = "no";
|
|
networkConfig.MACVLAN = "me-${vlanName}";
|
|
linkConfig.RequiredForOnline = "no";
|
|
};
|
|
"40-me-${vlanName}" = {
|
|
address = [
|
|
vlanCfg.hosts.${config.node.name}.cidrv4
|
|
vlanCfg.hosts.${config.node.name}.cidrv6
|
|
];
|
|
matchConfig.Name = "me-${vlanName}";
|
|
networkConfig = {
|
|
IPv4Forwarding = "yes";
|
|
IPv6PrivacyExtensions = "yes";
|
|
IPv6SendRA = true;
|
|
IPv6AcceptRA = false;
|
|
};
|
|
ipv6Prefixes = [
|
|
{ Prefix = vlanCfg.cidrv6; }
|
|
];
|
|
linkConfig.RequiredForOnline = "routable";
|
|
};
|
|
}
|
|
);
|
|
};
|
|
|
|
}
|