this repo has no description
1{
2 config,
3 pkgs,
4 lib,
5 ...
6}: let
7 cfg = config.services.bluesky-jetstream;
8in
9 with lib; {
10 options.services.bluesky-jetstream = {
11 enable = mkEnableOption "jetstream server";
12 package = mkPackageOption pkgs "bluesky-jetstream" {};
13
14 # dataDir = mkOption {
15 # type = types.str;
16 # default = "/var/lib/jetstream";
17 # description = "directory to store data (pebbleDB)";
18 # };
19 livenessTtl = mkOption {
20 type = types.int;
21 default = 15;
22 description = "time to restart when no event detected (seconds)";
23 };
24 websocketUrl = mkOption {
25 type = types.str;
26 default = "wss://bsky.network/xrpc/com.atproto.sync.subscribeRepos";
27 description = "full websocket path to the ATProto SubscribeRepos XRPC endpoint";
28 };
29 };
30 config = mkIf cfg.enable {
31 systemd.services.bluesky-jetstream = {
32 description = "bluesky jetstream";
33 after = ["network.target" "pds.service"];
34 wantedBy = ["multi-user.target"];
35
36 serviceConfig = {
37 User = "jetstream";
38 Group = "jetstream";
39 StateDirectory = "jetstream";
40 StateDirectoryMode = "0755";
41 # preStart = ''
42 # mkdir -p "${cfg.dataDir}"
43 # chown -R jetstream:jetstream "${cfg.dataDir}"
44 # '';
45 # WorkingDirectory = cfg.dataDir;
46 Environment = [
47 "JETSTREAM_DATA_DIR=/var/lib/jetstream/data"
48 "JETSTREAM_LIVENESS_TTL=${toString cfg.livenessTtl}s"
49 "JETSTREAM_WS_URL=${cfg.websocketUrl}"
50 ];
51 ExecStart = getExe cfg.package;
52 Restart = "always";
53 RestartSec = 5;
54 };
55 };
56 users = {
57 users.jetstream = {
58 group = "jetstream";
59 isSystemUser = true;
60 };
61 groups.jetstream = {};
62 };
63 };
64 }