#!/run/current-system/profile/bin/bash
set -xe

# guix vm examples

# usage
# $ <scriptname> mk  [vm#] - mak image
# $ <scriptname> run [vm#] - run image

CMD=`basename "$0"`
VMNUM=${2:-""}
TMPDIR=$PWD/tmp/$CMD$VMNUM
mkdir -p $TMPDIR
cp $CMD $TMPDIR/$CMD

case $1 in
    mk)
	# save the vm config
	cp v1.scm $TMPDIR
	# save guix version 
	(stat $HOME/.config/guix/latest | grep File:) > $TMPDIR/guix-version
	# save guix config
	git -C ~/.config/guix/latest branch -av | grep '* master' >> $TMPDIR/guix-version
	# be sure the version of guix we have checked out is the one we are using
	make -C $HOME/.config/guix/latest -s > $TMPDIR/guix-make.log
	# make vm & copy image from of store
	cp -n $(guix system vm-image $TMPDIR/v1.scm --image-size=4GB) $TMPDIR/vm.img
	# make writeable
	chmod u+w $TMPDIR/vm.img
	;;

    run)
	# run the image
	# Note: '-k en-us' is a hack to get Mac XQuartz keys to "sort of work"
	qemu-system-x86_64 \
	    -net user \
	    -net nic,model=virtio \
	    -enable-kvm \
	    -m 4096 \
	    -k en-us \
	    $TMPDIR/vm.img
	;;

    *)

	echo ERROR: you typed: \"$CMD $*\" which has missing arguments or invalid arguments

esac
