this post was submitted on 15 Nov 2024
128 points (95.1% liked)
Linux
48315 readers
1373 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
- Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.
- No misinformation
- No NSFW content
- No hate speech, bigotry, etc
Related Communities
Community icon by Alpár-Etele Méder, licensed under CC BY 3.0
founded 5 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
All that follows is my personal opinion, but for ease of writing, I'm gonna present it as facts.
Once you have grasped the advantage that Nix offers, all the fundamentally different solutions just seem s o inferior. When I first tried NixOS on a decommissioned notebook, the concept immediately made sense. Granted, I didn't understand the language features very well – I mostly used it for static configuration with most stuff just written verbatim in
configuration.nix
, though I did use flakes very early on because of Lanzaboote. But just the fact that you had a central configuration in a single language that was able to cross-reference itself across different parts of the system absolutely blew me out of the water. I was a very happy and content Arch user, even proficient enough to run my own online repository that built from a clean chroot for AUR packages (if you use Arch with AUR packages on multiple systems, check out the awesome aurutils!), but after seeing the power of NixOS in action, I switched over all my machines as soon as I could - desktop, virtual servers (thanks nixos-anywhere!), main notebook and NAS.People often praise the BSDs for their integrated approach – NixOS manages to bring that approach to Linux. Apart from GUIX System that I never tried because Secure Boot was a requirement when I last looked at other distributions, none of them have tackled the problem that NixOS solves, and it's not even certain if they actually understand it. Conceptually, it plays on a whole different level. No more unrecoverable systems, even with broken kernels – just boot the previous configuration. Want to try changes without any commitment?
nixos-rebuild test
got you. Need an app quick?nix shell nixpkgs#app
it is.Plus the ecosystem is just fantastic. The aforementioned
nixos-anywhere
really helps with remote provisioning, usingdisko
to declaratively setup filesystems and mounts, you havedevenv
which is a really good solution for development environments, both regarding reproducibility and features, and many more that I can't mention here. There is nothing comparable, and the possibilities are unlike in any other ecosystem.It's not perfect for sure though, and documentation is sparse. The language concepts which allow one to "unlock" the most powerful features are different from what most people know.
I was lucky enough to have some downtime at work to get into the system a bit deeper (this was still for work though, just not my core skillset) by implementing a "framework" for our needs which forced me to not just copy and paste stuff, though I definitely did get inspired from other solutions, but to actually better understand the module system (I think?), thinking in attribute sets, writing your own actual modules, function library and so on. But in the end, it was definitely worth it, and I'm unaware of any other system that would allow what Nix and NixOS allowed me to build.
100%. Took me a good year to learn it well enough to be confident with what I was doing but I've now got it on everything with a single flake for all my hosts. I love that my user profile is configured the same everywhere. I can add a new tool or config or alias or whatever and it's the same on every computer.
I've now written a module to define all the services I self host and from that it generates both nginx config and DNS config on different hosts.
The main advantage for me though is I only have to solve problems once. Once it's there in the config I'm confident it's solved and I won't need to worry about it again. My previous server was 10 years old and there was stuff configured I'd long forgotten about how it worked or even why I did it.