This repository has no description
2.9 kB
77 lines
1{
2 config,
3 pkgs,
4 ...
5}:
6{
7 clan.core.vars.generators.archiver-jellyfin = {
8 prompts.jellyfin-api-key = {
9 description = "Jellyfin API key - create one in Jellyfin Dashboard -> API Keys";
10 type = "hidden";
11 persist = true;
12 };
13 };
14
15 clan.core.vars.generators.archiver-matrix = {
16 prompts.matrix-access-token = {
17 description = "Matrix access token for @archiver:lassul.us - register the user on synapse, then get a token via: curl -XPOST 'https://matrix.lassul.us/_matrix/client/r0/login' -d '{\"type\":\"m.login.password\",\"user\":\"archiver\",\"password\":\"...\"}' -H 'Content-Type: application/json'";
18 type = "hidden";
19 persist = true;
20 };
21
22 };
23
24 systemd.services.archiver-bot = {
25 description = "Archiver Matrix Bot - requests movies via Jellyseerr";
26 wantedBy = [ "multi-user.target" ];
27 after = [
28 "network-online.target"
29 "jellyseerr.service"
30 ];
31 wants = [ "network-online.target" ];
32
33 environment = {
34 MATRIX_HOMESERVER = "https://matrix.lassul.us";
35 MATRIX_USER_ID = "@archiver:lassul.us";
36 MATRIX_DEVICE_ID = "ARCHIVER";
37 JELLYSEERR_URL = "http://localhost:5055";
38 FLAX_URL = "https://flax.lassul.us";
39 FLIX_URL = "https://flix.lassul.us";
40 IPFS_GATEWAY_URL = "https://ipfs.lassul.us";
41 JELLYFIN_URL = "http://localhost:8096";
42
43 MEDIA_PATH_PREFIX = "/var/download/";
44 IPFS_CID_MAP = "/var/lib/ipfs/cid-map.txt";
45 IPFS_PATH_PREFIX = "/var/lib/ipfs/download/";
46 WEBHOOK_PORT = "8099";
47 STORE_PATH = "/var/lib/archiver-bot";
48 };
49
50 script = ''
51 export MATRIX_ACCESS_TOKEN="$(cat "$CREDENTIALS_DIRECTORY/matrix-access-token")"
52 export JELLYSEERR_API_KEY="$(${pkgs.jq}/bin/jq -r '.main.apiKey' "$CREDENTIALS_DIRECTORY/jellyseerr-settings")"
53 export RADARR_API_KEY="$(${pkgs.libxml2}/bin/xmllint --xpath 'string(//ApiKey)' "$CREDENTIALS_DIRECTORY/radarr-config")"
54 export SONARR_API_KEY="$(${pkgs.libxml2}/bin/xmllint --xpath 'string(//ApiKey)' "$CREDENTIALS_DIRECTORY/sonarr-config")"
55 export JELLYFIN_API_KEY="$(cat "$CREDENTIALS_DIRECTORY/jellyfin-api-key")"
56 exec ${pkgs.callPackage ../../5pkgs/archiver-bot/package.nix { }}/bin/archiver-bot
57 '';
58
59 serviceConfig = {
60 Restart = "on-failure";
61 RestartSec = 10;
62 DynamicUser = true;
63 StateDirectory = "archiver-bot";
64 LoadCredential = [
65 "matrix-access-token:${
66 config.clan.core.vars.generators.archiver-matrix.files."matrix-access-token".path
67 }"
68 "jellyseerr-settings:/var/lib/private/jellyseerr/config/settings.json"
69 "radarr-config:/var/lib/radarr/.config/Radarr/config.xml"
70 "sonarr-config:/var/lib/sonarr/.config/NzbDrone/config.xml"
71 "jellyfin-api-key:${
72 config.clan.core.vars.generators.archiver-jellyfin.files."jellyfin-api-key".path
73 }"
74 ];
75 };
76 };
77}