49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
		
		
			
		
	
	
			49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| 
								 | 
							
								import ./make-test-python.nix (
							 | 
						||
| 
								 | 
							
								  { pkgs, lib, ... }:
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    name = "nar-serve";
							 | 
						||
| 
								 | 
							
								    meta.maintainers = [ lib.maintainers.rizary ];
							 | 
						||
| 
								 | 
							
								    nodes =
							 | 
						||
| 
								 | 
							
								      {
							 | 
						||
| 
								 | 
							
								        server = { pkgs, ... }: {
							 | 
						||
| 
								 | 
							
								          services.nginx = {
							 | 
						||
| 
								 | 
							
								            enable = true;
							 | 
						||
| 
								 | 
							
								            virtualHosts.default.root = "/var/www";
							 | 
						||
| 
								 | 
							
								          };
							 | 
						||
| 
								 | 
							
								          services.nar-serve = {
							 | 
						||
| 
								 | 
							
								            enable = true;
							 | 
						||
| 
								 | 
							
								            # Connect to the localhost nginx instead of the default
							 | 
						||
| 
								 | 
							
								            # https://cache.nixos.org
							 | 
						||
| 
								 | 
							
								            cacheURL = "http://localhost/";
							 | 
						||
| 
								 | 
							
								          };
							 | 
						||
| 
								 | 
							
								          environment.systemPackages = [
							 | 
						||
| 
								 | 
							
								            pkgs.hello
							 | 
						||
| 
								 | 
							
								            pkgs.curl
							 | 
						||
| 
								 | 
							
								          ];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								          networking.firewall.allowedTCPPorts = [ 8383 ];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								          # virtualisation.diskSize = 2 * 1024;
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								    testScript = ''
							 | 
						||
| 
								 | 
							
								      start_all()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      # Create a fake cache with Nginx service the static files
							 | 
						||
| 
								 | 
							
								      server.succeed(
							 | 
						||
| 
								 | 
							
								          "nix copy --to file:///var/www ${pkgs.hello}"
							 | 
						||
| 
								 | 
							
								      )
							 | 
						||
| 
								 | 
							
								      server.wait_for_unit("nginx.service")
							 | 
						||
| 
								 | 
							
								      server.wait_for_open_port(80)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      # Check that nar-serve can return the content of the derivation
							 | 
						||
| 
								 | 
							
								      drvName = os.path.basename("${pkgs.hello}")
							 | 
						||
| 
								 | 
							
								      drvHash = drvName.split("-")[0]
							 | 
						||
| 
								 | 
							
								      server.wait_for_unit("nar-serve.service")
							 | 
						||
| 
								 | 
							
								      server.succeed(
							 | 
						||
| 
								 | 
							
								          "curl -o hello -f http://localhost:8383/nix/store/{}/bin/hello".format(drvHash)
							 | 
						||
| 
								 | 
							
								      )
							 | 
						||
| 
								 | 
							
								    '';
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								)
							 |