Building from source is always going to come with complications. That’s why most people don’t do it. A docker compose file that ‘just’ downloads the stable release from a repo and starts running is dramatically more simple than cross-referencing all your services to make sure there are no dependency conflicts.
There’s an added layer of complexity under the hood to simplify the common use case.
I bought a trmnl and it’s pricey but works pretty good. I’ve mostly been using a few out-of-the-box plugins for it.
There is a selfhosted/offline version of the server you can run for it, so it can be ‘offline’ in theory. I keep meaning to mess with it more but haven’t put the time aside.