this post was submitted on 12 Jul 2023
0 points (NaN% liked)

Linux

48009 readers
832 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
 

Hi all,

I've been using NixOS for a while now (About a month now) and I've been loving it, but I've had some thoughts lately.

I understand that Nix(OS)'s claim to fame is the fact that packages are reproducible. All dependencies are versioned and all packages are rollback-able (although not sandboxed). With proper maintenance (nix-collect-garbage mostly), the problem with space is mostly mitigated.

But what if a package's dependencies are out of date? These just stay out of date with their possible security problems as well. Not just that but it's (nearly) impossible to actually do your own manual imperative editing of packages to solve a quick problem since everything is declarative.

Not just this, but Nix uses mostly its own configuration methodology, so isn't this a maintenance nightmare as config files change and options are added/removed? Home manager is a prime example of this potential problem.

Plus more technologies being introduced on top of it to solve problems that seem already solved? (Flakes mostly come to mind).

I have come to the realiziation that, unlike a traditional distro like Arch/Alpine which I used previously, if maintenance dies I cannot feasibly maintain it myself, since it's mostly "magic". The upkeep of all the configurations plus all the dependency packages, and making sure each package compiles and matches the build configuration is a nightmare. I can barely do it with my own personal projects.

Anyways that's kinda it just expressing thoughts about it. I do love Nix(OS) and plan to continue using it. It's amazing, and its capabilities are matched by few to none, and from a user perspective it is an extremely seamless and simple OS. It's mostly from a maintainer perspective that I had.

top 6 comments
sorted by: hot top controversial new old
[–] Laser@feddit.de 0 points 1 year ago* (last edited 1 year ago)

I haven't done this yet because I didn't need it, but I think you have the option to install newer packages by creating a nixpkgs overlay. If the build process didn't change between versions, it should be pretty straightforward. See https://nixos.wiki/wiki/Overlays, section "Overriding a version" for an example. Better yet create an issue on the nixpkgs bugtracker, or even better file a pull request for the updated package.

Edit: you could even define a new updated package just for the package that depends on it and then pass that new package as a normal override. No need to update the package systemwide.

[–] theshatterstone54@feddit.uk 0 points 1 year ago (1 children)

The way NixOS is, the initial setup of all the different things you would want is incredibly time consuming and it has a very very steep learning curve. It was incredibly difficult for me to set everything up. I tried to make it work and then ran away 4 times now, each time starting from the configuration I've had so far, and building up on it. I still haven't been able to perfect my configuration, and I've been on NixOS (this time) since mid-June. I haven't been working on it actively, but I have done some work on it. NixOS is just too complex and too much for me to wrap my head around. Personally, I'm leaving it for something else, I'm thinking of Void, and I might go back to Arch for a while, I don't know. Fedora seemed promising, but after the recent telemetry stuff, I crossed it off my list. Tumbleweed seems alright? I'll see. But I totally get it.

I too think that NixOS is amazing. It is really unique (Guix is similar but not quite) yet it is very difficult to learn and maintain properly.

[–] Wyrryel@pawb.social 0 points 1 year ago (1 children)

The main problem with NixOS right now is, in my opinion, the scattered documentation. You often can't understand a topic without cross-referencing the manual, nixos wiki, nixos search (and nixpkgs and some scattered personal blogs if you're really unlucky). But if you stick around and adapt to this it's very easy to do stuff that takes a lot of effort on other distros with a few lines in your config.

[–] maiskanzler@feddit.de 0 points 1 year ago (1 children)

While we're on the topic: What's a great resource to learn about flakes? I can't seem to find a great answer that also shows why they are better and when.

[–] Wyrryel@pawb.social 0 points 1 year ago (1 children)

Hey, sorry for the late reply. I found the blog by xiaoso quite good, and this one also isn't too bad. But I never found one true source which explained it satisfactorily to me. It's probably best if you just browse through other people's configuration and piece it all together from that. From what I understood, flakes have 3 main uses:

  1. They replace nix channels. If you want to switch between stable and unstable it's pretty easy to do through flakes. Also, if you need any modules (like home manager or agenix, for encrypting secrets) you can simply import it as an import for your flake.
  2. You can "modularize" your configuration. You can describe multiple systems in a single flake so you can have your desktop and laptop be built from the same flake, but with different packages installed. This is the part that I use most and honestly find most useful.
  3. You can quickly have a development environemnt through flakes. You could use a flake per project, have all your dependencies as inputs in your dev flakes and never clutter your system with various dev tools

Nixos is riddled with stuff that you just "have to know" which can be quite frustrating. The lon ger you stick with it, the easier it gets though.

[–] maiskanzler@feddit.de 0 points 1 year ago

Thank you, that'll definitely help! Looks like I have some more stuff to dig into :)