Awesome Immutable
image-based Linux desktops
This guide is for people looking for information on running image-based Linux distributions and associated tools and goodies. Note that these systems aren't totally immutable, but no one would ever click on an awesome-anti-hysteresis
list.
For this list server distributions like CoreOS and Flatcar are not included. This list is intended for users who have been using traditional linux distributions on their desktop and need consolidated information.
Introductory Blogs and Publications
These should be enough to get you started:
- “Immutable” → reprovisionable, anti-hysteresis- Colin Walters
- The Birth of the Kubic Desktop - Richard Brown
- Project Atomic + Docker: A post package world? - Colin Walters - it's an older post but it checks out
- Immutable Operating Systems: A Survey - Sebastian Böhm and Guido Wirtz, University of Bamberg, Germany - A short scientific publication that conceptualizes, defines, and outlines use cases and limitations of Immutable Operating Systems.
Talks and Videos
- Linux Downtime - Episode 39 - I went on this podcast to talk about this list, image based desktops, flatpaks, and all that stuff. If you are lost start here!
- The Read Only Scenario - An excellent introduction to these kinds of desktops
- Kubic - openSUSEs Container Starship - Richard Brown
- openSUSE MicroOS - Richard Brown
- Can MicroOS Desktop be your Daily Driver? - Dario Faggioli
- MicroOS Desktop: The Road to Daily Driving - Richard Brown
- 19 talks on Fedora Silverblue and related technologies - many recorded talks here, too many to list here, but worth it!
- ostree CLI for OS management - Denis Pynkin
- Let's try Fedora Silverblue - Adam Šamalik
- How Nix and NixOS Get So Close to Perfect - Xe
- Fedora Silverblue: is this the FUTURE of Linux? - Project of the Month - older video but an excellent review of the major components
- Learning the difference between Red Hat distributions and what Fedora Silverblue is - JJ Asghar
- Linux After Dark – Episode 07 - the hosts tried silverblue and did an episode on their experiences.
- Fedora Silverblue: An Immutable OS
- What's new in (rpm-)ostree - 2022 edition! - DevConf.CZ 2022
- Fedora 36 Silverblue: The 3 Guiding Principles for a Successful Experience - excellent introduction video that covers lots of tips and tricks.
- How we build and maintain Kairos - Mauro Morales, FOSDEM 2023
- Meet Kairos, an OSS project building the immutable Kubernetes edge - Ettore Di Giacinto and Nic Vermande
Distributions
The Future is Now(tm), try one of these today!
- Fedora Silverblue - Silverblue is a variant of Fedora Workstation. It looks, feels and behaves like a regular desktop operating system, and the experience is similar to what you find with using a standard Fedora Workstation.
- Ostree Native Container - Spec on Silverblue moving to a native OCI container model (Huge change)
- Development on Fedora Silverblue and Fedora Kinoite
- Setting yourself up for success before trying Fedora Silverblue
- Day-to-day differences between Fedora Silverblue and Ubuntu
- Fedora Kinoite - Similar to Silverblue, but based on KDE
- Fedora Sericea - Similar to Silverblue, but based on Sway tiling window manager
- openSUSE MicroOS - a variant of openSUSE Tumbleweed and serves as a base of openSUSE Kubic, a Container as a Service platform.
- openSUSE Aeon - a variant of openSUSE Tumbleweed providing an immutable GNOME desktop featuring containers with Distrobox.
- openSUSE Kalpa - Similar to openSUSE Aeon, but based on KDE.
- NixOS - a Linux distribution based on Nix package manager
- awesome-nix - A curated list of the best resources in the Nix community
- Note: The nix community has both an OS and a packaging system and is already large and vibrant, I can't do it justice so just use the list above to dive in
- Guix System - a Linux distribution based on the Guix package manager based on Nix
- EndlessOS - A Debian derivative distribution with a read-only root filesystem managed by OSTree and Flatpak for application delivery and update
- ChromeOS Flex - the cloud-first, fast, easy-to-manage, and secure Chrome OS for PCs and Macs.
- ChromiumOS - Good design document on how Chromium implements its autoupdate mechanism
- rlxos - A immutable, independent general-purpose distribution with a primary focus on single file per application.
- carbonOS - An open operating system designed from the ground-up to be intuitive and robust. The blog post explains the goals
- AshOS - The immutable tree-shaped meta-distribution.
- VanillaOS - Vanilla OS is an Ubuntu Linux-based Point Release distribution that receives updates at the right time, neither before nor after, without sacrificing security and functionality.
- Nitrux OS (2.6.0+) - A Debian-based Linux distribution that features NX Desktop and the MauiKit Applications suite.
- blendOS - blendOS is an operating system that seamlessly blends all your Linux distributions into one.
- Kairos - The immutable Linux meta-distribution for edge Kubernetes.
- AstOS - An immutable distro based on Arch using btrfs snapshots.
- Universal Blue - A framework for building your own OSTree distros, based on Fedora Siverblue. Check out the list of available images!
Toolboxes
There historically have been a few versions of "toolbox", and we're probably at a point where it's more of a class of software than an individual project. I classify toolboxes as "A terminal front end to container runtimes focusing on transparent ease of use of container images". Someone smarter please make a better definition.
- Toolbx - Tool for containerized command line environments on Linux
- Toolbx Tuner - Toolbx Tuner is a tool to improve the experience with toolbx.
- Toolbx Images - Community maintained container images to use with toolbx (Check these out if you need other distros outside the default Fedora ones)
- toolbox-images - a collection of container images for usage with the toolbox command. This is an attempt at providing more feature parity with regard to toolboxes for distributions other than Fedora.
- Toolbox GUI - A graphical interface for interacting with Toolbox, written with GTK3 and Python
- Distrobox - Tool for containerized command line environments on Linux, distribution agnostic, supports a wide variety of containers , works both with podman and docker - This is a great tool to start with on your existing distro to learn working with day-to-day container workflows.
- BoxBuddy - A GUI manager for your Distroboxes, made with Qt.
- devbox - Devbox is a command-line tool that lets you easily create isolated shells and containers.
- nsbox - Pet container manager based on systemd-nspawn and supporting DBus and desktop files.
- unbox - New (a little bit experimental) implementation of a toolbox that does not rely on existing container engines like
podman
ordocker
, instead opting to use Linux namespaces directly to improve performance. - coretoolbox - Toolbx alternative in rust with a focus on container builds. (Older project, appears unmaintained, but if I don't include rust stuff people will get upset
😃 ) - folderbox - Folder based containers that isolate project environments with escapes to the host for development.
- apx - The default package manager for VanillaOS, utilising Distrobox to manage containers for various distros on the user's behalf.
Core Tools
Things that are the building blocks for all the stuff we're talking about here.
- podman - Podman is a daemonless container engine for developing, managing, and running OCI Containers on your Linux System.
- gnome-shell-extension-containers - This neat extension lets you see what containers you have, start/stop/restart, pause, and shell into them right from the notification area.
- Podman Desktop - Manage different container engines from a single UI and tray icon
- Podman desktop companion - graphical management of your desktop containers
- Pods - a podman desktop application (formely known as Symfony)
- Flatpak - a utility for software deployment and package management for Linux. It is advertised as offering a sandbox environment in which users can run application software in isolation from the rest of the system.
Lower level tools
Most of us will not use these tools directly, but useful for developers:
- libostree - Operating system and container binary deployment and upgrades
- Upcoming experimental features in rpm-ostree
- flatpak-ostree-dedup-stats.py - script to show you how well the ostree deduplication is working, this one is neat
- apt2ostree - apt2ostree is used for building Debian/Ubuntu based ostree images. It performs the same task as debootstrap/multistrap but the output is an ostree tree rather than a rootfs in a directory.
- Endless OSTree Builder - Stripped down Endless ostree builder for Debian
- osbuilder - Build-Pipelines for Operating System Artifacts
- ABRoot - A utility which provides full immutability and atomicity to a Linux system, by transacting between two root filesystems. Updates are performed using OCI images, to ensure that the system is always in a consistent state.
Integration Resources
aka. duct tape.
- Integrate VSCode and Distrobox
- silverblue-nix - Andrew Hayzen's steps for getting nix working on Fedora Silverblue.
- Toolbox Visual Studio Code Integration - Toolbox Visual Studio Code integration
- silverblue-tools - Collection of scripts for silverblue related technologies
Configs from the Community
OSTree based systems allow for composable derivative distributions. If you're automating the config on systems like this please PR your config to share:
- workstation-ostree-config - Manifests for rpm-ostree based Fedora variants (start here!)
- ostree-pitti-workstation - Fedora minimal sway developer desktop
- vauxite - This is an rpm-ostree-based Fedora Xfce desktop.
- zepyros-dev's config
- JayDoubleau's config (ansiblue)
- Universal BLue - Community built OS images based on Fedora Silverblue
- ansible-silverblue - Jim Campbell's ansible playbook for silverblue
- Sodalite: A Pantheon Experience for Silverblue
- silvernobara Fedora Silverblue with Project Nobara enhancements
Desktop Tours
Here are some people walking through their setups:
Tips
Discussion
-
Reddit:
-
Discord Servers:
-
Matrix Rooms:
Miscellaneous
Things that don't fit anywhere else but might be useful reference material
- Introducing flox - Nix for simplicity and scale- Barry Plunkett
Contribute
Contributions welcome! Read the contribution guidelines first. We need more nix resources so if you have good ones please consider PRing one.
If you don't know how to use git then file an issue and leave a link, I'll integrate it into the list!