Yucom/Vagrantfile

107 lines
3.7 KiB
Ruby
Raw Normal View History

2018-10-25 20:55:20 +02:00
# -*- mode: ruby -*-
# vi: set ft=ruby :
module OS
def OS.windows?
(/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil
end
def OS.mac?
(/darwin/ =~ RUBY_PLATFORM) != nil
end
def OS.unix?
!OS.windows?
end
def OS.linux?
OS.unix? and not OS.mac?
end
end
2018-10-25 20:55:20 +02:00
# Vagrant file for setting up a build environment for Proton.
if OS.linux?
cpus = `nproc`.to_i
# meminfo shows KB and we need to convert to MB
memory = `grep 'MemTotal' /proc/meminfo | sed -e 's/MemTotal://' -e 's/ kB//'`.to_i / 1024 / 2
elsif OS.mac?
cpus = `sysctl -n hw.physicalcpu`.to_i
# sysctl shows bytes and we need to convert to MB
memory = `sysctl hw.memsize | sed -e 's/hw.memsize: //'`.to_i / 1024 / 1024 / 2
else
cpus = 1
memory = 1024
puts "Vagrant launched from unsupported platform."
end
puts "Platform: " + cpus.to_s + " CPUs, " + memory.to_s + " MB memory"
2018-10-25 20:55:20 +02:00
Vagrant.configure(2) do |config|
#libvirt doesn't have a decent synced folder, so we have to use vagrant-sshfs.
#This is not needed for virtualbox, but I couldn't find a way to use a
#different synced folder type per provider, so we always use it.
config.vagrant.plugins = "vagrant-sshfs"
2018-10-25 20:55:20 +02:00
config.vm.box = "generic/debian9"
config.vm.provider "virtualbox" do |v|
v.cpus = cpus
v.memory = memory
end
2018-10-25 20:55:20 +02:00
config.vm.provider "libvirt" do |v|
v.cpus = cpus
v.memory = memory
v.random_hostname = true
v.default_prefix = ENV['USER'].to_s.dup.concat('_').concat(File.basename(Dir.pwd))
end
config.vm.synced_folder "./vagrant_share/", "/vagrant/", create: true, type: "sshfs", sshfs_opts_append: "-o cache=no"
config.vm.synced_folder ".", "/home/vagrant/proton", id: "proton", type: "rsync", rsync__exclude: ["vagrant_share"]
2018-10-25 20:55:20 +02:00
#this is where the VM is initialized on first setup
2018-10-25 20:55:20 +02:00
config.vm.provision "shell", privileged: "true", inline: <<-SHELL
#install docker and steam-runtime dependencies
2018-10-25 20:55:20 +02:00
dpkg --add-architecture i386
apt-get update
apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common
2018-11-19 20:08:55 +01:00
2018-10-25 20:55:20 +02:00
#add winehq repo
curl -fsSL https://dl.winehq.org/wine-builds/winehq.key | apt-key add -
2018-10-25 20:55:20 +02:00
echo 'deb http://dl.winehq.org/wine-builds/debian stretch main' > /etc/apt/sources.list.d/winehq.list
2018-11-19 20:08:55 +01:00
2018-10-25 20:55:20 +02:00
#add docker repo
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian stretch stable"
2018-11-19 20:08:55 +01:00
#add backports
echo 'deb http://ftp.debian.org/debian stretch-backports main' > /etc/apt/sources.list.d/backports.list
2018-11-19 20:08:55 +01:00
#install host build-time dependencies
2018-10-25 20:55:20 +02:00
apt-get update
2019-02-05 16:41:03 +01:00
apt-get install -y gpgv2 gnupg2 g++ g++-6-multilib mingw-w64 git docker-ce fontforge-nox python-debian
2018-10-25 20:55:20 +02:00
apt-get -y -t stretch-backports install meson
2018-11-19 20:08:55 +01:00
#winehq-devel is installed to pull in dependencies to run Wine
apt-get install -y --install-recommends winehq-devel
2018-11-19 20:08:55 +01:00
#remove system Wine installation to ensure no accidental leakage
apt-get remove -y winehq-devel
#configure posix mingw-w64 alternative for DXVK
2018-10-25 20:55:20 +02:00
update-alternatives --set x86_64-w64-mingw32-gcc `which x86_64-w64-mingw32-gcc-posix`
update-alternatives --set x86_64-w64-mingw32-g++ `which x86_64-w64-mingw32-g++-posix`
update-alternatives --set i686-w64-mingw32-gcc `which i686-w64-mingw32-gcc-posix`
update-alternatives --set i686-w64-mingw32-g++ `which i686-w64-mingw32-g++-posix`
2018-11-19 20:08:55 +01:00
#allow vagrant user to run docker
2018-10-25 20:55:20 +02:00
adduser vagrant docker
SHELL
config.vm.provision "shell", privileged: "true", inline: <<-SHELL
# unprivileged shell still runs as root for some reason
# the script below will set up the steam-runtime docker containers
2018-10-25 20:55:20 +02:00
sudo -u vagrant /home/vagrant/proton/vagrant-user-setup.sh
SHELL
end