From b01cc68ac34e27735fb99874db42928aaa4f61a2 Mon Sep 17 00:00:00 2001 From: ibizaman Date: Wed, 15 Apr 2026 01:06:12 +0200 Subject: [PATCH] mailserver: add dashboard contract --- docs/redirects.json | 18 ++++++++++++++++++ modules/services/mailserver.nix | 13 +++++++++++++ modules/services/mailserver/docs/default.md | 16 ++++++++++++++++ 3 files changed, 47 insertions(+) diff --git a/docs/redirects.json b/docs/redirects.json index 5d127af..14683c3 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -4472,6 +4472,9 @@ "services-mailserver": [ "services-mailserver.html#services-mailserver" ], + "services-mailserver-applicationdashboard": [ + "services-mailserver.html#services-mailserver-applicationdashboard" + ], "services-mailserver-certs": [ "services-mailserver.html#services-mailserver-certs" ], @@ -4601,6 +4604,21 @@ "services-mailserver-options-shb.mailserver.backupDKIM.result.restoreScript": [ "services-mailserver.html#services-mailserver-options-shb.mailserver.backupDKIM.result.restoreScript" ], + "services-mailserver-options-shb.mailserver.dashboard": [ + "services-mailserver.html#services-mailserver-options-shb.mailserver.dashboard" + ], + "services-mailserver-options-shb.mailserver.dashboard.request": [ + "services-mailserver.html#services-mailserver-options-shb.mailserver.dashboard.request" + ], + "services-mailserver-options-shb.mailserver.dashboard.request.externalUrl": [ + "services-mailserver.html#services-mailserver-options-shb.mailserver.dashboard.request.externalUrl" + ], + "services-mailserver-options-shb.mailserver.dashboard.request.internalUrl": [ + "services-mailserver.html#services-mailserver-options-shb.mailserver.dashboard.request.internalUrl" + ], + "services-mailserver-options-shb.mailserver.dashboard.result": [ + "services-mailserver.html#services-mailserver-options-shb.mailserver.dashboard.result" + ], "services-mailserver-options-shb.mailserver.domain": [ "services-mailserver.html#services-mailserver-options-shb.mailserver.domain" ], diff --git a/modules/services/mailserver.nix b/modules/services/mailserver.nix index 68524ae..8f2ac47 100644 --- a/modules/services/mailserver.nix +++ b/modules/services/mailserver.nix @@ -398,6 +398,19 @@ in } ''; }; + + dashboard = lib.mkOption { + description = '' + Dashboard contract consumer + ''; + default = { }; + type = lib.types.submodule { + options = shb.contracts.dashboard.mkRequester { + externalUrl = "https://${cfg.subdomain}.${cfg.domain}"; + externalUrlText = "https://\${config.shb.mailserver.subdomain}.\${config.shb.mailserver.domain}"; + }; + }; + }; }; config = lib.mkMerge [ diff --git a/modules/services/mailserver/docs/default.md b/modules/services/mailserver/docs/default.md index ca6ec42..fd9f99e 100644 --- a/modules/services/mailserver/docs/default.md +++ b/modules/services/mailserver/docs/default.md @@ -200,6 +200,22 @@ shb.lldap.ensureUsers.USERNAME.groups = [ ]; ``` +### Application Dashboard {#services-mailserver-applicationdashboard} + +Integration with the [dashboard contract](contracts-dashboard.html) is provided +by the [dashboard option](#services-mailserver-options-shb.mailserver.dashboard). + +For example using the [Homepage](services-homepage.html) service: + +```nix +{ + shb.homepage.servicesGroups.Home.services.Mailserver = { + sortOrder = 1; + dashboard.request = config.shb.mailserver.dashboard.request; + }; +} +``` + ## Debug {#services-mailserver-debug} Debugging this will be certainly necessary.