The system files aren’t writable, instead you download a new system image when you want to update. No dependency hell or weird issues because these system images are all tested. Your system also keeps one or two old ones around and if by some chance something does go wrong you just select the old one at boot.
Downside is you’re more limited on installing software. You can force install things the traditional way but that kinda defeats the point. Instead you have to use things like FlatPak or AppImages which covers most GUI apps you could want. For command line apps you will have to use something like DistroBox.
It’s a trade off but for casual desktop users it is super stable and pretty simple. Updates come out daily (depending on distro) and they just get all their software from the software center app with a nice GUI.
You can do gui apps too! I used distrobox to run WebEx on an Ubuntu image for an interview. Just had to get to the actual binary to launch and it worked seamlessly.
that is one way to do it, and it’s a very common one - it’s robust and simple. So I can’t correct you, but thought I would add to it.
In NixOS, they’ve improved it by making sure all your apps are symlinked, and when updating, these symlinks are updated. That way you can start using your newly updated system straight away, without a reboot. When rebooting, you are prompted to which generation you want to boot into, (defaulting to “latest” after a few seconds of no input) making rollbacks a breeze.
I know its a meme but nixos is actually good for this. You can be on the unstable branch, not update for 5 years and still get everything working after updating(tho i dont recommend because of security). I think nixos has some fucking AMAZING features but the problem is its paired with features that make it extremely hard to use for a casual user.
Agreed! I think a part of the “problem” is that with Nix, there’s now at least 3 sides: application specific knowledge, system knowledge, and you have to use the nix language, architecture and tools to interface with it.
so for a seasoned linux user, there’s maybe just a new programming language, but if you’re new to Linux, it’s quickly gonna overwhelm you.
which in a way is a bit ironic because I’d argue that it’s easier to manage a NixOS system, and getting help is so much easier when your problems can be replicated by just aharing your config.
Id say its easy to share your problems with other people because its a few files unlike distros like arch where your packages can be fucked up and then you have to reinstall in most cases. But the support it self isnt too good. Arch has archwiki, ubuntu has a lot of channels of support while nixos has a badly written wiki.
So many Linux problems are solved by using NixOS, it’s amazing. Immutability? NixOS. Atomic upgrades? NixOS. Whole system rollbacks? NixOS. Versionned system settings? NixOS. Impermanence? NixOS. Multiple versions of the same program installed at once? NixOS. Containers? NixOS. Multiple hardware profiles on a single installation? NixOS.
At this point, I think the only thing remaining is a Flatpak-like sandbox.
If im right theres a utility for nixos that wraps flatpacks in an environment so they work nice with nix. I dont really use flatpacks so i dont know what the name is tho.
If forgetting/not wanting to update puts you in this hole, like… ever, you should really give an atomic distro some serious consideration.
Say more please? What’s the advantage?
The system files aren’t writable, instead you download a new system image when you want to update. No dependency hell or weird issues because these system images are all tested. Your system also keeps one or two old ones around and if by some chance something does go wrong you just select the old one at boot.
Downside is you’re more limited on installing software. You can force install things the traditional way but that kinda defeats the point. Instead you have to use things like FlatPak or AppImages which covers most GUI apps you could want. For command line apps you will have to use something like DistroBox.
It’s a trade off but for casual desktop users it is super stable and pretty simple. Updates come out daily (depending on distro) and they just get all their software from the software center app with a nice GUI.
You can do gui apps too! I used distrobox to run WebEx on an Ubuntu image for an interview. Just had to get to the actual binary to launch and it worked seamlessly.
Right but if there is a FlatPak, that’s usually the easier option
I have to ask, do you use X11 or Wayland? I’m struggling to get Webex working for calls (video or otherwise) under Wayland.
IIRC that was X11. It has admittedly been a minute. And by a minute, I mean a year.
That’s super neat. I’ll get around to checking it out at some point.
(correct me if I’m wrong, I’m also new at this)
There are two partitions. One with the current system, one with the previous system. Updates are applied in a whole batch at once, once in a while.
Current system is cloned into the old one and an update is applied to the clone.
Once the update is complete, system reboots in the clone, and what was the current system becomes the previous one.
If something goes bad, you can reboot into the previous system and fix the clone.
This is how the steam deck works. I think newer android phones do this too.
Yes, it uses an immutable atomic distro. I don’t know about Android phones, but I wouldn’t be surprised.
I believe this is how android has been for as long as i have used it. At least A6 or A7. Could be earlier but I haven’t used those enough
that is one way to do it, and it’s a very common one - it’s robust and simple. So I can’t correct you, but thought I would add to it. In NixOS, they’ve improved it by making sure all your apps are symlinked, and when updating, these symlinks are updated. That way you can start using your newly updated system straight away, without a reboot. When rebooting, you are prompted to which generation you want to boot into, (defaulting to “latest” after a few seconds of no input) making rollbacks a breeze.
That sounds kinda like what any OS should do in the history of OSs…
Should. But didn’t. Until fairly recently.
The atomic distro would do a backup and if update goes wrong, it automatically boots back into the previous one.
I know its a meme but nixos is actually good for this. You can be on the unstable branch, not update for 5 years and still get everything working after updating(tho i dont recommend because of security). I think nixos has some fucking AMAZING features but the problem is its paired with features that make it extremely hard to use for a casual user.
Agreed! I think a part of the “problem” is that with Nix, there’s now at least 3 sides: application specific knowledge, system knowledge, and you have to use the nix language, architecture and tools to interface with it. so for a seasoned linux user, there’s maybe just a new programming language, but if you’re new to Linux, it’s quickly gonna overwhelm you. which in a way is a bit ironic because I’d argue that it’s easier to manage a NixOS system, and getting help is so much easier when your problems can be replicated by just aharing your config.
Id say its easy to share your problems with other people because its a few files unlike distros like arch where your packages can be fucked up and then you have to reinstall in most cases. But the support it self isnt too good. Arch has archwiki, ubuntu has a lot of channels of support while nixos has a badly written wiki.
if it’s an actual wiki, you can fix that :)
The thing is i cant. I dont understand what im doing either. I just copy other peoples config and mess around until it works.
So many Linux problems are solved by using NixOS, it’s amazing. Immutability? NixOS. Atomic upgrades? NixOS. Whole system rollbacks? NixOS. Versionned system settings? NixOS. Impermanence? NixOS. Multiple versions of the same program installed at once? NixOS. Containers? NixOS. Multiple hardware profiles on a single installation? NixOS.
At this point, I think the only thing remaining is a Flatpak-like sandbox.
If im right theres a utility for nixos that wraps flatpacks in an environment so they work nice with nix. I dont really use flatpacks so i dont know what the name is tho.