summary refs log tree commit diff
path: root/nixos/modules
diff options
context:
space:
mode:
authorFranz Pletz <fpletz@fnordicwalking.de>2019-01-14 19:33:58 +0000
committerGitHub <noreply@github.com>2019-01-14 19:33:58 +0000
commitd947944d70649573fb305264fc84a31d23fc748d (patch)
tree4920adc7d7ccc79c9664e6013200c91b06203ef2 /nixos/modules
parente60121566b0c6476f09c99b8f24e22746f46fcb1 (diff)
parent31ad79f43243ef7a0b058afa2fb8f0088966b05e (diff)
downloadnixpkgs-d947944d70649573fb305264fc84a31d23fc748d.tar
nixpkgs-d947944d70649573fb305264fc84a31d23fc748d.tar.gz
nixpkgs-d947944d70649573fb305264fc84a31d23fc748d.tar.bz2
nixpkgs-d947944d70649573fb305264fc84a31d23fc748d.tar.lz
nixpkgs-d947944d70649573fb305264fc84a31d23fc748d.tar.xz
nixpkgs-d947944d70649573fb305264fc84a31d23fc748d.tar.zst
nixpkgs-d947944d70649573fb305264fc84a31d23fc748d.zip
Merge pull request #53962 from elseym/sonarr
sonarr service: add more options to module
Diffstat (limited to 'nixos/modules')
-rw-r--r--nixos/modules/services/misc/sonarr.nix60
1 files changed, 47 insertions, 13 deletions
diff --git a/nixos/modules/services/misc/sonarr.nix b/nixos/modules/services/misc/sonarr.nix
index 97b67a0b503..a99445a268d 100644
--- a/nixos/modules/services/misc/sonarr.nix
+++ b/nixos/modules/services/misc/sonarr.nix
@@ -9,6 +9,32 @@ in
   options = {
     services.sonarr = {
       enable = mkEnableOption "Sonarr";
+
+      dataDir = mkOption {
+        type = types.str;
+        default = "/var/lib/sonarr/.config/NzbDrone";
+        description = "The directory where Sonarr stores its data files.";
+      };
+
+      openFirewall = mkOption {
+        type = types.bool;
+        default = false;
+        description = ''
+          Open ports in the firewall for the Sonarr web interface
+        '';
+      };
+
+      user = mkOption {
+        type = types.str;
+        default = "sonarr";
+        description = "User account under which Sonaar runs.";
+      };
+
+      group = mkOption {
+        type = types.str;
+        default = "sonarr";
+        description = "Group under which Sonaar runs.";
+      };
     };
   };
 
@@ -18,30 +44,38 @@ in
       after = [ "network.target" ];
       wantedBy = [ "multi-user.target" ];
       preStart = ''
-        test -d /var/lib/sonarr/ || {
-          echo "Creating sonarr data directory in /var/lib/sonarr/"
-          mkdir -p /var/lib/sonarr/
+        test -d ${cfg.dataDir} || {
+          echo "Creating sonarr data directory in ${cfg.dataDir}"
+          mkdir -p ${cfg.dataDir}
         }
-        chown -R sonarr:sonarr /var/lib/sonarr/
-        chmod 0700 /var/lib/sonarr/
+        chown -R ${cfg.user}:${cfg.group} ${cfg.dataDir}
+        chmod 0700 ${cfg.dataDir}
       '';
 
       serviceConfig = {
         Type = "simple";
-        User = "sonarr";
-        Group = "sonarr";
+        User = cfg.user;
+        Group = cfg.group;
         PermissionsStartOnly = "true";
-        ExecStart = "${pkgs.sonarr}/bin/NzbDrone --no-browser";
+        ExecStart = "${pkgs.sonarr}/bin/NzbDrone -nobrowser -data='${cfg.dataDir}'";
         Restart = "on-failure";
       };
     };
 
-    users.users.sonarr = {
-      uid = config.ids.uids.sonarr;
-      home = "/var/lib/sonarr";
-      group = "sonarr";
+    networking.firewall = mkIf cfg.openFirewall {
+      allowedTCPPorts = [ 8989 ];
+    };
+
+    users.users = mkIf (cfg.user == "sonarr") {
+      sonarr = {
+        group = cfg.group;
+        home = cfg.dataDir;
+        uid = config.ids.uids.sonarr;
+      };
     };
-    users.groups.sonarr.gid = config.ids.gids.sonarr;
 
+    users.groups = mkIf (cfg.group == "sonarr") {
+      sonarr.gid = config.ids.gids.sonarr;
+    };
   };
 }