{ config, lib, libNginx, ... }: with lib; let cfg = config.nixfiles.modules.prometheus; in { options.nixfiles.modules.prometheus = { enable = mkEnableOption "VictoriaMetrics"; port = mkOption { description = "Port."; type = with types; port; default = 30113; }; domain = mkOption { description = "Domain name sans protocol scheme."; type = with types; str; default = "victoriametrics.${config.networking.domain}"; }; }; config = mkIf cfg.enable { nixfiles.modules.nginx = with cfg; { enable = true; upstreams.victoriametrics.servers."127.0.0.1:${toString cfg.port}" = { }; virtualHosts.${domain} = { locations."/".proxyPass = "http://victoriametrics"; extraConfig = libNginx.config.internalOnly; }; }; services.victoriametrics = { enable = true; listenAddress = "127.0.0.1:${toString cfg.port}"; extraOptions = [ "-loggerLevel=WARN" # TODO scrape_config ]; }; }; }