{ config, ... }:
{
  config.services.victoriametrics = {
    enable = true;
    extraOptions = [ "-storage.minFreeDiskSpaceBytes=5GB" ];

    scrapeConfigs = {
      forgejo = {
        targets = [ "127.0.0.1:${toString config.services.forgejo.settings.server.HTTP_PORT}" ];
        extraSettings.authorization.credentials_file = config.sops.secrets."forgejo/metrics-token".path;
      };
      coturn.targets = [ "127.0.0.1:9641" ];

      crowdsec.targets =
        let
          address = config.security.crowdsec.settings.prometheus.listen_addr;
          port = config.security.crowdsec.settings.prometheus.listen_port;
        in
        [ "${address}:${toString port}" ];

      csFirewallBouncer.targets =
        let
          address =
            config.security.crowdsec.remediationComponents.firewallBouncer.settings.prometheus.listen_addr;
          port =
            config.security.crowdsec.remediationComponents.firewallBouncer.settings.prometheus.listen_port;
        in
        [ "${address}:${toString port}" ];

      # Configured in the hookshot listeners, but it's hard to filter
      # the correct values out of that config.
      matrixHookshot.targets = [ "127.0.0.1:9001" ];
    };
  };
}