• 0 Posts
  • 143 Comments
Joined 5 months ago
cake
Cake day: June 23rd, 2024

help-circle

  • 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, using disko to declaratively setup filesystems and mounts, you have devenv 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.



  • It’s like every generation loses the ability to do something in computer technology that was just abstracted away somehow. I as a millennial have never soldered a PC mainboard (modding an Xbox doesn’t count), but I’d say that otherwise, my understanding is pretty good. And I think all of my friends understand the concepts of files.

    I recently asked someone about 10 years older if he knew what partitioning and formatting means in the context, and he knew, despite initially saying he has no clue about computers, to show someone 10 years younger (who didn’t know) that such knowledge was just basically required back in the day. And it’s not like these terms are obsolete, the concepts are still the same, even though we went from MBR to GPT and from FAT32 or whatever to better filesystems. It’s no different for phones, but not required and even hidden.

    I’d say generally, the technology userbase broadened while average knowledge in the group declined, however I’m not sure whether the absolute numbers of people with a certain knowledge level actually went down.














  • I haven’t encountered systemd bugs in NixOS yet. Doesn’t mean they don’t exist - but I can’t confirm the issue.

    I run everything on NixOS nowadays and I do think that all of this makes sense, whether the implementation is the best I can’t judge.

    Just wanted to make sure my statement wasn’t a criticism on NixOS, the maintainers do a great job. It’s rather taking a jab at the “boring” statement.

    Nowadays if I want declarative configuration, I just cram everything into docker containers and write a huge docker-compose.yml for everything that I want to run.

    Docker compose is imperative though ;) (if that actually matters is up for debate) - fun fact nix allows you to build containers very easily.

    I love how you can set up SSL certificates for nginx with autorenewal just by switching it on in configuration.nix.

    How well this all goes together is really one of the strongest points of nix and NixOS. Though just for manageability, I personally wouldn’t put this into configuration.nix, but rather into a file dedicated to the respective service.