53 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
		
		
			
		
	
	
			53 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| 
								 | 
							
								# Test for NixOS' container support.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import ./make-test.nix ({ pkgs, ...} : {
							 | 
						||
| 
								 | 
							
								  name = "containers-hosts";
							 | 
						||
| 
								 | 
							
								  meta = with pkgs.stdenv.lib.maintainers; {
							 | 
						||
| 
								 | 
							
								    maintainers = [ montag451 ];
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  machine =
							 | 
						||
| 
								 | 
							
								    { config, pkgs, lib, ... }:
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								      virtualisation.memorySize = 256;
							 | 
						||
| 
								 | 
							
								      virtualisation.vlans = [];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      networking.bridges.br0.interfaces = [];
							 | 
						||
| 
								 | 
							
								      networking.interfaces.br0 = {
							 | 
						||
| 
								 | 
							
								        ip4 = [ { address = "10.11.0.254"; prefixLength = 24; } ];
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      # Force /etc/hosts to be the only source for host name resolution
							 | 
						||
| 
								 | 
							
								      environment.etc."nsswitch.conf".text = lib.mkForce ''
							 | 
						||
| 
								 | 
							
								        hosts: files
							 | 
						||
| 
								 | 
							
								      '';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      containers.simple = {
							 | 
						||
| 
								 | 
							
								        autoStart = true;
							 | 
						||
| 
								 | 
							
								        privateNetwork = true;
							 | 
						||
| 
								 | 
							
								        localAddress = "10.10.0.1";
							 | 
						||
| 
								 | 
							
								        hostAddress = "10.10.0.254";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        config = {};
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      containers.netmask = {
							 | 
						||
| 
								 | 
							
								        autoStart = true;
							 | 
						||
| 
								 | 
							
								        privateNetwork = true;
							 | 
						||
| 
								 | 
							
								        hostBridge = "br0";
							 | 
						||
| 
								 | 
							
								        localAddress = "10.11.0.1/24";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        config = {};
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  testScript = ''
							 | 
						||
| 
								 | 
							
								    startAll;
							 | 
						||
| 
								 | 
							
								    $machine->waitForUnit("default.target");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    # Ping the containers using the entries added in /etc/hosts
							 | 
						||
| 
								 | 
							
								    $machine->succeed("ping -n -c 1 simple.containers");
							 | 
						||
| 
								 | 
							
								    $machine->succeed("ping -n -c 1 netmask.containers");
							 | 
						||
| 
								 | 
							
								  '';
							 | 
						||
| 
								 | 
							
								})
							 |