{ lib, config, ... }: let cfg = config.customOps; in { options = with lib; { customOps = mkOption { description = "custom options"; type = types.submodule { options = { owner = mkOption { type = types.submodule { options = { username = mkOption { type = types.str; default = null; }; pubkey = mkOption { type = types.str; default = null; }; }; }; description = "machine owner"; }; domain = mkOption { type = types.submodule { options = { name = mkOption { type = types.str; default = null; }; tld = mkOption { type = types.str; default = null; }; fqdn = mkOption { type = types.str; default = "${cfg.domain.name}.${cfg.domain.tld}"; }; }; }; description = "machine domain name"; }; mailAccounts = mkOption { type = types.attrsOf (types.submodule { options = { passwdFile = mkOption { type = types.str; default = null; }; aliases = mkOption { type = types.listOf types.str; default = []; }; aliasesRegex = mkOption { type = types.listOf types.str; default = []; }; catchAll = mkOption { type = types.listOf types.str; default = []; }; sendOnly = mkOption { type = types.bool; default = false; }; }; }); description = "accounts for the mail server"; }; }; }; }; }; }