aboutsummaryrefslogtreecommitdiff
path: root/modules/nixos/server/nginx/default.nix
diff options
context:
space:
mode:
authorschererleander <leander@schererleander.de>2026-01-09 16:57:15 +0100
committerschererleander <leander@schererleander.de>2026-01-09 23:13:49 +0100
commit3b5a73c436eb22e0cda59469263490705e149cb9 (patch)
treeae3f20ca6008b11f71247dfc6e2df8218de9b95c /modules/nixos/server/nginx/default.nix
parentec45aae780da92e12cf82c5a32e336b14b7540ba (diff)
refactor: use flake-parts, change modules structure
Diffstat (limited to 'modules/nixos/server/nginx/default.nix')
-rw-r--r--modules/nixos/server/nginx/default.nix54
1 files changed, 54 insertions, 0 deletions
diff --git a/modules/nixos/server/nginx/default.nix b/modules/nixos/server/nginx/default.nix
new file mode 100644
index 0000000..2bdaba1
--- /dev/null
+++ b/modules/nixos/server/nginx/default.nix
@@ -0,0 +1,54 @@
+{
+ config,
+ lib,
+ ...
+}:
+let
+ inherit (lib) mkEnableOption mkOption types mkIf;
+ cfg = config.nx.server.nginx;
+in
+{
+ options.nx.server.nginx = {
+ enable = mkEnableOption "nginx reverse proxy" // {
+ default = true;
+ };
+ hostName = mkOption {
+ description = "url of server";
+ type = types.str;
+ default = "schererleander.de";
+ };
+ sslCertificate = mkOption {
+ description = "ssl certificate to use";
+ type = types.nullOr types.str;
+ default = "/etc/ssl/${cfg.hostName}/fullchain.pem";
+ };
+ sslCertificateKey = mkOption {
+ description = "ssl certificate key to use";
+ type = types.nullOr types.str;
+ default = "/etc/ssl/${cfg.hostName}/privkey.key";
+ };
+ };
+ config = mkIf cfg.enable {
+ services.nginx = {
+ enable = true;
+ recommendedGzipSettings = true;
+ recommendedOptimisation = true;
+ recommendedProxySettings = true;
+ recommendedTlsSettings = true;
+ appendHttpConfig = ''
+ map $scheme $hsts_header {
+ https "max-age=31536000; includeSubdomains; preload";
+ }
+ add_header Strict-Transport-Security $hsts_header;
+ #add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; font-src 'self'; connect-src 'self'; object-src 'none'; frame-ancestors 'none'; base-uri 'self';" always;
+ add_header 'Referrer-Policy' 'same-origin';
+ add_header X-Frame-Options DENY;
+ add_header X-Content-Type-Options nosniff;
+ '';
+ };
+ networking.firewall.allowedTCPPorts = [
+ 80
+ 443
+ ];
+ };
+}