mirror of
https://github.com/CHN-beta/nixos.git
synced 2024-10-24 01:49:03 +08:00
49 lines
1.6 KiB
Nix
49 lines
1.6 KiB
Nix
inputs:
|
|
{
|
|
options.nixos.services.nginx.applications.nextcloud = let inherit (inputs.lib) mkOption types; in
|
|
{
|
|
instance.enable = mkOption
|
|
{
|
|
type = types.addCheck types.bool (value: value -> inputs.config.nixos.services.nextcloud.enable);
|
|
default = false;
|
|
};
|
|
proxy =
|
|
{
|
|
enable = mkOption
|
|
{
|
|
type = types.addCheck types.bool
|
|
(value: value -> !inputs.config.nixos.services.nginx.applications.nextcloud.instance.enable);
|
|
default = false;
|
|
};
|
|
upstream = mkOption { type = types.nonEmptyStr; };
|
|
};
|
|
};
|
|
config =
|
|
let
|
|
inherit (inputs.config.nixos.services.nginx.applications) nextcloud;
|
|
inherit (inputs.lib) mkIf mkMerge;
|
|
inherit (inputs.localLib) attrsToList;
|
|
inherit (builtins) map listToAttrs;
|
|
in mkMerge
|
|
[
|
|
(mkIf (nextcloud.instance.enable)
|
|
{
|
|
nixos.services.nginx.http.${inputs.config.nixos.services.nextcloud.hostname}.rewriteHttps = true;
|
|
services.nginx.virtualHosts.${inputs.config.nixos.services.nextcloud.hostname} = mkMerge
|
|
[
|
|
(inputs.config.services.nextcloud.nginx.recommendedConfig { upstream = "127.0.0.1"; })
|
|
{ listen = [ { addr = "0.0.0.0"; port = 8417; ssl = true; extraParameters = [ "proxy_protocol" ]; } ]; }
|
|
];
|
|
})
|
|
(mkIf (nextcloud.proxy.enable)
|
|
{
|
|
nixos.services.nginx.streamProxy.map.${inputs.config.nixos.services.nextcloud.hostname} =
|
|
{
|
|
upstream = "${nextcloud.proxy.upstream}:8417";
|
|
rewriteHttps = true;
|
|
proxyProtocol = true;
|
|
};
|
|
})
|
|
];
|
|
}
|