blob: 9915bb1ae07e9a5b996b7e2377dd50e7cbf6d67e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
{ lib, ... }: {
boot.initrd.postDeviceCommands = lib.mkAfter ''
echo "Rollback running" > /mnt/rollback.log
mkdir -p /mnt
mount -t btrfs /dev/mapper/cryptroot /mnt
# Recursively delete all nested subvolumes inside /mnt/root
btrfs subvolume list -o /mnt/root | cut -f9 -d' ' | while read subvolume; do
echo "Deleting /$subvolume subvolume..." >> /mnt/rollback.log
btrfs subvolume delete "/mnt/$subvolume"
done
echo "Deleting /root subvolume..." >> /mnt/rollback.log
btrfs subvolume delete /mnt/root
echo "Restoring blank /root subvolume..." >> /mnt/rollback.log
btrfs subvolume snapshot /mnt/root-blank /mnt/root
umount /mnt
'';
# Use /persist as the persistence root, matching Disko's mountpoint
environment.persistence."/persist" = {
hideMounts = true;
directories = [
"/var/lib/backups"
"/var/lib/headscale"
"/var/lib/caddy" # for certs
];
files = [
"/etc/machine-id"
"/etc/shadow"
"/etc/passwd"
];
};
}
|