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

Vagrant.configure(2) do |config|

  config.vm.synced_folder "../", "/grr"

  config.vm.provider "virtualbox" do |vb|
    vb.memory = "2048"
    vb.cpus = "2"
  end

  config.vm.define "centos_5.11_32" do |box|
    box.vm.box = "mrgcastle/centos_5.11_32"
    box.vm.provision "shell" do |s|
      s.path = "install_linux.sh"
      s.args = ["CentOS"]
    end
    config.vm.box_download_checksum_type = "sha256"
    config.vm.box_download_checksum = "f142605ff94da152af13b5f5c34868da0f841cf3ab65e89943cc7a650fc00829"
  end

  config.vm.define "centos_5.11_64" do |box|
    box.vm.box = "mrgcastle/centos_5.11_64"
    box.vm.provision "shell" do |s|
      s.path = "install_linux.sh"
      s.args = ["CentOS"]
    end
    config.vm.box_download_checksum_type = "sha256"
    config.vm.box_download_checksum = "d367c306dee30678e512f1d5e8c0717497a60fea846d024b53641318c304af19"
  end

  config.vm.define "ubuntu_lucid32" do |box|
    box.vm.box = "mrgcastle/ubuntu-lucid32"
    box.vm.provision "shell" do |s|
      s.path = "install_linux.sh"
      s.args = ["Ubuntu"]
    end
    config.vm.box_download_checksum_type = "sha256"
    config.vm.box_download_checksum = "15a36cfe264f3eb58bb9c540d9de5a5a945b8c5162d6fd66b59925ed0a832e86"
  end

  config.vm.define "ubuntu_lucid64" do |box|
    box.vm.box = "mrgcastle/ubuntu-lucid64"
    box.vm.provision "shell" do |s|
      s.path = "install_linux.sh"
      s.args = ["Ubuntu"]
    end
    config.vm.box_download_checksum_type = "sha256"
    config.vm.box_download_checksum = "f7d6b78fa492fe964f5ba89702f890b309d97fd0a23aa717f6e138752d2e7a69"
  end

  config.vm.define "ubuntu_precise32" do |box|
    box.vm.box = "ubuntu/precise32"
    box.vm.provision "shell" do |s|
      s.path = "install_linux.sh"
      s.args = ["Ubuntu"]
    end
  end

  config.vm.define "ubuntu_precise64" do |box|
    box.vm.box = "ubuntu/precise64"
    box.vm.provision "shell" do |s|
      s.path = "install_linux.sh"
      s.args = ["Ubuntu"]
    end
  end

  config.vm.define "ubuntu_trusty64" do |box|
    box.vm.box = "ubuntu/trusty64"
    box.vm.provision "shell" do |s|
      s.path = "../scripts/install_script_ubuntu.sh"
      s.args = ["-dy"]
    end
  end

  # OS X licensing doesn't allow distribution of VMs, you'll need to build your
  # own base VM, see:
  # https://github.com/google/grr-doc/blob/master/osxclient.adoc
  #
  # "vagrant up" is broken for this box because the provider specified here
  # isn't respected:
  # https://github.com/mitchellh/vagrant/issues/4654
  #
  # workaround: "vagrant up --provider vmware_fusion OS_X_10.8.5"
  config.vm.define "OS_X_10.8.5" do |box|
    box.vm.box = "OS_X_10.8.5"
    box.vm.provider "vmware_fusion" do |v|
      v.vmx["memsize"] = "4096"
      v.vmx["numvcpus"] = "2"
    end
    box.vm.provision "shell" do |s|
      s.path = "install_darwin.sh"
    end
  end

  # Vanilla boxes useful for testing package installs
  config.vm.define "centos_5.11_32_vanilla" do |box|
    box.vm.box = "mrgcastle/centos_5.11_32"
    config.vm.box_download_checksum_type = "sha256"
    config.vm.box_download_checksum = "15a36cfe264f3eb58bb9c540d9de5a5a945b8c5162d6fd66b59925ed0a832e86"
  end

  config.vm.define "centos_5.11_64_vanilla" do |box|
    box.vm.box = "mrgcastle/centos_5.11_64"
    config.vm.box_download_checksum_type = "sha256"
    config.vm.box_download_checksum = "d367c306dee30678e512f1d5e8c0717497a60fea846d024b53641318c304af19"
  end

  config.vm.define "centos_7_vanilla" do |box|
    box.vm.box = "centos/7"
  end

  config.vm.define "debian_jessie64_vanilla" do |box|
    box.vm.box = "debian/jessie64"
  end

  config.vm.define "ubuntu_lucid64_vanilla" do |box|
    box.vm.box = "mrgcastle/ubuntu-lucid64"
    config.vm.box_download_checksum_type = "sha256"
    config.vm.box_download_checksum = "f7d6b78fa492fe964f5ba89702f890b309d97fd0a23aa717f6e138752d2e7a69"
  end

  config.vm.define "ubuntu_precise64_vanilla" do |box|
    box.vm.box = "ubuntu/precise64"
  end

  config.vm.define "ubuntu_trusty32_vanilla" do |box|
    box.vm.box = "ubuntu/trusty32"
  end

  config.vm.define "ubuntu_trusty64_vanilla" do |box|
    box.vm.box = "ubuntu/trusty64"
  end

  config.vm.define "ubuntu_wily64_vanilla" do |box|
    box.vm.box = "ubuntu/wily64"
  end

  config.vm.define "ubuntu_xenial64_vanilla" do |box|
    box.vm.box = "ubuntu/xenial64"
  end

  # This is the bare windows VM you get from packer. Just here for testing 32bit
  # build, we don't build with this.
  config.vm.define "windows_7_32_vanilla" do |box|
    box.vm.box = "windows_7_32_vanilla"
    box.vm.guest = :windows
    # Random keypair generation and insertion doesn't work on Windows
    box.ssh.insert_key = false
    box.vm.communicator = "winrm"
    box.vm.provider "virtualbox" do |v|
      v.gui = true
      v.memory = "8192"
      v.cpus = "6"
    end
  end

  # This is the bare windows VM you get from packer.
  config.vm.define "windows_7_64_vanilla" do |box|
    box.vm.box = "windows_7_64_vanilla"
    box.vm.guest = :windows
    # Random keypair generation and insertion doesn't work on Windows
    box.ssh.insert_key = false
    box.vm.communicator = "winrm"
    box.vm.provider "virtualbox" do |v|
      v.gui = true
      v.memory = "8192"
      v.cpus = "6"
    end
  end

end
