I also use include - for a project-wide 'prelude' which has pragmas and common imports in it - for platform-specific code (audio module includes either gba/audio or pc/audio) - for templating (using stdtmpl filter and include the source file into some proc to turn it into a usable template) - for config DSLs (write the config exactly how you want and include it into a place where the config commands actually mean something) - this works great with nimscript - for making user-defined types accessible through library code (the library becomes a framework that knows about the assets in the user's project)