{ config, lib, pkgs, ... }: let helpers = import { inherit config lib pkgs; }; cfg = config.exporters; in { options.exporters = { sqlExporterPort = lib.mkOption { type = lib.types.int; }; storageboxExporterPort = lib.mkOption { type = lib.types.int; }; }; imports = [ ]; config = { services.prometheus-sql-exporter = { enable = true; port = cfg.sqlExporterPort; config = { target = { # This URL should be postgresql:///postgres?host=/run/postgresql # but sql_exporter uses xo/dburl which isn't spec-compliant: https://github.com/xo/dburl/issues/46 data_source_name = "postgresql:/run/postgresql:/postgres"; collectors = helpers.collectorNames; }; collectors = helpers.collectors; }; }; age.secrets.hetzner-token.file = ./secrets/hetzner-token.age; services.prometheus-storagebox-exporter = { enable = true; port = cfg.storageboxExporterPort; hetznerTokenFile = config.age.secrets.hetzner-token.path; }; }; }