So far, which one do you like more?
I never wrote a single line of Scheme before. At first, I did not like the weird syntax, and the confusing, overly-verbose Guix's config (gnome-desktop-configuration
, gnome-desktop-service-type
, gdm-service-type
, etc). But it kind of makes sense now, and I'm kind of used to it.
If I had to be forgiving, I would ignore the syntactical sugar and the other goodies that Nix provides in their Nix options - in my personal opinion, the language design would make it easier to add them, just that there's a need for more contributors. Guile was actually way easier to grasp (I still can't write a single line of Guile, by the way), and I was able to configure my system really fast.
The language is pretty good. I did not like the JSON-like weird syntax provided by Nix, it never felt functional. But I hate the bracket stacking in Scheme, I would say - maybe I could bring them to the next line, but it would break the formatting convention that other Schemers prefer - I guess I'm more of a OCaml person, so that could be the reason.
What I also like about Guix is the reason I detest Nix - contamination of script files. In Nix, to generate automated expression files in bulk, you have to feed a text file, and then run the script to update that file, which is a pretty unfashionable way to automate the boring part. It also steers away from the uniformity of code-base language, and adds more complexity for maintainers - Guix does not suffer from that, as Guix can be a config language, as well as scripting language.
Guix is also really performant - Nix would struggle on the same device I'm on right now. The download speed is terrible for Guix, but most probably it could be because I'm on a 4GB RAM + 8GB swap laptop with a Core i3 6006U mobile processor, and a old, crappy WiFi adapter. Honestly, I would appreciate if there was an Asian substitute server.
Honestly, I am still not that satisfied with Guix and Nix, as I feel that they're not close to the ideal system I have in my mind. What I mean is that I don't accept some of the choices with respect to what I think constitutes as a functional system. I also think that Guile misses out on fancy stuff that modern languages can provide.
Really appreciate the breakdown, very insightful. So in summary if guix was a tad faster it would be closer to the ideal system and also some modernization of the toolset would also help with the improvement of the guix experience.
Personally tried guix, and its very interesting but I'm not yet ready for it. It does require to dive a lot deeper into the documentation since it provides less straightforward problem solving like arch/gentoo. But regardless of that it seems like a worthy challenge to take in the future. ๐
I feel that they're not close to the ideal system I have in my mind.
Check out something stable + nix. Just home-manager with a list of files to install, keep it simple. I'm currently running it with MX. I'd prefer guix, but nix is a lot better package wise. Guixos gave me too many headaches, for not enough benefits.
To truly appreciate lisp parens, use something like lispy or paredit. The uniformity of the language allows for some really cool editor utilities.
Just adding links for other curios lemmings..
paredit https://paredit.org/ lispy https://github.com/abo-abo/lispy
ngl sounds more like a headache to begin with
Guix
Guix is an advanced distribution of the GNU operating system developed by the GNU Project