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