turnon: 1.6.1 -> 1.6.2 (#364647)
[NixPkgs.git] / nixos / modules / services / networking / go-autoconfig.nix
blobb7ed11405003c037216bf547cb5dbd790b0f4172
2   config,
3   lib,
4   pkgs,
5   ...
6 }:
7 let
9   cfg = config.services.go-autoconfig;
10   format = pkgs.formats.yaml { };
11   configFile = format.generate "config.yml" cfg.settings;
15   options = {
16     services.go-autoconfig = {
18       enable = lib.mkEnableOption "IMAP/SMTP autodiscover feature for mail clients";
20       settings = lib.mkOption {
21         default = { };
22         description = ''
23           Configuration for go-autoconfig. See
24           <https://github.com/L11R/go-autoconfig/blob/master/config.yml>
25           for more information.
26         '';
27         type = lib.types.submodule {
28           freeformType = format.type;
29         };
30         example = lib.literalExpression ''
31           {
32             service_addr = ":1323";
33             domain = "autoconfig.example.org";
34             imap = {
35               server = "example.org";
36               port = 993;
37             };
38             smtp = {
39               server = "example.org";
40               port = 465;
41             };
42           }
43         '';
44       };
46     };
47   };
49   config = lib.mkIf cfg.enable {
51     systemd = {
52       services.go-autoconfig = {
53         wantedBy = [ "multi-user.target" ];
54         description = "IMAP/SMTP autodiscover server";
55         after = [ "network.target" ];
56         serviceConfig = {
57           ExecStart = "${pkgs.go-autoconfig}/bin/go-autoconfig -config ${configFile}";
58           Restart = "on-failure";
59           WorkingDirectory = ''${pkgs.go-autoconfig}/'';
60           DynamicUser = true;
61         };
62       };
63     };
65   };
67   meta.maintainers = with lib.maintainers; [ onny ];