moved storage option draft to its own folder

This commit is contained in:
Leyla Becker 2025-11-04 15:02:49 -06:00
parent aeb37e658e
commit 573708fd47
7 changed files with 160 additions and 140 deletions

View file

@ -0,0 +1,67 @@
args @ {lib, ...}: let
datasetSubmodule = (import ./submodules/dataset.nix) args;
in {
options.storage = {
zfs = {
# TODO: enable option implementation
enable = lib.mkEnableOption "Should zfs be enabled on this system.";
notifications = {
enable = lib.mkEnableOption "are notifications enabled";
host = lib.mkOption {
type = lib.types.str;
description = "what is the host that we are going to send the email to";
};
port = lib.mkOption {
type = lib.types.port;
description = "what port is the host using to receive mail on";
};
to = lib.mkOption {
type = lib.types.str;
description = "what account is the email going to be sent to";
};
user = lib.mkOption {
type = lib.types.str;
description = "what user is the email going to be set from";
};
tokenFile = lib.mkOption {
type = lib.types.str;
description = "file containing the password to be used by msmtp for notifications";
};
};
# TODO: we need options to configure zfs pools
# we should have warnings when the configured pool is missing drives after activation
# TODO: implementation of this
# TODO: validations that we have at least one boot drive
pool = let
deviceType =
lib.types.coercedTo lib.types.str (device: {
device = device;
boot = false;
}) {
device = lib.mkOption {
type = lib.types.str;
};
boot = lib.mkEnableOption "should this device be a boot device";
};
in {
encryption = lib.mkEnableOption "Should encryption be enabled on this pool.";
vdevs = lib.mkOption {
type = lib.types.listOf deviceType;
default = [];
};
cache = lib.mkOption {
type = lib.types.attrsOf deviceType;
};
};
# TODO:create the root dataset automatically
# TODO: dataset option that is a submodule that adds datasets to the system
# warnings for when a dataset was created in the past on a system but it is now missing some of the options defined for it
datasets = lib.mkOption {
type = lib.types.attrsOf (lib.types.submodule datasetSubmodule);
};
};
};
}