You can simply build your geometry by combining (a possibly large number) of the primitives we have implemented. Esprecially if you run a pure LB fluid without particles, there won't be a speed penalty, since the boundary flag field is only evaluated once upon initialization of the boundaries.
If that doesn't suffice, you will have to implement a new constraint (work along the lines of one of the simpler constraints, such as sphere or wall), and write respective lbboundary wrapper functions. The files are named constraint* and lbboundary*.