blob: 133f08fcf1f1e698b50c9b50b3c32b45d858af44 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
{ 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;
};
}
|