this post was submitted on 02 Feb 2026
19 points (100.0% liked)

Programming

25549 readers
867 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 2 years ago
MODERATORS
 

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

  1. install neovim, zsh, ssh, git inside the dev container using the package manager (apt in this case) and manually write some config files
  2. 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
  3. Use those tools from outside my dev container somehow
  4. 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.

all 7 comments
sorted by: hot top controversial new old
[–] doeknius_gloek@discuss.tchncs.de 8 points 1 week ago* (last edited 1 week ago) (1 children)

The best practice would be using dev container features. Those are basically install scripts that get layered onto your container. See this list for some available features or write your own.

One nice thing about features is that, in a collaborative environment, you can add required features for everyone directly in the devcontainer.json and personal preferences like a zsh feature in your settings.json (dev.containers.defaultFeatures) so they get installed into every container you open.

[–] jdw@feddit.org 2 points 1 week ago

Thank you, I'll check out features! The DefaultFeatures sound like the distinction between configuration for everyone and personal preferences that I was looking for!

[–] dotslashme@infosec.pub 3 points 1 week ago (1 children)
[–] jdw@feddit.org 0 points 1 week ago (1 children)

I know about distrobox, but it's also just standard podman containers, right? So the question is what container to use, what to install in the container and what part of that to commit in the .devcontainer directory in git.

For example for LaTeX development I'm using this container image https://islandoftex.gitlab.io/community/projects/docker/. I think starting the container via distrobox instead of podman doesn't change anything about my question?

[–] dotslashme@infosec.pub 3 points 1 week ago

I just use a straight up general Linux image, such as debian or arch and then install what I need inside them.

[–] setsubyou@lemmy.world 3 points 1 week ago* (last edited 1 week ago)

I basically do option 2, but I’d never mount all my configuration. 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.