blob: fce4afbe7cd1b7c1512d8f4eb233a1f69b8a0ab8 (
plain) (
tree)
|
|
# -*- mode: ruby -*-
# vi: set ft=ruby :
NAME = 'Egor Tensin'
EMAIL = 'Egor.Tensin@gmail.com'
GPG_KEY = '3B3EF1235420917E0DB0723991D679FB92B036CB'
UID = Process.euid
Vagrant.configure("2") do |config|
config.vm.box = "generic/ubuntu2004"
# Weirdly enough, VirtualBox's shared folders didn't quite work for me.
# gbp buildpackage would just exit with FileExistsError, which doesn't
# happen with NFS shares.
config.vm.synced_folder "../", "/vagrant",
type: "nfs",
nfs_udp: false,
nfs_version: "4"
config.vm.provider "libvirt" do |v|
v.cpus = 2
v.memory = 4096
end
# Working with the git repository:
config.vm.provision "shell", privileged: false, inline: <<-SHELL
#!/usr/bin/env bash
set -o errexit -o nounset -o pipefail
git config --global user.name '#{NAME}'
git config --global user.email '#{EMAIL}'
SHELL
config.ssh.forward_agent = true
# Set DEB* environment variables:
config.vm.provision "shell", privileged: false, inline: <<-SHELL
#!/usr/bin/env bash
set -o errexit -o nounset -o pipefail
tee -a ~/.bashrc <<'EOF'
export DEBFULLNAME='#{NAME}'
export DEBEMAIL='#{EMAIL}'
EOF
SHELL
# gpg-agent forwarding (https://wiki.gnupg.org/AgentForwarding):
config.vm.provision "shell", privileged: false, inline: <<-SHELL
#!/usr/bin/env bash
set -o errexit -o nounset -o pipefail
gpg --keyserver hkp://keyserver.ubuntu.com/ --recv-keys '0x#{GPG_KEY}'
gpg --import-ownertrust <<'EOF'
#{GPG_KEY}:6:
EOF
SHELL
config.vm.provision "shell", inline: <<-SHELL
#!/usr/bin/env bash
set -o errexit -o nounset -o pipefail
echo 'StreamLocalBindUnlink yes' >> /etc/ssh/sshd_config
SHELL
# "agent-extra-socket" on the host.
local_gpg_socket = one_line(run('gpgconf', '--list-dirs', 'agent-extra-socket'))
# "agent-socket" on the VM.
remote_gpg_socket = "/run/user/#{UID}/gnupg/S.gpg-agent"
config.ssh.extra_args = ['-R', "#{remote_gpg_socket}:#{local_gpg_socket}"]
# Install the required packages:
config.vm.provision "shell", inline: <<-SHELL
#!/usr/bin/env bash
set -o errexit -o nounset -o pipefail
apt-get update && apt-get install -y make
cd /vagrant/debian && make deps
SHELL
config.vm.provision :reload
end
require "open3"
def run(*cmd)
stdout, stderr, status = Open3.capture3(*cmd)
abort stderr unless status.success?
stdout
end
def one_line(output)
lines = output.lines.map(&:chomp)
abort "Must be a single line: #{lines}" unless lines.length == 1
lines.first
end
|