Because the store protocol is JSON-RPC (mostly), communicating with a remote store is a matter of switching the type of net.Conn from a Unix socket to a TCP socket or SSH session. This work is largely on the frontend:
Configuration file to describe remote build policy (e.g. which builds stay local, host address, etc.)
When using a non-local store, import-from-derivation must read from the remote store (might as well download entire artifacts).
Copy realized artifacts to local store.
There's probably some thought required for how to surface a remote socket on the backend, but mostly from a UX and security perspective.
Because the store protocol is JSON-RPC (mostly), communicating with a remote store is a matter of switching the type of
net.Conn
from a Unix socket to a TCP socket or SSH session. This work is largely on the frontend:There's probably some thought required for how to surface a remote socket on the backend, but mostly from a UX and security perspective.