format domain configuration check

This commit is contained in:
Yisroel Baum 2026-08-17 21:19:04 +03:00
parent a877d40892
commit 6d328b558f
Signed by: yisroelbaum
GPG key ID: 0FA60884F75520A9
2 changed files with 19 additions and 24 deletions

View file

@ -7,12 +7,11 @@
let let
frontendConfig = config.services.rabbi-gerzi.frontend; frontendConfig = config.services.rabbi-gerzi.frontend;
backendConfig = config.services.rabbi-gerzi.backend; backendConfig = config.services.rabbi-gerzi.backend;
frontendVirtualHost = frontendVirtualHost = config.services.nginx.virtualHosts.${frontendConfig.hostName};
config.services.nginx.virtualHosts.${frontendConfig.hostName}; backendVirtualHost = config.services.nginx.virtualHosts.${backendConfig.hostName};
backendVirtualHost = redirectVirtualHost = lib.attrByPath [
config.services.nginx.virtualHosts.${backendConfig.hostName}; "www.rabbigerzi.com"
redirectVirtualHost = lib.attrByPath [ "www.rabbigerzi.com" ] { } ] { } config.services.nginx.virtualHosts;
config.services.nginx.virtualHosts;
assertions = [ assertions = [
{ {
@ -28,25 +27,23 @@ let
message = "Rabbi Gerzi backend does not use the production API domain"; message = "Rabbi Gerzi backend does not use the production API domain";
} }
{ {
assertion = backendConfig.corsAllowedOrigins == [ assertion =
"https://rabbigerzi.com" backendConfig.corsAllowedOrigins == [
"https://rabbigerzi.yisroelbaum.com" "https://rabbigerzi.com"
]; "https://rabbigerzi.yisroelbaum.com"
];
message = "Rabbi Gerzi CORS origins do not cover production and staging"; message = "Rabbi Gerzi CORS origins do not cover production and staging";
} }
{ {
assertion = builtins.elem "rabbigerzi.yisroelbaum.com" assertion = builtins.elem "rabbigerzi.yisroelbaum.com" frontendVirtualHost.serverAliases;
frontendVirtualHost.serverAliases;
message = "Rabbi Gerzi frontend staging alias is missing"; message = "Rabbi Gerzi frontend staging alias is missing";
} }
{ {
assertion = builtins.elem "rabbigerziapi.yisroelbaum.com" assertion = builtins.elem "rabbigerziapi.yisroelbaum.com" backendVirtualHost.serverAliases;
backendVirtualHost.serverAliases;
message = "Rabbi Gerzi backend staging alias is missing"; message = "Rabbi Gerzi backend staging alias is missing";
} }
{ {
assertion = redirectVirtualHost.globalRedirect or null assertion = redirectVirtualHost.globalRedirect or null == "rabbigerzi.com";
== "rabbigerzi.com";
message = "Rabbi Gerzi www host does not redirect to the apex"; message = "Rabbi Gerzi www host does not redirect to the apex";
} }
{ {
@ -63,8 +60,7 @@ let
in in
pkgs.runCommand "rabbi-gerzi-production-domains" pkgs.runCommand "rabbi-gerzi-production-domains"
{ {
failures = lib.concatMapStringsSep "\n" failures = lib.concatMapStringsSep "\n" (assertion: assertion.message) failedAssertions;
(assertion: assertion.message) failedAssertions;
preferLocalBuild = true; preferLocalBuild = true;
} }
'' ''

View file

@ -59,12 +59,11 @@
} }
]; ];
}; };
checks."${system}".rabbi-gerzi-domains = checks."${system}".rabbi-gerzi-domains = import ./checks/rabbi-gerzi-domains.nix {
import ./checks/rabbi-gerzi-domains.nix { config = self.nixosConfigurations.nixos.config;
config = self.nixosConfigurations.nixos.config; inherit (nixpkgs) lib;
inherit (nixpkgs) lib; pkgs = nixpkgs.legacyPackages.${system};
pkgs = nixpkgs.legacyPackages.${system}; };
};
devShells."${system}".default = devShells."${system}".default =
let let
pkgs = import nixpkgs { inherit system; }; pkgs = import nixpkgs { inherit system; };