66 lines
1.6 KiB
Nix
66 lines
1.6 KiB
Nix
{
|
|
lib,
|
|
config,
|
|
inputs,
|
|
...
|
|
}:
|
|
let
|
|
proxyReverseServices = [
|
|
"firefox-syncserver"
|
|
"readeck"
|
|
"microbin"
|
|
"ryot"
|
|
"bazarr"
|
|
"shiori"
|
|
"metube"
|
|
"maloja"
|
|
"vaultwarden"
|
|
"mealie"
|
|
"kavita"
|
|
"multi-scrobbler"
|
|
"nix-serve"
|
|
"flame"
|
|
"flameSecret"
|
|
];
|
|
proxyReverseFixServices = [
|
|
"audiobookshelf"
|
|
"lidarr"
|
|
"gitea"
|
|
"prowlarr"
|
|
"ombi"
|
|
"radarr"
|
|
"sonarr"
|
|
"stash"
|
|
"atticd"
|
|
];
|
|
proxyReversePrivateServices = [
|
|
"homepage"
|
|
];
|
|
mkServiceConfig =
|
|
type: services: lib.listToAttrs (map (name: lib.nameValuePair name { inherit type; }) services);
|
|
standardProxyServices =
|
|
(mkServiceConfig "proxyReverse" proxyReverseServices)
|
|
// (mkServiceConfig "proxyReverseFix" proxyReverseFixServices)
|
|
// (mkServiceConfig "proxyReversePrivate" proxyReversePrivateServices);
|
|
generateProxyConfig =
|
|
serviceName: serviceConfig:
|
|
let
|
|
cfg = config.my.servers.${serviceName};
|
|
proxyFunc =
|
|
if serviceConfig.type == "proxyReverse" then
|
|
inputs.self.lib.proxyReverse
|
|
else if serviceConfig.type == "proxyReverseFix" then
|
|
inputs.self.lib.proxyReverseFix
|
|
else if serviceConfig.type == "proxyReversePrivate" then
|
|
inputs.self.lib.proxyReversePrivate
|
|
else
|
|
throw "Unknown proxy type: ${serviceConfig.type}";
|
|
in
|
|
lib.nameValuePair cfg.host (lib.mkIf cfg.enableProxy (proxyFunc cfg));
|
|
in
|
|
{
|
|
config = lib.mkIf config.my.enableProxy {
|
|
services.nginx.virtualHosts = lib.mapAttrs' generateProxyConfig standardProxyServices;
|
|
};
|
|
}
|