this post was submitted on 14 Feb 2024
104 points (97.3% liked)

Linux

48363 readers
1556 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

There is a similar question on the site which must not be named.

My question still has a little different spin:

It seems to me that one of the biggest selling points of Nix is basically infrastructure as code. (Of course being immutable etc. is nice by itself.)

I wonder now, how big the delta is for people like me: All my desktops/servers are based on Debian stable with heavy customization, but 100% automated via Ansible. It seems to me, that a lot of the vocal Nix user (fans) switched from a pet desktop and discover IaC via Nix, and that they are in the end raving about IaC (which Nix might or might not be a good vehicle for).

When I gave Silverblue a try, I totally loved it, but then to configure it for my needs, I basically would have needed to configure the host system, some containers and overlays to replicate my Debian setup, so for me it seemed like too much effort to arrive nearly at where I started. (And of course I can use distrobox/podman and have containerized environments on Debian w/o trouble.)

Am I missing something?

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 20 points 9 months ago* (last edited 9 months ago)

Everyone here have already explained their various stances very eloquently and convincingly - so I won't argue against that - so instead I'll just put forth my own 2c on why I use Silverblue instead of Nix/Ansible.

The main draw for me in using Silverblue (well, uBlue to be exact) is the no-cost, cloud-based, industry-standard, CI/CD and OCI workflow. Working with these standard technologies also helps me polish up my skills for work, as we've started to make use of containers and gitops workflows, so the skills that I'm gaining at personal level are easily translatable for work (and vice-versa).

With Nix (the declarative way), I'd have to learn the Nix language first and maintain the non-standard Nix config files and, tbh, I don't want to waste so much time on something that no one in the industry actually uses. Declarative Nix won't really help me grow professionally, and whilst I agree it has some very unique advantages and use-cases, it's completely overkill for my personal needs. In saying that, I'm happy with using Nix the imperative way though - I don't need to learn the Nix language, and it's great having access to a vast package repository and access my programs without having to go thru the limitations of containers.

As for Ansible, I'd have to have my own server (and pay for it, if it's in the cloud), and spend time maintaining it too. And although we use Ansible at work as well, so the skills I gain here won't be waste of time, it's unfortunately too inflexible/rigid for my personal needs - my personal systems are constantly evolving, whether it is in the common packages I use, or my choice of DE (my most recent fling is with Wayfire) etc. With an Ansible workflow, I'd be constantly editing yaml files instead of actually making the change I want to see. It's overkill for me, and a waste of time (IMO). You could argue that I'm already editing my configs on Github with uBlue, but it's nowhere as onerous as having to write playbooks for every single thing. And as I mentioned, I like to maintain some flexibility and manual control over my personal machines and Ansible will just get in the way of that.

With the uBlue workflow, I just maintain my own fork on Github with most of my customisations, + a separate repository for specific dotfiles and scripts that I don't want to be part of my image. Pull bot keeps my main uBlue repo in sync with upstream, and I only need to jump in if there's some merge conflicts that cannot be resolved automatically. At the end of it all, I get a working OCI image, with a global CDN and 90 days of image archives, allowing for flexible rollback options - all of this without incurring any costs or wasting too much time on my part. Plus I can easily switch between different DEs and OCI distros, with just a simple rebase - I could go from a Steam-Deck like gaming experience (Bazzite) to a productivity-oriented workstation (Bluefin), or play around with some fancy new opinionated environments like Hyprland and River (Wayblue) - all with just a simple rebase and a reboot, without needing to learn some niche language or waste time writing config files. How cool is that?