| # Sketchy little module to renamei interfaces by MAC. |
| # This only works on startup. |
| |
| { config, lib, pkgs, ... }: |
| |
| with lib; |
| let |
| cfg = config.hscloud.renameInterfaces; |
| in { |
| options.hscloud.renameInterfaces = mkOption { |
| type = with types; attrsOf (submodule { |
| options = { |
| mac = mkOption { |
| type = types.str; |
| description = '' |
| MAC address to match by, in hexadecimal form (ie. ac:1f:6b:1c:d7:ae). |
| ''; |
| }; |
| }; |
| }); |
| description = '' |
| Interfaces to rename by property (eg. MAC address). |
| ''; |
| }; |
| |
| config.services.udev.extraRules = concatStringsSep "\n" (mapAttrsToList (n: v: '' |
| ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="${v.mac}", ATTR{addr_assign_type}=="0", NAME="${n}" |
| '') cfg); |
| } |