tangled
alpha
login
or
join now
encode42.dev
/
nixos
0
fork
atom
Personal-use NixOS configuration
0
fork
atom
overview
issues
pulls
pipelines
Clean up sharing packages and start commenting my work
encode42.dev
6 months ago
d442483b
a85f6003
+43
-16
5 changed files
expand all
collapse all
unified
split
hosts
index
config
sharing
rtorrent.nix
soulseek.nix
packages
server
sharing
flood.nix
rtorrent.nix
soulseek.nix
+6
-6
hosts/index/config/sharing/rtorrent.nix
reviewed
···
9
9
interface = "sh1";
10
10
11
11
dhtPort = 6771;
12
12
-
listenStartPort = 33101;
13
13
-
listenEndPort = 33103;
12
12
+
listenFromPort = 33101;
13
13
+
listenToPort = 33103;
14
14
15
15
vpnListenPorts = map (port: {
16
16
inherit port;
17
17
18
18
protocol = "both";
19
19
-
}) (lib.range listenStartPort listenEndPort);
19
19
+
}) (lib.range listenFromPort listenToPort);
20
20
21
21
rtorrentModule = import (flakeRoot + /packages/server/sharing/rtorrent.nix) {
22
22
inherit dhtPort;
23
23
24
24
-
listenPorts = {
25
25
-
start = listenStartPort;
26
26
-
end = listenEndPort;
24
24
+
listenPortRange = {
25
25
+
from = listenFromPort;
26
26
+
to = listenToPort;
27
27
};
28
28
};
29
29
+1
hosts/index/config/sharing/soulseek.nix
reviewed
···
73
73
vpnNamespace = interface;
74
74
};
75
75
76
76
+
# TODO: I don't think I need this
76
77
users.users.${config.services.slskd.user}.extraGroups = [ "media" ];
77
78
}
+1
packages/server/sharing/flood.nix
reviewed
···
27
27
];
28
28
};
29
29
30
30
+
# Override service to support listening on sockets
30
31
systemd.services.flood.serviceConfig = {
31
32
ExecStart = lib.mkForce (
32
33
utils.escapeSystemdExecArgs (
+16
-9
packages/server/sharing/rtorrent.nix
reviewed
···
1
1
{
2
2
dhtPort ? 6881,
3
3
-
listenPorts ? {
4
4
-
start = 6881;
5
5
-
end = 6889;
3
3
+
listenPortRange ? {
4
4
+
from = 6881;
5
5
+
to = 6889;
6
6
},
7
7
+
openFirewall ? false,
7
8
}:
8
9
9
10
{
···
20
21
package = pkgs-unstable.rtorrent;
21
22
22
23
configText = ''
23
23
-
dht.mode.set = off
24
24
+
dht.mode.set = off # Disabled due to a bug in rtorrent 0.16
24
25
dht.port.set = ${toString dhtPort}
25
25
-
26
26
protocol.pex.set = yes
27
27
-
28
27
trackers.use_udp.set = yes
29
29
-
30
30
-
network.port_range.set = ${toString listenPorts.start}-${toString listenPorts.end}
28
28
+
network.port_range.set = ${toString listenPortRange.from}-${toString listenPortRange.to}
31
29
32
30
throttle.max_downloads.set = 100
33
31
throttle.max_uploads.global.set = 300
···
38
36
throttle.min_peers.seed.set = 1
39
37
throttle.max_peers.seed.set = 100
40
38
39
39
+
# Assumes a more powerful machine
41
40
pieces.memory.max.set = 4000M
42
41
pieces.preload.type.set = 2
43
42
pieces.preload.min_rate.set = 50000
44
43
45
45
-
#ratio.enable= # TODO: seeding ratio for sonarr/etc.
44
44
+
# TODO: seeding ratio for sonarr/etc.
45
45
+
#ratio.enable=
46
46
#ratio.min.set=100
47
47
#ratio.max.set=300
48
48
#system.method.set = group.seeding.ratio.command, d.close=
···
57
57
'';
58
58
};
59
59
60
60
+
# Required override for linux-hardened kernel
60
61
systemd.services.rtorrent.serviceConfig = {
61
62
SystemCallFilter = lib.mkForce "@system-service";
62
63
};
63
64
65
65
+
networking.firewall = lib.mkIf openFirewall {
66
66
+
allowedTCPPortRanges = [ listenPortRange ];
67
67
+
allowedUDPPortRanges = [ listenPortRange ];
68
68
+
};
69
69
+
70
70
+
# Add Flood to the rtorrent group for file management
64
71
systemd.services.flood.serviceConfig.SupplementaryGroups = [ config.services.rtorrent.group ];
65
72
}
+19
-1
packages/server/sharing/soulseek.nix
reviewed
···
12
12
domain = null;
13
13
14
14
settings = {
15
15
+
# Upload limits assume a fast connection
15
16
global = {
16
17
upload = {
17
18
slots = 75;
···
69
70
};
70
71
71
72
shares = {
73
73
+
# These files can contain sensitive information
72
74
filters = [
73
75
".md$"
74
76
".log$"
75
77
".pydio$"
76
78
];
77
79
80
80
+
# Assumes a more powerful machine
78
81
cache = {
79
82
storage_mode = "memory";
80
83
workers = 8;
···
87
90
"^(\.?pdf|\.?docx|\.?xlsx)$"
88
91
];
89
92
93
93
+
# Numbers are measured in hours
90
94
retention = {
91
91
-
search = 10080;
95
95
+
search = 1; # Users go offline often, invalidating search
96
96
+
97
97
+
transfers = {
98
98
+
upload = {
99
99
+
succeeded = 10080;
100
100
+
errored = 1440;
101
101
+
cancelled = 1440;
102
102
+
};
103
103
+
104
104
+
download = {
105
105
+
succeeded = 1440;
106
106
+
errored = 10080;
107
107
+
cancelled = 10080;
108
108
+
};
109
109
+
};
92
110
};
93
111
};
94
112
};