summaryrefslogtreecommitdiff
path: root/modules/bridge.nix
blob: 6303266a4c26590a7986db95252cdc67ace8761a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
{ config, lib, pkgs, ... }:
let
  cfg = config.orbekk.bridge;
in
with lib;
{
  options = {
    orbekk.bridge = {
      enable = mkEnableOption "Enable bridge service";

      port = lib.mkOption {
        type = lib.types.port;
        default = (import ../data/aliases.nix).services.bridge_nightly.port;
        description = "bridge local port";
      };
    };
  };

  config = mkIf cfg.enable {
    systemd.services.bridge-nightly = {
      description = "Bridge Nightly backend";
      wantedBy = ["multi-user.target"];
      after = ["network.target"];

      environment = {
        BIND_ADDRESS = "[::]:${toString cfg.port}";
        RUST_BACKTRACE = "1";
        AUTHENTICATOR = "oauth";
        OPENID_ISSUER_URL= "https://auth.orbekk.com/realms/test";
        OPENID_CLIENT_ID= "test-client";
        OPENID_CLIENT_SECRET= "secret";
        APP_URL = "https://bridge-nightly.orbekk.com";
        DATABASE_URL = "postgres:///bridge_nightly";
        RUST_LOG = "info";
      };

      serviceConfig = {
        User = "bridge_nightly";
        Group = "bridge_nightly";
        ExecStart = "/opt/bridge-nightly/profile/bin/server";
      };
    };

      # "bridge.orbekk.com" = template // {
      #   locations."/".proxyPass = "http://${bridge_loc.host}:${toString bridge_loc.port}";
      # };

    services.postgresql = {
      enable = true;
      enableTCPIP = true;
      authentication = ''
        host  all all 2001:470:8e2e:1000::/64      md5
        host  all all 2001:470:8e2e:100::/64      md5
      '';
      ensureDatabases = [ "bridge_nightly" ];
      ensureUsers = [
        {
          name = "bridge_nightly";
          ensurePermissions."DATABASE bridge_nightly" = "ALL PRIVILEGES";
        }
      ];
    };
  };
}