54 lines
1.4 KiB
Nix
54 lines
1.4 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
...
|
|
}:
|
|
let
|
|
inherit (config.machine.prosody)
|
|
enable
|
|
domain
|
|
;
|
|
|
|
localhost = "http://localhost:5280";
|
|
in
|
|
with lib; mkIf enable {
|
|
security.acme.certs."${domain}".extraDomainNames = [
|
|
"conference.${domain}"
|
|
"upload.${domain}"
|
|
];
|
|
users.groups.acme.members = [
|
|
"prosody"
|
|
];
|
|
services.nginx.virtualHosts = with lib; mkIf (domain != null) {
|
|
"${domain}".locations = {
|
|
"= /xmpp-websocket" = {
|
|
proxyPass = localhost;
|
|
proxyWebsockets = true;
|
|
};
|
|
"= /http-bind".proxyPass = localhost;
|
|
"/push".proxyPass = localhost;
|
|
"= /.well-known/host-meta".proxyPass = localhost;
|
|
"= /.well-known/host-meta.json".proxyPass = localhost;
|
|
};
|
|
"conference.${domain}" = {
|
|
http3 = true;
|
|
quic = true;
|
|
forceSSL = true;
|
|
kTLS = true;
|
|
useACMEHost = domain;
|
|
sslCertificate = "${config.security.acme.certs.${domain}.directory}/fullchain.pem";
|
|
sslCertificateKey = "${config.security.acme.certs.${domain}.directory}/key.pem";
|
|
locations."/".proxyPass = localhost;
|
|
};
|
|
"upload.${domain}" = {
|
|
http3 = true;
|
|
quic = true;
|
|
forceSSL = true;
|
|
kTLS = true;
|
|
useACMEHost = domain;
|
|
sslCertificate = "${config.security.acme.certs.${domain}.directory}/fullchain.pem";
|
|
sslCertificateKey = "${config.security.acme.certs.${domain}.directory}/key.pem";
|
|
locations."/".proxyPass = localhost;
|
|
};
|
|
};
|
|
}
|