{ config, lib, ... }: with lib; let cfg = config.local.boot.stack.btrfsToplevelMultidrive; in { options.local.boot.stack.btrfsToplevelMultidrive = { enable = mkEnableOption "filesystem stack: persistent btrfs toplevel with optional hdd drive"; toplevel = { device = mkOption { type = types.str; }; ssd = mkOption { type = types.bool; }; snapshot = mkOption { type = types.bool; default = false; }; root = mkOption { type = types.str; }; pivot = mkOption { type = types.str; default = "/"; }; }; secondary = { device = mkOption { type = types.str; }; ssd = mkOption { type = types.bool; }; snapshot = mkOption { type = types.bool; default = false; }; home = mkOption { type = types.str; }; pivot = mkOption { type = types.str; default = "/"; }; }; }; config = mkIf cfg.enable { local.btrfs = { mounts = { "/" = { inherit (cfg.toplevel) device ssd; subvol = cfg.toplevel.root; }; "/toplevel" = { inherit (cfg.toplevel) device ssd; subvol = cfg.toplevel.pivot; }; #FIXME: Este nombre es legacy "/hdd" = { inherit (cfg.secondary) device ssd; subvol = cfg.secondary.pivot; }; "/home" = { inherit (cfg.secondary) device ssd; subvol = cfg.secondary.home; }; }; snapper = optionalAttrs cfg.toplevel.snapshot { root = "/"; } // optionalAttrs cfg.secondary.snapshot { home = "/home"; }; }; # Asegura que /hdd sea descifrado antes de intentar montar /home fileSystems."/home".depends = ["/hdd"]; }; }