So I’ve recently taken an interest in these three distros:

All of these offer something very interesting:
Access to (basically) all Linux-capable software, no matter from what repo.

Both NixOS and blendOS are based on config files, from which your system is basically derived from, and Vanilla OS uses a package manager apx to install from any given repo, regardless of distribution.

While I’ve looked into Fedora Silverblue, that distro is limited to only install Flatpaks (edit: no, not really), which is fine for “apps”, but seems to be more of a problem with managing system- and CLI tools.

I haven’t distro hopped yet, as I’m still on Manjaro GNOME on my devices.


What are your thoughts on the three distros mentioned above?
Which ones are the most interesting, and for what reasons?

Personally, I’m mostly interested in NixOS & blendOS, as I believe they may have more advantages compared to Arch;

What do you think?

  • lily33@lemm.ee
    link
    fedilink
    arrow-up
    19
    ·
    edit-2
    1 year ago

    I think NixOS is awesome, but it certainly doesn’t offer “access to (basically) all Linux-capable software, no matter from what repo.” - at least not natively. You can do that through containers, but you can do that with containers on any distro. Where it shines is declaring the complete system configuration (including installed programs and their configuration) in its config file.

    • hallettj@beehaw.org
      link
      fedilink
      English
      arrow-up
      6
      ·
      1 year ago

      I think NixOS is awesome, but it certainly doesn’t offer “access to (basically) all Linux-capable software, no matter from what repo.” - at least not natively.

      I don’t quite agree with this. In NixOS you can write custom expressions that fetch software from any source, and stitch them into your configuration as first-class packages. So you do get access to all Linux-capable software natively, but not necessarily easily. (There is a learning curve to packaging stuff yourself.)

      I use this process to bring nightly releases of neovim and nushell into my reproducible config. Ok, I do use flakes that other people published for building those projects, which is a bit like installing from a community PPA. But when I wanted to install Niri, a very new window manager I wrote the package and NixOS module expressions all by myself!

      • OmnipotentEntity@beehaw.org
        link
        fedilink
        arrow-up
        5
        ·
        1 year ago

        Another NixOS user (and minor package maintainer, if it matters) here. Essentially, NixOS is actually rather simple to write a configuration file for a particular program once you get the knack for the nix language and learn how to workaround the sandboxing. I would actually consider it substantially less involved as compared to (for instance) creating your own Debian package.

        However, getting to this point will take a bit of effort, and this step is more or less obligatory to use software on NixOS, whereas it generally isn’t (but still is a good idea) on other distributions.

      • moonpiedumplings@programming.dev
        link
        fedilink
        arrow-up
        2
        ·
        1 year ago

        (There is a learning curve to packaging stuff yourself.)

        “Learning curve” is an understatement. Nix is one of the most poorly documented projects I’ve seen, next to openstack. Coming into it with no background in functional programming didn’t help.

        Maybe I shouldn’t have tried to package openstack on nix.

        But I’ve tried to package other stuff, like quarto, and that was a nightmare. Nixpkgs didn’t have an updated pandoc and I spent an eternity asking around for help, to try to package it. An updated version just got pushed to unstable a few days ago. The same matrix channels I joined to ask for help have been discussing this since then. Props on them for getting it working, but anyone who says that you can easily package anything, is capping. You need to have an understanding of the nix language, nix packaging (both of which are poorly documented), and a rudimentary packaging ecosystem of what you are trying to package.

        Don’t even get me started on flakes vs nonflakes.

        I still use nix-shell for all my development environments, because it’s the best way for reproducible environments I can share I’ve found.

      • OmnipotentEntity@beehaw.org
        link
        fedilink
        arrow-up
        6
        ·
        1 year ago

        The single killer feature that convinced me to move to NixOS is the ability to very easily keep separate development environments separate. For instance, if you’re working on multiple dev projects that have different minimum requirements, and you want to ensure that (for instance) you don’t accidentally use features from after boost 1.61 for project A, because that’s the stated requirement, but you need features from boost 1.75 in project B.

        In a normal distribution, in order to set up an environment that has the proper version for project A you’d need to set up a chroot, a virtual machine, a complicated set of environment variables in a bespoke script with custom installation paths that you need to set up manually and remember to source, or just install a newer version of boost and rely on continuous integration to catch it if you screw up.

        In NixOS, you can set up different shells which all reference the exact correct version of the libraries required for every project, you can have them installed simultaneously and without conflicts, and there’s even a shell hooking program that will automatically load and unload this configuration when you change directories into and out of the project folder. It makes managing many different projects much easier. It’s like a better version of venv, but for everything.

      • lily33@lemm.ee
        link
        fedilink
        arrow-up
        3
        ·
        1 year ago

        Well, for playing games I use the flatpak version of steam and it works OK.

        For dev work, it’s great overall. Especially its ability to create separate reproducible environments with whatever dependencies you need for every project. However, there are some tools (rare, but they exist) that don’t work well with it, and if your dev work happens to need them, it can becomes a problem.

        For day to day (i.e. web browsing), it works the same as anything, with one disadvantage: there is a disadvantage here: it downloads a lot more than other distros on update, and uses more disk space. The biggest difference between NixOS, and say Arch, is not how it behaves once it’s up and running, but in how you configure it. Specifically, you have to invest a lot of time to learn how, and set up your system initially. But then reinstalls, and (some of) the maintenance, become easier.

          • Octorine@midwest.social
            link
            fedilink
            English
            arrow-up
            3
            ·
            1 year ago

            The way nix deals with packages is very different from most distros. If you install a newer version of a package, the older version just gets hidden, not removed. This makes it very easy to rollback or recover from errors, but it does mean you tend to use more space.

          • Atemu@lemmy.ml
            link
            fedilink
            arrow-up
            2
            ·
            1 year ago

            In regular FHS distros, an upgrade to libxyz can be done without an update to its dependants a, b and c. The libxyz.so is updated in-place and newly run processes of a, b and c will use the new shared object code.

            In Nix’ model, changing a dependency in any way changes all of its dependants too. The package a that depends on libxyz 1.0.0 is treated as entirely different from the otherwise same package a that depends on libxyz 1.0.1 or libxyz 1.0.0 with a patch applied/new dependency/patch applied to the compiler/anything.

            Nix encodes everything that could in any way influence a package’s content into that package’s “version”. That’s the hash in every Nix store path (i.e. /nix/store/5jlfqjgr34crcljr8r93kwg2rk5psj9a-bash-interactive-5.2-p15/bin/bash). The version number in the end is just there to inform humans of a path’s contents; as far as Nix is concerned, it’s just an arbitrary name string.

            Therefore, any update to “core” dependencies requires a rebuild of all dependants. For very central core packages such as glibc, that means almost all packages in existence. Because those packages are “different” from the packages on your system without the update, you must download them all again and, because they have different hashes, they will be in separate paths in your Nix store.

            This is what allows Nix to have parallel “installation” of any version of any package and roll back your entire config to a previous state because your entire system is treated as a “package” with the same semantics as described above.

            Unless you have harsh data caps, extremely slow connections or are extremely tight on disk space, this isn’t much of a concern though.
            Additionally, you can always “garbage collect” old paths that are no longer referenced and Nix can deduplicate whole files that are 1:1 the same across the whole Nix store.

      • lily33@lemm.ee
        link
        fedilink
        arrow-up
        4
        ·
        1 year ago

        To clarify, I was referring specifically to its ability to specify the full system configuration in its config file - not overall. But I haven’t used blendos, and my impression is mostly from a quick look at their documentation. They have a snippet with sample configuration. There, they have a “Modules” section, but I couldn’t find what modules are available, what options they have, how to configure them if we want to do something more complex than the available options.

        Then containers are clearer: they have a list of installed apps, and then commands to bring them to the desired state (somewhat similar to a dockerfile). But even then, i imagine that if you have a more complex configuration, that’s going to get clunkier.

        • tanja@lemmy.blahaj.zoneOP
          link
          fedilink
          arrow-up
          1
          ·
          1 year ago

          Thanks, that makes sense.

          Do you think the use of OCI containers/images is a mistake/bad choice from blendOS?
          How is NixOS different?

          • lily33@lemm.ee
            link
            fedilink
            arrow-up
            3
            ·
            edit-2
            1 year ago

            Do you think the use of OCI containers/images is a mistake/bad choice from blendOS?

            No. It’s probably the best way to run packages from Arch, Debian. Ubuntu, Fedora, and others, all on the same system.

            How is NixOS different?

            NixOS simply doesn’t tackle that problem, so it doesn’t come with containers out of the box. If you want to run packages from other distros on NixOS, you’d probably need to manually configure the containers.

            I feel like you’re under the impression that the three distros, NixSO, blendos, and Vanilla OS, have similar goals. I don’t know about Vanilla OS, but the main similarity between the other two is that they’re both non-standard in some way.

            But they’re actually solving completely different problems: BlendOS wants to be a blend of different OSes, NixOS wants to have a reproducible, declarative configuration (declarative here means, you don’t list a bunch of steps to reach your system state, but instead declare what that state is).

    • iopq@lemmy.world
      link
      fedilink
      arrow-up
      1
      ·
      1 year ago

      You can steam-run any Linux executable, so for those cases it’s fine.

      All the major software is already in Nixpkgs, there’s just some holdouts still shipping .deb and .rpm files, though

  • zhenbo_endle@lemmy.ca
    link
    fedilink
    arrow-up
    15
    ·
    1 year ago

    While I’ve looked into Fedora Silverblue, that distro is limited to only install Flatpaks, which is fine for “apps”, but seems to be more of a problem with managing system- and CLI tools.

    No. Your understanding to Fedora Silverblue is wrong. I can just run rpm-ostree install package.name in Silverblue, like other Fedora spins. The small disadvantage is that I need to reboot to apply this update. (re-construct)

    but doesn’t that result in new A/B snapshots, or something like that?

    Well, you can call it snapshots, but there is no need to think about it. In most cases, the system points to the newest snapshot (deployment 0). If a rollback is needed, I can pin to the older deployments. When a major change is to be applied (Like bump Fedora version), I’d manually mark the current deployment as dont-auto-delete.

    Sure, but I’d like to have a more seamless experience, i.e. not having to open/start any “containers” or something like that.

    I never used toolbox in my Fedora Silverblue system. I feel that I can’t tell the difference between using Silverblue and the default Fedora spin

    • tanja@lemmy.blahaj.zoneOP
      link
      fedilink
      arrow-up
      4
      ·
      1 year ago

      Thank you; that was very insightful 😊

      Also: I think rpm-ostree only supports rpm-based packages, tho; right?

      Can I install .deb software too?
      And is there any kind of system-as-a-config-file kind of solution available like in NixOS or blendOS?

      • andruid@lemmy.ml
        link
        fedilink
        arrow-up
        4
        ·
        1 year ago

        For other systems I think distrobox and toolbox are kind the intended way to mess with them. For configuration as code ansible is a popular answer.

      • zhenbo_endle@lemmy.ca
        link
        fedilink
        English
        arrow-up
        0
        ·
        1 year ago

        Also: I think rpm-ostree only supports rpm-based packages, tho; right?

        Can I install .deb software too?

        I don’t think rpm-ostree could support .deb softwares, just like dnf/yum can’t support deb packages.

        Can you share your use case for trying to install a deb package in Fedora? I’m just curious.

        And is there any kind of system-as-a-config-file kind of solution available like in NixOS or blendOS?

        Good question. I only have a few computers, so I had never considered about it.

  • Guenther_Amanita@feddit.de
    link
    fedilink
    arrow-up
    13
    ·
    edit-2
    1 year ago

    NixOS

    • “The new Arch”
    • Very customizable and minimalist
    • Semi-Immutable
    • Huge community and very old
    • Very different than others
    • Config-based
    • Not very (new) user friendly, wouldn’t use it. Too complicated for me

    BlendOS

    • Doesn’t offer much new stuff for me, nothing they offer is substantial for me.
    • Small dev team

    VanillaOS

    • “The new Linux Mint”
    • Huge focus on usability and user friendliness
    • Apx is basically only a wrapper for distrobox
    • Small dev team (the same one that also develops Bottles)
    • Huge potential, but not quite there yet
    • Will recommend it to new users when it’s updated to 2.0

    Silverblue

    • My recommendation
    • Is one of the oldest immutables and very well thought out
    • Biggest dev and userbase
    • You can not only install Flatpaks, but also everything else with Distrobox and rpm-ostree
    • Best feature: you can easily rebase to it’s other spins or the custom ones from uBlue I just rebased this weekend from the SB to the Kinoite-Spin in just one command. I was able to “change distro” without resinstalling, and KDE was installed very cleanly without leftovers.
    • tanja@lemmy.blahaj.zoneOP
      link
      fedilink
      arrow-up
      3
      ·
      1 year ago

      Silverblue is sure not limited to only flatpaks.

      Oh 👀
      I didn’t know that; I knew you could modify the underlying system, but doesn’t that result in new A/B snapshots, or something like that?

      toolbox/distrobox

      Sure, but I’d like to have a more seamless experience, i.e. not having to open/start any “containers” or something like that.

      Also, can I “normally”/traditionally install software on NixOS, e.g. through Steam?

      • Pantherina@feddit.de
        link
        fedilink
        arrow-up
        5
        ·
        edit-2
        1 year ago

        Listen to the “Linux User Space” podcast, episode 404. They explain every immutability model af of now. Ubuntu Core is missing.

        Ubuntu is creating something new, looks really great but based on snaps, which are not bad packages but rely on a nonfree store that cant be replaced. So meh.

        • nottheengineer@feddit.de
          link
          fedilink
          arrow-up
          6
          arrow-down
          1
          ·
          1 year ago

          Not bad packages

          I’ve made the opposite experience. There were loads of snap-specific issues when I used ubuntu. So many that I now recommend not using ubuntu just because of snaps.

        • tanja@lemmy.blahaj.zoneOP
          link
          fedilink
          arrow-up
          4
          ·
          1 year ago

          Thanks for your suggestion, but I’ll never use snaps/snapcraft/snapd by choice;

          I do see the reasons for why developers/app maintainers may want to (universally) package themselves, but we’ve got Flatpak for that.

          Less loopback devices = better imho

          • Pantherina@feddit.de
            link
            fedilink
            arrow-up
            2
            ·
            1 year ago

            Agree partly. Maybe snaps are bad, dont know the details, but if system packages and even the kernel can be packaged, thats pretty nice

      • LinuxSBC@lemm.ee
        link
        fedilink
        arrow-up
        2
        ·
        1 year ago

        VanillaOS and BlendOS also use containers to install apps, just like Fedora Silverblue. In fact, it’s easier to install native packages on Silverblue than it is on VanillaOS. Just set your terminal to start a container by default.

      • 2xsaiko@discuss.tchncs.de
        link
        fedilink
        arrow-up
        2
        ·
        1 year ago

        Also, can I “normally”/traditionally install software on NixOS, e.g. through Steam?

        Depends on what you mean by traditionally. Steam works without needing any special setup by enabling it in your configuration, just programs.steam.enable = true. There’s also imperative package management with nix profile (don’t use nix-env -i which you will probably come across, it’s broken by design). Personally though I recommend sticking with the declarative configuration and nix-shell which temporarily brings packages in scope for the current shell only.

          • 2xsaiko@discuss.tchncs.de
            link
            fedilink
            arrow-up
            1
            ·
            1 year ago

            There’s two different ways of identifying a nix package: its attribute path in the package set, and the name it self-identifies as. Here’s an example where those differ, firefox-esr. Its attribute path is firefox-esr while the package name it reports is firefox.

            It’s very fast to find a package by its attribute path since that’s essentially one or more map lookups. In contrary, the package name isn’t unique (for example, firefox and firefox-esr both have a package name of “firefox” because they are built from the same package file just with different sources) and also doesn’t have an index, so to find a package with a matching name you have to search through the entire package set and evaluate every package to get its name and check if it matches.

            nix-env -i searches packages by their package name, which as a consequence makes it slow and also unreliable since you might not get the package you were looking for, but instead another with the same name. nix-env -iA somewhat fixes this by installing packages by their attribute path, but even if you use that you get the same issues with nix-env --upgrade since that always searches for packages to update by the installed packages’ names (it might even replace one package with a completely unrelated one which coincidentally has the same name!).

            The new nix profile however stores the attribute paths a package was installed from so doesn’t have any of these problems.

  • alt@lemmy.ml
    link
    fedilink
    arrow-up
    9
    ·
    edit-2
    1 year ago

    Lots of great answers here already so I will only address a couple of things that haven’t been mentioned:

    Regarding Fedora Silverblue:

    • Currently, Fedora Atomic Desktops are in a major shift to accept OCI container images for delivery of packages. This means that the built image becomes one compliant to OCI and that we boot into an OCI container as our system. As OCI images are relatively declarative (not to the extent that NixOS does (yet)), it becomes possible to have a set of config files (most importantly, the so-called Containerfile) in which your system is ‘declared’/‘configd’. In case you’re interested into how this looks/works, consider taking a look at uBlue’s startingpoint or if you’re more interested in the scope of configuration into Bazzite and/or Bluefin.
    • apx is available as a COPR on Fedora Atomic Desktops.
    • Nix can be installed on Fedora Atomic Desktops using Determinate Systems’ installer.

    Regarding Vanilla OS:

    • They’re also moving to a model that’s very close to where Fedora Atomic Desktops is heading towards. So, expect a similar way to config/‘declare’ your system.

    What are your thoughts on the three four distros mentioned above?

    It’s a question of polish if you’d ask me. With Fedora Atomic Desktops and NixOS being advantageous due to being more established and better funded. I wouldn’t write off Vanilla OS yet as they seem to know what they’re doing. Though, I wouldn’t keep my hopes up for blendOS as its main developer was unaware of which MAC was configured by default on blendOS (spoiler alert: none, at least at the time).

    Furthermore, NixOS is literally its own thing and unfortunately infamous for its steep learning curve. If you can afford to learn and conquer NixOS, then NixOS should be the recommendation; unless (like me) you seek SELinux on your systems.

    Between Fedora Atomic Desktops and Vanilla OS; Vanilla OS is still in its major rewrite/revamp. The alpha builds are there, but I wouldn’t recommend using those on production machines. Fedora Atomic Desktops, on the other hand, has been going strong for a while now and the uBlue-team has even succeeded in making the OCI-stuff accessible for the general (Linux) public. So if you want to switch now and NixOS is/seems too hard; then Fedora Atomic Desktops it is. On that note, I recommend to check out the uBlue project.

    Which ones are the most interesting, and for what reasons?

    Honestly, all of them are really interesting, but NixOS does the most unique stuff; with only Guix doing something similar within the Linux landscape. To give you a taste of some of the wild stuff found on NixOS; there’s the so-called Impermanence module which -to my knowledge- happens to be the closest thing to a usable stateless system we’ve got; period. Consider reading this excellent blog post in case you’re interested to know what this entails.

  • Pantherina@feddit.de
    link
    fedilink
    arrow-up
    7
    ·
    1 year ago

    You look at defaults and think this is linux.

    Look again at Fedora Silverblue /any other desktop variant. VanillaOSses apx is just a wrapper around distrobox, which is preinstalled on ublue even.

    Apx installs apps on containers just as it is possible on Fedora Atomic (the general name for all immutable desktops). You can also layer and remove apps to or from the base OS which is sometimes needed or nice for speed.

    On Fedora Atomic you have

    • flatpak
    • podman containers (toolbx, distrobox: like apx on VanillaOS but without the great tooling and GUI management, yet)
    • rootful containers for stuff interacting with systemd, needing USB access etc.
    • layering or removing packages / changing the OS to something like ublue to let other people do the work, especially for NVIDIA drivers
    • tanja@lemmy.blahaj.zoneOP
      link
      fedilink
      arrow-up
      2
      ·
      1 year ago

      You look at defaults and think this is linux.

      What do you mean by that?

      On the Fedora Atomic website, they write:

      Project Atomic is now sunset

      The Atomic Host platform is now replaced by CoreOS. Users of Atomic Host are encouraged to join the CoreOS community

      Do you think CoreOS is a good fit for a desktop?
      I always thought it’s more of a server distro.

      On a related note: Would you recommend Fedora Silverblue?

      • Pantherina@feddit.de
        link
        fedilink
        arrow-up
        4
        ·
        1 year ago

        Oh no. The rebrand is not done. There is no Atomic site yet, Atomic= Fedora Desktop with OSTree (Silverblue, Kinoite, Sericea, …)

        If you like GNOME, yes I recommend Silverblue a lot.

        Fedora has a very different system of the core distro. But with defaults I mean that they dont have apx by default but the same underneath.

        You could use a bash function for DNF for example, but in general it is

        distrobox-create Fedora39
        distrobox enter Fedora39
        sudo dnf install PACKAGE
        distrobox-export --app PACKAGE
        

        for GUI packages

    • tanja@lemmy.blahaj.zoneOP
      link
      fedilink
      arrow-up
      1
      ·
      1 year ago

      How do those compare to NixOS and blendOS in your opinion in terms of usability, flexibility and stability, considering an (at least mostly) tech-literate audience?

      Given I’m still on Manjaro, would you recommend I consider NixOS, Fedora Silverblue, or blendOS?

  • TheAnnoyingFruit@lemm.ee
    link
    fedilink
    arrow-up
    5
    ·
    1 year ago

    I would check out something like universal-blue.org. It is fedora silverblue but with fixes that make it more usable (like codecs by default). It also ships distrobox right out of the gate so you can use that for apps that aren’t in the fedora repos, copr , or flatpak. You also don’t have to layer packages if you install via distrobox so I think it ends up being pretty handy for stuff that you want that isn’t available as a flatpak. Finally there are many different images for all different desktop environments so you can switch between them just by using rpm-ostree rebase and the link to the different image.

    • tanja@lemmy.blahaj.zoneOP
      link
      fedilink
      arrow-up
      2
      ·
      edit-2
      1 year ago

      Daily driver;

      • Dev work (VS Code) 👩‍💻
      • Using Firefox 🔥🦊🛜
      • Playing games every now and then (mostly Steam & Proton) 🎮
      • Audacity9961@feddit.ch
        link
        fedilink
        arrow-up
        4
        ·
        edit-2
        1 year ago

        Is there something that attracts you to NixOS for that purpose?

        I’ve got Nix OS running on one of my computers, and honestly, haven’t found it to be worth it for those usecases.

        • tanja@lemmy.blahaj.zoneOP
          link
          fedilink
          arrow-up
          1
          ·
          1 year ago

          I’ve got Nix OS running on one of my computer

          That’s very interesting 👀
          Why did you choose NixOS?

          • Audacity9961@feddit.ch
            link
            fedilink
            arrow-up
            5
            ·
            edit-2
            1 year ago

            Mostly to learn about it’s unique selling points.

            I think it is very interesting in terms of the easy deployment of specific environments, and in terms of writing recipes for new packages.

            Having said that, outside of these two rather niche areas for home use, I think it is rather unintuitive and offers no real advantages over more established players that offer a more polished experience, like Fedora for workstation and gaming use.

      • iopq@lemmy.world
        link
        fedilink
        arrow-up
        2
        ·
        1 year ago

        Dev work is not specific enough. Pip is a nightmare because it just wanted to modify folders that were read only and you never know what it wants to do to your system. Your experience may vary depending on how much the language package manager assumes about your system. If you’re in a container, it will work perfectly, though

        Firefox just works, and I installed Steam from nixpkgs and it worked after enabling a few settings. Then I just enabled Proton on every game and it works okay, with a few weird bugs sometimes (although I blame Gnome for messing up alt tabbing sometimes)

  • corsicanguppy@lemmy.ca
    link
    fedilink
    arrow-up
    1
    arrow-down
    13
    ·
    1 year ago
    • NixOS built its own package manager. neet. Remind us why it’s better.
    • blend and vanilla both run debian packages, which has a reduced validity check.

    So none. Didn’t even have to look further, as they’re all dead to me.

    • iopq@lemmy.world
      link
      fedilink
      arrow-up
      6
      ·
      1 year ago

      Nix is better because you can use a lock file to fetch the exact revisions of each software. Even proprietary stuff is hashed so when you download it, it’s checked to be bit identical to the lock file hash before it’s installed

      This means your setup on another machine is the same as long as the lock file is the same.

      Also you can switch to an older revision, mix and match stable and unstable, keep your whole setup in a git repo. It’s basically everything you ever would want from a package manager (reproducible builds already done for the minimal version, soon coming to all 80,000 packages)