diff --git a/build.py b/build.py index 387d8e9..ccf3d29 100644 --- a/build.py +++ b/build.py @@ -1,3 +1,44 @@ from subprocess import Popen, PIPE +import getpass +from pathlib import Path +import argparse -print("meow") +def vm_start(nographic=False): + home = Path.home() + user = getpass.getuser() + image_src = "var/lib/debian.qcow2" + vm_storage_location = f"/home/arvp/virtual_machines/{user}.qcow2" + image_dest = f"{home}/debian.qcow2" + + initialize = [ + "qemu-system-x86_64", + "-enable-kvm", + "-m", RAM, # ram allocation + "-nic", f'user,hostfwd=tcp::{PORT}-:22', #forward port 5555 in host to port 22 in vm + "-drive", "file=%s,media=disk,if=virtio" % image_dest, + ] + + if nographic: + initialize.append("-nographic") + initialize.append("-serial") + initialize.append("mon:stdio") + else: + initialize.append("-vga") + initialize.append("virtio") + initialize.append("-display") + initialize.append("sdl") + #copy the base image to a directory with everyones virtual machines. -n should not overwrite any existing vms. + #subprocess.run(["cp", "-n", image_src, vm_storage_location]) + Popen(initialize) + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description="ARVP Onboarding Virtual Machine Launcher! Don't use --nographic if you are in a tmux session. it might explode :3") + parser.add_argument( + "-nographic", + action="store_true", + help="Run QEMU in nographic mode (runs the VM embedded in your terminal instead of opening a new window)",) + parser.add_argument("-port", help="Port to forward to the VM for ssh", default=5555) + parser.add_argument("-ram", help="Amount of RAM to allocate to the VM", default="4G") + args = parser.parse_args() + vm_start(nographic=args.nographic)