First step in personal vagrant dev machine setup
This commit is contained in:
commit
9383d6dc16
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
data/
|
||||||
|
personal
|
||||||
|
.vagrant
|
||||||
89
Vagrantfile
vendored
Normal file
89
Vagrantfile
vendored
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
# -*- 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
|
||||||
31
provisioners/install-apt-packages.sh
Normal file
31
provisioners/install-apt-packages.sh
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Installs utility packages for general development.
|
||||||
|
|
||||||
|
# A list of packages to install
|
||||||
|
apt_packages=(
|
||||||
|
# Docker setup
|
||||||
|
"docker"
|
||||||
|
"docker-compose"
|
||||||
|
|
||||||
|
# General utilities
|
||||||
|
"dos2unix"
|
||||||
|
"tree"
|
||||||
|
"git"
|
||||||
|
"vim"
|
||||||
|
"expect"
|
||||||
|
"jq"
|
||||||
|
|
||||||
|
# For encryption in git
|
||||||
|
"git-crypt"
|
||||||
|
)
|
||||||
|
|
||||||
|
# If the list of packages to install isn't empty install the whole list
|
||||||
|
install_apt_packages()
|
||||||
|
{
|
||||||
|
export DEBIAN_FRONTEND="noninteractive"
|
||||||
|
if [ "${apt_packages[*]}" ]; then
|
||||||
|
apt-get -qy install "${apt_packages[@]}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
install_apt_packages
|
||||||
129
provisioners/install-nix.sh
Normal file
129
provisioners/install-nix.sh
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Install the Nix package manager as a secondary package manager.
|
||||||
|
# This can sometimes be useful for getting more recent packages.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Abort installation if Nix is already installed
|
||||||
|
if [ -d /nix ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Download the Nix installer and it's signature from NixOS.org
|
||||||
|
curl -so install-nix https://releases.nixos.org/nix/nix-2.3.6/install
|
||||||
|
curl -so install-nix.asc https://releases.nixos.org/nix/nix-2.3.6/install.asc
|
||||||
|
|
||||||
|
# Verify the signature matches Eelco Dolstra's
|
||||||
|
# Fetching from keyservers fails and is somewhat unreliable.
|
||||||
|
# To avoid intermittent failures we have written the key out in this file
|
||||||
|
gpg --import <<ENDOFKEY
|
||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
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
|
||||||
|
=oCTu
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
ENDOFKEY
|
||||||
|
gpg --verify ./install-nix.asc
|
||||||
|
|
||||||
|
# Run the installer
|
||||||
|
sh ./install-nix
|
||||||
|
|
||||||
|
# Source the nix profile
|
||||||
|
cat << EOF > ~vagrant/.bashrc
|
||||||
|
# Source nix if it's installed
|
||||||
|
if [ -r ~/.nix-profile/etc/profile.d/nix.sh ]; then
|
||||||
|
. ~/.nix-profile/etc/profile.d/nix.sh
|
||||||
|
fi
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Remove the installer and signature
|
||||||
|
rm -f ./install-nix{,.asc}
|
||||||
19
provisioners/install-xfce-minimal.sh
Executable file
19
provisioners/install-xfce-minimal.sh
Executable file
@ -0,0 +1,19 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Ensure that no interactive prompts are used
|
||||||
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
# Additional pacakges to ensure a nice experience
|
||||||
|
additional_packages=(
|
||||||
|
xfce4
|
||||||
|
xfce4-terminal
|
||||||
|
xfce4-whiskermenu-plugin
|
||||||
|
menulibre
|
||||||
|
firefox
|
||||||
|
pinentry-gtk2
|
||||||
|
policykit-desktop-privileges
|
||||||
|
)
|
||||||
|
apt-get install -qy "${additional_packages[@]}" || exit 1
|
||||||
|
|
||||||
|
# Install a minimal xubuntu desktop
|
||||||
|
apt-get install --no-install-recommends -qy xubuntu-desktop || exit 1
|
||||||
Loading…
x
Reference in New Issue
Block a user