Vagrant.configure("2") do |config|
  
  config.vm.box = "ubuntu/jammy64"
  #config.vm.box = "ubuntu/focal64" # Gives an error when starting with startx
  #config.vm.box = "ubuntu/trusty64" # Doesnt work, needs lib and it doesnt get installed
  #config.vm.box = "ubuntu/xenial64"  # Gives an error when starting with startx
  #config.vm.box = "ubuntu/bionic64" # Gives an error when starting with startx

  # VirtualBox properties
  config.vm.provider "virtualbox" do |vb|
      # Display the VirtualBox GUI when booting the machine
      vb.gui = true
  
      # Customize the amount of memory on the VM:
      vb.memory = "2048"
  end

  # Add dependencies needed for openjdk
  config.vm.provision "shell", inline: " sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EB3E94ADBE1229CF"
  config.vm.provision "shell", inline: "sudo add-apt-repository ppa:openjdk-r/ppa"
  
  config.vm.provision "shell", inline: "sudo apt-get update"
  
  # Install dependencies
  config.vm.provision "shell", inline: "sudo apt-get -y install xinit"
  config.vm.provision "shell", inline: "sudo apt-get -y install libsecret-1-0"
  
  # Install GUI
  config.vm.provision "shell", inline: "sudo apt-get -y install xfce4"
  config.vm.provision "shell", inline: "sudo apt-get update"
  
  # Installing needed dependencies for study 
  config.vm.provision "shell", inline: "sudo apt-get -y install python3-pip"
  #config.vm.provision "shell", inline: "sudo apt install python-is-python3"
  config.vm.provision "shell", inline: "pip install notebook"
  
  # Install VSCode
  config.vm.provision "shell", inline: <<-SHELL
    sudo apt-get -y install wget gpg
    wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
    sudo install -D -o root -g root -m 644 packages.microsoft.gpg /etc/apt/keyrings/packages.microsoft.gpg
    sudo sh -c 'echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list'
    rm -f packages.microsoft.gpg
    sudo apt -y install apt-transport-https
    sudo apt update
    sudo apt -y install code # or code-insiders
  SHELL
  
  # Install jdk11
  config.vm.provision "shell", inline: "sudo apt-get -y install openjdk-11-jdk"
  
  # Create folders for liquid java
  config.vm.provision "shell", inline: "sudo mkdir -p Desktop"
  
  # Yolo
  config.vm.provision "shell", inline: "sudo chmod -R 777 Desktop"
  
  # Provision the files
  config.vm.provision "file", source: "./liquid-java-0.0.14.vsix", destination: "Desktop/liquid-java-0.0.14.vsix"
  config.vm.provision "file", source: "./liquidjava-examples", destination: "Desktop/liquidjava-examples"
  config.vm.provision "file", source: "./start_vscode.sh", destination: "Desktop/start_vscode.sh"
  config.vm.provision "file", source: "./user-study", destination: "Desktop/user-study"
  config.vm.provision "file", source: "./syntax-survey", destination: "Desktop/syntax-survey"

  config.vm.provision "shell", inline: "sudo chmod 777 Desktop/start_vscode.sh"
  config.vm.provision "shell", inline: "sudo chmod -R 777 Desktop/user-study"
  config.vm.provision "shell", inline: "sudo chmod -R 777 Desktop/syntax-survey"
  
  # Install the last dependency
  config.vm.provision "shell", inline: "pip install -r Desktop/user-study/requirements.txt"

  # Install the plugins in vscode - Not working for some reason (?)
  # config.vm.provision "shell", inline: "code --install-extension redhat.java --user-data-dir='/root/.vscode'"
  # config.vm.provision "shell", inline: "code --install-extension Desktop/liquid-java-0.0.14.vsix --user-data-dir='/root/.vscode'"
  
  config.vm.provision "shell", inline: "sudo startxfce4&"
end