Skip to content
Snippets Groups Projects
make-monitoring.nix 1.4 KiB
Newer Older
{ publicIPv4
, hardware
, publicStoragePort
, ristrettoSigningKeyPath
, passValue
, sshUsers
, stateVersion
, monitoringvpnIPv4 ? null
, monitoringvpnKeyDir ? null
, vpnClientIPs ? null
, ... }: let

  enableVpn = monitoringvpnKeyDir != null &&
              monitoringvpnIPv4 != null &&
              vpnClientIPs != null;

  vpnSecrets = if !enableVpn then {} else {
    "monitoringvpn-private-key" = {
      source = monitoringvpnKeyDir + "/server.key";
      destination = "/run/keys/monitoringvpn/server.key";
      owner.user = "root";
      owner.group = "root";
      permissions = "0400";
      action = ["sudo" "systemctl" "restart" "wireguard-monitoringvpn.service"];
    };
    "monitoringvpn-preshared-key" = {
      source = monitoringvpnKeyDir + "/preshared.key";
      destination = "/run/keys/monitoringvpn/preshared.key";
      owner.user = "root";
      owner.group = "root";
      permissions = "0400";
      action = ["sudo" "systemctl" "restart" "wireguard-monitoringvpn.service"];
    };
  };
in rec {
Florian Sesser's avatar
Florian Sesser committed

  deployment = {
    targetHost = publicIPv4;

    secrets = { } // vpnSecrets;
Florian Sesser's avatar
Florian Sesser committed
  };

  imports = [
    hardware
    ../../nixos/modules/monitoring/vpn/server.nix
  ];

  services.private-storage.monitoring.vpn.server = if !enableVpn then {} else {
Florian Sesser's avatar
Florian Sesser committed
    enable = true;
Florian Sesser's avatar
Florian Sesser committed
    ip = monitoringvpnIPv4;
    pubKeysPath = monitoringvpnKeyDir;
Florian Sesser's avatar
Florian Sesser committed
  };

  system.stateVersion = stateVersion;
}