Guix use Scheme/Guile. It's way saner that the Nix custom language. The biggest pro/cons is that they are flexible dynamic languages. So when you define your deployment, you need to code very defensively because no type system will support you and find mistakes.
What might throw people off is that it is functional (which applies to Scheme/Guile as well).
I think the biggest problem of Nix is that the area it covers is so vast and because of that it is suffering from not having enough people working on it, which also affects the quality of the documentation. I don't know where Guix is in this area.
Regarding the language being dynamic, I recently found that there's work on making a typed language: https://github.com/tweag/nickel
Perhaps it can solve this problem.