forked from DGNum/liminix
shell-customization #4
3 changed files with 15 additions and 3 deletions
|
@ -28,6 +28,12 @@ in
|
|||
type = types.str;
|
||||
description = "bridge interface name to create";
|
||||
};
|
||||
|
||||
macAddressFromInterface = mkOption {
|
||||
type = types.nullOr liminix.lib.types.service;
|
||||
default = null;
|
||||
description = "reuse mac address from an existing interface service";
|
||||
};
|
||||
};
|
||||
members = config.system.callService ./members.nix {
|
||||
primary = mkOption {
|
||||
|
|
|
@ -3,15 +3,20 @@
|
|||
, ifwait
|
||||
, lib
|
||||
}:
|
||||
{ ifname } :
|
||||
{ ifname, macAddressFromInterface ? null } :
|
||||
let
|
||||
inherit (liminix.services) bundle oneshot;
|
||||
inherit (lib) mkOption types;
|
||||
inherit (lib) mkOption types optional;
|
||||
in oneshot rec {
|
||||
name = "${ifname}.link";
|
||||
up = ''
|
||||
ip link add name ${ifname} type bridge
|
||||
${if macAddressFromInterface == null then
|
||||
"ip link add name ${ifname} type bridge"
|
||||
else
|
||||
"ip link add name ${ifname} address $(output ${macAddressFromInterface} ether) type bridge"}
|
||||
${liminix.networking.ifup name ifname}
|
||||
'';
|
||||
down = "ip link set down dev ${ifname}";
|
||||
|
||||
dependencies = optional (macAddressFromInterface != null) macAddressFromInterface;
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
ip link set up dev ${ifname}
|
||||
(in_outputs ${name}
|
||||
echo ${ifname} > ifname
|
||||
cat /sys/class/net/${ifname}/address > ether
|
||||
)
|
||||
'';
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue