This is kinda my experience. If there's an extension keeping track of schema and linting, it's alright.
If you're doing it by hand, well, good luck.
My personal favourite way to make configs is lua. But that's neither here nor there.
Yeah, I remember when I was trying to parse XML into some lua tables and it forever stumped me how to represent something like
<thing important_param=10 other_param="abracadabra"> stuff </thing>
You just have to have different ways to turn different tags into stuff in your program and that's a huge amount of overhead to think about when all I want is a hash map and maybe an array.
You can make it mutable really easy, too, if you need to for some reason. Most stuff you need is available off flathub, but some applications you may want have to be installed the old-fashioned way.