57 lines
1.8 KiB
Nix
Executable file
57 lines
1.8 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.tailscale";
|
|
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} *.tailscale(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 record for transmission
|
|
services.headscale.settings.dns_config.extra_records = [
|
|
{
|
|
name = "transmission.everest.tailscale";
|
|
type = "A";
|
|
value = "100.100.0.1";
|
|
}
|
|
];
|
|
|
|
# Set up caddy as the reverse proxy for transmission
|
|
services.caddy.virtualHosts.transmission = {
|
|
hostName = "transmission.everest.tailscale";
|
|
extraConfig = ''
|
|
import tailscale
|
|
reverse_proxy localhost:${toString config.services.transmission.settings.rpc-port}
|
|
'';
|
|
};
|
|
}
|