I don't have a write-up, just my code in git. But it's not public. I'm not using anything out of the ordinary - Nix containers, modules, and functions, and the Agenix module with uses a private key to decrypt secrets at start. The Nix language is inherently composable. If you are familiar with Nix, it should be straightforward, otherwise it would probably be better to learn it first. Perhaps you could use this as a mechanism to learn. Here are some links that explain:
At first glance, this looks a bit more complicated to me than docker compose. Using nix feels like it could make things more precise, and maybe that is better?
I'm still learning Nix, despite having it has my main laptop driver for over a year. It's magical and mystifying all at once!