# Copyright (c) 2021 Battelle Energy Alliance, LLC.  All rights reserved.

unless Vagrant.has_plugin?("vagrant-reload")
  raise 'vagrant-reload plugin is not installed!'
end

# hack: https://github.com/hashicorp/vagrant/issues/8878#issuecomment-345112810
class VagrantPlugins::ProviderVirtualBox::Action::Network
  def dhcp_server_matches_config?(dhcp_server, config)
    true
  end
end

Vagrant.configure("2") do |config|

  config.vm.box = "bento/debian-10"

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

  config.vm.synced_folder '.', '/vagrant', disabled: true
  config.vm.synced_folder "..", "/sensor-build"

  if Vagrant.has_plugin?("vagrant-vbguest")
    config.vbguest.auto_update = false
  end

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

  config.vm.provision "shell", inline: <<-STEP1
    dpkg-reconfigure debconf -f noninteractive -p critical
    export DEBIAN_FRONTEND=noninteractive
    apt-mark hold grub-pc
    apt-get -qqy update
    apt-get -y dist-upgrade
    sed -i "s/main/main contrib non-free/g" /etc/apt/sources.list
    echo "deb http://httpredir.debian.org/debian/ buster-backports main contrib non-free" >> /etc/apt/sources.list
    echo "deb-src http://httpredir.debian.org/debian/ buster-backports main contrib non-free" >> /etc/apt/sources.list
    apt-get -qqy update
    export KERNEL_VERSION=$(apt-cache search linux-image-5.10 | grep -Pv -- '(-(rt|cloud)-amd64|amd64-(dbg|unsigned))' | sort -r --sort=version | awk '{print $1}' | head -n 1 | sed 's/^linux-image-//' | sed 's/-amd64$//')
    apt-get -t buster-backports -y install \
      linux-image-$KERNEL_VERSION-amd64 linux-headers-$KERNEL_VERSION-amd64 linux-headers-$KERNEL_VERSION-common \
      dkms build-essential linux-kbuild-5.10 linux-compiler-gcc-8-x86 \
      firmware-linux firmware-linux-nonfree firmware-misc-nonfree firmware-amd-graphics
    ls /dev/disk/by-id/ata-* | grep -v '\\-part' | head -n 1 | xargs -r -l grub-install
  STEP1
  config.vm.provision :reload

  config.vm.provision "shell", inline: <<-STEP2
    export DEBIAN_FRONTEND=noninteractive
    apt-get -qqy update
    apt-get -t buster-backports -y install \
      rsync git live-build debootstrap xorriso squashfs-tools genisoimage pandoc imagemagick \
      apt-transport-https ca-certificates curl gnupg2 software-properties-common
    curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
    add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
    apt-get -qqy update
    apt-get -y install docker-ce docker-ce-cli containerd.io
    usermod -a -G docker vagrant
  STEP2
end
