There's a userspace frequency scaler (https://tildegit.org/solene/obsdfreqd) that increases my battery life to well beyond what I actually need. I easily get 6-8 hours on my Thinkpad X1 Nano (previous generation). This is not even close to the M series Macbook battery lifes, but works well enough for me.
I do not run heavyweight stuff though, but that's with WiFi, cwm/dwm, Emacs, compilers (go, cc) and Chrome. I've had a bit of trouble with Firefox performance, so having to use Chrome has been my biggest hurdle.