summaryrefslogtreecommitdiff
path: root/launch/virt
blob: 9706106bb8e619342c09303f8641dfca0bc9fd16 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/bin/sh
virtdir=~/.local/share/virt

halfram() { awk '/^MemTotal/ { printf "%dM\n", $2/2/1024 }' /proc/meminfo; } # Needs to be either in M or G according to man page
halfthreads() { echo $(( $(nproc) / 2 )); }
startvm() {
	qemu-system-x86_64 \
		-enable-kvm \
		-cpu host \
		-m $(halfram) \
		-smp $(halfthreads) \
		-net nic \
		-display sdl,gl=on \
		-audiodev pa,id=pa1,server=/run/user/1000/pulse/native \
		-soundhw all \
		-boot menu=on \
		-drive file="$virtdir/$1.img" \
; }
		#-vga none \
		#-nographic \

vms="$(ls $virtdir)"

[ -n "$1" ] && vm="$1" || vm=$(echo "$vms" | sed 's/\.img//' | dmenu -p "Choose Virtual Machine Image or Enter Name for New Virtual Machine")

if echo "$vms" | grep "^$vm.img$" >/dev/null; then
	startvm "$vm"
else
	qemu-img create -f qcow2 "$virtdir/$vm.img" $(echo -n "4G\n8G\n16G\n32G" | dmenu -p "Choose Size of Virtual Machine \"$vm\"")
fi