silx: 2.1.1 -> 2.1.2 (#361612)
[NixPkgs.git] / nixos / modules / services / misc / lidarr.nix
blobfd94f6536b22de62e679630d5298c1f1119390d7
1 { config, pkgs, lib, ... }:
2 let
3   cfg = config.services.lidarr;
4 in
6   options = {
7     services.lidarr = {
8       enable = lib.mkEnableOption "Lidarr, a Usenet/BitTorrent music downloader";
10       dataDir = lib.mkOption {
11         type = lib.types.str;
12         default = "/var/lib/lidarr/.config/Lidarr";
13         description = "The directory where Lidarr stores its data files.";
14       };
16       package = lib.mkPackageOption pkgs "lidarr" { };
18       openFirewall = lib.mkOption {
19         type = lib.types.bool;
20         default = false;
21         description = ''
22           Open ports in the firewall for Lidarr
23         '';
24       };
26       user = lib.mkOption {
27         type = lib.types.str;
28         default = "lidarr";
29         description = ''
30           User account under which Lidarr runs.
31         '';
32       };
34       group = lib.mkOption {
35         type = lib.types.str;
36         default = "lidarr";
37         description = ''
38           Group under which Lidarr runs.
39         '';
40       };
41     };
42   };
44   config = lib.mkIf cfg.enable {
45     systemd.tmpfiles.settings."10-lidarr".${cfg.dataDir}.d = {
46       inherit (cfg) user group;
47       mode = "0700";
48     };
50     systemd.services.lidarr = {
51       description = "Lidarr";
52       after = [ "network.target" ];
53       wantedBy = [ "multi-user.target" ];
55       serviceConfig = {
56         Type = "simple";
57         User = cfg.user;
58         Group = cfg.group;
59         ExecStart = "${cfg.package}/bin/Lidarr -nobrowser -data='${cfg.dataDir}'";
60         Restart = "on-failure";
61       };
62     };
64     networking.firewall = lib.mkIf cfg.openFirewall {
65       allowedTCPPorts = [ 8686 ];
66     };
68     users.users = lib.mkIf (cfg.user == "lidarr") {
69       lidarr = {
70         group = cfg.group;
71         home = "/var/lib/lidarr";
72         uid = config.ids.uids.lidarr;
73       };
74     };
76     users.groups = lib.mkIf (cfg.group == "lidarr") {
77       lidarr = {
78         gid = config.ids.gids.lidarr;
79       };
80     };
81   };