1{ config, pkgs, ... }:
2
3{
4 environment.systemPackages = [ pkgs.kexectools ];
5
6 systemd.services."prepare-kexec" =
7 { description = "Preparation for kexec";
8 wantedBy = [ "kexec.target" ];
9 before = [ "systemd-kexec.service" ];
10 unitConfig.DefaultDependencies = false;
11 serviceConfig.Type = "oneshot";
12 path = [ pkgs.kexectools ];
13 script =
14 ''
15 p=$(readlink -f /nix/var/nix/profiles/system)
16 if ! [ -d $p ]; then exit 1; fi
17 exec kexec --load $p/kernel --initrd=$p/initrd --append="$(cat $p/kernel-params) init=$p/init"
18 '';
19 };
20
21}