package nix import ( "context" "io" "iter" "os/exec" ) // Context holds configuration and environment information for interacting with nix. type Context interface { // Streams returns the stdout and stderr writers held by this [Context]. Streams() (stdout, stderr io.Writer) // Nix returns the [exec.Cmd] struct to execute a nix command. Nix(ctx context.Context, arg ...string) *exec.Cmd // WriteStdin calls [WriteStdin] for [exec.Cmd]. The function f points to is called if [WriteStdin] succeeds. WriteStdin(cmd *exec.Cmd, installables iter.Seq[string], f func() error) (int, error) // Unwrap returns the stored [context.Context] Unwrap() context.Context }