Hacker Read top | best | new | newcomments | leaders | about | bookmarklet login

NT isn't terrible with some very well designed systems, that is quite true. It is however good for a completely different list of reasons that *nix is. Trying to conflate the two is a pottering's errand.


sort by: page size:

Well... note that this is a critique but the conclusion encourages using Nix anyway. The whole "Nix sucks but everything else sucks worse" idea.

NT was able to use a simpler (maybe not simple, but simpler) design because it was written from scratch once we knew that caches and buffers were desirable. So it's got a unification of swap and cache that would be difficult to retrofit onto *nix.

It's both.

Nix is fantastic. I'm writing this comment on a laptop that has only ever run NixOS.

Nix is also painful to learn. It's painful to use.

That doesn't mean it's impossible, or even that it isn't worth it.

It means that Nix has room to improve.


I don't think Nix is for me then. Thank you for the explanation though, I appreciate it.

Good points well made. I hope I'll be able to prioritise trying Nix at some point.

It's a different approach. That's basically an implementation using ostree. Nix is way different than that. Neither is better in my opinion, but I use Nix happily.

I never implied nix needed anything quite the opposite, it was somehow from-scratch thinking, on the other systems were more inspired by new linux features to solve a slightly similar issue.

It looks like distri have very different design goals from Nix with an emphasis on speed rather than rock solid reproducibility. Although some of the key details do seem to be inspired by Nix, that's no reason to discourage experimentation by calling it a travesty.

Well, Nix mostly solves that issue so well due to a continuous massive offering of blood and sweat though, let's not kid ourselves. It's a significant amount of work to package arbitrary software because arbitrary software does weird and bizarre things.

But IMO the fundamental principles underlying the design are sound and granular compared to most of the alternatives, though, that's for sure.


I use Nix every day. I love it, but I'd be lying if I claimed it things less complex. I don't think that is very controversial. To build software using Nix you still need to understand how that software builds without Nix plus you need to know some amount of Nix. If the abstraction was airtight, then I'd agree, but currently, it is a very leaky abstraction. But that doesn't mean it's bad, just a trade-off to consider.

Yeah absolutely

Don't get me wrong, Nix can and should be better in many respects, but:

> Second, Nix surfaces all the complexity involved in building software and forces you to deal with it.

Yes, and If you can't deal with the simple functional language Nix happens to come with, you will never be able to deal all that surfaced complexity.

The latter is 10x worse more challenging.

So in some sense the language is a decent filter for people who won't like the inevitable rest anyways.


I’m not sure this is a good comparison. Nix competes with a ton of other os, most of whom are established. If you had only nix, which most people agree is generally an excellent Unix distribution if a bit opaque, you would have an excellent Unix distribution that wouldn’t be opaque any more because everyone knows how to use it. The lack of choice in transit system labeling allows you to choose something that has a higher initial cognitive load but has a lower amortized load and/or provides superior information etc simply because people have no choice but climb the learning curve. And once it’s become part of a regional culture it ceases to have a learning curve at all and is simply superior to the alternatives (like nix)

For me, nix the language itself is not that bad. It's all the magic happening in nixpkgs and the tight coupling there with the user interface (configuration.nix, shell.nix, etc.).

In NixOS/nix, you are essentially extending the nixpkgs source code with your own configuration to build a system, which requires good familiarity with the source. This would be like having to write C code to install packages on another OS. It's a questionable design choice but it does offer a lot of power.


very true.

But with Nix!...Now you have two problems.


I've had the displeasure of being forced to use nix and to me it seems like an overengineered piece of garbage. I don't see why anyone should use this vs competitors

I agree actually, you describe the issues I've had with nix quite head on. I've not ran into such issues every single time i try it, but I have hit upon a good deal of issues of the kind you describe. Nix is by no means perfect, and if I was smarter I'd try to remake it with a stronger type system, but the basic premise is useful enough on it's own to warrant usage IMO

As a huge Nix fan, I think it's perfectly acceptable to say non-linux package management is an abomination, linux package management is a mess, and nix is not (yet :)) ideal.

Engineers shouldn't assume something is done well because nobody is doing any better. Some things suck and there's nothing to blame but other priorities or sheer laziness.


I'd be more exited if it used Nix

Yeah, problem with nix is that it's different. The nix language is a lazy-functional DSL, which takes a bit of effort to learn.

The thing is, "better" does imply "different." The syntax is weird and difficult, but it's the linchpin of the whole system. It's much, much better than your typical packaging system and worth the effort to learn it.

next

Legal | privacy