I’ve recently started to get into containerized development (of LaTeX documents for now) using VSCode with the Dev Containers Extension. While compilation and everything works fine, I’m a bit annoyed by the very barebones shell of my podman container in the integrated terminal. I’m used to zsh with syntax highlighting and autocompletion, I like to use neovim to write my commit messages (even when I’m using VSCode to write my code) and of course I need git and ssh to push to my git forge.
I wonder if it is recommended to
- install neovim, zsh, ssh, git inside the dev container using the package manager (apt in this case) and manually write some config files
- Specify the installation of those packages in the Containerfile for my dev container and configure the devcontainer.json to mount my host’s config files
- Use those tools from outside my dev container somehow
- Just not use any convenience tools like zsh, neovim, with individual config even, and only install purely functional packages like git and ssh in the container?
Since I’m not a software developer by training (trying to become one right now) I’d be very happy about some best practices or recommendations.
I basically do option 2, but I’d never mount all my configuration. If I want an isolated environment, I’m not making all my ssh keys available to it. So some things have to stay outside for me.
- and 3. sound like sensible options. Though none of the options is inherently wrong. But the first one doesn’t sound easily reproduceable.
For 2: see the other comment https://feddit.org/post/25212909/11301373
For 3: i think you can also create a “host” terminal in vscode? (Maybe i’m remembering wrong). Then you can simply
cdto your project and use git etc as usualdeleted by creator
It sounds like you don’t want a dev container but a dev shell. Have a look at Nix flakes. This allows you to ship your dev environment as code but without the hassle of running inside a container. All your local tools will work and pickup whatever you configured in the flake.


