{ pkgs }: let #hello = pkgs.hello.overrideAttrs { pname = "custom-hello"; }; inherit (pkgs) hello; references = pkgs.runCommandNoCC "hello-refs" { exportReferencesGraph.hello = hello; __structuredAttrs = true; nativeBuildInputs = [ pkgs.jq ]; } "jq -r \"{closure : .hello}\" < .attrs.json > $out"; # "jq -r '.hello' < .attrs.json > $out"; in pkgs.testers.runNixOSTest (_: { name = "cache signature upload test"; nodes = { cache = { config, ... }: { imports = [ ./common ../modules ]; system.extraDependencies = [ hello references ]; services.tvix-binary-cache = { enable = true; caches = { cache.port = 8000; }; }; services.nginx = { enable = true; recommendedProxySettings = true; virtualHosts.cache = { default = true; locations = { "/cache".return = "302 /cache/"; "/cache/" = { proxyPass = "http://localhost:${toString config.services.tvix-binary-cache.caches.cache.port}/"; }; }; extraConfig = "client_max_body_size 1G;"; }; }; networking.firewall.allowedTCPPorts = [ 80 ]; }; }; testScript = '' import time start_all() cache.wait_for_unit("nginx.service") cache.wait_for_unit("nar-bridge-cache.service") time.sleep(1) socket_addr = "grpc+unix:///run/tvix-binary-cache-cache/socket" cache.succeed(f"BLOB_SERVICE_ADDR={socket_addr} DIRECTORY_SERVICE_ADDR={socket_addr} PATH_INFO_SERVICE_ADDR={socket_addr} tvix-store copy ${builtins.toString references}") ''; })