mirror of
https://github.com/gensokyo-zone/infrastructure.git
synced 2026-02-09 04:19:19 -08:00
the service on the TV is unreliable, so proxy it with a fake success response when offline to satisfy the home-assistant integration
72 lines
1.9 KiB
Nix
72 lines
1.9 KiB
Nix
{
|
|
config,
|
|
system,
|
|
lib,
|
|
...
|
|
}: let
|
|
inherit (lib.modules) mkIf mkDefault;
|
|
inherit (config.services) nginx;
|
|
inherit (system.exports.services) nfandroidtv;
|
|
upstreamName = "nfandroidtv'bedroom";
|
|
in {
|
|
config.services.nginx = {
|
|
vouch.enable = true;
|
|
upstreams'.${upstreamName}.servers = {
|
|
android = {
|
|
settings.fail_timeout = mkDefault "5s";
|
|
addr = mkDefault "10.1.1.67";
|
|
port = mkDefault nfandroidtv.ports.default.port;
|
|
/*accessService = {
|
|
system = "bedroomtv";
|
|
name = "nfandroidtv";
|
|
};*/
|
|
};
|
|
fallback = let
|
|
virtualHost = nginx.virtualHosts.nfandroidtv'fallback;
|
|
listen = virtualHost.listen'.nfandroidtv;
|
|
in {
|
|
addr = mkDefault listen.addr;
|
|
port = mkDefault listen.port;
|
|
settings.backup = mkDefault true;
|
|
};
|
|
};
|
|
virtualHosts = let
|
|
locations = {
|
|
"/" = {
|
|
proxy.enable = true;
|
|
};
|
|
};
|
|
name.shortServer = mkDefault nfandroidtv.id;
|
|
listen'.nfandroidtv = {
|
|
port = nfandroidtv.ports.default.port;
|
|
extraParameters = ["default_server"];
|
|
};
|
|
in {
|
|
nfandroidtv'local = {
|
|
inherit name locations listen';
|
|
local.enable = true;
|
|
proxy.upstream = mkDefault upstreamName;
|
|
};
|
|
nfandroidtv'fallback = {
|
|
serverName = "@nfandroidtv_fallback";
|
|
locations."/" = {
|
|
extraConfig = ''
|
|
add_header Content-Type 'text/html';
|
|
return 200 'OK';
|
|
'';
|
|
};
|
|
listen'.nfandroidtv = {
|
|
addr = "127.0.0.1";
|
|
port = 7677;
|
|
extraParameters = ["default_server"];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
config.networking.firewall.interfaces.lan = let
|
|
virtualHost = nginx.virtualHosts.nfandroidtv'local;
|
|
listen = virtualHost.listen'.nfandroidtv;
|
|
in mkIf (virtualHost.enable && listen.enable) {
|
|
allowedTCPPorts = [ listen.port ];
|
|
};
|
|
}
|