Maybe of interest to you, but FEUD did exactly this. It implements a successful plugin system using DLLS. https://github.com/genotrance/feud/
It's not super actively developed anymore, but the code might provide some good inspiration. Also the author is active here and on irc (he goes by @shashlick on irc). He might have some good tips.
All the code lives in src/plugin.nim. Plugins use src/pluginapi.nim and the plugin folder has many examples. Some stuff is in src/globals.nim that will need to get pulled out. src/sci.nim shows how to start the plugin system. It should be easy to extract and use it for some simple tests.
Feud is Windows only today but I have tested the plugin system on Linux and it works fine, should be cross platform.
Also, it is only functional and tested on --gc:boehm since it manages memory correctly across threads and DLLs. --gc:arc will do the same, per Araq, but it has not been tested.
If there is real interest, I am willing to pull out the plugin system from feud and make it an independent package that can be installed with nimble.
Thanks for the leads!
In my personal case, as of now I'm interested specifically in writing DLL/.so modules for Lua and LuaJIT, on Windows & Linux & Mac. Might also potentially be interested in writing DLL plugins for some other Windows apps (like Notepad++). If any support in this area could be installed via Nimble, I'm absolutely interested, though I guess what you're talking about is probably more about the "master app" part?