diff options
Diffstat (limited to 'nixpkgs/nixos/modules/services/mail/public-inbox.nix')
-rw-r--r-- | nixpkgs/nixos/modules/services/mail/public-inbox.nix | 55 |
1 files changed, 34 insertions, 21 deletions
diff --git a/nixpkgs/nixos/modules/services/mail/public-inbox.nix b/nixpkgs/nixos/modules/services/mail/public-inbox.nix index 9af3914ebdc1..3380f0da181d 100644 --- a/nixpkgs/nixos/modules/services/mail/public-inbox.nix +++ b/nixpkgs/nixos/modules/services/mail/public-inbox.nix @@ -6,8 +6,6 @@ let cfg = config.services.public-inbox; stateDir = "/var/lib/public-inbox"; - manref = name: vol: "<citerefentry><refentrytitle>${name}</refentrytitle><manvolnum>${toString vol}</manvolnum></citerefentry>"; - gitIni = pkgs.formats.gitIni { listsAsDuplicateKeys = true; }; iniAtom = elemAt gitIni.type/*attrsOf*/.functor.wrapped/*attrsOf*/.functor.wrapped/*either*/.functor.wrapped 0; @@ -18,7 +16,7 @@ let args = mkOption { type = with types; listOf str; default = []; - description = "Command-line arguments to pass to ${manref "public-inbox-${proto}d" 1}."; + description = lib.mdDoc "Command-line arguments to pass to {manpage}`public-inbox-${proto}d(1)`."; }; port = mkOption { type = with types; nullOr (either str port); @@ -34,13 +32,13 @@ let type = with types; nullOr str; default = null; example = "/path/to/fullchain.pem"; - description = "Path to TLS certificate to use for connections to ${manref "public-inbox-${proto}d" 1}."; + description = lib.mdDoc "Path to TLS certificate to use for connections to {manpage}`public-inbox-${proto}d(1)`."; }; key = mkOption { type = with types; nullOr str; default = null; example = "/path/to/key.pem"; - description = "Path to TLS key to use for connections to ${manref "public-inbox-${proto}d" 1}."; + description = lib.mdDoc "Path to TLS key to use for connections to {manpage}`public-inbox-${proto}d(1)`."; }; }; @@ -145,7 +143,7 @@ in { options.services.public-inbox = { - enable = mkEnableOption "the public-inbox mail archiver"; + enable = mkEnableOption (lib.mdDoc "the public-inbox mail archiver"); package = mkOption { type = types.package; default = pkgs.public-inbox; @@ -204,15 +202,15 @@ in options.watch = mkOption { type = with types; listOf str; default = []; - description = "Paths for ${manref "public-inbox-watch" 1} to monitor for new mail."; + description = lib.mdDoc "Paths for {manpage}`public-inbox-watch(1)` to monitor for new mail."; example = [ "maildir:/path/to/test.example.com.git" ]; }; options.watchheader = mkOption { type = with types; nullOr str; default = null; example = "List-Id:<test@example.com>"; - description = '' - If specified, ${manref "public-inbox-watch" 1} will only process + description = lib.mdDoc '' + If specified, {manpage}`public-inbox-watch(1)` will only process mail containing a matching header. ''; }; @@ -226,10 +224,10 @@ in })); }; imap = { - enable = mkEnableOption "the public-inbox IMAP server"; + enable = mkEnableOption (lib.mdDoc "the public-inbox IMAP server"); } // publicInboxDaemonOptions "imap" 993; http = { - enable = mkEnableOption "the public-inbox HTTP server"; + enable = mkEnableOption (lib.mdDoc "the public-inbox HTTP server"); mounts = mkOption { type = with types; listOf str; default = [ "/" ]; @@ -255,16 +253,16 @@ in }; }; mda = { - enable = mkEnableOption "the public-inbox Mail Delivery Agent"; + enable = mkEnableOption (lib.mdDoc "the public-inbox Mail Delivery Agent"); args = mkOption { type = with types; listOf str; default = []; - description = "Command-line arguments to pass to ${manref "public-inbox-mda" 1}."; + description = lib.mdDoc "Command-line arguments to pass to {manpage}`public-inbox-mda(1)`."; }; }; - postfix.enable = mkEnableOption "the integration into Postfix"; + postfix.enable = mkEnableOption (lib.mdDoc "the integration into Postfix"); nntp = { - enable = mkEnableOption "the public-inbox NNTP server"; + enable = mkEnableOption (lib.mdDoc "the public-inbox NNTP server"); } // publicInboxDaemonOptions "nntp" 563; spamAssassinRules = mkOption { type = with types; nullOr path; @@ -283,18 +281,33 @@ in default = {}; description = lib.mdDoc "public inboxes"; type = types.submodule { - freeformType = with types; /*inbox name*/attrsOf (/*inbox option name*/attrsOf /*inbox option value*/iniAtom); + # Support both global options like `services.public-inbox.settings.publicinbox.imapserver` + # and inbox specific options like `services.public-inbox.settings.publicinbox.foo.address`. + freeformType = with types; attrsOf (oneOf [ iniAtom (attrsOf iniAtom) ]); + options.css = mkOption { type = with types; listOf str; default = []; description = lib.mdDoc "The local path name of a CSS file for the PSGI web interface."; }; + options.imapserver = mkOption { + type = with types; listOf str; + default = []; + example = [ "imap.public-inbox.org" ]; + description = lib.mdDoc "IMAP URLs to this public-inbox instance"; + }; options.nntpserver = mkOption { type = with types; listOf str; default = []; example = [ "nntp://news.public-inbox.org" "nntps://news.public-inbox.org" ]; description = lib.mdDoc "NNTP URLs to this public-inbox instance"; }; + options.pop3server = mkOption { + type = with types; listOf str; + default = []; + example = [ "pop.public-inbox.org" ]; + description = lib.mdDoc "POP3 URLs to this public-inbox instance"; + }; options.sourceinfo = mkOption { type = with types; nullOr str; default = null; @@ -314,16 +327,16 @@ in options.publicinboxmda.spamcheck = mkOption { type = with types; enum [ "spamc" "none" ]; default = "none"; - description = '' - If set to spamc, ${manref "public-inbox-watch" 1} will filter spam + description = lib.mdDoc '' + If set to spamc, {manpage}`public-inbox-watch(1)` will filter spam using SpamAssassin. ''; }; options.publicinboxwatch.spamcheck = mkOption { type = with types; enum [ "spamc" "none" ]; default = "none"; - description = '' - If set to spamc, ${manref "public-inbox-watch" 1} will filter spam + description = lib.mdDoc '' + If set to spamc, {manpage}`public-inbox-watch(1)` will filter spam using SpamAssassin. ''; }; @@ -354,7 +367,7 @@ in }; }; }; - openFirewall = mkEnableOption "opening the firewall when using a port option"; + openFirewall = mkEnableOption (lib.mdDoc "opening the firewall when using a port option"); }; config = mkIf cfg.enable { assertions = [ |