Remix.run Logo
MarsIronPI 4 days ago

I may be the odd one out here, but I actually prefer Nix (the language) to the Guile libraries and DSLs I've seen in Guix. And it's not that I hate Lisps; my favorite language is Common Lisp. But IMO the Guix libs/DSLs are more awkward to use for declaring a system than Nix. I think it's because Nix's module system is more intuitive for me, or that I find it more elegant. Maybe if Guix were designed more along those lines.

Also flakes: a declarative distro without a flakes equivalent makes little sense to me.

Pay08 4 days ago | parent [-]

Mostly, the DSL in Guix has the syntax of (field value), I don't really see the problem with them. There are some more complex DSLs relating to service/package modification but those tend to take imperative code blocks. IMO the most difficult it gets are g-expressions, which are quasiquoting for the Guix daemon.

MarsIronPI 3 days ago | parent [-]

Eh, I think it's that with Nixlang one can write

  foo.bar = true;
as a shorthand for

  foo = { bar = true; };
which makes deeply-nested options much easier to write out. In general Nix looks a lot more like a config file to me.
Pay08 3 days ago | parent [-]

I've never seen more than one level of nesting in a piece of Guix code, but that comes with the caveat that Guix is quite happy to extract fields that would perhaps be nested with other languages into their own top-level fields, like the build-system and arguments fields being separate in package definitions.