59 lines
1.4 KiB
Nix
59 lines
1.4 KiB
Nix
{
|
|
user ? throw "user argument is required",
|
|
home ? throw "home argument is required",
|
|
}:
|
|
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
let
|
|
port = 9273 + config.users.users.${user}.uid;
|
|
hmConfig = config.home-manager.users.${user};
|
|
in
|
|
{
|
|
home-manager.users.${user}.systemd.user.services.telegraf =
|
|
let
|
|
telegrafConfig = (pkgs.formats.toml { }).generate "config.toml" {
|
|
agent.quiet = true;
|
|
|
|
outputs.prometheus_client = [ { listen = ":${builtins.toString port}"; } ];
|
|
|
|
inputs =
|
|
{
|
|
systemd_units = [
|
|
{ scope = "user"; }
|
|
];
|
|
}
|
|
// lib.attrsets.optionalAttrs hmConfig.services.podman.enable {
|
|
docker = [
|
|
{
|
|
endpoint =
|
|
let
|
|
uid = builtins.toString config.users.users.${user}.uid;
|
|
in
|
|
"unix:///var/run/user/${uid}/podman/podman.sock";
|
|
perdevice = false;
|
|
perdevice_include = [
|
|
"cpu"
|
|
"blkio"
|
|
"network"
|
|
];
|
|
}
|
|
];
|
|
};
|
|
};
|
|
in
|
|
{
|
|
Unit.Description = "Telegraf Agent";
|
|
|
|
Install.WantedBy = [ "default.target" ];
|
|
|
|
Service = {
|
|
ExecStart = "${config.services.telegraf.package}/bin/telegraf -config ${telegrafConfig}";
|
|
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
|
};
|
|
};
|
|
}
|