71 lines
1.6 KiB
Nix
71 lines
1.6 KiB
Nix
{
|
|
lib,
|
|
metadata,
|
|
pkgs,
|
|
...
|
|
}:
|
|
let
|
|
ips = lib.filterAttrs (_k: v: v ? "ip" && v.ip != null) metadata.hosts;
|
|
tps = lib.filterAttrs (_k: v: v ? "ts" && v.ts != null) metadata.hosts;
|
|
get = field: set: lib.mapAttrsToList (_k: v: v.${field}) set;
|
|
getTS = get "ts" tps;
|
|
getIP = get "ip" ips;
|
|
whitelists = builtins.concatStringsSep "," (
|
|
[
|
|
"localhost"
|
|
"127.0.0.1"
|
|
]
|
|
++ getTS
|
|
++ getIP
|
|
);
|
|
in
|
|
{
|
|
services = {
|
|
prowlarr = {
|
|
enable = true;
|
|
dataDir = "/arr/prowlarr";
|
|
openFirewall = true;
|
|
};
|
|
radarr = {
|
|
enable = true;
|
|
openFirewall = true;
|
|
};
|
|
transmission = {
|
|
enable = true;
|
|
openPeerPorts = true;
|
|
openRPCPort = true;
|
|
package = pkgs.transmission_4;
|
|
settings = {
|
|
download-dir = "/arr/transmission/downloads";
|
|
rpc-bind-address = "0.0.0.0";
|
|
rpc-host-whitelist = whitelists;
|
|
rpc-host-whitelist-enabled = false;
|
|
rpc-whitelist = whitelists;
|
|
rpc-whitelist-enabled = false;
|
|
watch-dir-enabled = true;
|
|
watch-dir = "/arr/transmission/incoming";
|
|
};
|
|
};
|
|
};
|
|
|
|
systemd.mounts =
|
|
let
|
|
nfs = name: {
|
|
what = "nas1.shire-zebra.ts.net:/mnt/all/${name}";
|
|
type = "nfs";
|
|
name = "${name}.mount";
|
|
where = "/${name}";
|
|
requires = [ "tailscaled-autoconnect.service" ];
|
|
after = [ "tailscaled-autoconnect.service" ];
|
|
wantedBy = [ "multi-user.target" ];
|
|
mountConfig.Options = "_netdev,noexec,timeo=50,retrans=5,soft";
|
|
};
|
|
in
|
|
[
|
|
(nfs "arr")
|
|
(nfs "music")
|
|
(nfs "photos")
|
|
(nfs "video")
|
|
];
|
|
}
|