2024-01-21 00:31:25 +01:00
|
|
|
{ config, pkgs, secrets, ... }:
|
2023-04-22 15:00:19 +02:00
|
|
|
|
|
|
|
{
|
2024-05-07 01:00:09 +02:00
|
|
|
sops.secrets."acme/token" = {
|
|
|
|
sopsFile = ../secrets/sops/acme.yaml;
|
|
|
|
owner = "acme";
|
|
|
|
inherit (config.security.acme.defaults) group;
|
|
|
|
mode = "0440";
|
|
|
|
};
|
|
|
|
|
2023-04-22 15:00:19 +02:00
|
|
|
services.nginx = {
|
|
|
|
enable = true;
|
2023-08-01 18:06:40 +02:00
|
|
|
enableReload = true;
|
2023-04-22 15:00:19 +02:00
|
|
|
package = pkgs.nginxMainline;
|
2023-08-01 18:06:40 +02:00
|
|
|
recommendedBrotliSettings = true;
|
2023-04-22 15:00:19 +02:00
|
|
|
recommendedGzipSettings = true;
|
2023-08-01 18:06:40 +02:00
|
|
|
recommendedOptimisation = true;
|
2023-04-22 15:00:19 +02:00
|
|
|
recommendedProxySettings = true;
|
2023-08-01 18:06:40 +02:00
|
|
|
recommendedTlsSettings = true;
|
|
|
|
recommendedZstdSettings = true;
|
2023-04-22 15:00:19 +02:00
|
|
|
};
|
|
|
|
|
2024-01-21 00:31:25 +01:00
|
|
|
users.users.nginx.extraGroups = [ config.security.acme.defaults.group ];
|
2023-04-22 15:00:19 +02:00
|
|
|
|
|
|
|
networking.firewall.allowedTCPPorts = [ 80 443 ];
|
|
|
|
|
2024-05-07 01:00:09 +02:00
|
|
|
security.acme = {
|
|
|
|
acceptTerms = true;
|
|
|
|
defaults = {
|
|
|
|
email = "contact@christoph-heiss.at";
|
|
|
|
dnsProvider = "hetzner";
|
|
|
|
dnsResolver = "hydrogen.ns.hetzner.com:53";
|
|
|
|
reloadServices = [ "nginx" ];
|
|
|
|
environmentFile = secrets."acme/token".path;
|
|
|
|
};
|
|
|
|
certs."c8h4.io" = {
|
|
|
|
domain = "*.c8h4.io";
|
|
|
|
extraDomainNames = [ "c8h4.io" ];
|
|
|
|
};
|
2023-04-22 15:00:19 +02:00
|
|
|
};
|
2023-10-28 17:27:29 +02:00
|
|
|
|
|
|
|
systemd.services.nginx = {
|
|
|
|
after = [ "network-online.target" ];
|
|
|
|
wants = [ "network-online.target" ];
|
|
|
|
};
|
2023-04-22 15:00:19 +02:00
|
|
|
}
|