Skip to content

Commit

Permalink
nixos/go-autoconfig: init module
Browse files Browse the repository at this point in the history
  • Loading branch information
onny authored and Yt committed Sep 14, 2022
1 parent 91f6365 commit d990f88
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 0 deletions.
7 changes: 7 additions & 0 deletions nixos/doc/manual/from_md/release-notes/rl-2211.section.xml
Original file line number Diff line number Diff line change
Expand Up @@ -263,6 +263,13 @@
<link linkend="opt-services.expressvpn.enable">services.expressvpn</link>.
</para>
</listitem>
<listitem>
<para>
<link xlink:href="https://github.com/L11R/go-autoconfig">go-autoconfig</link>,
IMAP/SMTP autodiscover server. Available as
<link linkend="opt-services.go-autoconfig.enable">services.go-autoconfig</link>.
</para>
</listitem>
<listitem>
<para>
<link xlink:href="https://www.grafana.com/oss/tempo/">Grafana
Expand Down
2 changes: 2 additions & 0 deletions nixos/doc/manual/release-notes/rl-2211.section.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,8 @@ In addition to numerous new and upgraded packages, this release has the followin

- [expressvpn](https://www.expressvpn.com), the CLI client for ExpressVPN. Available as [services.expressvpn](#opt-services.expressvpn.enable).

- [go-autoconfig](https://github.com/L11R/go-autoconfig), IMAP/SMTP autodiscover server. Available as [services.go-autoconfig](#opt-services.go-autoconfig.enable).

- [Grafana Tempo](https://www.grafana.com/oss/tempo/), a distributed tracing store. Available as [services.tempo](#opt-services.tempo.enable).

- [AusweisApp2](https://www.ausweisapp.bund.de/), the authentication software for the German ID card. Available as [programs.ausweisapp](#opt-programs.ausweisapp.enable).
Expand Down
1 change: 1 addition & 0 deletions nixos/modules/module-list.nix
Original file line number Diff line number Diff line change
Expand Up @@ -804,6 +804,7 @@
./services/networking/git-daemon.nix
./services/networking/globalprotect-vpn.nix
./services/networking/gnunet.nix
./services/networking/go-autoconfig.nix
./services/networking/go-neb.nix
./services/networking/go-shadowsocks2.nix
./services/networking/gobgpd.nix
Expand Down
66 changes: 66 additions & 0 deletions nixos/modules/services/networking/go-autoconfig.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
{ config, lib, pkgs, ... }:

with lib;

let

cfg = config.services.go-autoconfig;
format = pkgs.formats.yaml { };
configFile = format.generate "config.yml" cfg.settings;

in {
options = {
services.go-autoconfig = {

enable = mkEnableOption (mdDoc "IMAP/SMTP autodiscover feature for mail clients");

settings = mkOption {
default = { };
description = mdDoc ''
Configuration for go-autoconfig. See
<https://github.com/L11R/go-autoconfig/blob/master/config.yml>
for more information.
'';
type = types.submodule {
freeformType = format.type;
};
example = literalExpression ''
{
service_addr = ":1323";
domain = "autoconfig.example.org";
imap = {
server = "example.org";
port = 993;
};
smtp = {
server = "example.org";
port = 465;
};
}
'';
};

};
};

config = mkIf cfg.enable {

systemd = {
services.go-autoconfig = {
wantedBy = [ "multi-user.target" ];
description = "IMAP/SMTP autodiscover server";
after = [ "network.target" ];
serviceConfig = {
ExecStart = "${pkgs.go-autoconfig}/bin/go-autoconfig -config ${configFile}";
Restart = "on-failure";
WorkingDirectory = ''${pkgs.go-autoconfig}/'';
DynamicUser = true;
};
};
};

};

meta.maintainers = with lib.maintainers; [ onny ];

}

0 comments on commit d990f88

Please sign in to comment.