# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "bento/ubuntu-16.04"

  config.vm.network "private_network", type: "dhcp"

  # Share an additional folder to the guest VM. The first argument is
  # the path on the host to the actual folder. The second argument is
  # the path on the guest to mount the folder. And the optional third
  # argument is a set of non-required options.
  config.vm.synced_folder "..", "/prjxray", type: "nfs"

  config.vm.provider "virtualbox" do |vb|
    vb.gui = true
  end

  # Base boxes are almost always server installs.  Install the desktop
  # components along with the C++ build tools.
  config.vm.provision "shell", inline: <<-SHELL
    apt-get update
    apt-get upgrade -y
    apt-get install -y ubuntu-desktop build-essential git cmake
  SHELL

  # Strangely, headless Vivado installs still require a running X server.
  # Turn on auto-login so the user's X server is active.
  config.vm.provision "shell", inline: <<-SHELL
    mkdir -p /etc/lightdm/
    echo "[Seat:*]" > /etc/lightdm/lightdm.conf
    echo "autologin-user=vagrant" >> /etc/lightdm/lightdm.conf
    systemctl start lightdm
  SHELL

  # Install Vivado.
  config.vm.provision "shell", inline: <<-SHELL
    if [ ! -d /vagrant/Vivado ]; then
      echo "No Vivado download found.  Skipping install."
    else
      echo "Installing Vivado.  This takes a while.  I suggest going for a walk."
      export DISPLAY=:0
      /vagrant/Vivado/xsetup --agree 3rdPartyEULA,WebTalkTerms,XilinxEULA --batch Install -e "Vivado HL WebPACK" --location "/opt/Xilinx"
      cp /vagrant/profile.d/* /etc/profile.d/
    fi
  SHELL

  # Turn off idle screen locking and screensaver password.
  config.vm.provision "shell" do |s|
    s.privileged = false
    s.inline = <<-SHELL
      export DISPLAY=:0
      dconf write /org/gnome/desktop/screensaver/idle-activation-enabled false
      dconf write /org/gnome/desktop/screensaver/lock-enabled false
    SHELL
  end

  config.vm.provision :reload
end
