Nix is fully declarative (with flakes), supports complex logic, and is more powerful that chef and puppet. It is a bit more difficult to learn for those reasons as well.
YAML is a terrible foundation for a declarative config. You need a language designed for declarative config.
Some commenter above said that this space is too messy for a purely declarative language; someone else said Pulumi should be thought of as a macro language to generate a declarative spec.
Instead of bolting on a whole Python interpreter to work as a macro language to generate a theoretical declarative spec, why not instead just write a declarative spec in a sanely declarative language?
It's not that hard to learn Nix. Stop procrastinating, everyone, and go learn Nix :)
Given that it has none of the features that make Nix bearable, and (if my long memory serves) has repeatedly been busted for truck-sized security holes, and, on top of that, has a grammar that makes me long for that old gif of a hexadecimal keypad, because at least hexadecimal is clear, I'd say it failed, badly.