NovaError doesn't implement std::error::Error.
This (and the orphan rules) makes the job of consuming libraries, which may in turn wrap this error into their own error type, harder. See also (C-COMMON_TRAITS).
While it's certainly possible to implement this trait by hand, some libraries like thiserror will facilitate implementing it.