90 lines
2.8 KiB
Ruby

# -*- mode: ruby -*-
# vi: set ft=ruby :
unless ENV["VAGRANT_BYPASS_REQUIRED_PLUGINS"]
required_plugins = [ "vagrant-disksize", "vagrant-vbguest", "vagrant-reload" ]
plugins_installed = required_plugins.reduce(true) do |pi, rp|
pi && Vagrant.has_plugin?(rp)
end
unless plugins_installed
STDERR.puts "ERROR: Required plugins not installed!"
STDERR.puts "This vagrant configuration requires the following plugins: #{required_plugins.join(' ')}"
STDERR.puts "Please install these using the `vagrant plugin install` command and try again"
exit 127
end
end
gui_enabled = ENV['VAGRANT_GUI'] || true
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/focal64"
# Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
# config.vm.box_check_update = false
# Create a private network, which allows host-only access to the machine
# using a specific IP.
# config.vm.network "private_network", ip: "192.168.33.10"
# Share a folder between guest and host for convenience
config.vm.synced_folder File.join(".", "data"), "/media/data"
# Use vagrant-disksize plugin to resize disk as desired
config.disksize.size = ENV["VAGRANT_DISKSIZE"] || "20GB"
config.vm.provider "virtualbox" do |vb|
vb.memory = ENV['VAGRANT_MEMORY'] || 1024 * 8
vb.cpus = ENV['VAGRANT_CPUS'] || 4
# Graphical settings
vb.gui = gui_enabled
if gui_enabled
vb.customize ["modifyvm", :id, "--monitorcount", (ENV['VAGRANT_MONITORS'] || '1')]
vb.customize ["modifyvm", :id, "--graphicscontroller", "vboxsvga"]
vb.customize ["modifyvm", :id, "--vram", "128"]
end
end
config.vm.define "default", primary: true do |primary|
end
config.vm.define "test", autostart: false do |test|
end
config.vm.provision :shell,
name: "Install Minimal XFCE",
path: "provisioners/install-xfce-minimal.sh" \
if gui_enabled
config.vm.provision :shell,
name: "Install Nix",
path: "provisioners/install-nix.sh",
privileged: false
config.vm.provision :shell,
name: "Install APT Packages",
path: "provisioners/install-apt-packages.sh"
config.vm.provision :shell,
name: "Cleanup tasks",
inline: <<~SHELLEND
userdel ubuntu
SHELLEND
# Run any personal customization that exist outside git
if Dir.exists?('personal')
Dir['personal/*.sh'].each do |script|
config.vm.provision :shell, path: script, privileged: false
end
end
config.vm.provision :reload
end