One possible model to explore here is to have a Linux and macOS server running somewhere, and then have a 'thin client' to work with them remotely.
For e.g., use a Surface Pro along with VSCode+Tailscale to work on complex projects.
The only downside is the reliance on strong internet connection.
- In low-speed/latency network situations, we can resurrect one of those machines (say, a Macbook Pro hitherto acting as server) for client-side use.
- Servers
- Beelink running Linux
- Macbook Pro 16 running macOS (lid closed; sleep disabled; display turned off)
- Clients
- Macboook Air 13
- Extra/ backup machines
- Thinkpad P14s running x86 Windows + NixOS
- Useful when needing to run x86 Windows apps or testing Linux GUI apps (since Beelink is headless)
- Thinkpad P14s running x86 Windows + NixOS
Notes:
- Remote countries
- Latency when access web apps (eg: vira) is noticeable.
- So, when travelling abroad, carry the Macbook Pro as well for native (non-remote) development thus bypassing latency/ speed issues.
Use Syncthing to keep important files in sync. Also put them in Git repo since Syncthing is not always reliable.