enable_nas = ENV["NAS"] || false

Vagrant.configure("2") do |config|
  config.vm.box = "debian/bullseye64"
  config.vm.synced_folder '.', '/vagrant', disabled: true # Allows WSL call to work within WSL filesystem
  config.vm.provision :shell, path: "https://git.halis.io/athens-school/ISO-repository/raw/branch/master/quick-installer.sh", run: "once"

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

  config.vm.provider "libvirt" do |q|
    q.memory = 2048
    q.cpus = 2
  end

  boxes = [
    { :name => "hb-slim-1", :ip => "192.168.56.11"},
    { :name => "hb-slim-2", :ip => "192.168.56.12"},
    { :name => "hb-wide-1", :ip => "192.168.56.101", :cpus => 2, :memory => 4096},
    { :name => "hb-wide-2", :ip => "192.168.56.102", :cpus => 2, :memory => 4096},
  ]

  if enable_nas != false
    boxes.push({ :name => "nas", :ip => "192.168.56.200", :cpus => 2, :memory => 4096, :drive => { name: "extra_disk", size: "30GB" }})
  end

  boxes.each do |opts|
    config.vm.define opts[:name] do |box|
      box.vm.hostname = opts[:name]
      box.vm.network "private_network", ip: opts[:ip]
      if !opts[:drive].nil?
        box.vm.disk :disk, size: opts[:drive][:size], name: opts[:drive][:name]
      end

      box.vm.provider "virtualbox" do |v|
        if !opts[:memory].nil?
          v.memory = opts[:memory]
        end
        if !opts[:cpus].nil?
          v.cpus = opts[:cpus]
        end
      end

      box.vm.provider "libvirt" do |q|
        if !opts[:memory].nil?
          q.memory = opts[:memory]
        end
        if !opts[:cpus].nil?
          q.cpus = opts[:cpus]
        end
      end

    end
  end
end