consul service: add package option

This commit is contained in:
Nathan Zadoks 2016-01-08 00:54:43 +01:00
parent 506b491edd
commit 8cb22c0a63

View File

@ -7,7 +7,7 @@ let
cfg = config.services.consul; cfg = config.services.consul;
configOptions = { data_dir = dataDir; } // configOptions = { data_dir = dataDir; } //
(if cfg.webUi then { ui_dir = "${pkgs.consul.ui}"; } else { }) // (if cfg.webUi then { ui_dir = "${cfg.package.ui}"; } else { }) //
cfg.extraConfig; cfg.extraConfig;
configFiles = [ "/etc/consul.json" "/etc/consul-addrs.json" ] configFiles = [ "/etc/consul.json" "/etc/consul-addrs.json" ]
@ -30,6 +30,15 @@ in
''; '';
}; };
package = mkOption {
type = types.package;
default = pkgs.consul;
description = ''
The package used for the Consul agent and CLI.
'';
};
webUi = mkOption { webUi = mkOption {
type = types.bool; type = types.bool;
default = false; default = false;
@ -155,7 +164,7 @@ in
etc."consul.json".text = builtins.toJSON configOptions; etc."consul.json".text = builtins.toJSON configOptions;
# We need consul.d to exist for consul to start # We need consul.d to exist for consul to start
etc."consul.d/dummy.json".text = "{ }"; etc."consul.d/dummy.json".text = "{ }";
systemPackages = with pkgs; [ consul ]; systemPackages = [ cfg.package ];
}; };
systemd.services.consul = { systemd.services.consul = {
@ -167,14 +176,14 @@ in
(filterAttrs (n: _: hasPrefix "consul.d/" n) config.environment.etc); (filterAttrs (n: _: hasPrefix "consul.d/" n) config.environment.etc);
serviceConfig = { serviceConfig = {
ExecStart = "@${pkgs.consul}/bin/consul consul agent -config-dir /etc/consul.d" ExecStart = "@${cfg.package}/bin/consul consul agent -config-dir /etc/consul.d"
+ concatMapStrings (n: " -config-file ${n}") configFiles; + concatMapStrings (n: " -config-file ${n}") configFiles;
ExecReload = "${pkgs.consul}/bin/consul reload"; ExecReload = "${cfg.package}/bin/consul reload";
PermissionsStartOnly = true; PermissionsStartOnly = true;
User = if cfg.dropPrivileges then "consul" else null; User = if cfg.dropPrivileges then "consul" else null;
TimeoutStartSec = "0"; TimeoutStartSec = "0";
} // (optionalAttrs (cfg.leaveOnStop) { } // (optionalAttrs (cfg.leaveOnStop) {
ExecStop = "${pkgs.consul}/bin/consul leave"; ExecStop = "${cfg.package}/bin/consul leave";
}); });
path = with pkgs; [ iproute gnugrep gawk consul ]; path = with pkgs; [ iproute gnugrep gawk consul ];
@ -221,7 +230,7 @@ in
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
after = [ "consul.service" ]; after = [ "consul.service" ];
path = [ pkgs.consul ]; path = [ cfg.package ];
serviceConfig = { serviceConfig = {
ExecStart = '' ExecStart = ''