If you are serious about using igraph from Nim (or another language), be aware that igraph has an interface generator which you could modify for this purpose: <https://github.com/igraph/stimulus/> It wasn't advertised for general use, but it's currently being used to generate most of igraph's R interface, and will be used for the upcoming major refactor of its Python interface (see <https://github.com/igraph/python-igraph-ctypes>). It uses the interface description in [this file](https://github.com/igraph/igraph/blob/master/interfaces/functions.yaml), which contains more semantic information than what a barebones C prototype can. This approach, along with wrappers for basic datatypes ([see C++ proof of concept](https://github.com/igraph/igraph-cpp)) should be able to take you quite far.
> you should simply be using `igraph_create` for this. That sounds right. `igraph_small()` is specifically a C language convenience function, mostly intended for easier testing of C code. * * * Note: I don't know much about Nim. I came across this thread by accident.