NetworkManager core is huge. We should try to split out parts that are independent.
Platform code is already mostly independent. But due to having it under "src/", there is no strict separation/layering which determines the parts that can work independently. So, while the code is mostly independent (in practice), that is not obvious from looking at the source tree. It thus still contributes to cognitive load.
Add a shared library "shared/nm-platform", which should have no dependencies on libnm-core or NetworkManager core.
In a first step, move the netlink code there. More should follow.