1{
2 pkgs,
3 terra,
4 inputs,
5 ...
6}:
7let
8 client-modules = pkgs.callPackage "${inputs.nsid-tracker}/nix/client-modules.nix" { };
9 client = pkgs.callPackage "${inputs.nsid-tracker}/nix/client.nix" {
10 PUBLIC_API_URL = "gaze.systems/nsid-tracker/api";
11 inherit client-modules;
12 };
13 # server = terra.nsid-tracker-server;
14 port = 3713;
15in
16{
17 systemd.services.nsid-tracker-client = {
18 description = "nsid-tracker-client";
19 wantedBy = [ "multi-user.target" ];
20 after = [ "network.target" ];
21 environment = {
22 # ORIGIN = "https://gaze.systems";
23 PORT = toString port;
24 };
25 serviceConfig = {
26 DynamicUser = true;
27 ExecStart = "${client}/bin/website";
28 Restart = "on-failure";
29 RestartSec = 5;
30 WorkingDirectory = "/var/lib/nsid-tracker";
31 };
32 };
33
34 systemd.services.nsid-tracker-keep-alive = {
35 description = "keeps nsid-tracker peer connection alive";
36 wantedBy = [ "multi-user.target" ];
37 after = [ "network.target" ];
38 serviceConfig = {
39 Type = "oneshot";
40 ExecStart = "${pkgs.curl}/bin/curl http://dusk-devel-mobi:${toString port}/events";
41 };
42 };
43 systemd.timers.nsid-tracker-keep-alive.timerConfig = {
44 OnBootSec = "5 min";
45 OnUnitActiveSec = "5 min";
46 Unit = "nsid-tracker-keep-alive.service";
47 };
48
49 services.nginx.virtualHosts."gaze.systems" = {
50 locations."/nsid-tracker/api" = {
51 proxyPass = "http://100.64.0.6:${toString port}/";
52 proxyWebsockets = true;
53 extraConfig = ''
54 rewrite ^/nsid-tracker/api/(.*) /$1 break;
55 '';
56 };
57 locations."/nsid-tracker".return = "301 /nsid-tracker/";
58 locations."/nsid-tracker/" = {
59 proxyPass = "http://localhost:${toString port}/";
60 extraConfig = ''
61 rewrite ^/nsid-tracker/(.*)$ /$1 break;
62 '';
63 };
64 };
65}