21 lines
		
	
	
		
			610 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
		
		
			
		
	
	
			21 lines
		
	
	
		
			610 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
| 
								 | 
							
								{ config, pkgs, ... }:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  environment.systemPackages = [ pkgs.kexectools ];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  systemd.services."prepare-kexec" =
							 | 
						||
| 
								 | 
							
								    { description = "Preparation for kexec";
							 | 
						||
| 
								 | 
							
								      wantedBy = [ "kexec.target" ];
							 | 
						||
| 
								 | 
							
								      before = [ "systemd-kexec.service" ];
							 | 
						||
| 
								 | 
							
								      unitConfig.DefaultDependencies = false;
							 | 
						||
| 
								 | 
							
								      serviceConfig.Type = "oneshot";
							 | 
						||
| 
								 | 
							
								      path = [ pkgs.kexectools ];
							 | 
						||
| 
								 | 
							
								      script =
							 | 
						||
| 
								 | 
							
								        ''
							 | 
						||
| 
								 | 
							
								          p=$(readlink -f /nix/var/nix/profiles/system)
							 | 
						||
| 
								 | 
							
								          if ! [ -d $p ]; then exit 1; fi
							 | 
						||
| 
								 | 
							
								          exec kexec --load $p/kernel --initrd=$p/initrd --append="$(cat $p/kernel-params) init=$p/init"
							 | 
						||
| 
								 | 
							
								        '';
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 |