{ 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; }; }; }; }; }