{
  config,
  lib,
  pkgs,
  ...
}:
let
  hostname = config.networking.hostName;
  mkFor = hosts: lib.mkIf (builtins.elem hostname hosts);
in
{
  services.prometheus.exporters = {
    node =
      mkFor
        [
          "sisko"
          "picard"
          "kirk"
          "pike"
        ]
        {
          enable = true;
          enabledCollectors = [
            "cpu"
            "conntrack"
            "diskstats"
            "entropy"
            "filefd"
            "filesystem"
            "loadavg"
            "mdadm"
            "meminfo"
            "netdev"
            "netstat"
            "stat"
            "time"
            "vmstat"
            "systemd"
            "logind"
            "interrupts"
            "ksmd"
            "textfile"
            "pressure"
          ];
          extraFlags = [
            "--collector.ethtool"
            "--collector.softirqs"
            "--collector.tcpstat"
            "--collector.wifi"
          ];
        };
    wireguard =
      mkFor
        [
          "sisko"
          "picard"
          "kirk"
          "pike"
        ]
        {
          enable = true;
        };
    zfs =
      mkFor
        [
          "picard"
          "kirk"
          "pike"
        ]
        {
          enable = true;
        };
    restic = mkFor [ "sisko" ] {
      # https://github.com/ngosang/restic-exporter/issues/31
      enable = false;
      repository = config.services.restic.backups.sisko.repository;
      passwordFile = config.age.secrets.SISKO_RESTIC_PASSWORD.path;
    };
    postgres = mkFor [ "sisko" ] {
      enable = true;
    };
    nginx = mkFor [ "sisko" ] {
      enable = true;
    };
    smartctl =
      mkFor
        [
          "sisko"
          "picard"
          "kirk"
          "pike"
        ]
        {
          enable = true;
        };
  };

  systemd.services.prometheus-restic-exporter.path = [ pkgs.openssh ];
}