Vagrant.configure("2") do |config|
config.vm.box = "generic/ubuntu2204"
config.vm.provider :libvirt do |libvirt|
libvirt.memory = 4096
end
config.vm.network :public_network, :name => "default"
config.vm.synced_folder "..",
"/vagrant",
type: "9p",
accessmode: "mapped",
mount_options: ['rw', 'trans=virtio', 'version=9p2000.L']
config.vm.provision "file", source: "~/.ssh/id_rsa", destination: "/home/vagrant/.ssh/id_rsa"
config.vm.provision "shell", inline: "apt-get update -y"
config.vm.provision "shell", inline: "apt-get install -y build-essential jq"
config.vm.provision "shell", privileged: false, inline: <<-SHELL
curl -L -O https://static.rust-lang.org/rustup/dist/x86_64-unknown-linux-gnu/rustup-init
chmod +x rustup-init
./rustup-init --default-toolchain stable --no-modify-path -y
echo "source ~/.cargo/env" >> ~/.bashrc
SHELL
config.vm.provision "shell", inline: <<-SHELL
curl -L -O https://github.com/casey/just/releases/download/1.25.2/just-1.25.2-x86_64-unknown-linux-musl.tar.gz
mkdir just
tar xvf just-1.25.2-x86_64-unknown-linux-musl.tar.gz -C just
rm just-1.25.2-x86_64-unknown-linux-musl.tar.gz
sudo mv just/just /usr/local/bin
rm -rf just
curl -L -O https://static.rust-lang.org/rustup/dist/x86_64-unknown-linux-gnu/rustup-init
chmod +x rustup-init
./rustup-init --default-toolchain stable --no-modify-path -y
echo "source ~/.cargo/env" >> ~/.bashrc
# Copy the binaries to a system-wide location for running tests as the root user
sudo cp ~/.cargo/bin/** /usr/local/bin
sudo rsync -av \
--exclude 'artifacts' \
--exclude 'deploy' \
--exclude 'target' \
--exclude '.git' \
--exclude '.vagrant' \
/vagrant/ /root/safe_network
SHELL
config.vm.provision "shell", privileged: false, inline: <<-SHELL
mkdir -p ~/.vim/tmp/ ~/.vim/backup
cat <<'EOF' > ~/.vimrc
set nocompatible
let mapleader=" "
syntax on
set background=dark
set backspace=indent,eol,start
set backupdir=~/.vim/tmp//
set directory=~/.vim/backup
set expandtab
set foldlevel=1
set foldmethod=indent
set foldnestmax=10
set hlsearch
set ignorecase
set incsearch
set laststatus=2
set nobackup
set nofoldenable
set nowrap
set number relativenumber
set ruler
set shiftwidth=4
set smartindent
set showcmd
set shortmess+=A
set tabstop=4
set viminfo+=!
nnoremap j gj
nnoremap k gk
EOF
cp ~/.vimrc /tmp/.vimrc
SHELL
config.vm.provision "shell", inline: <<-SHELL
mkdir -p /root/.vim/tmp/ /root/.vim/backup
cp /tmp/.vimrc /root/.vimrc
SHELL
end