You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

2.0 KiB

Test nix-shell in vagrant VMs

Set up a vagrant guest VM, and test the dev environment inside the guest.

  • Only tested on nixos host with libvirt virtualization provider.
  • Assumes that the host has an SSH agent. The agent is used for SSH auth inside the guest.
  • Upon creation (vagrant up) a copy of this local repo is rsynced to the /hyperplonk directory in the guest. The tests are run against these files. To see changes made to the code on the host run vagrant reload to re-sync the source code from host to guest.

Available vagrant boxes

The following boxes are available:

  • ubuntu: ubuntu20.04 + nix
  • ubuntu_rustup: ubuntu20.04 + nix + rustup

More OSes/VMs can be added in the Vagrantfile.

Append name of box after vagrant command to apply to a single box only

vagrant up ubuntu_rustup
vagrant ssh ubuntu_rustup

Usage

Enable libvrtd on your host: ubuntu, nixos.

Make sure we are in the libvirtd group.

Install libvirt vagrant plugin (not needed on nixos):

vagrant plugin install vagrant-libvirt

Activate nix-shell in this directory (or ensure vagrant is installed):

nix-shell

Start vm:

vagrant up ubuntu

There is a password prompt to add the insecure vagrant key to the agent. One can supply an empty password once or cancel the prompt each time one runs vagrant ssh.

Run formatter, linter, tests inside a nix-shell environment inside the ubuntu guest:

vagrant ssh ubuntu -- -t /vagrant/test-nix-shell-guest

This runs the test-nix-shell-guest script in this directory inside the vagrant guest.

Clean up with

vagrant destroy ubuntu

Notes

  • After editing the Vagrantfile, vagrant reload will apply the changes.
  • When making substantial changes or changing names of vagrant boxes I usually have more luck with running vagrant destroy with the previous Vagrantfile and then vagrant up again with the new Vagrantfile.