silx: 2.1.1 -> 2.1.2 (#361612)
[NixPkgs.git] / nixos / modules / services / misc / bazarr.nix
blob30924da936b8b227b4a6e387d8af2ac5a542f4ff
1 { config, pkgs, lib, ... }:
2 let
3   cfg = config.services.bazarr;
4 in
6   options = {
7     services.bazarr = {
8       enable = lib.mkEnableOption "bazarr, a subtitle manager for Sonarr and Radarr";
10       package = lib.mkPackageOption pkgs "bazarr" { };
12       openFirewall = lib.mkOption {
13         type = lib.types.bool;
14         default = false;
15         description = "Open ports in the firewall for the bazarr web interface.";
16       };
18       listenPort = lib.mkOption {
19         type = lib.types.port;
20         default = 6767;
21         description = "Port on which the bazarr web interface should listen";
22       };
24       user = lib.mkOption {
25         type = lib.types.str;
26         default = "bazarr";
27         description = "User account under which bazarr runs.";
28       };
30       group = lib.mkOption {
31         type = lib.types.str;
32         default = "bazarr";
33         description = "Group under which bazarr runs.";
34       };
35     };
36   };
38   config = lib.mkIf cfg.enable {
39     systemd.services.bazarr = {
40       description = "Bazarr";
41       after = [ "network.target" ];
42       wantedBy = [ "multi-user.target" ];
44       serviceConfig = rec {
45         Type = "simple";
46         User = cfg.user;
47         Group = cfg.group;
48         StateDirectory = "bazarr";
49         SyslogIdentifier = "bazarr";
50         ExecStart = pkgs.writeShellScript "start-bazarr" ''
51           ${cfg.package}/bin/bazarr \
52             --config '/var/lib/${StateDirectory}' \
53             --port ${toString cfg.listenPort} \
54             --no-update True
55         '';
56         Restart = "on-failure";
57         KillSignal = "SIGINT";
58         SuccessExitStatus = "0 156";
59       };
60     };
62     networking.firewall = lib.mkIf cfg.openFirewall {
63       allowedTCPPorts = [ cfg.listenPort ];
64     };
66     users.users = lib.mkIf (cfg.user == "bazarr") {
67       bazarr = {
68         isSystemUser = true;
69         group = cfg.group;
70         home = "/var/lib/${config.systemd.services.bazarr.serviceConfig.StateDirectory}";
71       };
72     };
74     users.groups = lib.mkIf (cfg.group == "bazarr") {
75       bazarr = {};
76     };
77   };