vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / services / monitoring / prometheus / exporters / exportarr.nix
blob45c2c697519cf9c3d03662b659780edf9ceedfef
1 { config, lib, pkgs, options, type, ... }:
3 let
4   cfg = config.services.prometheus.exporters."exportarr-${type}";
5   exportarrEnvironment = (
6     lib.mapAttrs (_: toString) cfg.environment
7   ) // {
8     PORT = toString cfg.port;
9     URL = cfg.url;
10     API_KEY_FILE = lib.mkIf (cfg.apiKeyFile != null) "%d/api-key";
11   };
14   port = 9708;
15   extraOpts = {
16     url = lib.mkOption {
17       type = lib.types.str;
18       default = "http://127.0.0.1";
19       description = ''
20         The full URL to Sonarr, Radarr, or Lidarr.
21       '';
22     };
24     apiKeyFile = lib.mkOption {
25       type = lib.types.nullOr lib.types.path;
26       default = null;
27       description = ''
28         File containing the api-key.
29       '';
30     };
32     package = lib.mkPackageOption pkgs "exportarr" { };
34     environment = lib.mkOption {
35       type = lib.types.attrsOf lib.types.str;
36       default = { };
37       description = ''
38         See [the configuration guide](https://github.com/onedr0p/exportarr#configuration) for available options.
39       '';
40       example = {
41         PROWLARR__BACKFILL = true;
42       };
43     };
44   };
45   serviceOpts = {
46     serviceConfig = {
47       LoadCredential = lib.optionalString (cfg.apiKeyFile != null) "api-key:${cfg.apiKeyFile}";
48       ExecStart = ''${cfg.package}/bin/exportarr ${type} "$@"'';
49       ProcSubset = "pid";
50       ProtectProc = "invisible";
51       SystemCallFilter = ["@system-service" "~@privileged"];
52     };
53     environment = exportarrEnvironment;
54   };