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