{ pkgs, lib, config, ... }:
let
  cfg = config.mods.server;
  port = cfg.nginx.ports.dash;
in with lib; {
  options.mods.server = {
    dash = {
      enable = mkEnableOption {
        default = false;
        description = "enables metrics dashboard";
      };
    };
  };

  config = mkIf cfg.dash.enable {
    services.grafana = {
      enable = true;
      domain = "dash.muon.host";
      addr = "0.0.0.0";

      provision.datasources.settings.datasources = [{
        name = "Prometheus";
        type = "Prometheus";
        url = "http://localhost:${toString config.services.prometheus.port}";
      }];

      inherit port;
    };

    services.prometheus = {
      enable = true;
      port = 9001;

      exporters = {
        node = {
          enable = true;
          enabledCollectors = [ "systemd" ];
          port = 9002;
        };
      };

      scrapeConfigs = [{
        job_name = "muho";
        static_configs = [{
          targets = [
            "127.0.0.1:${
              toString config.services.prometheus.exporters.node.port
            }"
          ];
        }];
      }];
    };
  };
}
