I don't know if you'd consider it "slick" or not, but CPAN.pm does something like this.
in reply to Config files in CPAN modules?
It installs a basic set of config data in CPAN/Config.pm, which can be overridden by data stored by the user in .cpan (which CPAN.pm silently creates and manages).
Whether this is sufficiently cross-platform enough for you I don't know, but it's certainly an alternative.
I'd be tempted to suggest Config::Std for config files, except for the fact that it doesn't handle a dynamic choice of config file well (you can always eval a 'use', though).