Subprocess already supports configuration based run:
public static func run<R>(
_ configuration: Configuration,
output: RedirectedOutputMethod = .redirectToSequence,
error: RedirectedOutputMethod = .redirectToSequence,
_ body: (sending @escaping (Subprocess, StandardInputWriter) async throws -> R)
) async throws -> ExecutionResult<R>
I'll add an overload for runDetached as well.