I’m preparing for a new PC build, and I decided to try a new atomic OS after having been with NixOS for about a year.

First I tried Kinoite, then Bazzite, but even though KDE has a lot of features, I found it incredibly buggy, and it even had generally poor performance, especially in Firefox. I don’t really have time to diagnose these issues, so I figured I would put in just a little more effort and migrate my Sway config to Fedora Sway Atomic.

I’m glad I did. The vanilla install of Fedora Sway is awesome. No bloat and very usable. I haven’t noticed any bugs. Performance is excellent. And it was very straightforward to apply my sway config on top without losing the nice menu bar, since Fedora puts their sway config in /usr/share/sway.

I’m also quite happy with the middle ground of using an OSTree-based Linux plus Nix and Home Manager for my user config. I always thought that configuring the system-level stuff in Nix was the hardest part with the least payoff, but it was most productive to have a declarative config for my dev tools and desktop environment.

I originally tried NixOS because I wanted bleeding edge software without frequent breakage, and I bought into the idea of a declarative OS configuration with versioned updates and rollback. It worked out well, but I would be lying if I said it wasn’t a big time investment to learn NixOS. I feel like there’s a sweet spot with container images for a base OS layer then Nix and Home Manager for stuff that’s closer to your actual workflows.

I might even explore building my own OS image on top of Universal Blue’s Nvidia image.

Hope this path forward stays fruitful! I urge anyone who’s interested in immutable distros to give this a try.

  • barsquid@lemmy.world
    link
    fedilink
    arrow-up
    4
    ·
    5 months ago

    Hell yeah! I’m on Bazzite, myself. I’m ok with KDE but might swap it out later. Did you rebase to get from Bazzite to Sway?

    I think the ostree stuff is really neat. Nix sounds like a great complement to it, I guess you can configure it to install to /var pretty easily? I think I’d prefer that to brew.

    I’ve been interested in ostree so much that I’m moving a few other things over to IoT. Building your own makes too much sense, updating layers is so slow. I’m trying to use rpm-ostree compose to make my own version of IoT but I am struggling to modify the containers it builds or turn them into ISOs. All of their tooling is needlessly complex.

    • tatterdemalion@programming.devOP
      link
      fedilink
      arrow-up
      4
      ·
      5 months ago

      I just clean installed Sway. The last time I tried a rebase from Kinoite to Bazzite it left me with a weird set of flatpaks and removed Firefox somehow. Probably wasn’t a big deal but it was easy enough to start fresh.

      And yeah Nix store can live in /var. That’s where it ended up when I used the nix-installer provided by Determinate Systems.

      Hmm what you say about the ostree tooling is unfortunate. I was hoping to make my own image at some point. What specifically is overly complex?

      • vividspecter@lemm.ee
        link
        fedilink
        arrow-up
        3
        ·
        edit-2
        5 months ago

        The last time I tried a rebase from Kinoite to Bazzite it left me with a weird set of flatpaks and removed Firefox somehow

        There’s a warning against this in the Bazzite FAQ, so that’s not too surprising. It’s referring to DEs, but different “distributions” also applies I presume. I hope that becomes solved in the long run, as it is one of the current downsides with Silverblue etc

      • barsquid@lemmy.world
        link
        fedilink
        arrow-up
        2
        ·
        5 months ago

        The problem I’m running into is attempting to create an image fresh from the yaml “treefile” and building on that. I think I know what they’re using but the documentation on how to reproduce the build isn’t great.

        I’d also like to isolate the build into containers, which makes the whole thing harder because the build process uses containers and loop devices.

        You might get up and running faster if you start from an existing atomic distro and layer packages on top. The ublue-os repos have an automated script that you could use as a reference.