https://git.jolheiser.com/infra.git
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} = { }; }; }