blob: e72d64b6b9544167bbd439a038a6c94e55638b74 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
{
self,
config,
lib,
pkgs,
...
}:
with self.lib.nginx;
{
services.slskd = {
enable = true;
environmentFile = "/etc/secrets/slskd.env";
domain = null;
settings = {
remote_file_management = true;
directories = {
downloads = "/mnt/media/soulseek/downloads";
incomplete = "/mnt/media/soulseek/incomplete";
};
shares = {
directories = [ "[Music]/mnt/media/Music" ];
cache = {
storage_mode = "memory";
workers = 4;
retention = 10080; # 1 week
};
};
global = {
upload = {
slots = 20;
speed_limit = 250000; # kibibytes
};
download = {
slots = 500;
speed_limit = 250000;
};
};
groups = {
user_defined = {
buddies = {
upload = {
priority = 500;
strategy = "roundrobin";
slots = 100;
speed_limit = 750000;
};
members = [ ];
};
};
};
web = {
authentication = {
disabled = true;
};
socket = "/run/slskd/web.sock";
};
filters = {
search = {
request = [
"^.{1,2}$" # discard any requests shorter than 3 characters
];
};
};
retention = {
search = 2880; # 2 day
transfers = {
upload = {
succeeded = 2880; # 2 day
errored = 30;
cancelled = 5;
};
download = {
succeeded = 2880; # 2 day
errored = 20160; # 2 weeks
cancelled = 5;
};
};
logs = 180; # days
};
};
};
# VPN Setup
# SLSKD_SLSK_LISTEN_IP_ADDRESS
# SLSKD_SLSK_LISTEN_PORT
users.users.slskd.extraGroups = [ "media" ];
systemd.services.slskd = {
bindsTo = [ "wireguard-proton.service" ];
after = [ "wireguard-proton.service" ];
unitConfig.JoinsNamespaceOf = "netns@torrent.service";
serviceConfig = {
PrivateNetwork = true;
UMask = "ug=rw,o=r";
ProtectSystem = lib.mkForce "full";
};
};
services.nginx = {
enable = true;
virtualHosts = {
"slsk.media.cocaine.farm" = proxyDomainAuth "media.cocaine.farm" "http://unix:/run/slskd/web.sock";
};
};
secrets = {
slskd = {
source = ../../secrets/slskd.env;
dest = "/etc/secrets/slskd.env";
};
};
}
|