Is it? Every time nixpkgs changes the python minor version all of my virtualenvs break, which is a pain. I guess I need to look into dev shell or something.
Yes you need to use a shell to make it reproducible in the nix sense; a regular venv will try to point to the nix store or lose libraries (or try to dynamic-link stuff) when your system env changes which is why you need it to be independent of it.
I don’t bother with venvs in my own projects because nix kind of subsumes its purpose, but it’s possible to work with them still.
Something that might help: devenv. I haven’t used this personally but the UX looks like an upgrade. (I just use flakes with dev shells defined inline long-form)
Is it? Every time nixpkgs changes the python minor version all of my virtualenvs break, which is a pain. I guess I need to look into dev shell or something.
Yes you need to use a shell to make it reproducible in the nix sense; a regular venv will try to point to the nix store or lose libraries (or try to dynamic-link stuff) when your system env changes which is why you need it to be independent of it.
I don’t bother with venvs in my own projects because nix kind of subsumes its purpose, but it’s possible to work with them still.
Something that might help: devenv. I haven’t used this personally but the UX looks like an upgrade. (I just use flakes with dev shells defined inline long-form)
This video came across my feed last night, and might give you a rough idea: https://youtu.be/jldArhyi6jM&t=581