# Hack to get downloads to work on binary cache stores: if the
    # store path is not available locally, then import it into the
    # local store. FIXME: find a better way; this can require an
    # unbounded amount of space.
    if (!isValidPath($storePath)) {
        my $storeMode = $c->config->{store_mode} // "direct";
        notFound($c, "File " . $product->path . " has disappeared.")
            if $storeMode eq "direct";
        my $url =
            $storeMode eq "local-binary-cache" ? "file://" . $c->config->{binary_cache_dir} :
            $storeMode eq "s3-binary-cache" ? "https://" . $c->config->{binary_cache_s3_bucket} . ".s3.amazonaws.com/" :
            die;
        my $args =
            defined $c->config->{binary_cache_public_key_file}
            ? "--option binary-cache-public-keys " . read_file($c->config->{binary_cache_public_key_file}) . "\n"
            : "";
        system("nix-store --realise '$storePath' --option extra-binary-caches '$url' $args>/dev/null");
    }
    notFound($c, "File " . $product->path . " does not exist.") unless -e $product->path;