2024-04-03 00:01:40 +02:00
|
|
|
{ pkgs, lib, config, ... }:
|
2023-01-24 11:58:36 +01:00
|
|
|
{
|
2023-11-16 01:27:01 +01:00
|
|
|
# set default options for virtualHosts
|
|
|
|
options = with lib; {
|
|
|
|
services.nginx.virtualHosts = mkOption {
|
|
|
|
type = types.attrsOf (types.submodule
|
|
|
|
({ name, ... }: {
|
|
|
|
# split up nginx access logs per vhost
|
2024-03-25 19:06:38 +01:00
|
|
|
enableACME = true;
|
|
|
|
forceSSL = true;
|
2024-04-03 00:01:40 +02:00
|
|
|
# enable http3 for all hosts
|
|
|
|
quic = true;
|
|
|
|
http3 = true;
|
2023-11-16 01:27:01 +01:00
|
|
|
extraConfig = ''
|
|
|
|
access_log /var/log/nginx/${name}_access.log;
|
|
|
|
error_log /var/log/nginx/${name}_error.log;
|
2024-04-03 00:01:40 +02:00
|
|
|
add_header Alt-Svc 'h3=":443"; ma=86400';
|
2023-11-16 01:27:01 +01:00
|
|
|
'';
|
|
|
|
})
|
|
|
|
);
|
|
|
|
};
|
2023-05-05 23:43:40 +02:00
|
|
|
};
|
2023-11-16 01:27:01 +01:00
|
|
|
config = {
|
|
|
|
networking.firewall.allowedTCPPorts = [ 80 443 ];
|
2024-04-03 00:01:40 +02:00
|
|
|
networking.firewall.allowedUDPPorts = [ 443 ];
|
2023-11-16 01:27:01 +01:00
|
|
|
services.nginx = {
|
|
|
|
enable = true;
|
2024-04-03 00:01:40 +02:00
|
|
|
package = pkgs.nginxQuic;
|
2023-11-16 01:27:01 +01:00
|
|
|
recommendedTlsSettings = true;
|
|
|
|
recommendedProxySettings = true;
|
|
|
|
recommendedGzipSettings = true;
|
|
|
|
recommendedOptimisation = true;
|
|
|
|
};
|
|
|
|
security.acme = {
|
|
|
|
acceptTerms = true;
|
|
|
|
defaults = {
|
|
|
|
email = "rouven@${config.networking.domain}";
|
|
|
|
};
|
2023-01-24 11:58:36 +01:00
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|