5 ms·
Very interesting writeup, as a long-time Nix user I've always been interested in trying guix but never gotten around to it. Great post overall. > The thing is,
by peterldowns 1y ago
Very interesting writeup, as a long-time Nix user I've always been interested in trying guix but never gotten around to it. Great post overall.
> The thing is, I'm not actually sure if Guix's better documentation helps smooth the onboarding in any way because you have to already know Scheme, which is a more complex language than Nix.
LMAO absolutely not. Nix-the-language is the worst programming language I've ever had the misfortune to interact with. I picked up Scheme in about 1 day during a class in college. It's night-and-day different.
- otabdeveloper4 1y ago> Nix-the-language is the worst programming language I've ever had the misfortune to interact with Nix-the-language is just a subset of Javascript with built-in laziness and a slightly different syntax. An absolute bog-standard and mainstream way of thinking about programs in 2025. That said, Nix-the-language also suffers from all the same birth defects that manifest themselves in frontend development.
- grep_name 1y ago> That said, Nix-the-language also suffers from all the same birth defects that manifest themselves in frontend development That must be it. The GP's comment really resonated with me, in that learning scheme felt like no task at all whereas I STILL feel uncomfortable with the nix programming language and ecosystem despite using nixOS exclusively on my personal laptop for two years and on my work machine for about half a year now. I've always fumbled over frontend / javascript development though, and avoid it as much as I can at work although I still end up working in it every year or so. Nix only won out for me because of the mac compatibility, without which I can't really use it at work
- 0x457 1y agoI think nix-the-language is pretty simple and easy to learn language. It's visually hard to parse and a lot of syntax decisions make you wonder, but it's not the worst. The problem is that you're very rarely exposed to it directly. You are always multiple layers of abstractions away from it. Most of these layers are completely undocumented.
- fake-name 1y agoI mean, that's a distinction without a difference. I've not written nix, but javascript is a ugly, terrible language. It would make sense that if nix derives from it (whyyyyyy) it would also be terrible.
- bspammer 1y agoI disagree with GP, it’s much more like Haskell than JavaScript. Function application is whitespace, functions can only have one argument, everything is an expression, let blocks are the way you define and scope variables. I see very little relation to JavaScript at all, to be honest.
- otabdeveloper4 1y agoYou've listed syntactic sugar, not anything about the actual language.
- bspammer 1y agoI don't see any sense where syntactic sugar is not part of the language. I don't really care about how it works behind the scenes, the syntax is the part that I touch as a programmer.
- yencabulator 1y agoYes, clearly every general-purpose language like Javascript has specialized the string type for the business domain of text-templating for bash scripts. For example: https://shealevy.com/blog/2018/08/05/understanding-nixs-string-context/ https://shealevy.com/blog/2018/08/05/understanding-nixs-stri...
- positron26 1y ago> Nix-the-language is the worst programming language I've ever had the misfortune to interact with. I feel the same. The multi-line strings and string interpolation are both really nice. Unfortunately a lot of the text being munged is bash and usually already ugly, so the result is double-ugly. The functional aspects are okay. However, as an expression language and being primarily used in a declarative way, it is frequent to have almost no idea what's going on in Nix. Reading the code and understanding the evaluation are extremely far apart. callPackage... It's something I thought would be cool in a language until I actually experienced the depth of disorientation it can cause. The remaining syntax has a lot of "but why?" where it just seems to do its own thing relative to other languages, which makes it harder to get into a rhythm. Some of the subject matter is the real culprit. The cross compiling sliding window thing... I've studied it several times. If I had to actually do something with it, straight to the LLM. Compilers have targets.
- jdudjxxjz 1y ago[flagged]
- sshine 1y ago> The remaining syntax has a lot of "but why?" where it just seems to do its own thing relative to other languages Like what? My list of Nix language nits is relatively small, would like to understand. One thing that seems under-developed is smart merging. There is // at language level, but then if you want datatype-specific merging, you use functions. That itself is just the power of functional programming. But as it is with untyped languages, you end up doing the same thing slightly different in several places, and a fractal of accidental complexity starts to appear.
- chriswarbo 1y ago> One thing that seems under-developed is smart merging. Maybe https://codeberg.org/amjoseph/infuse.nix https://codeberg.org/amjoseph/infuse.nix would be useful? (I find it intriguing, but haven't yet faced a use-case that seemed worth learning it)
- 1y ago
- xrd 1y agoI gotta admit, I stopped reading when I saw nix with scheme. If it was scheme plus nix and it was sorted, I might have continued.