Use a `GHCUp` monad
The current code is written in a mix of styles; mtl stack, plain IO, interspersed with various effect systems. This makes the codebase challenging to work with and extend. We could replace these with a GHCUp monad (similar to the PandocMonad that most of the pandoc command-line application is written in).
If this sounds like a good direction, I can work on a merge request. Otherwise, feel free to close.