Yeah, you usually don't want to model your data with loosely-typed trees of arbitrary values. Chances are configuration data is very strongly typed. There's not many kinds of data you can provide if e.g. you need an API key or a file path. Those have to be ApiKeys and Paths.
The easiest way to automate all of this is to pick a serialization format (e.g., JSON, YAML, or TOML), #[derive(Serialize, Deserialize)] on your config struct, and load/dump it using Serde.