{ config, lib, ... }: let cfg = config.soispha.services.snapper; in { options.soispha.services.snapper = { enable = lib.mkEnableOption "snapper config"; }; config = lib.mkIf cfg.enable { 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 = "0"; TIMELINE_LIMIT_YEARLY = "2"; # cleanup empty pre-post-pairs EMPTY_PRE_POST_CLEANUP = true; }; }; }; }; }