Hacker News new | ask | show | jobs
by wing-_-nuts 14 days ago
>give Bazzite a whirl

I never really understood Bazzite's immutable fs thing. Can one install standard dev stuff (i.e. compilers, ides, etc) easily under bazzite?

This use case is the main reason why I lean towards maybe using cachyos

10 comments

I use Bazzite for development bc it works like a Mac with sane defaults and a just works approach:

- IDEs are no problem. Editors will "just work" for anything you type into the app store - Bazzite handles the special cases for you and installs them through brew taps or Flatpaks.

- For development it's basically just like a Mac where you also can't install system-level packages: Node, Python etc work through brew / nvm / uv same as on Mac. Development that involves containers will be unchanged from a Mac. For compilers specifically, same as on Mac: Install it through brew, or if you need a Debian or Fedora base you do `distrobox create` and you can apt-install in a transparent podman container.

The immutable fs thing isn't just Bazzite; it's a fork of Fedora Silverblue[1] (it sounds like AI wrote this, but it didn't! I fear I am becoming the AI...)

Immutable filesystem-based operating systems became fairly widely used as the "base" system for Kubernetes nodes. Because on a container-focused system, you never need to touch the rootfs.

This started as a project called CoreOS[2], which was eventually acquired by Red Hat for its OpenShift (Red Hat Kubernetes) platform.

On servers, immutable rootfs makes a lot of sense. Silverblue (et. al.) was an attempt to see if that concept translated to Desktop systems well. Reviews are mixed. Some people swear it's the best thing since bread. Other people claim it's worse than having dental work done.

I'm personally somewhere in the middle. I think the concept is good, but if you want to do anything to change the core system, like installing custom video drivers, it quickly becomes a pain. I like to equate it to the "n00b"-OS. People who "just want the damn computer to work", immutable is great, because neither they nor an application can do anything to really break the system. On the other hand, it really limits (without complex work-arounds that other systems don't need) what "power users" can do.

In "the perfect immutable OS world", you would never directly install any application; instead, you run everything in a container (i.e., Flatpak). So you have layers of protection: an immutable root and a container-based permission system; the worst* thing an application could do is blow up your home directory. But if you manage permissions correctly, the most damaging thing would be an application blowing up only itself.

[1] https://fedoraproject.org/atomic-desktops/silverblue/

[2] https://www.redhat.com/en/technologies/cloud-computing/opens...

Yes of course, but you need to do it via the package manager. You can't "sudo make install". If you build your own software and want to install it system wide, you need to flatpack/brew it or run it in a docker container.

(obviously you can modify the filesystem if you really really really want to).

Bazzite is gaming oriented version of Fedora CoreOs. There are many different versions. I am running bluefin.

I've tried a lot of desktop linux distros, and to be honest, immutable linux feels like the future. Anything you do can simply be rolled back. Break something? Just roll it back.

And if you run something like Bazzite, but want to try out Bluefin-Dx which is developer oriented, then you can rebase your existing installation. If you don't like it, just revert back to Bazzite with a single command.

However, it's desktop oriented. Don't run CoreOs on a server.

> However, it's desktop oriented. Don't run CoreOs on a server.

Why not, this kind of management seems ideal, A/B safe testing for boot.

Lots of containers to go around these days, people are familiar with them and how they work, seems like an obvious sane choice.

> You can't "sudo make install"

You can if you're going to target /usr/local, which should be where make install installs if it's following the FHS correctly.

> However, it's desktop oriented. Don't run CoreOs on a server.

Huh?? I think you meant something other than CoreOS there.

Bazzite mostly suggests installing stuff via Flatpak or Homebrew. (No, really, brew on Linux lol). You can also layer in things with rpm-ostree but it's clunky. I think the immutable OS makes sense for a consumer but not for a developer.

So I'm using Nobara instead. It's a different Fedora-for-gaming but has most of the same improvements. It is a traditional system, not immutable. CachyOS is also very popular and that gets you an Arch-for-gaming. Just yesterday I learned of PikaOS, a Debian-for-gaming.

The main thing all these gaming-customized systems are doing is getting graphics drivers and proprietary codecs installed for you easily.

Why not for developers? You can install tools from flatpak or in home directory. My workflow includes toolbox containers. Distrobox is also good option.
Many flatpaks aren't actually maintained by the actual developer nor the normal way the package is normally used. You may have bugs that aren't present in the package that the dev isn't aware of or interested in fixing especially if they support a different channel and the bug relates to sandboxing.

There is also a risk that the person may be malicious from the start, sell out, or simply get malware. Given the nature of the ecosystem a malicious release to a previously safe package could propagate incredibly quickly.

Where there are multiple steps for a package to get from developers machine to yours and each is slow enough for malicious behavior to be noticed each step adds friction and decreases the chance of ultimate success. Where all steps are nearly simultaneous your risk multiplies with each step in which a different person has their hands in it and if any of them are malicious or compromised you are screwed.

mostly i'm trying to get out of the terminal and most IDEs don't understand devbox/distrobox well without lots of finagling.
Why Nix is great; you can run the IDE from within a Nix-managed dev environment and not have to teach the IDE about it. You can point a .desktop shortcut at it too.

Requires a different way of working with projects though, so understandable if that's not your thing.

I install the IDE as well as tools inside distrobox.
don't you then have to keep your IDE config synced across them an open a whole instance for each project? Why even have an OS underneath it at this point?

Sometimes it feels like I'm just being asked to install a real linux distro inside my linux distro so I can actually do things. Here's you nice shiny desktop and app store! Oh you want to do more than browse the web? Better install linux again in a VM.

Maybe i'm just stuck in legacy paradigms, but I kind of like just booting IntelliJ and picking the project i'm on today.

Or sometimes I want to move stuff between projects i'm working on, that's a lot easier if my one IDE instance can hit them all at the same time.

> but not for a developer

I disagree. Immutable distros are great for developers, you set your dev env up in a container environment and when it goes pear shape you can just tear it down and start again without needing to worry about leaving a mess on your host OS.

The immutable linux is pretty great if you find one that fits you type of dev work. The prebuilt images are powered by a config (so you could build your own) but it's great that you can just follow someones good "config". Switching/updates are suddenly easy.

For example i just need docker for webdev and there is bazzite-dx basically bazzite with docker and few things added. Works pretty great, sometimes when something goes bad i rollback the image and wait for future version.

You can modify the fs using rpm-ostree. It will overlay your changes on top of the immutable image. The recommended way is to create toolbox/distrobox which uses containers to isolate stuff.
So how this often works is you leave the distro itself alone per say, and then install user flatpaks. This gives you user level apps with the benefits of the immutable distro.

Outside of that there are commands to install packages directly and some things must be installed that way.

In addition to the other comment mentioning rpm-ostree, brew is installed on bazzite by default and works about as well as it does on macOS.

You can also use fedora toolboxes to create containers mounted on your home folder, though it is clunky.

It competes with steamos. There are other gaming distros that work like normal distros.