69 lines
1.5 KiB
Nix
69 lines
1.5 KiB
Nix
serviceName: {
|
|
config,
|
|
lib,
|
|
...
|
|
}:
|
|
with lib; let
|
|
cfg = config.homelab.services.${serviceName};
|
|
homelabCfg = config.homelab;
|
|
in {
|
|
options.homelab.services.${serviceName}.proxy = {
|
|
enable = mkOption {
|
|
type = types.bool;
|
|
description = "Enable reverse proxy for ${serviceName}";
|
|
default = true;
|
|
};
|
|
|
|
subdomain = mkOption {
|
|
type = types.str;
|
|
default = serviceName;
|
|
};
|
|
|
|
enableAuth = mkOption {
|
|
type = types.bool;
|
|
default = false;
|
|
};
|
|
|
|
additionalSubdomains = mkOption {
|
|
type = types.listOf (types.submodule {
|
|
options = {
|
|
subdomain = mkOption {type = types.str;};
|
|
port = mkOption {type = types.port;};
|
|
path = mkOption {
|
|
type = types.str;
|
|
default = "/";
|
|
};
|
|
enableAuth = mkOption {
|
|
type = types.bool;
|
|
default = false;
|
|
};
|
|
};
|
|
});
|
|
default = [];
|
|
};
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
homelab.reverseProxy.entries = mkIf cfg.proxy.enable (
|
|
[
|
|
{
|
|
subdomain = cfg.proxy.subdomain;
|
|
host = homelabCfg.hostname;
|
|
port = cfg.port;
|
|
path = "/";
|
|
enableAuth = cfg.proxy.enableAuth;
|
|
enableSSL = true;
|
|
}
|
|
]
|
|
++ map (sub: {
|
|
subdomain = sub.subdomain;
|
|
host = homelabCfg.hostname;
|
|
port = sub.port;
|
|
path = sub.path;
|
|
enableAuth = sub.enableAuth;
|
|
enableSSL = true;
|
|
})
|
|
cfg.proxy.additionalSubdomains
|
|
);
|
|
};
|
|
}
|