diff options
Diffstat (limited to 'sys/btrfs/mounts.nix')
| -rw-r--r-- | sys/btrfs/mounts.nix | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/sys/btrfs/mounts.nix b/sys/btrfs/mounts.nix new file mode 100644 index 0000000..3863356 --- /dev/null +++ b/sys/btrfs/mounts.nix @@ -0,0 +1,47 @@ +{ + lib, + config, + pkgs, + ... +}: +with lib; let + cfg = config.local.btrfs; +in { + options.local.btrfs = { + mounts = mkOption { + default = {}; + + type = with lib.types; + attrsOf (submodule { + options = { + ssd = mkOption { + type = bool; + }; + + device = mkOption { + type = str; + }; + + subvol = mkOption { + type = str; + }; + }; + }); + }; + }; + + config = mkIf (cfg.mounts != {}) { + fileSystems = let + btrfsMount = { + device, + subvol, + ssd, + }: { + inherit device; + fsType = "btrfs"; + options = ["noatime" "compress=zstd" "subvol=${subvol}"] ++ optional ssd "ssd"; + }; + in + mapAttrs (_: btrfsMount) cfg.mounts; + }; +} |
