infrastructure/nixos/deluge.nix
2024-01-16 11:47:50 -08:00

59 lines
1.6 KiB
Nix

{
config,
lib,
...
}: let
inherit (lib.modules) mkIf mkAfter mkDefault;
inherit (lib.strings) hasPrefix removePrefix;
cfg = config.services.deluge;
in {
sops.secrets.deluge-auth = {
sopsFile = mkDefault ./secrets/deluge.yaml;
inherit (cfg) group;
owner = cfg.user;
};
services.deluge = {
enable = mkDefault true;
declarative = mkDefault true;
openFirewall = mkDefault true;
web = {
enable = true;
};
config = {
max_upload_speed = 10.0;
#share_ratio_limit = 2.0;
max_connections_global = 1024;
max_connections_per_second = 50;
max_active_limit = 100;
max_active_downloading = 75;
max_upload_slots_global = 25;
max_active_seeding = 1;
allow_remote = true;
daemon_port = 58846;
listen_ports = [6881 6889];
random_port = false;
};
authFile = config.sops.secrets.deluge-auth.path;
};
services.mediatomb.mediaDirectories = let
parent = builtins.dirOf cfg.config.download_location;
hasCompletedSubdir = cfg.config.move_completed && hasPrefix parent cfg.config.move_completed_path;
completedSubdir = removePrefix parent cfg.config.move_completed_path;
downloadDir = if hasCompletedSubdir then {
path = parent;
subdirectories = [
(builtins.baseNameOf cfg.config.download_location)
completedSubdir
];
} else {
path = cfg.config.download_location;
};
completedDir = {
path = cfg.config.move_completed_path;
};
in mkIf cfg.enable (mkAfter [
downloadDir
(mkIf (cfg.config.move_completed && !hasCompletedSubdir) completedDir)
]);
}