first attempt at nas rtorrent service

inspired by 7cf0d801d0
and also by https://www.krank.se/2014/06/25/rtorrent-magic-moving-finished-torrents-based-on-labels/
This commit is contained in:
Haak Saxberg 2022-08-10 21:08:10 -07:00
parent c5aa3bdcf4
commit 0eebe6f973
5 changed files with 63 additions and 17 deletions

View file

@ -33,17 +33,5 @@
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
};
# rtorrent = {
# enable = true;
# serviceConfig = {
# User = "flood";
# Type = "forking";
# ExecStart = "${pkgs.rtorrent}/bin/rtorrent";
# Restart = "on-failure";
# };
# wantedBy = [ "multi-user.target" ];
# after = [ "network.target" ];
# };
};
}

View file

@ -0,0 +1,16 @@
{ pkgs, finalDir, downloadDir, watchDir }:
{
services.rtorrent = {
enable = true;
downloadDir = downloadDir;
group = "users";
configText =
builtins.readFile (pkgs.substituteAll {
src = ./rtorrent.rc;
watchDir = watchDir;
finalDir = finalDir;
});
};
}

View file

@ -0,0 +1,41 @@
# Enable the default ratio group.
ratio.enable=
# Change the limits, the defaults should be sufficient.
ratio.min.set = 100
ratio.max.set = 300
ratio.upload.set = 20M
# Changing the command triggered when the ratio is reached.
# (the default is "d.try_close= ; d.ignore_commands.set=1")
method.set = group.seeding.ratio.command, "d.close= ; d.erase="
# Add new method to get finished dir (called get_finished_dir)
method.insert = d.get_finished_dir,simple,"cat=@finalDir@/,$d.custom1="
# Bind event "torrent has finished" to action "move to new directory based on label"
# method.set_key = event.download.finished,move_complete
# Modifies the event.download.finished event to also have a new “key”
# called “move_complete”. From what I understand, rTorrent executes all
# “keys” in an event whenever that event is fired. The
# event.download.finished event fires whenever a torrent has finished
# downloading. The stuff within the quotation marks is the new keys
# commands. Each command is separated by a semicolon (;).
# d.directory.set=$d.get_finished_dir=;
# d.directory.set sets the directory of the torrent in rTorrents own
# information. It does not move the torrent, just means rTorrent will
# look in that directory from now on. $d.get_finished_dir just runs the
# get_finished_dir method preciously inserted; constructing a path name
# by combining [folder]/finished/ with whatever label was applied
# ($d.custom1 contains the label).
# execute=mkdir,-p,$d.get_finished_dir=;
# Gets the same path name and makes sure the directory actually exists.
# Mkdir is the standard *nix command for creating directories. -p means
# creating parent directories if needed and not complaining if directory
# already exists.
# execute=mv,-u,$d.base_path=,$d.get_finished_dir=
# Uses the same “execute” functionality as above to run the standard *nix
# mv command to move the torrents files (whose location is stored in
# d.base_path) to, once again, the directory whose name was constructed
# by the get_finished_dir method.
method.set_key = event.download.finished,move_complete,"d.directory.set=$d.get_finished_dir=;execute=mkdir,-p,$d.get_finished_dir=;execute=mv,-u,$d.base_path=,$d.get_finished_dir="