From aa26bad4c634e74dee6874784629c504b253a0b8 Mon Sep 17 00:00:00 2001 From: jay Date: Wed, 9 Jul 2025 21:50:50 -0400 Subject: [PATCH] Update impermanance setup script. --- nodes/hosts/nixy/impermanence.nix | 42 +++++++++++++++---------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/nodes/hosts/nixy/impermanence.nix b/nodes/hosts/nixy/impermanence.nix index c85aa01..b2e7abc 100644 --- a/nodes/hosts/nixy/impermanence.nix +++ b/nodes/hosts/nixy/impermanence.nix @@ -1,28 +1,26 @@ -{lib, inputs, ...}: { - # Reset root subvolume on boot - boot.initrd.postResumeCommands = lib.mkAfter '' - mkdir /btrfs_tmp - mount /dev/mapper/cryptroot /btrfs_tmp # CONFIRM THIS IS CORRECT FROM findmnt - if [[ -e /btrfs_tmp/root ]]; then - mkdir -p /btrfs_tmp/old_roots - timestamp=$(date --date="@$(stat -c %Y /btrfs_tmp/root)" "+%Y-%m-%-d_%H:%M:%S") - mv /btrfs_tmp/root "/btrfs_tmp/old_roots/$timestamp" - fi +{ + config, + lib, + ... +}: { + boot.initrd.postDeviceCommands = lib.mkAfter '' + echo "Rollback running" > /mnt/rollback.log + mkdir -p /mnt + mount -t btrfs /dev/mapper/cryptroot /mnt - delete_subvolume_recursively() { - IFS=$'\n' - for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do - delete_subvolume_recursively "/btrfs_tmp/$i" - done - btrfs subvolume delete "$1" - } + # 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 - for i in $(find /btrfs_tmp/old_roots/ -maxdepth 1 -mtime +30); do - delete_subvolume_recursively "$i" - done + echo "Deleting /root subvolume..." >> /mnt/rollback.log + btrfs subvolume delete /mnt/root - btrfs subvolume create /btrfs_tmp/root - umount /btrfs_tmp + 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