summary refs log tree commit diff
path: root/nixos/lib/systemd-lib.nix
diff options
context:
space:
mode:
authorRaito Bezarius <masterancpp@gmail.com>2023-07-04 01:21:35 +0200
committerRaito Bezarius <masterancpp@gmail.com>2023-07-04 01:21:35 +0200
commit4d38fa043b5e9d3b5ffd541ac96c5627f92d6ae0 (patch)
treed8e5335d68e0e4cb3cef6366f0d2f47c3aa7d8b1 /nixos/lib/systemd-lib.nix
parent9cf56143a3078dc2e933b9df48372e721693c3c2 (diff)
downloadnixpkgs-4d38fa043b5e9d3b5ffd541ac96c5627f92d6ae0.tar
nixpkgs-4d38fa043b5e9d3b5ffd541ac96c5627f92d6ae0.tar.gz
nixpkgs-4d38fa043b5e9d3b5ffd541ac96c5627f92d6ae0.tar.bz2
nixpkgs-4d38fa043b5e9d3b5ffd541ac96c5627f92d6ae0.tar.lz
nixpkgs-4d38fa043b5e9d3b5ffd541ac96c5627f92d6ae0.tar.xz
nixpkgs-4d38fa043b5e9d3b5ffd541ac96c5627f92d6ae0.tar.zst
nixpkgs-4d38fa043b5e9d3b5ffd541ac96c5627f92d6ae0.zip
nixos/networkd: support netdev MAC addresses
According to systemd.netdev manpage:

```
MACAddress=
           Specifies the MAC address to use for the device, or takes the special value "none". When "none", systemd-networkd does not request the MAC address for
           the device, and the kernel will assign a random MAC address. For "tun", "tap", or "l2tp" devices, the MACAddress= setting in the [NetDev] section is
           not supported and will be ignored. Please specify it in the [Link] section of the corresponding systemd.network(5) file. If this option is not set,
           "vlan" device inherits the MAC address of the master interface. For other kind of netdevs, if this option is not set, then the MAC address is
           generated based on the interface name and the machine-id(5).

           Note, even if "none" is specified, systemd-udevd will assign the persistent MAC address for the device, as 99-default.link has
           MACAddressPolicy=persistent. So, it is also necessary to create a custom .link file for the device, if the MAC address assignment is not desired.
```

Therefore, `none` is an acceptable value.
Diffstat (limited to 'nixos/lib/systemd-lib.nix')
-rw-r--r--nixos/lib/systemd-lib.nix7
1 files changed, 6 insertions, 1 deletions
diff --git a/nixos/lib/systemd-lib.nix b/nixos/lib/systemd-lib.nix
index eb2bcb9d3b9..61ac04eff28 100644
--- a/nixos/lib/systemd-lib.nix
+++ b/nixos/lib/systemd-lib.nix
@@ -63,7 +63,12 @@ in rec {
 
   assertMacAddress = name: group: attr:
     optional (attr ? ${name} && ! isMacAddress attr.${name})
-      "Systemd ${group} field `${name}' must be a valid mac address.";
+      "Systemd ${group} field `${name}' must be a valid MAC address.";
+
+  assertNetdevMacAddress = name: group: attr:
+    optional (attr ? ${name} && (! isMacAddress attr.${name} || attr.${name} != "none"))
+      "Systemd ${group} field `${name}` must be a valid MAC address or the special value `none`.";
+
 
   isPort = i: i >= 0 && i <= 65535;