forked from pub-solar/infra
Benjamin Yule Bädorf
68278ad983
This works towards having reusable modules * `config.pub-solar-os.networking.domain` is used for the main domain * `config.pub-solar-os.privacyPolicUrl` links towards the privacy policy * `config.pub-solar-os.imprintUrl` links towards the imprint * `config.pub-solar-os.auth.enable` enables the keycloak installation. This is needed because `config.pub-solar-os.auth` has to be available everywhere, but we do not want to install keycloak everywhere. * `config.pub-solar-os.auth.realm` sets the keycloak realm name
43 lines
849 B
Nix
43 lines
849 B
Nix
{ config
|
|
, lib
|
|
, pkgs
|
|
, self
|
|
, ...
|
|
}:
|
|
let
|
|
acmeEmailAddress = config.pub-solar-os.adminEmail;
|
|
webserverGroup = "hakkonaut";
|
|
in
|
|
{
|
|
services.nginx = {
|
|
enable = true;
|
|
group = webserverGroup;
|
|
enableReload = true;
|
|
proxyCachePath.cache = {
|
|
enable = true;
|
|
};
|
|
recommendedGzipSettings = true;
|
|
recommendedOptimisation = true;
|
|
recommendedProxySettings = true;
|
|
recommendedTlsSettings = true;
|
|
appendHttpConfig = ''
|
|
# https://my.f5.com/manage/s/article/K51798430
|
|
proxy_headers_hash_bucket_size 128;
|
|
'';
|
|
appendConfig = ''
|
|
# Number of CPU cores
|
|
worker_processes 8;
|
|
'';
|
|
eventsConfig = ''
|
|
worker_connections 1024;
|
|
'';
|
|
};
|
|
|
|
security.acme = {
|
|
acceptTerms = true;
|
|
defaults.email = acmeEmailAddress;
|
|
};
|
|
|
|
networking.firewall.allowedTCPPorts = [ 80 443 ];
|
|
}
|