What nm_uuid_generate_from_string() is pretty straight forward. What nm_crypto_md5_hash() does, is not.
Just directly use GChecksum, it seems to be clearer.
Also, it seems sometimes the compiler is really adamant to warn about uninitialized variables. The workaround from commit cb9ca679 ('glib-aux: workaround maybe-uninitialized warning with LTO in nm_uuid_generate_from_string_str()') seems to not always work (and was ugly anyway). Try to solve that this way.
Note that we have plenty of unit tests for our UUID generation. This is covered by tests.