# Sync with Robert on NixOps4 dependencies for the MVP
The current idea is to control Terraform from NixOps4 at the resource provider level and handle data flow in NixOps4
While we could interface with Terraform as a whole and let it handle its own dataflow, we'd be programming three components, and the idea was to reduce the number of components we need to take care of
Another option would be integrating terranix, but that's an entire different user story
Arguably we can implement all the variability for an otherwise fixed set of resources (such as secrets, DNS, ...) with what we have already
Nested deployments are only required if we have CLI-first use cases that operate directly on expressions
For demo purposes until further notice, our parameters are a constant as far as NixOps4 is concerned, and its internal data dependencies can be resolved e.g. in the front end's data model
More important for now is having TF provider wrappers for common use cases, because that is where the application value lives
On progress indication: NixOps4 is using the tracing library underneath, which offers separate events and spans (with start and end)
Adding JSON output is a quick fix
The CLI progress indicator already uses this infrastructure
There's no interface for providers yet, because so far the assumption is that they're short-lived
Having that would be nice, but note that it would require substantial changes to NixOS build/activation logging
Most of the value can already be provided by the NixOps4 core, given it knows which resource providers need to be run and which are done
Could be follow OpenTelemetry in a creative way so NixOps4 doesn't have to own the schema
Long term providers could talk via API servers using some IDL such as capnproto
Conclusion: We will drop JSON into the nixops invocation for the MVP and use the basic JSON logging infrastructure for progress indication
Mid term we'll want Terraform provider wrappers to do the resource provisioning
We can continue discussing long-term architecture decisions (such as protocols, concurrency, scheduling) independent of near-term milestones
Expression demonstrating the infinite recursion that would be resolved using [nested deployments](https://git.fediversity.eu/Fediversity/Fediversity/issues/170):
```nix
resources = { config = { ... }; }
// optionalAttrs (f resources.config) { vm = g resources; }