For many years I treated Windows or macOS as a hypervisor - if you love Linux but want the Mac hardware, instant sleep & wake, etc, putting a full screen VM in Parallels or similar is imo better than running Linux in terms of productivity, although it falls short on “freedom”.
I do the same thing, but there are two big caveats:
1. Nested virtualization doesn't work in most virtualization software, so if your workflow involves running stuff in VMs it is not going to work from within another VM. The exception is apparently now the beta version of UTM with the Apple Virtualization backend, but that's highly experimental.
2. Trackpad scrolling is emulated as discrete mouse wheel clicks, which is really annoying for anyone used to the smooth scrolling on macOS. So what I do is use macOS for most browsing and other non-technical stuff but do all my coding in the Linux VM.
$ swift repl
Welcome to Apple Swift version 6.0.2 (swiftlang-6.0.2.1.2 clang-1600.0.26.4).
Type :help for assistance.
1> import Virtualization
2> VZGenericPlatformConfiguration.isNestedVirtualizationSupported
$R0: Bool = false