I thought so at first too, but then I realized, no matter what distribution comes up in the future, learning a new distribution from the ground up is going to be hard no matter what. I dove head first into Nix and after a understanding the language, the OS and package manager was actually not that hard to understand. Now in after hand, I don't regret any of the the time I spent learning it.
I recently installed GUIX and just out of the gate I like the syntax much more than I ever did with Nix. The Nix syntax is just to random and hard to just guess what is going on if you're not sure what you're looking at. At least GUIX is more traditional looking Scheme type code.
I don't have time to play with it, but really hope that one day someone will write something that effectively "compiles to nix". As far as I can tell, that could be done using the Spack's python descriptions.
Dhall is a generic config language with some programming capabilities (but not turing complete) that can compile to json, yaml, and other formats, like in this instance nix.
It's not just the syntax (for me anyway). I just don't care about the how the derivation composes in practice, how it does overrides, how it integrates with flakes, how it applies the best-practices-of-the-day. I see the derivation as pure function as a cool theoretical exercise - but not something I want to actually write.
I want to actually declaratively say: here's an autotools package with some parameters I defined, give me the fancy overridable pure nix equivalent.
It sounds like https://github.com/jonringer/nix-template might be helpful to you. You can generate a nix expression to build an autotools package, and you can even pull the package info straight from a public repo. In the case of nix, most C-type things fall under stdenv, so that is the template you would want to use.
I barely write any C, but I've gotten very good at building C/C++ applications over the past couple of weeks by fixing broken derivations ahead of a release.
Is Dhall worth it? I see there are Go bindings for it, but I am not sure. Is it really worth it? What is the use-case for it where TOML would not suffice?
I keep thinking about using it, but I've never used it, so I wouldn't actually know..
But, the use case is to reduce redundancy in the config file. Maybe when you have lots of configs, each with slightly different fields but the rest otherwise the same. Toml isn't really suitable for programmatically generating config like that.
As a Nix user who has recently taken some time with Guix, I envy the Guix CLI but not the language. The Guix DSL seems totally fine, but imo the Nix language is very well suited to its problem domain.
For simple configuration, you can just leave 95% of the Nix language's power on the table and it feels really simple, like it's JSON or something.
You can work your way to to all the real features at your own pace.
I've been looking into Nix a lot lately (but have yet to take the leap - I'll probably start with devshell)
But a couple of projects have come up lately that piqued my interest wrt syntax and alteratives (Since I am not sure about Scheme anymore than Nix (as a langauge) :-)
Most of Nix's complexity is intrinsic and not incidental. It's just that it makes it explicit instead of implicit like every other OS & package manager (many of which don't actually solve a lot of important problems and instead rely on the user to keep things consistent and working.)
Yes, this is definitely a complex problem to solve. Imaging we are talking about providing a pipEnv style abstraction for all the programming languages, tools and operating systems.
I’m waiting for other distros to steal ideas from nix. Guix might be a good candidate but I didn’t manage to get quickly started with it looking the docs (although they looked useful if you wanted to sit down for a couple of hours).