Another possible alternative would be to 'shim' the interface. It would be possible to have a userspace driver that translated from NanoVNA to (say) MiniVNA, assuming that they operated in some arbitrarily similar way. The NanoVNA seems to take basic setup commands to configure a sweep, and then read back a buffer of values to plot whatever curve is required. If other VNAs behaved similarly it would be possible to do this.
Another possibility might be to just start from scratch. There is a bit of basic code in Python, so I am going to look at this first I think,
/ Gerry