In my case it's a fairly boring proxmox server. The KVM VM started as a bare bones debian install and then I added xorg and xfce4 and the tiger vnc server. I have a GUI on it for when I want to use it that way (in screen dimensions that are a 1:1 mapping of the native resolution of my laptop for full screen VNC session), or of course I also talk to it by regular SSH session, and screen or tmux. The VNC server listens on 127.0.0.1:5901 and then I use SSH port forwarding from my workstation machine to connect the macos tigervnc client.
For people who don't want to do it with proxmox you can also do the same with manual KVM command line tools (virsh, etc) with no GUI. Or as something like a Xen dom0 running the guest as a xen HVM or PVH guest. Lots of ways to do it.
If I need to move it I can shutdown the VM and take an image of its LVM logical volume storage device (by something as rudimentary as like dd into an xz file), move the file, then create a new identically sized logical volume and do the reverse using dd to write from the file into the LVM logical volume location on the destination.
Edit: It would also be possible to do this all in one machine by something as basic as running virtualbox on your laptop, make a disk image file, installing the VM in that, give it bridge mode access to the physical network adapter to get its own DHCP lease in your same LAN segment, and treat it as a logically separate computer. There's minor risks of theoretical hypervisor escapes from the VM on the same machine, but such things tend to get patched fairly quick.