Methods for automatic, composable, toolbx application installations and upgrade/maintenance

Hi folks,

I’m relatively new to fedora-silverblue (or sericea more accurately) and I was hoping to get some insight on containers and keeping containerized applications updated.

I’m trying to find the best way to be able to:

  1. define applications in plaintext files
  2. keep applications up-to-date with as little manual intervention as possible
  3. keep the update and installation processes as efficient as possible (not rebuild the entire container everytime downloading all the packages again)
  4. keep development containers isolated but accessible. Say for example a container for python, one for rust, one with texlive, and another with emacs, and then chaining them together as need be.
  5. retain some sort of home directory isolation to keep from making things too polluted

To this end, my attempt has been:

  1. define composable images in containerfiles
  2. build images and then toolbxes (containers) via ansible playbooks
  3. no real solution but possibly have ansible go into each container, see if updates are available, and if so, rebuild? with containers being composed should limit redownloaded packages and repos
  4. emacs tramp? or perhaps abandon
  5. Investigated distrobox for this but found too much abstraction from containers so went back to toolbox and defined a custom homedirectory in the containerfile, and had ansible create the directory if it didn’t exist

This has been successful to a point but as I’ve been building out my solutions I’ve found it’s really difficult to keep the toolchain short, and the complexity down. And sometimes the layers of abstraction on top of the containers themselves obscure whats gone wrong or what im missing to make different pieces possible or simplified.

I was wondering if anyone had recommendations for how they’ve accomplished this sort of thing or if there were suggestions for where I’m going wrong conceptually?

I’m still learning containers and the like and am often confused by the overlap and limitations of the stuff, so any input or suggestions would be greatly appreciated, particularly if theres something fundamentally wrong with my understanding!

Added toolbx and removed flatpak