summary refs log tree commit diff
path: root/nixos/modules/services/torrent/transmission.nix
diff options
context:
space:
mode:
authorJos van Bakel <jos@codeaddict.org>2019-08-24 16:44:14 +0200
committerJos van Bakel <jos@codeaddict.org>2019-08-25 13:19:48 +0200
commitc3e93d5ad4b72225fbd7c938379058e238ab8779 (patch)
treed1a750e78ea9c4896c76924395f1ca6592b8ebe6 /nixos/modules/services/torrent/transmission.nix
parent554b6ea25e7d6e84d2f5f69648a3796829525b80 (diff)
downloadnixpkgs-c3e93d5ad4b72225fbd7c938379058e238ab8779.tar
nixpkgs-c3e93d5ad4b72225fbd7c938379058e238ab8779.tar.gz
nixpkgs-c3e93d5ad4b72225fbd7c938379058e238ab8779.tar.bz2
nixpkgs-c3e93d5ad4b72225fbd7c938379058e238ab8779.tar.lz
nixpkgs-c3e93d5ad4b72225fbd7c938379058e238ab8779.tar.xz
nixpkgs-c3e93d5ad4b72225fbd7c938379058e238ab8779.tar.zst
nixpkgs-c3e93d5ad4b72225fbd7c938379058e238ab8779.zip
nixos/transmission: make user configurable
Diffstat (limited to 'nixos/modules/services/torrent/transmission.nix')
-rw-r--r--nixos/modules/services/torrent/transmission.nix36
1 files changed, 27 insertions, 9 deletions
diff --git a/nixos/modules/services/torrent/transmission.nix b/nixos/modules/services/torrent/transmission.nix
index f544928fb6b..a94a471361e 100644
--- a/nixos/modules/services/torrent/transmission.nix
+++ b/nixos/modules/services/torrent/transmission.nix
@@ -84,6 +84,18 @@ in
           The directory where transmission will create files.
         '';
       };
+
+      user = mkOption {
+        type = types.str;
+        default = "transmission";
+        description = "User account under which Transmission runs.";
+      };
+
+      group = mkOption {
+        type = types.str;
+        default = "transmission";
+        description = "Group account under which Transmission runs.";
+      };
     };
   };
 
@@ -99,7 +111,8 @@ in
       serviceConfig.ExecStartPre = preStart;
       serviceConfig.ExecStart = "${pkgs.transmission}/bin/transmission-daemon -f --port ${toString config.services.transmission.port}";
       serviceConfig.ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
-      serviceConfig.User = "transmission";
+      serviceConfig.User = cfg.user;
+      serviceConfig.Group = cfg.group;
       # NOTE: transmission has an internal umask that also must be set (in settings.json)
       serviceConfig.UMask = "0002";
     };
@@ -107,14 +120,19 @@ in
     # It's useful to have transmission in path, e.g. for remote control
     environment.systemPackages = [ pkgs.transmission ];
 
-    users.groups.transmission.gid = config.ids.gids.transmission;
-    users.users.transmission = {
-      group = "transmission";
-      uid = config.ids.uids.transmission;
-      description = "Transmission BitTorrent user";
-      home = homeDir;
-      createHome = true;
-    };
+    users.users = optionalAttrs (cfg.user == "transmission") (singleton
+      { name = "transmission";
+        group = cfg.group;
+        uid = config.ids.uids.transmission;
+        description = "Transmission BitTorrent user";
+        home = homeDir;
+        createHome = true;
+      });
+
+    users.groups = optionalAttrs (cfg.group == "transmission") (singleton
+      { name = "transmission";
+        gid = config.ids.gids.transmission;
+      });
 
     # AppArmor profile
     security.apparmor.profiles = mkIf apparmor [