Skip to content
Snippets Groups Projects
customize-monitoring.nix 1.33 KiB
Newer Older
# Define a function which returns a value which fills in all the holes left by
# ``monitoring.nix``.
{
  # A set mapping VPN IP addresses as strings to lists of hostnames as
  # strings.  The system's ``/etc/hosts`` will be populated with this
  # information.
  hostsMap

  # See ``customize-issuer.nix``.
, monitoringvpnKeyDir
, monitoringvpnIPv4

  # XXX To be removed
, publicIPv4

  # A list of VPN IP addresses as strings indicating which clients will be
  # allowed onto the VPN.

  # A list of VPN clients (IP addresses or hostnames) as strings indicating
  # which nodes to scrape metrics from.

  # A string giving the NixOS state version for the system.
  deployment.targetHost = publicIPv4;
  deployment.secrets = {
    "monitoringvpn-private-key".source = "${monitoringvpnKeyDir}/server.key";
    "monitoringvpn-preshared-key".source = "${monitoringvpnKeyDir}/preshared.key";
  };
  networking.hosts = hostsMap;

  services.private-storage.monitoring.vpn.server = {
    enable = true;
    ip = monitoringvpnIPv4;
    inherit vpnClientIPs;
    pubKeysPath = monitoringvpnKeyDir;
  };

  services.private-storage.monitoring.prometheus = {
    inherit nodeExporterTargets;
    inherit nginxExporterTargets;
  };

  system.stateVersion = stateVersion;
}