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

GO_VERSION = "1.20.12"
PODMAN_BRANCH = "main"
SKOPEO_VERSION = "1.13.1"

Vagrant.configure("2") do |config|
    config.vm.box = "generic/ubuntu2204"
    config.vm.synced_folder '.', '/vagrant/youki', disabled: false

    config.vm.provider "virtualbox" do |v|
      v.memory = 8192
      v.cpus = 8
    end

    config.vm.provision "bootstrap", type: "shell" do |s|
      s.inline = <<-SHELL
        set -e -u -o pipefail
        export DEBIAN_FRONTEND=noninteractive
        apt-get update && apt-get install -y \
          make \
          pkg-config         \
          libsystemd-dev     \
          libdbus-glib-1-dev \
          build-essential    \
          libelf-dev \
          libseccomp-dev \
          libbtrfs-dev \
          btrfs-progs \
          libgpgme-dev \
          libassuan-dev \
          libdevmapper-dev \
          bats \
          socat \
          jq \
          conmon \
          protobuf-compiler

        wget --quiet https://go.dev/dl/go#{GO_VERSION}.linux-amd64.tar.gz -O /tmp/go#{GO_VERSION}.linux-amd64.tar.gz
        rm -rf /usr/local/go && tar -C /usr/local -xzf /tmp/go#{GO_VERSION}.linux-amd64.tar.gz
        echo "export PATH=$PATH:/usr/local/go/bin" >> ~/.bashrc
        echo "export GOPATH=$HOME/go" >> ~/.bashrc
        export PATH=$PATH:$HOME/.cargo/bin:/usr/local/go/bin
        export GOPATH=$HOME/go

        curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
        source "$HOME/.cargo/env"
        cargo install netavark aardvark-dns
        mkdir -p /usr/local/lib/podman
        sudo cp $(which netavark) /usr/local/lib/podman/
        sudo cp $(which netavark)-dhcp-proxy-client /usr/local/lib/podman/
        sudo cp $(which aardvark-dns) /usr/local/lib/podman/

        mkdir /tmp/skopeo 
        curl -fsSL "https://github.com/containers/skopeo/archive/v#{SKOPEO_VERSION}.tar.gz" | tar -xzf - -C /tmp/skopeo --strip-components=1
        cd /tmp/skopeo && DISABLE_DOCS=1 make
        sudo mkdir /etc/containers && sudo cp /tmp/skopeo/bin/skopeo /usr/local/bin/skopeo && sudo cp /tmp/skopeo/default-policy.json /etc/containers/policy.json

        git clone https://github.com/containers/podman /vagrant/podman -b #{PODMAN_BRANCH}
        
        cd /vagrant/podman && make binaries install.tools

        rm -rf /bin/runc /sbin/runc /usr/sbin/runc /usr/bin/runc

        cp /vagrant/youki/youki /usr/bin/runc
      SHELL
    end
end
