{ config, lib, ... }: { options.nanuqsaurus.impermanence.enable = lib.mkOption { type = lib.types.bool; default = false; description = "Enable impermanence with a /persist Btrfs subvolume."; }; config = lib.mkIf config.nanuqsaurus.impermanence.enable { boot.initrd.supportedFilesystems = [ "btrfs" ]; boot.initrd.postDeviceCommands = lib.mkAfter '' mkdir -p /mnt mount -t btrfs -o subvol=/ /dev/disk/by-label/nixos /mnt if [ ! -d /mnt/root-blank ]; then btrfs subvolume snapshot -r /mnt/root /mnt/root-blank fi if [ -d /mnt/root ]; then btrfs subvolume delete /mnt/root fi btrfs subvolume snapshot /mnt/root-blank /mnt/root umount /mnt ''; fileSystems."/persist".neededForBoot = true; environment.persistence."/persist" = { hideMounts = true; directories = [ "/etc/nixos" "/etc/ssh" "/etc/cups" "/var/lib/cups" "/var/lib/libvirt" "/var/lib/secureboot" "/var/lib/tailscale" "/var/lib/systemd" "/var/lib/nixos" ]; files = [ "/etc/machine-id" ]; }; }; }