I started playing about with Ublue templates. My idea was to develop a minimal bluefin that would work well for my thin clients that only have about 18gb left after install.
I’ve managed to get it to a fairly good place where well it boots with Remmina pre-installed. Lots of space left over.
Looking through bluefin and other projects, they seem a lot more modular.
I’ve just stuck everything in conatinerfile at the moment.
Obviously this isn’t the cleanest way, so I’m looking for some suggestions on good practices.
I’m also struggling to get some theming down like wallpapers, Plymouth logos etc.
Thanks for reading
github here so you can see how I massacred everything
Is there a reason you didn’t want to use build_files/build.sh for the customizations you make in the Containerfile? Most or all of those seem like they can be done in build.sh.
No reason, like I mentioned I lack a good understanding of the best practices, the few tutorials I could find focused heavily on the containerfile, but it didn’t seem right, especially when I started looking at other projects.
I started playing about a bit, hence the recipies.yaml, but then felt I was just doing things without understanding them, so thought I’d reach out.
So container file is more like a traditional nix declartive base
Build.sh is for customisation or anything more pre-desktop?
I’m guessing the flow goes Containerfile→Build.sh→bootc?
I wouldn’t describe the Containerfile as being more like a declarative Nix configuration, but in terms of flexibility it is more cumbersome than using build.sh. If you use a very minimal Containerfile, for example by only changing the base image line to your preferred base image, and putting most of your customizations in build.sh, you’re less likely to have stability issues with the base image, because there is less that could go wrong in building it. Then if your builds do fail, you’ll only really have to debug the build.sh file.
The Containerfile has a directive that runs the build.sh script and validates the state of the new (current) bootc image (ostree container commit). This approach provides more flexibility, since you are able to use commands in build.sh like it was a regular Fedora system. You don’t have to use rpm-ostree, as you can just use dnf/dnf5. From the perspective of the build.sh file it is like you are on a regular Fedora system.
All the main base images (Aurora, Bazzite, Bluefin, etc) provide Tailscale out of the box, so there is no need for you to add it yourself. I would check the website of your preferred base image to see what features are available by default, which would save you from having to add them yourself.