diff --git a/nixos/modules/services/torrent/transmission.nix b/nixos/modules/services/torrent/transmission.nix
index a6ff467914a1..95c0b7c53e44 100644
--- a/nixos/modules/services/torrent/transmission.nix
+++ b/nixos/modules/services/torrent/transmission.nix
@@ -167,13 +167,15 @@ in
};
downloadDirPermissions = mkOption {
- type = types.str;
- default = "770";
- example = "775";
+ type = with types; nullOr str;
+ default = null;
+ example = "770";
description = ''
- The permissions set by systemd.activationScripts.transmission-daemon
- on the directories
- and .
+ If not null
, is used as the permissions
+ set by systemd.activationScripts.transmission-daemon
+ on the directories ,
+ .
+ and .
Note that you may also want to change
.
'';
@@ -246,15 +248,17 @@ in
# when /home/foo is not owned by cfg.user.
# Note also that using an ExecStartPre= wouldn't work either
# because BindPaths= needs these directories before.
- system.activationScripts.transmission-daemon = ''
- install -d -m 700 '${cfg.home}/${settingsDir}'
- chown -R '${cfg.user}:${cfg.group}' ${cfg.home}/${settingsDir}
- install -d -m '${cfg.downloadDirPermissions}' -o '${cfg.user}' -g '${cfg.group}' '${cfg.settings.download-dir}'
- '' + optionalString cfg.settings.incomplete-dir-enabled ''
- install -d -m '${cfg.downloadDirPermissions}' -o '${cfg.user}' -g '${cfg.group}' '${cfg.settings.incomplete-dir}'
- '' + optionalString cfg.settings.watch-dir-enabled ''
- install -d -m '${cfg.downloadDirPermissions}' -o '${cfg.user}' -g '${cfg.group}' '${cfg.settings.watch-dir}'
- '';
+ system.activationScripts = mkIf (cfg.downloadDirPermissions != null)
+ { transmission-daemon = ''
+ install -d -m 700 '${cfg.home}/${settingsDir}'
+ chown -R '${cfg.user}:${cfg.group}' ${cfg.home}/${settingsDir}
+ install -d -m '${cfg.downloadDirPermissions}' -o '${cfg.user}' -g '${cfg.group}' '${cfg.settings.download-dir}'
+ '' + optionalString cfg.settings.incomplete-dir-enabled ''
+ install -d -m '${cfg.downloadDirPermissions}' -o '${cfg.user}' -g '${cfg.group}' '${cfg.settings.incomplete-dir}'
+ '' + optionalString cfg.settings.watch-dir-enabled ''
+ install -d -m '${cfg.downloadDirPermissions}' -o '${cfg.user}' -g '${cfg.group}' '${cfg.settings.watch-dir}'
+ '';
+ };
systemd.services.transmission = {
description = "Transmission BitTorrent Service";
@@ -313,6 +317,14 @@ in
cfg.settings.script-torrent-done-filename ++
optional (cfg.settings.watch-dir-enabled && !cfg.settings.trash-original-torrent-files)
cfg.settings.watch-dir;
+ StateDirectory = [
+ "transmission"
+ "transmission/.config/transmission-daemon"
+ "transmission/.incomplete"
+ "transmission/Downloads"
+ "transmission/watch-dir"
+ ];
+ StateDirectoryMode = mkDefault 750;
# The following options are only for optimizing:
# systemd-analyze security transmission
AmbientCapabilities = "";