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