From 0dfb66c44b3d5076568ef825639f498232a4cde2 Mon Sep 17 00:00:00 2001 From: Gabriel Arazas Date: Sat, 8 Feb 2025 10:10:16 +0800 Subject: [PATCH] hosts/ni/services/backup: add Snapper service --- .../ni/modules/services/backup/default.nix | 37 ++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/configs/nixos/ni/modules/services/backup/default.nix b/configs/nixos/ni/modules/services/backup/default.nix index 3b63a652..13fb6a5d 100644 --- a/configs/nixos/ni/modules/services/backup/default.nix +++ b/configs/nixos/ni/modules/services/backup/default.nix @@ -45,7 +45,7 @@ let pathPrefix = "borg-backup"; in { options.hosts.ni.services.backup.enable = - lib.mkEnableOption "backup setup with BorgBackup"; + lib.mkEnableOption "backup setup with BorgBackup and Snapper"; config = lib.mkIf cfg.enable { sops.secrets = foodogsquaredLib.sops-nix.getSecrets ./secrets.yaml @@ -90,5 +90,40 @@ in { }"; }; }; + + # The filesystem snapshots. + services.snapper = { + snapshotInterval = "hourly"; + persistentTimer = true; + + configs = { + root = { + SUBVOLUME = "/"; + SPACE_LIMIT = "0.25"; + FREE_LIMIT = "0.25"; + BACKGROUND_COMPARISION = "yes"; + NUMBER_CLEANUP = true; + TIMELINE_CREATE = true; + TIMELINE_CLEANUP = true; + TIMELINE_LIMIT_HOURLY = 48; + TIMELINE_LIMIT_DAILY = 30; + TIMELINE_LIMIT_WEEKLY = 8; + TIMELINE_LIMIT_MONTHLY = 24; + TIMELINE_LIMIT_QUARTERLY = 10; + TIMELINE_LIMIT_YEARLY = 8; + }; + + home = { + SUBVOLUME = "/home"; + ALLOW_USERS = [ "foo-dogsquared" ]; + TIMELINE_CREATE = true; + TIMELINE_CLEANUP = true; + TIMELINE_MIN_AGE = 300; + TIMELINE_LIMIT_HOURLY = 24; + TIMELINE_LIMIT_DAILY = 30; + TIMELINE_LIMIT_WEEKLY = 12; + }; + }; + }; }; }