yeah, i don't get too worked up about "how" config values enter the application as long as i can easily see "where" they are initialized/validated.
an immutable config object/class created on startup that reads files/env vars/whatever and has appropriate assertions to ensure good values were used and crashes the app for missing/bad values usually keeps things sane.
an app where each subcomponent has its own config that it gets in its own way usually leads to confusion and delay