Is Vagrant meant to be used as a complete coding environment?

I’m a C++ and .NET developer. In the future I would like to do some graphics programming with OpenGL (C++). I work with/in different working enviroments:

  • Home, PC, Windows 10, High Specs
  • Work, PC, Windows 11, Medium Specs
  • Travel, Macbook, Mac OS, Medium Specs

Since I am switching between a lot of these I share the source code using Github. The other problem is the building tools, IDEs and general work environment. I would like to either program fully on windows or on linux, but since not all of my computers have the same OS, that would be a problem. I thought about using Virtual Machines and code on them, then I could still use say the Macbooks normal OS (Mac OS) for daily stuff like e.g. taxes. The problem with virtual machines though is that I would still need to fully setup my entire Windows dev-environment for each (virtual) machine.

I found vagrant to provide the functionality to configure VMs in a single file, which sounds pretty fitting. I could simply install vagrant and virtualbox on any system and using my Vagrantfile I can fully develop on there. And there would be no “it works on the other machine” problems, since it’s the same setup/environment on all systems.

What I’m not quite sure yet is if vagrant is 100% the fitting tool for this. As far as I understand it’s more used like docker, where Code is written on the Host and then finally run (and/or compiled) on the guest vm. Vagrant also only allows for the VM specs to be configured, so any programs and configuration have to be added by scripts as far as I know. And I will need a lot of tools to be installed (Browser, Vistual Studio 2022/Code, GCC, CMake, MSVC, Terminal Config, etc. you get it). Configuration is also pretty important for me, e.g. program Themes etc.
So this leads to me thinking I would rather just create some sort of VirtualBox template.

Vagrant is primarily designed as a tool for creating and managing development environments, particularly for virtual machines. While Vagrant can be used to set up and provision Math Playground complete coding environments, it’s not typically used as the sole tool for coding.