I use EteSync to sync my contacts. It can do calendars also and has a self-hosted option. Personally I just use Proton for my calendar at the moment.
I haven't tested any desktop syncing with EteSync, but maybe it will work for you.
I use DavMail to proxy an Exchange account so I don't have to install Outlook on my phone.