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.
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.
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.
Also flakes: a declarative distro without a flakes equivalent makes little sense to me.