anyrun: 0-unstable-2024-11-08 -> 0-unstable-2024-12-27 (#369731)
[NixPkgs.git] / nixos / modules / services / monitoring / prometheus / exporters / deluge.nix
blobec3cbaf9c40e07be49e96edd9794f40eb22e07a4
2   config,
3   lib,
4   pkgs,
5   ...
6 }:
8 let
9   cfg = config.services.prometheus.exporters.deluge;
10   inherit (lib) mkOption types concatStringsSep;
13   port = 9354;
15   extraOpts = {
16     delugeHost = mkOption {
17       type = types.str;
18       default = "localhost";
19       description = ''
20         Hostname where deluge server is running.
21       '';
22     };
24     delugePort = mkOption {
25       type = types.port;
26       default = 58846;
27       description = ''
28         Port where deluge server is listening.
29       '';
30     };
32     delugeUser = mkOption {
33       type = types.str;
34       default = "localclient";
35       description = ''
36         User to connect to deluge server.
37       '';
38     };
40     delugePassword = mkOption {
41       type = types.nullOr types.str;
42       default = null;
43       description = ''
44         Password to connect to deluge server.
46         This stores the password unencrypted in the nix store and is thus considered unsafe. Prefer
47         using the delugePasswordFile option.
48       '';
49     };
51     delugePasswordFile = mkOption {
52       type = types.nullOr types.path;
53       default = null;
54       description = ''
55         File containing the password to connect to deluge server.
56       '';
57     };
59     exportPerTorrentMetrics = mkOption {
60       type = types.bool;
61       default = false;
62       description = ''
63         Enable per-torrent metrics.
65         This may significantly increase the number of time series depending on the number of
66         torrents in your Deluge instance.
67       '';
68     };
69   };
70   serviceOpts = {
71     serviceConfig = {
72       ExecStart = ''
73         ${pkgs.prometheus-deluge-exporter}/bin/deluge-exporter
74       '';
75       Environment =
76         [
77           "LISTEN_PORT=${toString cfg.port}"
78           "LISTEN_ADDRESS=${toString cfg.listenAddress}"
80           "DELUGE_HOST=${cfg.delugeHost}"
81           "DELUGE_USER=${cfg.delugeUser}"
82           "DELUGE_PORT=${toString cfg.delugePort}"
83         ]
84         ++ lib.optionals (cfg.delugePassword != null) [
85           "DELUGE_PASSWORD=${cfg.delugePassword}"
86         ]
87         ++ lib.optionals cfg.exportPerTorrentMetrics [
88           "PER_TORRENT_METRICS=1"
89         ];
90       EnvironmentFile = lib.optionalString (
91         cfg.delugePasswordFile != null
92       ) "/etc/deluge-exporter/password";
93     };
94   };