I think I have a simple function in my .zshrc
file that updates flatpaks and runs dnf
or zypper
depending on what the system uses. This file is synced between machines as part of my dotfiles sync so I don’t have to install anything separate. The interface of most package managers is stable, so I didn’t have to touch the function.
This way I don’t have to deal with a package that’s on a different version in different software repositories (depending on distribution) or manually install and update it.
But that’s just me, I tend to keep it as simple as possible for maximum portability. I also avoid having too many abstraction layers.
The EFI will control the fans just fine.