I use the syntax of nix (and SML derived languages in general) as a reminder to myself that those who complain about the syntax of Lisp probably just have different taste than me, because there are people out there who prefer the syntax of nix to that of Lisp.
They really wrote the whole post without explaining the puns ... that shows incredible self control, because I find them to be pretty good.<p>"Garn" is German for Yarn, another package manager in the JS/TS ecosystem.<p>"Nix" (this is probably known by now) is a German/Dutch term for "nothing".<p>"Garnix" in combination would colloquially be "really nothing [at all]".
I am thrilled to hear that this effort exists.<p>What’s the rationale for the heavy use of tagged template literals in the API? From the outside, it seems like an esoteric choice that makes ergonomics slightly worse, less approachable, and less idiomatic. This seems to fly directly in the face of the goals of this project.<p>All that said, I could be convinced that the API choice isn’t a mistake.<p>At any rate, I’m excited to see where this project goes.
Great to see this. I've been interested in Nix for a long time, but have never been able to really commit to it for many of the reasons called out in the blog article. Garn seems like it could be a major improvement. Looking forward to trying it out.
Such an exciting project.<p>Nix truly is a game changer, but the UX is not getting better in any meaningful way. I do think it will be a fantastic foundation for an abstraction layer on top.<p>Note: for anyone else trying Nix but bouncing off of it (especially flakes), Home Manager is where I'd recommend starting.<p>It lets you declaratively manage all your packages, home files, shell configs etc from inside a single text file, using Nix derivations. Without having to deal with much Nix language or its shell interface
Some notes from a Nix fanboy:<p>> Currently go, npm, and haskell projects are supported.<p>Implicit here is that you're missing out on one of Nix' strengths—that being how Nix-lang is a lingua franca for every ecosystem with a presence in Nixpkgs. I've never written or even seen a line of Pascal, but it doesn't matter because of the 'package' abstraction. I can build and/or install a Pascal program the same as any other.<p>> With Typescript, you get the full power of programming — the ability to easily factor out variables, to connect and abstract functionality, to reuse code, to write tests.<p>Nix-lang also has these, it's just FP rather than imperative. (Except unit tests unless you include Hydra or something.)<p>> [Nix has tech debt, such as] the somewhat cumbersome and inconsistent CLI interface. The garn CLI is a fresh start.<p>Nix also has this in the form of the "new" CLI a.k.a. Flakes a.k.a. nix3.<p>On the whole, I can see this being useful to someone trying to convert their coworkers from NPM to Nix, but not all that impactful in the field of Nix UX improvements. Nickel and co. are where the good ideas are coming from IMO.
I hope this will lead to more projects leaving yaml and people automcompleting their way to perfect configuration. Although VSCode for TS and Python does generate cryptic messages for type errors.