This repository has no description
1{
2 config,
3 pkgs,
4 lib,
5 ...
6}: let
7 cfg = config.services.tangled.zoekt;
8in
9 with lib; {
10 options.services.tangled.zoekt = {
11 enable = mkOption {
12 type = types.bool;
13 default = false;
14 description = "Enable a tangled zoekt node";
15 };
16
17 package = mkOption {
18 type = types.package;
19 description = "zoekt-tngl-indexserver package to use for zoekt node";
20 };
21
22 zoekt-webserver-package = mkOption {
23 type = types.package;
24 description = "zoekt-webserver package to use for zoekt node";
25 };
26
27 listenAddr = mkOption {
28 type = types.str;
29 default = ":6060";
30 description = "zoekt-tngl-indexserver listen address";
31 };
32
33 webListenAddr = mkOption {
34 type = types.str;
35 default = ":6070";
36 description = "zoekt-webserver listen address";
37 };
38
39 atpPlcUrl = mkOption {
40 type = types.str;
41 default = "https://plc.directory";
42 description = "atproto PLC directory";
43 };
44
45 appviewUrl = mkOption {
46 type = types.str;
47 default = "https://tangled.org";
48 description = "Tangled appview URL";
49 };
50
51 indexDir = mkOption {
52 type = types.path;
53 default = "/var/lib/zoekt-tnglserver/index";
54 description = "zoekt index directory";
55 };
56
57 indexConcurrency = mkOption {
58 type = types.int;
59 default = 4;
60 description = "Maximum number of concurrent index jobs to run";
61 };
62
63 indexQueueSize = mkOption {
64 type = types.int;
65 default = 100;
66 description = "Maximum number of index jobs queue up";
67 };
68 };
69 config = mkIf cfg.enable {
70 # environment.systemPackages = [
71 # pkgs.git
72 # cfg.package
73 # ];
74
75 systemd.services.zoekt-webserver = {
76 description = "tangled zoekt-webserver";
77 after = ["network.target"];
78 wantedBy = ["multi-user.target"];
79 serviceConfig = {
80 LogsDirectory = "zoekt-webserver";
81 StateDirectory = "zoekt-webserver";
82 ExecStart = "${getExe cfg.zoekt-webserver-package} -index ${cfg.indexDir} -rpc";
83 };
84 };
85
86 systemd.services.zoekt-tngl-indexserver = {
87 description = "tangled zoekt index server service";
88 after = ["network.target"];
89 wantedBy = ["multi-user.target"];
90 path = [
91 pkgs.git
92 cfg.package
93 ];
94 serviceConfig = {
95 LogsDirectory = "zoekt-tngl-indexserver";
96 StateDirectory = "zoekt-tngl-indexserver";
97 Environment = [
98 "TANGLED_ZOEKT_INDEX_DIR=${cfg.indexDir}"
99 "TANGLED_ZOEKT_INDEX_CONCURRENCY=${toString cfg.indexConcurrency}"
100 "TANGLED_ZOEKT_INDEX_QUEUE_SIZE=${toString cfg.indexQueueSize}"
101 "TANGLED_ZOEKT_PLC_URL=${cfg.atpPlcUrl}"
102 "TANGLED_ZOEKT_APPVIEW_URL=${cfg.appviewUrl}"
103 ];
104 ExecStart = "${getExe cfg.package} serve";
105 Restart = "always";
106 };
107 };
108 };
109 }