grafana-alloy: don't build the frontend twice
[NixPkgs.git] / nixos / modules / services / misc / bazarr.nix
blobe81b5d2b736e59e13be43942e5293f9172e9fc6b
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       openFirewall = lib.mkOption {
11         type = lib.types.bool;
12         default = false;
13         description = "Open ports in the firewall for the bazarr web interface.";
14       };
16       listenPort = lib.mkOption {
17         type = lib.types.port;
18         default = 6767;
19         description = "Port on which the bazarr web interface should listen";
20       };
22       user = lib.mkOption {
23         type = lib.types.str;
24         default = "bazarr";
25         description = "User account under which bazarr runs.";
26       };
28       group = lib.mkOption {
29         type = lib.types.str;
30         default = "bazarr";
31         description = "Group under which bazarr runs.";
32       };
33     };
34   };
36   config = lib.mkIf cfg.enable {
37     systemd.services.bazarr = {
38       description = "bazarr";
39       after = [ "network.target" ];
40       wantedBy = [ "multi-user.target" ];
42       serviceConfig = rec {
43         Type = "simple";
44         User = cfg.user;
45         Group = cfg.group;
46         StateDirectory = "bazarr";
47         SyslogIdentifier = "bazarr";
48         ExecStart = pkgs.writeShellScript "start-bazarr" ''
49           ${pkgs.bazarr}/bin/bazarr \
50             --config '/var/lib/${StateDirectory}' \
51             --port ${toString cfg.listenPort} \
52             --no-update True
53         '';
54         Restart = "on-failure";
55       };
56     };
58     networking.firewall = lib.mkIf cfg.openFirewall {
59       allowedTCPPorts = [ cfg.listenPort ];
60     };
62     users.users = lib.mkIf (cfg.user == "bazarr") {
63       bazarr = {
64         isSystemUser = true;
65         group = cfg.group;
66         home = "/var/lib/${config.systemd.services.bazarr.serviceConfig.StateDirectory}";
67       };
68     };
70     users.groups = lib.mkIf (cfg.group == "bazarr") {
71       bazarr = {};
72     };
73   };