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

LINUX_BASE_BOX = "bento/ubuntu-16.04"
FREEBSD_BASE_BOX = "jen20/FreeBSD-12.0-CURRENT"

Vagrant.configure(2) do |config|
	if Vagrant.has_plugin?("vagrant-cachier")
		config.cache.scope = :box
	end

	# Compilation and development boxes
	config.vm.define "linux", autostart: true, primary: true do |vmCfg|
		vmCfg.vm.box = LINUX_BASE_BOX
		vmCfg.vm.hostname = "linux"
		vmCfg = configureProviders vmCfg,
			cpus: suggestedCPUCores()

		vmCfg.vm.synced_folder ".", "/vagrant", disabled: true
		vmCfg.vm.synced_folder '.',
			'/opt/gopath/src/github.com/hashicorp/packer'

		vmCfg.vm.provision "shell",
			privileged: true,
			inline: 'rm -f /home/vagrant/linux.iso'

		vmCfg.vm.provision "shell",
			privileged: true,
			path: './scripts/vagrant-linux-priv-go.sh'

		vmCfg.vm.provision "shell",
			privileged: true,
			path: './scripts/vagrant-linux-priv-config.sh'

		vmCfg.vm.provision "shell",
			privileged: false,
			path: './scripts/vagrant-linux-unpriv-bootstrap.sh'
	end

	config.vm.define "freebsd", autostart: false, primary: false do |vmCfg|
		vmCfg.vm.box = FREEBSD_BASE_BOX
		vmCfg.vm.hostname = "freebsd"
		vmCfg = configureProviders vmCfg,
			cpus: suggestedCPUCores()

		vmCfg.vm.synced_folder ".", "/vagrant", disabled: true
		vmCfg.vm.synced_folder '.',
			'/opt/gopath/src/github.com/hashicorp/packer',
			type: "nfs",
			bsd__nfs_options: ['noatime']

		vmCfg.vm.provision "shell",
			privileged: true,
			path: './scripts/vagrant-freebsd-priv-config.sh'

		vmCfg.vm.provision "shell",
			privileged: false,
			path: './scripts/vagrant-freebsd-unpriv-bootstrap.sh'
	end
end

def configureProviders(vmCfg, cpus: "2", memory: "2048")
	vmCfg.vm.provider "virtualbox" do |v|
		v.memory = memory
		v.cpus = cpus
	end

	["vmware_fusion", "vmware_workstation"].each do |p|
		vmCfg.vm.provider p do |v|
			v.enable_vmrun_ip_lookup = false
			v.vmx["memsize"] = memory
			v.vmx["numvcpus"] = cpus
		end
	end

	vmCfg.vm.provider "docker" do |d, override|
		d.build_dir = "."
		d.has_ssh = true
		override.vm.box = nil
	end

	return vmCfg
end

def suggestedCPUCores()
	case RbConfig::CONFIG['host_os']
	when /darwin/
		Integer(`sysctl -n hw.ncpu`) / 2
	when /linux/
		Integer(`cat /proc/cpuinfo | grep processor | wc -l`) / 2
	else
		2
	end
end
