python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / nixos / modules / services / misc / lidarr.nix
blob92b00054bdff9a9fc48293786aae981b535327f5
1 { config, pkgs, lib, ... }:
3 with lib;
5 let
6   cfg = config.services.lidarr;
7 in
9   options = {
10     services.lidarr = {
11       enable = mkEnableOption (lib.mdDoc "Lidarr");
13       dataDir = mkOption {
14         type = types.str;
15         default = "/var/lib/lidarr/.config/Lidarr";
16         description = lib.mdDoc "The directory where Lidarr stores its data files.";
17       };
19       package = mkOption {
20         type = types.package;
21         default = pkgs.lidarr;
22         defaultText = literalExpression "pkgs.lidarr";
23         description = lib.mdDoc "The Lidarr package to use";
24       };
26       openFirewall = mkOption {
27         type = types.bool;
28         default = false;
29         description = lib.mdDoc ''
30           Open ports in the firewall for Lidarr
31         '';
32       };
34       user = mkOption {
35         type = types.str;
36         default = "lidarr";
37         description = lib.mdDoc ''
38           User account under which Lidarr runs.
39         '';
40       };
42       group = mkOption {
43         type = types.str;
44         default = "lidarr";
45         description = lib.mdDoc ''
46           Group under which Lidarr runs.
47         '';
48       };
49     };
50   };
52   config = mkIf cfg.enable {
53     systemd.tmpfiles.rules = [
54       "d '${cfg.dataDir}' 0700 ${cfg.user} ${cfg.group} - -"
55     ];
57     systemd.services.lidarr = {
58       description = "Lidarr";
59       after = [ "network.target" ];
60       wantedBy = [ "multi-user.target" ];
62       serviceConfig = {
63         Type = "simple";
64         User = cfg.user;
65         Group = cfg.group;
66         ExecStart = "${cfg.package}/bin/Lidarr -nobrowser -data='${cfg.dataDir}'";
67         Restart = "on-failure";
68       };
69     };
71     networking.firewall = mkIf cfg.openFirewall {
72       allowedTCPPorts = [ 8686 ];
73     };
75     users.users = mkIf (cfg.user == "lidarr") {
76       lidarr = {
77         group = cfg.group;
78         home = "/var/lib/lidarr";
79         uid = config.ids.uids.lidarr;
80       };
81     };
83     users.groups = mkIf (cfg.group == "lidarr") {
84       lidarr = {
85         gid = config.ids.gids.lidarr;
86       };
87     };
88   };