This repository has no description
2.8 kB
76 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 path = [ pkgs.kubo ];
33
34 environment = {
35 MATRIX_HOMESERVER = "https://matrix.lassul.us";
36 MATRIX_USER_ID = "@archiver:lassul.us";
37 MATRIX_DEVICE_ID = "ARCHIVER";
38 JELLYSEERR_URL = "http://localhost:5055";
39 FLAX_URL = "https://flax.lassul.us";
40 FLIX_URL = "https://flix.lassul.us";
41 IPFS_GATEWAY_URL = "https://ipfs.lassul.us";
42 JELLYFIN_URL = "http://localhost:8096";
43
44 MEDIA_PATH_PREFIX = "/var/download/";
45 WEBHOOK_PORT = "8099";
46 STORE_PATH = "/var/lib/archiver-bot";
47 };
48
49 script = ''
50 export MATRIX_ACCESS_TOKEN="$(cat "$CREDENTIALS_DIRECTORY/matrix-access-token")"
51 export JELLYSEERR_API_KEY="$(${pkgs.jq}/bin/jq -r '.main.apiKey' "$CREDENTIALS_DIRECTORY/jellyseerr-settings")"
52 export RADARR_API_KEY="$(${pkgs.libxml2}/bin/xmllint --xpath 'string(//ApiKey)' "$CREDENTIALS_DIRECTORY/radarr-config")"
53 export SONARR_API_KEY="$(${pkgs.libxml2}/bin/xmllint --xpath 'string(//ApiKey)' "$CREDENTIALS_DIRECTORY/sonarr-config")"
54 export JELLYFIN_API_KEY="$(cat "$CREDENTIALS_DIRECTORY/jellyfin-api-key")"
55 exec ${pkgs.callPackage ../../5pkgs/archiver-bot/package.nix { }}/bin/archiver-bot
56 '';
57
58 serviceConfig = {
59 Restart = "on-failure";
60 RestartSec = 10;
61 DynamicUser = true;
62 StateDirectory = "archiver-bot";
63 LoadCredential = [
64 "matrix-access-token:${
65 config.clan.core.vars.generators.archiver-matrix.files."matrix-access-token".path
66 }"
67 "jellyseerr-settings:/var/lib/private/jellyseerr/config/settings.json"
68 "radarr-config:/var/lib/radarr/.config/Radarr/config.xml"
69 "sonarr-config:/var/lib/sonarr/.config/NzbDrone/config.xml"
70 "jellyfin-api-key:${
71 config.clan.core.vars.generators.archiver-jellyfin.files."jellyfin-api-key".path
72 }"
73 ];
74 };
75 };
76}