It's infuriating that we're still struggling with this after so many years.
Every time I learn a new format I want to scream "why can't you be normal?"
Take a look at https://typeconf.dev We wanted to define configs with types and avoid custom DSLs as much as possible. So we ended up with using Typespec.io for schema and plain Typescript for authoring configs. This should be as normal as possible!
Have you looked at CUE? I haven't looked back since discovering it. CUE is a proper language for configuration that two-way integrates with many other config and schema formats. All JSON is valid CUE too
https://cuelang.org | https://cuetorials.com