summaryrefslogtreecommitdiff
path: root/impermanence.nix
diff options
context:
space:
mode:
Diffstat (limited to 'impermanence.nix')
-rw-r--r--impermanence.nix84
1 files changed, 50 insertions, 34 deletions
diff --git a/impermanence.nix b/impermanence.nix
index 0592049..d3dae53 100644
--- a/impermanence.nix
+++ b/impermanence.nix
@@ -1,40 +1,56 @@
-{ lib, ... }: {
- boot.initrd.postResumeCommands = lib.mkAfter ''
- mkdir /btrfs_tmp
- mount /dev/disk/by-partlabel/disk-main-root /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
+# sudo mount --ro /dev/nvme0n1p2 ./mnt --mkdir
+# ls mnt/old_roots
- 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"
- }
+{ lib, config, ... }:
+let
+ cfg = config.oden.persist;
+in
+{
+ options.oden.persist = with lib; with types; {
+ directories = mkOption {
+ type = listOf str;
+ default = [];
+ description = "Directories that should be persisted";
+ };
+ };
+ config = {
+ boot.initrd.postResumeCommands = lib.mkAfter ''
+ mkdir /btrfs_tmp
+ mount /dev/disk/by-partlabel/disk-main-root /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
- for i in $(find /btrfs_tmp/old_roots/ -maxdepth 1 -mtime +30); do
- delete_subvolume_recursively "$i"
- done
+ 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 +30); do
+ delete_subvolume_recursively "$i"
+ done
- btrfs subvolume create /btrfs_tmp/root
- umount /btrfs_tmp
- '';
+ btrfs subvolume create /btrfs_tmp/root
+ umount /btrfs_tmp
+ '';
- environment.persistence."/nix/persist" = {
- hideMounts = true;
- directories = [
- "/var/log"
- "/var/lib/nixos"
- "/var/lib/systemd/coredump"
- ];
- files = [
- "/etc/machine-id"
- "/etc/ssh/ssh_host_ed25519_key"
- "/etc/ssh/ssh_host_ed25519_key.pub"
- ];
+ environment.persistence."/nix/persist" = {
+ hideMounts = true;
+ directories = cfg.directories ++ [
+ "/var/log"
+ "/var/lib/nixos"
+ "/var/lib/systemd"
+ ];
+ files = [
+ "/etc/machine-id"
+ "/etc/ssh/ssh_host_ed25519_key"
+ "/etc/ssh/ssh_host_ed25519_key.pub"
+ ];
+ };
};
}