74 lines
1.9 KiB
Nix
74 lines
1.9 KiB
Nix
{
|
|
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
|
|
''
|