I did quite a bit of experimentation with home automation systems (HomeSeer, Home Assistant, Domoticz and so on) and decided that the best (at least for me) and the most control giving solution is NodeRED -
https://github.com/node-red/node-red.
You can create pretty complex flows with many already available nodes but if you want something custom - it's trivial either to add JS functions or to create your own node from scratch. Currently running it in a Docker container on an Intel NUC :)
The only downside is that it's not user friendly for non-tech people as you would still have to know few things such as what is HTTP server and how do devices talk to each other. It's not as easy as plugging in Google Home and just talking to it. But on the other hand, I only use my google home to:
1. Set timer when I am cooking
2. Send webhooks to my NodeRED to control things.
I don't have Nest currently, although I did use it several years ago, can't say it's very smart :)