Vagrant.configure(2) do |config|
    config.vm.provider :virtualbox do |vb|
        vb.memory = 2048
        vb.cpus = 8
    end

    config.vm.box = "boxcutter/ubuntu1604"

    config.vm.provider :virtualbox do |vb|
        vb.name = "backrest-test"
    end

    # Provision the VM
    config.vm.provision "shell", inline: <<-SHELL
        # Install Docker
        apt-get update
        apt-get install -y apt-transport-https ca-certificates
        apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
        echo 'deb https://apt.dockerproject.org/repo ubuntu-xenial main' > /etc/apt/sources.list.d/docker.list
        apt-get update
        apt-get install -y linux-image-extra-$(uname -r)
        apt-get install -y docker-engine
        service docker start
        sudo usermod -aG docker vagrant

        # Install Perl modules
        apt-get install -y libdbd-pg-perl libxml-checker-perl libperl-critic-perl

        # Install additional modules
        apt-get install -y vim htop

        # Install Texlive
        mkdir /root/texlive
        wget -q -O - http://mirror.hmc.edu/ctan/systems/texlive/tlnet/install-tl-unx.tar.gz \
            | tar zxv -C /root//texlive --strip-components=1
        echo "collection-basic 1" >> /root/texlive/texlive.profile
        echo "collection-latex 1" >> /root/texlive/texlive.profile
        /root/texlive/install-tl -profile=/root/texlive/texlive.profile

        echo 'PATH=/usr/local/texlive/2016/bin/x86_64-linux:$PATH' >> /etc/profile
        echo 'export PATH' >> /etc/profile

        /usr/local/texlive/2016/bin/x86_64-linux/tlmgr install caption xcolor listings parskip helvetic ltablex titlesec \
            epstopdf courier sectsty pgf ms

        apt-get install -y ghostscript

        # Create backrest user and postgres group
        groupadd -g5000 postgres
        adduser --uid=5001 --ingroup=postgres --disabled-password --gecos "" backrest

        # Make postgres the primary group for vagrant user (and preserve vagrant group)
        usermod -g postgres vagrant
        usermod -a -G vagrant vagrant

        # Build VM images
        rm -f /backrest/test/.vagrant/docker/*
        sudo su - vagrant -c '/backrest/test/test.pl --vm-build'
    SHELL

  # Don't share the default vagrant folder
  config.vm.synced_folder ".", "/vagrant", disabled: true

  # Mount backrest path for testing
  config.vm.synced_folder "..", "/backrest"
end
