From 02abf4ed0131237c25e0a10db50fa4c41a902a50 Mon Sep 17 00:00:00 2001 From: Alejandro Soto Date: Sun, 14 Jul 2024 17:53:13 -0600 Subject: sys: final merge of dmz, hv into sys --- sys/fs/btrfs.nix | 116 ------------------------------------------------------- 1 file changed, 116 deletions(-) delete mode 100644 sys/fs/btrfs.nix (limited to 'sys/fs/btrfs.nix') diff --git a/sys/fs/btrfs.nix b/sys/fs/btrfs.nix deleted file mode 100644 index f240b0d..0000000 --- a/sys/fs/btrfs.nix +++ /dev/null @@ -1,116 +0,0 @@ -{ lib, config, pkgs, ... }: -with lib; let - cfg = config.local; -in -{ - options.local = with lib.types; { - snapperSubvols = mkOption { - type = attrsOf str; - default = { }; - }; - - fs.btrfs = mkOption { - default = [ ]; - - type = attrsOf (submodule { - options = { - device = mkOption { - type = str; - }; - - subvol = mkOption { - type = str; - }; - - ssd = mkOption { - type = bool; - }; - - snapper = mkOption { - type = nullOr str; - default = null; - }; - }; - }); - }; - }; - - config = { - environment.systemPackages = optional (cfg.snapperSubvols != { }) pkgs.local.btclone; - - fileSystems = - let - inherit (cfg) fs; - btrfs = { device, subvol, ssd, ... }: { - inherit device; - fsType = "btrfs"; - options = [ "noatime" "compress=zstd" "subvol=${subvol}" ] ++ optional ssd "ssd"; - }; - in - mapAttrs (_: btrfs) cfg.fs.btrfs; - - local.snapperSubvols = - let - snapperEntry = path: opts: { name = opts.snapper; value = path; }; - validEntry = _: opts: opts.snapper != null; - in - mapAttrs' snapperEntry (filterAttrs validEntry cfg.fs.btrfs); - - services.snapper.configs = - let - snapperConfig = _: subvolume: { - SUBVOLUME = subvolume; - - # btrfs qgroup for space aware cleanup algorithms - QGROUP = ""; - - # fraction of the filesystems space the snapshots may use - SPACE_LIMIT = "0.5"; - - # fraction of the filesystems space that should be free - FREE_LIMIT = "0.2"; - - # users and groups allowed to work with config - ALLOW_USERS = [ ]; - ALLOW_GROUPS = [ ]; - - # sync users and groups from ALLOW_USERS and ALLOW_GROUPS to .snapshots - # directory - SYNC_ACL = "no"; - - # start comparing pre- and post-snapshot in background after creating - # post-snapshot - BACKGROUND_COMPARISON = "yes"; - - # run daily number cleanup - NUMBER_CLEANUP = "yes"; - - # limit for number cleanup - NUMBER_MIN_AGE = "1800"; - NUMBER_LIMIT = "100"; - 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 = "24"; - TIMELINE_LIMIT_DAILY = "7"; - TIMELINE_LIMIT_WEEKLY = "4"; - TIMELINE_LIMIT_MONTHLY = "12"; - TIMELINE_LIMIT_YEARLY = "10"; - - # cleanup empty pre-post-pairs - EMPTY_PRE_POST_CLEANUP = "yes"; - - # limits for empty pre-post-pair cleanup - EMPTY_PRE_POST_MIN_AGE = "1800"; - }; - in - mapAttrs snapperConfig cfg.snapperSubvols; - }; -} -- cgit v1.2.3