60 lines
1.6 KiB
Nix
60 lines
1.6 KiB
Nix
{config, ...}: let
|
|
datasetSubmodule = config.flake.commonModules.storage-dataset-submodule;
|
|
submodule = args @ {lib, ...}: {name, ...}: let
|
|
pathPermissions = {
|
|
read = lib.mkEnableOption "should the path have read permissions";
|
|
write = lib.mkEnableOption "should the path have read permissions";
|
|
execute = lib.mkEnableOption "should the path have read permissions";
|
|
};
|
|
pathTypeSubmodule = {name, ...}: {
|
|
options = {
|
|
enable = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = true;
|
|
};
|
|
owner = {
|
|
name = lib.mkOption {
|
|
type = lib.types.str;
|
|
default = "root";
|
|
};
|
|
permissions = pathPermissions;
|
|
};
|
|
group = {
|
|
name = lib.mkOption {
|
|
type = lib.types.str;
|
|
default = "root";
|
|
};
|
|
permissions = pathPermissions;
|
|
};
|
|
other = {
|
|
permissions = pathPermissions;
|
|
};
|
|
};
|
|
};
|
|
in {
|
|
imports = [
|
|
(datasetSubmodule args)
|
|
];
|
|
|
|
options = {
|
|
files = lib.mkOption {
|
|
type = lib.types.attrsOf (lib.types.submodule pathTypeSubmodule);
|
|
default = {};
|
|
};
|
|
directories = lib.mkOption {
|
|
type = lib.types.attrsOf (lib.types.submodule pathTypeSubmodule);
|
|
default = {};
|
|
};
|
|
impermanence.enable = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = true;
|
|
};
|
|
};
|
|
|
|
config = {
|
|
mount = lib.mkDefault "/${name}";
|
|
};
|
|
};
|
|
in {
|
|
flake.commonModules.storage-impermanence-dataset-submodule = submodule;
|
|
}
|