I tried to give Nix a chance but I never figured out how to package dependencies that didn't already have a derivation written for them.
Particularly since I do a lot of ML work - I never figured out how to handle mixed Python/C++ code with dependencies on CUDA.
It's just way easier, even if not reproducible, to build an environment imperatively in Docker.