“Atomic” is a catchy descriptor! Atomic distros for the Atomic Age! It could be an umbrella term since NixOS and Guix are atomic, but instead of images and partitions they use symlinks, and patch binaries to use full paths for libraries and programs that they reference. So there are image-based distros, and I guess expression-derived distros which are both atomic.
I haven’t tried image-based distros. This post fills in some gaps for me. Thanks for the write-up!
Well ok, they both use symlinks but in different ways. I think what I was trying to say is that in NixOS it’s symlinks all the way down.
IIUC on Fedora Atomic you have an ostree image, and some directories in the image are actually symlinks to the mutable filesystem on
/var
. Files that are not symlinks to/var
(and that are not inside those symlinked directories), are hard links to files in the ostree object store. (Basically like checked-out files in a git repository?)On NixOS this is what happens if examine what’s in my path:
If I select a previous configuration when I boot I would get a different symlink target for
/run/current-system
. And what makes updates atomic is the last step is to switch the/run/current-system
symlink which switches over all installed packages at once.I can temporarily load up the version of
curl
from NixOS Unstable in a shell and see a different result,I could have a different version
curl
installed in my user profile than the one installed system-wide. In that case I’d see this:Basically symlinks upon symlinks everywhere you look. (And environment variables.)
So I guess at the end everything is symlinks on NixOS, and everything is hard links plus a set of
mount
paths on Fedora Atomic.