38 lines
1,019 B
Nix
38 lines
1,019 B
Nix
|
{ pkgs, ... }:
|
||
|
{
|
||
|
boot = {
|
||
|
initrd = {
|
||
|
systemd = {
|
||
|
enable = true;
|
||
|
services.root-reset = {
|
||
|
description = "Reset root and snapshot last boot";
|
||
|
wantedBy = [ "initrd.target" ];
|
||
|
after = [ "dev-${config.networking.hostName}-root.device" ];
|
||
|
before = [ "sysroot.mount" ];
|
||
|
unitConfig.DefaultDependencies = "no";
|
||
|
serviceConfig.Type = "oneshot";
|
||
|
script = ''
|
||
|
mkdir -p /mnt
|
||
|
mount /dev/${config.networking.hostName}/root /mnt
|
||
|
|
||
|
if [[ -e /mnt/prev ]]; then
|
||
|
btrfs subvolume delete /mnt/prev
|
||
|
fi
|
||
|
|
||
|
btrfs subvolume snapshot /mnt/root /mnt/prev
|
||
|
|
||
|
btrfs subvolume list -o /mnt/root | cut -f9 -d' ' | while read subvolume; do
|
||
|
btrfs subvolume delete "/mnt/$subvolume"
|
||
|
done
|
||
|
|
||
|
btrfs subvolume delete /mnt/root
|
||
|
btrfs subvolume create /mnt/root
|
||
|
|
||
|
umount /mnt
|
||
|
'';
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
}
|