args @ { lib, name, ... }: {...}: let datasetSubmodule = (import ./dataset.nix) args; 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 = "nouser"; }; permissions = pathPermissions; }; group = { name = lib.mkOption { type = lib.types.str; default = "nogroup"; }; permissions = pathPermissions; }; other = { permissions = pathPermissions; }; }; }; in { imports = [ datasetSubmodule ]; 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 = {}; }; }; config = { mountpoint = "/${name}"; }; }