48 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
		
		
			
		
	
	
			48 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| 
								 | 
							
								import ./make-test-python.nix ({ pkgs, ... }:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								let
							 | 
						||
| 
								 | 
							
								  exampleScript = pkgs.writeTextFile {
							 | 
						||
| 
								 | 
							
								    name = "example.sh";
							 | 
						||
| 
								 | 
							
								    text = ''
							 | 
						||
| 
								 | 
							
								      #! ${pkgs.runtimeShell} -e
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      while true; do
							 | 
						||
| 
								 | 
							
								          echo "Example script running" >&2
							 | 
						||
| 
								 | 
							
								          ${pkgs.coreutils}/bin/sleep 1
							 | 
						||
| 
								 | 
							
								      done
							 | 
						||
| 
								 | 
							
								    '';
							 | 
						||
| 
								 | 
							
								    executable = true;
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  unitFile = pkgs.writeTextFile {
							 | 
						||
| 
								 | 
							
								    name = "example.service";
							 | 
						||
| 
								 | 
							
								    text = ''
							 | 
						||
| 
								 | 
							
								      [Unit]
							 | 
						||
| 
								 | 
							
								      Description=Example systemd service unit file
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      [Service]
							 | 
						||
| 
								 | 
							
								      ExecStart=${exampleScript}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      [Install]
							 | 
						||
| 
								 | 
							
								      WantedBy=multi-user.target
							 | 
						||
| 
								 | 
							
								    '';
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								in
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  name = "systemd-unit-path";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  machine = { pkgs, lib, ... }: {
							 | 
						||
| 
								 | 
							
								    boot.extraSystemdUnitPaths = [ "/etc/systemd-rw/system" ];
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  testScript = ''
							 | 
						||
| 
								 | 
							
								    machine.wait_for_unit("multi-user.target")
							 | 
						||
| 
								 | 
							
								    machine.succeed("mkdir -p /etc/systemd-rw/system")
							 | 
						||
| 
								 | 
							
								    machine.succeed(
							 | 
						||
| 
								 | 
							
								        "cp ${unitFile} /etc/systemd-rw/system/example.service"
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    machine.succeed("systemctl start example.service")
							 | 
						||
| 
								 | 
							
								    machine.succeed("systemctl status example.service | grep 'Active: active'")
							 | 
						||
| 
								 | 
							
								  '';
							 | 
						||
| 
								 | 
							
								})
							 |