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