There's no real reason for nix vs c++ other than that I'm more comfortable writing nix than manipulating the nix AST. I can change it to c++