#!/run/current-system/profile/bin/bash set -xe # guix vm examples # usage # $ mk [vm#] - mak image # $ 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 bridge \ -net nic,model=virtio \ -enable-kvm \ -m 4096 \ -k en-us \ -display curses \ $TMPDIR/vm.img ;; *) echo ERROR: you typed: \"$CMD $*\" which has missing arguments or invalid arguments esac