[HN Gopher] Garn, a TypeScript-based Nix front end
       ___________________________________________________________________
        
       Garn, a TypeScript-based Nix front end
        
       Author : jkarni
       Score  : 39 points
       Date   : 2023-11-02 12:14 UTC (10 hours ago)
        
 (HTM) web link (garnix.io)
 (TXT) w3m dump (garnix.io)
        
       | norman784 wrote:
       | I'm interested to know if this finally will help me to enter nix
       | world, I tried so many times but failed.
        
         | soenkehahn wrote:
         | (One of the `garn` developers here.)
         | 
         | Yeah, that's definitely the intention. If you end up trying it
         | out, I'd love to hear how it went!
        
           | lagrange77 wrote:
           | Have you thought about a GUI layer on top of that, named
           | uberhaupt?
           | 
           | But maybe that would create too much overhead..
        
             | soenkehahn wrote:
             | lol, no we haven't. That is hilarious though! We might
             | steal that name for some future project.
        
       | chalsprhebaodu wrote:
       | I am thrilled to hear that this effort exists.
       | 
       | 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.
       | 
       | All that said, I could be convinced that the API choice isn't a
       | mistake.
       | 
       | At any rate, I'm excited to see where this project goes.
        
         | jkarni wrote:
         | It's to allow interpolation of packages and environments. But
         | in practice we don't use it that often, so we were thinking of
         | switching the main function to using just a second string
         | argument. (In other words, I agree.)
        
           | chalsprhebaodu wrote:
           | That seems reasonable! I can't really locate any examples of
           | that functionality. Could you show me what that would look
           | like?
        
             | soenkehahn wrote:
             | One working example is this:                 import * as
             | garn from "https://garn.io/ts/v0.0.14/mod.ts";       import
             | * as pkgs from "https://garn.io/ts/v0.0.14/nixpkgs.ts";
             | export const main: garn.Executable =
             | garn.shell`${pkgs.jq}/bin/jq --version`;
             | 
             | Put that in a 'garn.ts' file and run 'garn run main' and
             | you should see the version of 'jq' that you can get from
             | our 'nixpkgs' module.
             | 
             | But yeah, I completely agree with the sentiment here. This
             | is a rather cumbersome syntax to support a use-case that we
             | don't even have examples for. So clearly the normal usage
             | shouldn't force you to use template strings.
        
               | chalsprhebaodu wrote:
               | I can definitely the utility of it.
               | 
               | Perhaps a standalone function (like nixRaw) could work to
               | enable this.
        
       | aidenn0 wrote:
       | 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.
        
       | jflakjwoasdlf wrote:
       | I really like Guix & Nix, but I can see the appeal of this.
       | 
       | Language familiarity, first-class IDE experience, and TS's type
       | system.
        
       | rynite wrote:
       | This is pretty cool.
        
       ___________________________________________________________________
       (page generated 2023-11-02 23:02 UTC)