59 lines
1.9 KiB
Nix
Executable file
59 lines
1.9 KiB
Nix
Executable file
{config, ...}: let
|
|
transmissionUid = toString config.users.users.transmission.uid;
|
|
transmissionGid = toString config.users.groups.transmission.gid;
|
|
mountPoint = config.fileSystems."nfs_transmission".mountPoint;
|
|
in {
|
|
services.transmission = {
|
|
enable = true;
|
|
openFirewall = true;
|
|
settings = {
|
|
incomplete-dir-enabled = false;
|
|
rpc-bind-address = "0.0.0.0";
|
|
rpc-host-whitelist = "transmission.everest.sable-pancake.ts.net";
|
|
rpc-whitelist = "127.0.0.1";
|
|
};
|
|
};
|
|
|
|
# Allow my devices to access the downloads folder though NFS
|
|
fileSystems."nfs_transmission" = {
|
|
device = config.services.transmission.settings.download-dir;
|
|
mountPoint = "/srv/nfs/transmission";
|
|
options = ["bind"];
|
|
};
|
|
services.nfs.server.exports = "${mountPoint} *.sable-pancake.ts.net(ro,all_squash,anonuid=${transmissionUid},anongid=${transmissionGid})";
|
|
|
|
services.avahi.extraServiceFiles = {
|
|
Transmission-downloads-nfs = ''
|
|
<?xml version="1.0" standalone='no'?>
|
|
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
|
|
<service-group>
|
|
<name replace-wildcards="yes">Transmission Downloads on %h (NFS)</name>
|
|
<service>
|
|
<type>_nfs._tcp</type>
|
|
<port>2049</port>
|
|
<txt-record>path=${mountPoint}</txt-record>
|
|
</service>
|
|
</service-group>
|
|
'';
|
|
};
|
|
|
|
# Add a cname for transmission
|
|
services.dnsmasq.settings.cname = ["transmission.everest.sable-pancake.ts.net,everest"];
|
|
|
|
# Set up traefik as the reverse proxy for transmission
|
|
services.traefik = {
|
|
dynamicConfigOptions = {
|
|
http = {
|
|
routers = {
|
|
transmission-subdomain = {
|
|
rule = "Host(`transmission.everest.sable-pancake.ts.net`)";
|
|
service = "transmission";
|
|
};
|
|
};
|
|
services.transmission.loadBalancer.servers = [
|
|
{url = "http://localhost:${toString config.services.transmission.settings.rpc-port}";}
|
|
];
|
|
};
|
|
};
|
|
};
|
|
}
|