Nim's GC is optional
https://github.com/vitreo12/omni
I don't know enough to comment but it may be useful to look at things in the wild. This project also heavily relies on calling in C to interface with environments and the SuperCollider scsynth.
But you can also think of Nim as macro-able higher level C and write it like that (but indeed you probably still need this minimal allocation support)