parent
858f088007
commit
2715222f0c
@ -0,0 +1,78 @@ |
||||
{ config, pkgs, lib, ... }: |
||||
|
||||
with lib; |
||||
|
||||
let |
||||
cfg = config.services.netdata; |
||||
|
||||
configFile = pkgs.writeText "netdata.conf" cfg.configText; |
||||
|
||||
defaultUser = "netdata"; |
||||
|
||||
in { |
||||
options = { |
||||
services.netdata = { |
||||
enable = mkOption { |
||||
default = false; |
||||
type = types.bool; |
||||
description = "Whether to enable netdata monitoring."; |
||||
}; |
||||
|
||||
user = mkOption { |
||||
type = types.str; |
||||
default = "netdata"; |
||||
description = "User account under which netdata runs."; |
||||
}; |
||||
|
||||
group = mkOption { |
||||
type = types.str; |
||||
default = "netdata"; |
||||
description = "Group under which netdata runs."; |
||||
}; |
||||
|
||||
configText = mkOption { |
||||
type = types.lines; |
||||
default = ""; |
||||
description = "netdata.conf configuration."; |
||||
example = '' |
||||
[global] |
||||
debug log = syslog |
||||
access log = syslog |
||||
error log = syslog |
||||
''; |
||||
}; |
||||
|
||||
}; |
||||
}; |
||||
|
||||
config = mkIf cfg.enable { |
||||
systemd.services.netdata = { |
||||
description = "Real time performance monitoring"; |
||||
after = [ "network.target" ]; |
||||
wantedBy = [ "multi-user.target" ]; |
||||
preStart = concatStringsSep "\n" (map (dir: '' |
||||
mkdir -vp ${dir} |
||||
chmod 750 ${dir} |
||||
chown -R ${cfg.user}:${cfg.group} ${dir} |
||||
'') [ "/var/cache/netdata" |
||||
"/var/log/netdata" |
||||
"/var/lib/netdata" ]); |
||||
serviceConfig = { |
||||
User = cfg.user; |
||||
Group = cfg.group; |
||||
PermissionsStartOnly = true; |
||||
ExecStart = "${pkgs.netdata}/bin/netdata -D -c ${configFile}"; |
||||
TimeoutStopSec = 60; |
||||
}; |
||||
}; |
||||
|
||||
users.extraUsers = optional (cfg.user == defaultUser) { |
||||
name = defaultUser; |
||||
}; |
||||
|
||||
users.extraGroups = optional (cfg.group == defaultUser) { |
||||
name = defaultUser; |
||||
}; |
||||
|
||||
}; |
||||
} |
Loading…
Reference in new issue