diff --git a/nix/checks/module-eval.nix b/nix/checks/module-eval.nix index f9f2a97..b1f0dc4 100644 --- a/nix/checks/module-eval.nix +++ b/nix/checks/module-eval.nix @@ -23,7 +23,10 @@ let borgPassphrase = "/run/secrets/borg-passphrase"; borgPrivateKey = "/run/secrets/borg-private-key"; }; - frontend.hostName = "www.example.test"; + frontend = { + hostName = "example.test"; + redirectHostNames = [ "www.example.test" ]; + }; backend = { hostName = "api.example.test"; environmentFile = "/run/secrets/rabbi-gerzi.env"; @@ -35,6 +38,10 @@ let evaluatedHostName = evaluatedConfig.services.rabbi-gerzi.backend.hostName; + evaluatedFrontendHostName = evaluatedConfig.services.rabbi-gerzi.frontend.hostName; + + frontendRedirectVirtualHost = evaluatedConfig.services.nginx.virtualHosts."www.example.test"; + backendVirtualHost = evaluatedConfig.services.nginx.virtualHosts.${evaluatedHostName}; phpOptions = evaluatedConfig.services.phpfpm.pools.rabbi-gerzi.phpOptions; @@ -66,6 +73,18 @@ let passed = lib.hasInfix expectedNginxClientMaxBodySize backendVirtualHost.extraConfig; message = "nginx client_max_body_size is not 6m"; } + { + passed = frontendRedirectVirtualHost.globalRedirect == evaluatedFrontendHostName; + message = "frontend redirect does not target the canonical host"; + } + { + passed = frontendRedirectVirtualHost.forceSSL; + message = "frontend redirect does not force HTTPS"; + } + { + passed = frontendRedirectVirtualHost.enableACME; + message = "frontend redirect does not enable ACME"; + } { passed = backupConfig.repo == "ssh://mgjjruz9@mgjjruz9.repo.borgbase.com/./repo"; message = "Borg repository is not the Rabbi Gerzi repository";