nixos/modules/services/nginx/applications/nextcloud.nix

49 lines
1.6 KiB
Nix
Raw Normal View History

2023-10-04 15:40:28 +08:00
inputs:
{
2023-10-04 16:20:32 +08:00
options.nixos.services.nginx.applications.nextcloud = let inherit (inputs.lib) mkOption types; in
2023-10-04 15:40:28 +08:00
{
2023-10-04 16:20:32 +08:00
instance.enable = mkOption
2023-10-04 15:40:28 +08:00
{
2023-10-04 16:20:32 +08:00
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; };
};
2023-10-04 15:40:28 +08:00
};
config =
let
2023-10-04 16:20:32 +08:00
inherit (inputs.config.nixos.services.nginx.applications) nextcloud;
2023-10-04 15:40:28 +08:00
inherit (inputs.lib) mkIf mkMerge;
inherit (inputs.localLib) attrsToList;
inherit (builtins) map listToAttrs;
in mkMerge
[
2023-10-04 16:20:32 +08:00
(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)
2023-10-04 15:40:28 +08:00
{
2023-10-04 16:20:32 +08:00
nixos.services.nginx.streamProxy.map.${inputs.config.nixos.services.nextcloud.hostname} =
{
upstream = "${nextcloud.proxy.upstream}:8417";
rewriteHttps = true;
proxyProtocol = true;
};
})
2023-10-04 15:40:28 +08:00
];
}