 cc73a98419
			
		
	
	cc73a98419
	
	
	
		
			
			this means that net devices in devices/foo/default.nix can be specified by their sysfs paths (instead of by "eth0" and "eth1" that may change from one kernel version to the next) and given mnenomic names that are helpful for the hardware. Like "wan" and "lan[1..4]"
		
			
				
	
	
		
			31 lines
		
	
	
		
			630 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			630 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
| {
 | |
|   liminix
 | |
| , ifwait
 | |
| , serviceFns
 | |
| , lib
 | |
| }:
 | |
| {
 | |
|   ifname
 | |
| , devpath ? null
 | |
| , mtu} :
 | |
| # if devpath is supplied, we rename the interface at that
 | |
| # path to have the specified name.
 | |
| let
 | |
|   inherit (liminix.services) longrun oneshot;
 | |
|   inherit (lib) concatStringsSep;
 | |
|   name = "${ifname}.link";
 | |
|   rename = if devpath != null
 | |
|            then ''
 | |
|              oldname=$(cd /sys${devpath} && cd net/ && echo *)
 | |
|              ip link set ''${oldname} name ${ifname}
 | |
|            ''
 | |
|            else "";
 | |
| in oneshot {
 | |
|   inherit name;
 | |
|   up = ''
 | |
|     ${rename}
 | |
|     ${liminix.networking.ifup name ifname}
 | |
|   '';
 | |
|   down = "ip link set down dev ${ifname}";
 | |
| }
 |