28 lines
		
	
	
		
			988 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
		
		
			
		
	
	
			28 lines
		
	
	
		
			988 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
| 
								 | 
							
								{ system ? builtins.currentSystem
							 | 
						||
| 
								 | 
							
								, pkgs ? import ../.. { inherit system; }
							 | 
						||
| 
								 | 
							
								}:
							 | 
						||
| 
								 | 
							
								with import ../lib/testing.nix { inherit system; };
							 | 
						||
| 
								 | 
							
								let boolToString = x: if x then "yes" else "no"; in
							 | 
						||
| 
								 | 
							
								let testWhenSetTo = predictable: withNetworkd:
							 | 
						||
| 
								 | 
							
								makeTest {
							 | 
						||
| 
								 | 
							
								  name = "${if predictable then "" else "un"}predictableInterfaceNames${if withNetworkd then "-with-networkd" else ""}";
							 | 
						||
| 
								 | 
							
								  meta = {};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  machine = { config, pkgs, ... }: {
							 | 
						||
| 
								 | 
							
								    networking.usePredictableInterfaceNames = pkgs.stdenv.lib.mkForce predictable;
							 | 
						||
| 
								 | 
							
								    networking.useNetworkd = withNetworkd;
							 | 
						||
| 
								 | 
							
								    networking.dhcpcd.enable = !withNetworkd;
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  testScript = ''
							 | 
						||
| 
								 | 
							
								    print $machine->succeed("ip link");
							 | 
						||
| 
								 | 
							
								    $machine->succeed("ip link show ${if predictable then "ens3" else "eth0"}");
							 | 
						||
| 
								 | 
							
								    $machine->fail("ip link show ${if predictable then "eth0" else "ens3"}");
							 | 
						||
| 
								 | 
							
								  '';
							 | 
						||
| 
								 | 
							
								}; in
							 | 
						||
| 
								 | 
							
								with pkgs.stdenv.lib.lists;
							 | 
						||
| 
								 | 
							
								with pkgs.stdenv.lib.attrsets;
							 | 
						||
| 
								 | 
							
								listToAttrs (map (drv: nameValuePair drv.name drv) (
							 | 
						||
| 
								 | 
							
								crossLists testWhenSetTo [[true false] [true false]]
							 | 
						||
| 
								 | 
							
								))
							 |