vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / services / networking / sabnzbd.nix
blob10b3a8cd5976fa6df048456d4fc85d8ee83c3119
1 { config, lib, pkgs, ... }:
3 with lib;
5 let
7   cfg = config.services.sabnzbd;
8   inherit (pkgs) sabnzbd;
14   ###### interface
16   options = {
17     services.sabnzbd = {
18       enable = mkEnableOption "the sabnzbd server";
20       package = mkPackageOption pkgs "sabnzbd" { };
22       configFile = mkOption {
23         type = types.path;
24         default = "/var/lib/sabnzbd/sabnzbd.ini";
25         description = "Path to config file.";
26       };
28       user = mkOption {
29         default = "sabnzbd";
30         type = types.str;
31         description = "User to run the service as";
32       };
34       group = mkOption {
35         type = types.str;
36         default = "sabnzbd";
37         description = "Group to run the service as";
38       };
40       openFirewall = mkOption {
41         type = types.bool;
42         default = false;
43         description = ''
44           Open ports in the firewall for the sabnzbd web interface
45         '';
46       };
47     };
48   };
51   ###### implementation
53   config = mkIf cfg.enable {
54     users.users = mkIf (cfg.user == "sabnzbd") {
55       sabnzbd = {
56         uid = config.ids.uids.sabnzbd;
57         group = cfg.group;
58         description = "sabnzbd user";
59       };
60     };
62     users.groups = mkIf (cfg.group == "sabnzbd") {
63       sabnzbd.gid = config.ids.gids.sabnzbd;
64     };
66     systemd.services.sabnzbd = {
67         description = "sabnzbd server";
68         wantedBy    = [ "multi-user.target" ];
69         after = [ "network.target" ];
70         serviceConfig = {
71           Type = "forking";
72           GuessMainPID = "no";
73           User = cfg.user;
74           Group = cfg.group;
75           StateDirectory = "sabnzbd";
76           ExecStart = "${lib.getBin cfg.package}/bin/sabnzbd -d -f ${cfg.configFile}";
77         };
78     };
80     networking.firewall = mkIf cfg.openFirewall {
81       allowedTCPPorts = [ 8080 ];
82     };
83   };