{ 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"; }; }; }