Skip to content
Snippets Groups Projects
grid.nix 2.88 KiB
Newer Older
  • Learn to ignore specific revisions
  • # See morph/grid/local/grid.nix for additional commentary.
    
      grid-config = builtins.fromJSON (builtins.readFile ./config.json);
    
    Florian Sesser's avatar
    Florian Sesser committed
    
    
      # Module with per-grid configuration
    
      grid-module = {config, ...}: {
    
          # Allow us to remotely trigger updates to this system.
          ../../../nixos/modules/deployment.nix
          # Give it a good SSH configuration.
          ../../../nixos/modules/ssh.nix
        ];
        services.private-storage.sshUsers = import ./public-keys/users.nix;
    
        networking.domain = grid-config.domain;
    
        # Convert relative paths to absolute so library code can resolve names
        # correctly.
        grid = {
          publicKeyPath = toString ./. + "/${grid-config.publicKeyPath}";
          privateKeyPath = toString ./. + "/${grid-config.privateKeyPath}";
    
          inherit (grid-config) monitoringvpnEndpoint letsEncryptAdminEmail;
    
        # Configure deployment management authorization for all systems in the grid.
    
        services.private-storage.deployment = {
    
          authorizedKey = builtins.readFile "${config.grid.publicKeyPath}/deploy_key.pub";
    
      payments = {
        imports = [
    
        config = {
          grid.monitoringvpnIPv4 = "172.23.23.11";
    
            inherit (grid-config) issuerDomains allowedChargeOrigins;
    
          ./testing001-hardware.nix
    
        config = {
          grid.monitoringvpnIPv4 = "172.23.23.12";
    
          grid.storage = {
            inherit (grid-config) passValue publicStoragePort;
          };
          system.stateVersion = "19.03";
    
          gridlib.monitoring
          gridlib.hardware-aws
    
        config = {
          grid.monitoringvpnIPv4 = "172.23.23.1";
    
          grid.monitoring = {
            inherit paymentExporterTargets blackboxExporterHttpsTargets;
            inherit (grid-config) monitoringDomains;
            googleOAuthClientID = grid-config.monitoringGoogleOAuthClientID;
            enableSlackAlert = true;
          };
          system.stateVersion = "19.09";
    
      };
    
      # TBD: derive these automatically:
    
      paymentExporterTargets = [ "payments.monitoringvpn" ];
    
      blackboxExporterHttpsTargets = [
        "https://privatestorage-staging.com/"
    
        "https://www.privatestorage-staging.com/"
        "https://extra.privatestorage-staging.com/"
        "https://www.extra.privatestorage-staging.com/"
    
        "https://payments.privatestorage-staging.com/"
    
        "https://payments.extra.privatestorage-staging.com/"
    
        "https://monitoring.privatestorage-staging.com/"
    
        "https://monitoring.extra.privatestorage-staging.com/"
    
    Florian Sesser's avatar
    Florian Sesser committed
    
    
    in {
      network = {
        description = "PrivateStorage.io Testing Grid";
    
        inherit (gridlib) pkgs;
    
      inherit payments monitoring storage001;