nixos/networking-interfaces: set default value for virtualType

This commit is contained in:
rnhmjoj 2018-01-31 05:51:09 +01:00
parent dc52fc6dda
commit 46c158a32f
No known key found for this signature in database
GPG Key ID: 91BE884FBA4B591A
3 changed files with 17 additions and 21 deletions

View File

@ -230,9 +230,7 @@ let
RemainAfterExit = true; RemainAfterExit = true;
}; };
script = '' script = ''
ip tuntap add dev "${i.name}" \ ip tuntap add dev "${i.name}" mode "${i.virtualType}" user "${i.virtualOwner}"
${optionalString (i.virtualType != null) "mode ${i.virtualType}"} \
user "${i.virtualOwner}"
''; '';
postStop = '' postStop = ''
ip link del ${i.name} || true ip link del ${i.name} || true

View File

@ -74,17 +74,13 @@ in
networks."99-main" = genericNetwork mkDefault; networks."99-main" = genericNetwork mkDefault;
} }
(mkMerge (flip map interfaces (i: { (mkMerge (flip map interfaces (i: {
netdevs = mkIf i.virtual ( netdevs = mkIf i.virtual ({
let
devType = if i.virtualType != null then i.virtualType
else (if hasPrefix "tun" i.name then "tun" else "tap");
in {
"40-${i.name}" = { "40-${i.name}" = {
netdevConfig = { netdevConfig = {
Name = i.name; Name = i.name;
Kind = devType; Kind = i.virtualType;
}; };
"${devType}Config" = optionalAttrs (i.virtualOwner != null) { "${i.virtualType}Config" = optionalAttrs (i.virtualOwner != null) {
User = i.virtualOwner; User = i.virtualOwner;
}; };
}; };

View File

@ -273,11 +273,13 @@ let
}; };
virtualType = mkOption { virtualType = mkOption {
default = null; default = if hasPrefix "tun" name then "tun" else "tap";
type = with types; nullOr (enum [ "tun" "tap" ]); defaultText = ''if hasPrefix "tun" name then "tun" else "tap"'';
type = with types; enum [ "tun" "tap" ];
description = '' description = ''
The explicit type of interface to create. Accepts tun or tap strings. The type of interface to create.
Also accepts null to implicitly detect the type of device. The default is TUN for an interface name starting
with "tun", otherwise TAP.
''; '';
}; };