{ config, lib, pkgs, options, ... }:

let
  cfg = config.services.prometheus.exporters.nats;
  inherit (lib) mkOption types concatStringsSep;
in
{
  port = 7777;

  extraOpts = {
    url = mkOption {
      type = types.str;
      default = "http://127.0.0.1:8222";
      description = ''
        NATS monitor endpoint to query.
      '';
    };
  };

  serviceOpts = {
    serviceConfig = {
      ExecStart = ''
        ${pkgs.prometheus-nats-exporter}/bin/prometheus-nats-exporter \
          -addr ${cfg.listenAddress} \
          -port ${toString cfg.port} \
          ${concatStringsSep " \\\n  " cfg.extraFlags} \
          ${cfg.url}
      '';
    };
  };
}
