But let me tell you something; if you are a power user, then relying on software to map keys kind of sucks. I couldn't dual boot windows and linux without everything getting screwed up. I also can't easily switch from mac to linux when I get off work. So I decided to start buying fully programmable keyboards and doing all of it at the firmware. I use QMK (https://github.com/qmk/qmk_firmware) and do very similar things to op. For instance, where my caps lock is, I have set to tap for escape, hold for function layer and where tab is, I have tap for tab and hold for control. There's a ton of other bindings I have, but these are the heavy hitters that have made me very happy.
I killed Karabiner Elements. I removed my software bindings in Widnows and deleted my Xmodmap file in Linux because I can finally just plug a keyboard into a computer and have it behave the same everywhere.
The only drawback is laptop keyboards. I really wish those were programmable (if anyone knows of a way, I would love to hear about it ;)). I have to start Karabiner once in a while when I don't have one of my keyboards handy, or if I'm floating around coffeeshops.