moved storage option draft to its own folder
This commit is contained in:
parent
aeb37e658e
commit
573708fd47
7 changed files with 160 additions and 140 deletions
67
modules/nixos-modules/storage/zfs.nix
Normal file
67
modules/nixos-modules/storage/zfs.nix
Normal 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);
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue