diff --git a/hardware/filesystem.nix b/hardware/filesystem.nix index 1be3213..21f0fe7 100644 --- a/hardware/filesystem.nix +++ b/hardware/filesystem.nix @@ -8,43 +8,43 @@ in { boot.initrd.supportedFilesystems = [ "btrfs" ]; - # boot.initrd.systemd.services.rollback-root = { - # description = "Rollback btrfs root subvolume"; - # wantedBy = [ "initrd.target" ]; - # after = [ "systemd-cryptsetup@.service" ]; - # before = [ "sysroot.mount" ]; - # unitConfig.DefaultDependencies = "no"; - # serviceConfig.Type = "oneshot"; - # script = '' - # mkdir -p /btrfs_tmp - # mount ${rootDisk} /btrfs_tmp - # - # # Ensure the old_roots directory exists - # mkdir -p /btrfs_tmp/old_roots - # - # if [[ -e /btrfs_tmp/root ]]; then - # timestamp=$(date +%Y-%m-%d_%H-%M-%S) - # mv /btrfs_tmp/root "/btrfs_tmp/old_roots/$timestamp" - # fi - # - # 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" - # } - # - # for i in $(find /btrfs_tmp/old_roots/ -maxdepth 1 -mtime +7); do - # # Don't delete the old_roots directory itself - # if [[ "$i" == "/btrfs_tmp/old_roots/" ]]; then continue; fi - # delete_subvolume_recursively "$i" - # done - # - # btrfs subvolume create /btrfs_tmp/root - # umount /btrfs_tmp - # ''; - # }; + boot.initrd.systemd.services.rollback-root = { + description = "Rollback btrfs root subvolume"; + wantedBy = [ "initrd.target" ]; + after = [ "systemd-cryptsetup@.service" ]; + before = [ "sysroot.mount" ]; + unitConfig.DefaultDependencies = "no"; + serviceConfig.Type = "oneshot"; + script = '' + mkdir -p /btrfs_tmp + mount ${rootDisk} /btrfs_tmp + + # Ensure the old_roots directory exists + mkdir -p /btrfs_tmp/old_roots + + if [[ -e /btrfs_tmp/root ]]; then + timestamp=$(date +%Y-%m-%d_%H-%M-%S) + mv /btrfs_tmp/root "/btrfs_tmp/old_roots/$timestamp" + fi + + 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" + } + + for i in $(find /btrfs_tmp/old_roots/ -maxdepth 1 -mtime +7); do + # Don't delete the old_roots directory itself + if [[ "$i" == "/btrfs_tmp/old_roots/" ]]; then continue; fi + delete_subvolume_recursively "$i" + done + + btrfs subvolume create /btrfs_tmp/root + umount /btrfs_tmp + ''; + }; # fileSystems."/" = { # device = rootDisk;