They get a multi-user Nix install with a direnv integration that boots up project-local daemons. Think Postgres, Redis, and so on; those are all available, along with the Nix packages the env needs, while their current working directory is that of a project folder.
Very few things live outside of the project, but the things that do are unfortunately stateful. We'll be solving that soon, too.
Is the direnv integration custom or do you base it off of something? I use direnv extensively but I don't have it start any project daemons currently and I've been shipping scripts via devShell for managing them. I'd be very interested in this
We use nix-direnv mostly for the caching support and we use s6 as basically an init system but per project. Besides that it's all custom. We're looking to replace s6 with our own supervisor soon.
Edited to add, direnv just gets installed via `nix-env` but I wish it were using nix-darwin.
I'll probably get to write a blog post about this in a couple months.
People who are writing software in Nix-based dev envs would be interested in what we're working on, but the featureset is tightly bound to resource limitations and needs, so I can't really say any more without making promises I might not be able to keep, and I would feel bad badmouthing s6 if I couldn't do any better myself.
They get a multi-user Nix install with a direnv integration that boots up project-local daemons. Think Postgres, Redis, and so on; those are all available, along with the Nix packages the env needs, while their current working directory is that of a project folder.
Very few things live outside of the project, but the things that do are unfortunately stateful. We'll be solving that soon, too.