python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / nixos / modules / services / misc / bazarr.nix
blob07c935053591946e2402b4608a91c59f458048c0
1 { config, pkgs, lib, ... }:
3 with lib;
5 let
6   cfg = config.services.bazarr;
7 in
9   options = {
10     services.bazarr = {
11       enable = mkEnableOption (lib.mdDoc "bazarr, a subtitle manager for Sonarr and Radarr");
13       openFirewall = mkOption {
14         type = types.bool;
15         default = false;
16         description = lib.mdDoc "Open ports in the firewall for the bazarr web interface.";
17       };
19       listenPort = mkOption {
20         type = types.port;
21         default = 6767;
22         description = lib.mdDoc "Port on which the bazarr web interface should listen";
23       };
25       user = mkOption {
26         type = types.str;
27         default = "bazarr";
28         description = lib.mdDoc "User account under which bazarr runs.";
29       };
31       group = mkOption {
32         type = types.str;
33         default = "bazarr";
34         description = lib.mdDoc "Group under which bazarr runs.";
35       };
36     };
37   };
39   config = mkIf cfg.enable {
40     systemd.services.bazarr = {
41       description = "bazarr";
42       after = [ "network.target" ];
43       wantedBy = [ "multi-user.target" ];
45       serviceConfig = rec {
46         Type = "simple";
47         User = cfg.user;
48         Group = cfg.group;
49         StateDirectory = "bazarr";
50         SyslogIdentifier = "bazarr";
51         ExecStart = pkgs.writeShellScript "start-bazarr" ''
52           ${pkgs.bazarr}/bin/bazarr \
53             --config '/var/lib/${StateDirectory}' \
54             --port ${toString cfg.listenPort} \
55             --no-update True
56         '';
57         Restart = "on-failure";
58       };
59     };
61     networking.firewall = mkIf cfg.openFirewall {
62       allowedTCPPorts = [ cfg.listenPort ];
63     };
65     users.users = mkIf (cfg.user == "bazarr") {
66       bazarr = {
67         isSystemUser = true;
68         group = cfg.group;
69         home = "/var/lib/${config.systemd.services.bazarr.serviceConfig.StateDirectory}";
70       };
71     };
73     users.groups = mkIf (cfg.group == "bazarr") {
74       bazarr = {};
75     };
76   };