b35e358eb5
Previously the depot argument was provided as config.depot, but the "new way" of doing things (which is more like the args list provided in the rest of the depot) is to provide this as the "depot" NixOS module argument instead. Change-Id: Ib48b1c7c1bdff9c1eb0618c6cbacc22b651f5f98 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2763 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in> Reviewed-by: glittershark <grfn@gws.fyi>
53 lines
1.4 KiB
Nix
53 lines
1.4 KiB
Nix
# NixOS module for configuring the simple SMTP relay.
|
|
{ depot, pkgs, config, lib, ... }:
|
|
|
|
let
|
|
inherit (builtins) attrValues mapAttrs;
|
|
inherit (lib)
|
|
concatStringsSep
|
|
mkEnableOption
|
|
mkIf
|
|
mkOption
|
|
types
|
|
;
|
|
|
|
cfg = config.services.depot.smtprelay;
|
|
description = "Simple SMTP relay";
|
|
|
|
# Configuration values that are always overridden. In particular,
|
|
# `config` is specified to always load $StateDirectory/secure.config
|
|
# (so that passwords can be loaded from there) and logging is pinned
|
|
# to stdout for journald compatibility.
|
|
overrideArgs = {
|
|
logfile = "";
|
|
config = "/var/lib/smtprelay/secure.config";
|
|
};
|
|
|
|
# Creates the command line argument string for the service.
|
|
prepareArgs = args:
|
|
concatStringsSep " "
|
|
(attrValues (mapAttrs (key: value: "-${key} '${toString value}'")
|
|
(args // overrideArgs)));
|
|
in {
|
|
options.services.depot.smtprelay = {
|
|
enable = mkEnableOption description;
|
|
args = mkOption {
|
|
type = types.attrsOf types.str;
|
|
description = "Key value pairs for command line arguments";
|
|
};
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
systemd.services.smtprelay = {
|
|
inherit description;
|
|
script = "${depot.third_party.smtprelay}/bin/smtprelay ${prepareArgs cfg.args}";
|
|
wantedBy = [ "multi-user.target" ];
|
|
|
|
serviceConfig = {
|
|
Restart = "always";
|
|
StateDirectory = "smtprelay";
|
|
DynamicUser = true;
|
|
};
|
|
};
|
|
};
|
|
}
|