2023-10-04 15:40:28 +08:00
|
|
|
inputs:
|
|
|
|
{
|
|
|
|
options.nixos.services.nginx.applications.nextcloud.instances = let inherit (inputs.lib) mkOption types; in mkOption
|
|
|
|
{
|
|
|
|
type = types.attrsOf (types.submodule (submoduleInputs: { options =
|
|
|
|
{
|
|
|
|
hostname = mkOption { type = types.nonEmptyStr; default = submoduleInputs.config._module.args.name; };
|
2023-10-04 15:49:23 +08:00
|
|
|
# upstream = mkOption { type = types.nonEmptyStr; default = "127.0.0.1"; };
|
2023-10-04 15:40:28 +08:00
|
|
|
};}));
|
|
|
|
default = {};
|
|
|
|
};
|
|
|
|
config =
|
|
|
|
let
|
|
|
|
inherit (inputs.config.nixos.services.nginx.applications.nextcloud) instances;
|
|
|
|
inherit (inputs.lib) mkIf mkMerge;
|
|
|
|
inherit (inputs.localLib) attrsToList;
|
|
|
|
inherit (builtins) map listToAttrs;
|
|
|
|
in mkMerge
|
|
|
|
[
|
|
|
|
(mkIf (instances != {}) { services.nextcloud.maxUploadSize = "10G"; })
|
|
|
|
{
|
|
|
|
nixos.services.nginx.http = listToAttrs (map
|
2023-10-04 15:49:23 +08:00
|
|
|
(instance: { name = instance.value.hostname; value.rewriteHttps = true; })
|
2023-10-04 15:40:28 +08:00
|
|
|
(attrsToList instances));
|
|
|
|
services.nginx.virtualHosts = listToAttrs (map
|
2023-10-04 15:49:23 +08:00
|
|
|
(instance:
|
|
|
|
{
|
|
|
|
name = instance.value.hostname;
|
|
|
|
value = inputs.config.services.nextcloud.nginx.recommendedConfig;
|
|
|
|
})
|
2023-10-04 15:40:28 +08:00
|
|
|
(attrsToList instances));
|
|
|
|
}
|
|
|
|
];
|
|
|
|
}
|