{ lib, nixpkgs, module, pkgs, system, }: let uploadLimits = import ../upload-limits.nix; evaluatedConfig = (nixpkgs.lib.nixosSystem { inherit system; modules = [ module { system.stateVersion = "26.05"; services.rabbi-gerzi = { enable = true; frontend.hostName = "www.example.test"; backend = { hostName = "api.example.test"; environmentFile = "/run/secrets/rabbi-gerzi.env"; }; }; } ]; }).config; evaluatedHostName = evaluatedConfig.services.rabbi-gerzi.backend.hostName; backendVirtualHost = evaluatedConfig.services.nginx.virtualHosts.${evaluatedHostName}; phpOptions = evaluatedConfig.services.phpfpm.pools.rabbi-gerzi.phpOptions; expectedUploadMaxFilesize = "upload_max_filesize = ${uploadLimits.phpUploadLimit}"; expectedPostMaxSize = "post_max_size = ${uploadLimits.phpUploadLimit}"; expectedNginxClientMaxBodySize = "client_max_body_size ${uploadLimits.nginxClientMaxBodySize};"; assertions = [ { passed = lib.hasInfix expectedUploadMaxFilesize phpOptions; message = "php-fpm upload_max_filesize is not 6M"; } { passed = lib.hasInfix expectedPostMaxSize phpOptions; message = "php-fpm post_max_size is not 6M"; } { passed = lib.hasInfix expectedNginxClientMaxBodySize backendVirtualHost.extraConfig; message = "nginx client_max_body_size is not 6m"; } ]; failedAssertions = lib.filter (assertion: !assertion.passed) assertions; in pkgs.runCommand "rabbi-gerzi-module-eval" { failures = lib.concatMapStringsSep "\n" (assertion: assertion.message) failedAssertions; value = evaluatedHostName; preferLocalBuild = true; } '' if [ -n "$failures" ]; then printf '%s\n' "$failures" >&2 exit 1 fi echo "$value" > $out ''