Home

infra @2d2b5c7c4fe9ed8c0b26577417d9c4164240bb96 - refs - log -
-
https://git.jolheiser.com/infra.git
dragonwell flake
infra / dragonwell / zoekt.nix
- raw -
 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
65
66
67
{ pkgs, ... }:
let
  user = "zoekt";
  repoDir = "/var/lib/ugit/repos";
  indexDir = "/var/lib/${user}";
  port = 4737;
in
{
  services.tailproxy.zoekt = {
    enable = true;
    hostname = "zoekt";
    inherit port;
    authKey = "tskey-auth-k4SpytYDoS11CNTRL-Aeeu3nNJZVChryEPXr8sVCpYykMtUfZh"; # One-time key
  };
  systemd = {
    services = {
      zoekt-webserver = {
        description = "Zoekt web server";
        after = [ "network.target" ];
        wantedBy = [ "multi-user.target" ];

        serviceConfig = {
          Type = "simple";
          ExecStart = "${pkgs.zoekt}/bin/zoekt-webserver -index ${indexDir} -listen :${builtins.toString port}";
          Restart = "on-failure";
          RestartSec = "5s";
          StateDirectory = user;
          User = user;
        };
      };
      zoekt-git-index = {
        description = "Zoekt git indexer";

        serviceConfig = {
          Type = "oneshot";
          ExecStart =
            let
              script = pkgs.writeShellScript "zoekt-index-all" ''
                repos=$(find ${repoDir} -maxdepth 1 -type d -name "*.git")
                exec ${pkgs.zoekt}/bin/zoekt-git-index -index ${indexDir} $repos
              '';
            in
            "${script}";
          StateDirectory = "zoekt";
          User = user;
          SupplementaryGroups = [ "ugit" ];
        };
      };
    };
    timers.zoekt-git-index = {
      description = "Timer for zoekt git indexer";
      wantedBy = [ "timers.target" ];

      timerConfig = {
        OnCalendar = "*:0/15";
        Persistent = true;
      };
    };
  };
  users = {
    users.${user} = {
      isSystemUser = true;
      group = user;
    };
    groups.${user} = { };
  };
}