Omniconf can use EDN files as a configuration source. The file must contain a map of options to their values. Values can be provided in their native format (e.g., numbers, keywords) or as strings, in which case the Omniconf parser will be called on them.
To handle dynamic filenames, a common pattern is to first call populate-from-cmd to extract a filename from CLI arguments, and then call populate-from-file. Note that populate-from-file will have priority over CLI arguments. If your CLI arguments are idempotent (i.e., they do not use special operations like ^:concat), you can call populate-from-cmd again after the file is loaded to restore CLI priority.
If your EDN files use library-specific reader macros, you can provide data-readers via the *data-readers* binding during the populate-from-file call.
(cfg/populate-from-cmd args) ;; args is a command-line arguments list
(when-let [conf (cfg/get :conf)]
(binding [cfg/*data-readers* {'ig/ref ig/ref 'ig/refset ig/refset}] ; e.g. reader macros used by integrant
(cfg/populate-from-file conf)))