This is an automated archive made by the Lemmit Bot.

The original was posted on /r/nixos by /u/mastarija on 2024-09-01 11:49:27+00:00.


I absolutely love the idea behind Nix, and am 100% on board with that. However, the implementation of that idea is absolutely lacking.

Instead of powering through and just layering more and more utilities and complexity on top of that fundamentally lacking base, I argue that we should first fix / completely replace Nix with a decent strongly typed programming language.

Besides having (to some extent) self documenting code, and having better auto-completion, benefits of a strongly typed language should be obvious to anyone who has worked on even a moderately complex project, especially when it comes to maintenance and ease of refactoring.

We need to recognize that today most of the shittiness of software development comes from us layering shitty abstraction on top of a shitty abstraction.

Since Nix is really yet another layer on top of many more shitty layers of abstraction we should at least try and make it a truly good layer, because unlike many others, it’s a truly useful one that abstracts building and packaging of software in a great way.

The way it’s currently going, I fear we’ll end up like JavaScript where people have slapped a type system (TypeScript) on fundamentally flawed base simply because it got so wide spread and changing to something better is too much of an inconvenience.

People are already working on a type system to slap on top of nix, and there are languages like Dhall (which also has bad ergonomics for anything complex) so I can already see the future where we have to have e.g. Dhall to Nix part of the pipeline, and then also somehow interact with untyped part of the Nix ecosystem, mainly the pre-existing package + the proliferation various little tools that solve some of the annoyances.

Anyway. Sorry for the rant, but IMO the project will implode eventually due to the complexity, and I think that the “DEV” world is slowly getting fed up with all the layers of abstraction we are constantly adding.

Nix could replace a lot of tools that we are currently using during the development and ultimately lower the “complexity” of the development process, and remove a lot of “layers” of crap (especially in the JS dev world which is insane at the moment), however that can happen only if Nix language is properly fixed and the whole “official” ecosystem updated to use the new Nix incarnation.