How do you all handle this? I’m going to start poking around with NixOS but anticipate Python dev to be impossible on the base OS, so curious what sorts of options y’all use when connecting your configured editor to a container- e.g. if I have Neovim configured in my host, is it better to re-set-up Neovim again with the same dotfiles in the container and dev in the container, or connect the editor to the container somehow?
My gut is saying it’s probably cleaner to set up an editor inside the container, just not sure I want to do that every time I start a project.
you should have no problem doing Python dev on nixos, it’s basically made for doing development environments like this without the need for containers. you should just be able to set up a nix shell for your project that contains python and all the necessary dependencies, and then enter the shell. then, you’ll have all the right dependencies installed for your project and still have access to any editors you have installed
I’d also check out
poetry2nix
if you’re a poetry fan and interested in building your package with nix. See https://www.tweag.io/blog/2020-08-12-poetry2nix/.
Python is easy on NixOS, you just need to use python venvs and you can use pip like normal
(python -m venv .venv) to create the venv (only need to do once per project)
.venv/bin/activate to enable the venv (Vscode should do this automatically if you create the venv through the python extension)
Then just pip install to your heart’s content
(Probably a good idea to pip freeze > requirements.txt every time you install a new library too to make it reproducible
Also you should probably add the venv directory to gitignore if you’re using git as it’ll add a lot of crap to source control that can be easily regenerated from the requirements.txt
Use Nix expressions or flakes for that - just copy a simple example of default.nix or shell.nix from a git host and tweak it to your liking. Personally, I am not a fan of how Nix handles Python, and still can’t get used to how Python packages have to be included in expressions, so I create a temporary virtual environment for the time-being.
In my experience, you still have your same path to your nix installed binaries in the distribox container, so you shouldnt even have to duplicate your configuration. I also dont suspect python dev to be that bad so long as you use venv or conda.
Neovim is not a CLI editor, it is a TUI editor. If you want a CLI editor, use
ed
orex
.