summary refs log tree commit diff stats
path: root/system
diff options
context:
space:
mode:
authorSoispha <soispha@vhack.eu>2023-08-11 01:07:41 +0200
committerSoispha <soispha@vhack.eu>2023-08-11 01:07:41 +0200
commit8634195fbd464a6e20a729ab296426350e1a2e32 (patch)
tree70547399ec1570138d3006a7a4e7485053f714c0 /system
parentchore(version): v0.7.0 (diff)
parentFeat(system/services/snapper): Add (diff)
downloadnixos-server-8634195fbd464a6e20a729ab296426350e1a2e32.tar.gz
nixos-server-8634195fbd464a6e20a729ab296426350e1a2e32.zip
Merge: Branch 'snapper'
Diffstat (limited to 'system')
-rw-r--r--system/services/default.nix1
-rw-r--r--system/services/snapper/default.nix41
2 files changed, 42 insertions, 0 deletions
diff --git a/system/services/default.nix b/system/services/default.nix
index 7bf26c3..8f5540f 100644
--- a/system/services/default.nix
+++ b/system/services/default.nix
@@ -10,5 +10,6 @@
     ./nix-sync
     ./openssh
     ./rust-motd
+    ./snapper
   ];
 }
diff --git a/system/services/snapper/default.nix b/system/services/snapper/default.nix
new file mode 100644
index 0000000..cdebf8d
--- /dev/null
+++ b/system/services/snapper/default.nix
@@ -0,0 +1,41 @@
+{...}: {
+  services.snapper = {
+    configs = {
+      srv = {
+        SUBVOLUME = "/srv";
+        FSTYPE = "btrfs";
+        # users and groups allowed to work with config
+        ALLOW_GROUPS = ["wheel"];
+
+        # sync users and groups from ALLOW_USERS and ALLOW_GROUPS to .snapshots
+        # directory
+        SYNC_ACL = true;
+
+        # run daily number cleanup
+        NUMBER_CLEANUP = false;
+
+        # limit for number cleanup
+        NUMBER_MIN_AGE = 1800;
+        NUMBER_LIMIT = 50;
+        NUMBER_LIMIT_IMPORTANT = 10;
+
+        # create hourly snapshots
+        TIMELINE_CREATE = true;
+
+        # cleanup hourly snapshots after some time
+        TIMELINE_CLEANUP = true;
+
+        # limits for timeline cleanup
+        TIMELINE_MIN_AGE = 1800;
+        TIMELINE_LIMIT_HOURLY = 7;
+        TIMELINE_LIMIT_DAILY = 3;
+        TIMELINE_LIMIT_WEEKLY = 2;
+        TIMELINE_LIMIT_MONTHLY = 2;
+        TIMELINE_LIMIT_YEARLY = 2;
+
+        # cleanup empty pre-post-pairs
+        EMPTY_PRE_POST_CLEANUP = true;
+      };
+    };
+  };
+}