diff --git a/.gitignore b/.gitignore index f3f46872a0..e6652999e7 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ tags *~ build/ *.bak +.vagrant/ diff --git a/Vagrantfile b/Vagrantfile new file mode 100644 index 0000000000..e1082a08d0 --- /dev/null +++ b/Vagrantfile @@ -0,0 +1,45 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +Vagrant.configure(2) do |config| + config.vm.box = "dragon788/arch-ala-elasticdog" + + # This section allows you to customize the Virtualbox VM + # settings, ie showing the GUI or upping the memory + # or cores if desired + config.vm.provider "virtualbox" do |vb| + # Hide the VirtualBox GUI when booting the machine + vb.gui = false + + # Customize the amount of memory on the VM: + vb.memory = "512" + end + + # This section allows you to customize the VMware VM + # settings, ie showing the GUI or upping the memory + # or cores if desired + config.vm.provider "vmware" do |vmw| + # Hide the VMware GUI when booting the machine + vmw.gui = false + + # Customize the amount of memory on the VM: + vmw.memory = "512" + end + + # This ensures the system always gets the latest updates when powered on + # If this causes issues you can run a 'vagrant destroy' and then + # comment out these three lines and run 'vagrant up' to get a working + # non-updated box and then attempt to troubleshoot after it has started + # + config.vm.provision "shell", run: "always", inline: <<-SHELL + sudo pacman -Syu --needed --noconfirm + SHELL + + # Allow user to speed up package installs using powerpill/wget tweaks + # Always run the pacman mirror update script if possible when vagrant comes up + # This will ensure that users never get stalled on a horribly slow mirror + + config.vm.provision "shell", path: "avr_setup.sh" + + config.vm.post_up_message = """Change directory to the keyboard you wish to program and modify your layout, then run 'make clean' and 'make' to compile the .eep and .hex files.""" +end diff --git a/avr_setup.sh b/avr_setup.sh new file mode 100644 index 0000000000..ff4153ba37 --- /dev/null +++ b/avr_setup.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash +# This script will attempt to setup the Linux dependencies for compiling QMK/TMK + +# This could probably go much lower, but since we are including an Arch vagrant, +# making it the first match makes sense + +if [[ -n "$(type -P pacman )" ]]; then + # Arch linux and derivatives like Apricity + pacman -S --needed --noconfirm base-devel avr-gcc avr-binutils avr-libc dfu-utils + +elif [[ -n "$(type -P apt-get)" ]]; then + # Debian and derivatives + apt-get install -y build-essential gcc unzip wget zip gcc-avr binutils-avr avr-libc + +elif [[ -n "$(type -P yum)" ]]; then + # Fedora, CentOS or RHEL and derivatives + yum -y install gcc glibc-headers kernel-devel kernel-headers make perl git wget + +elif [[ -n "$(type -P zypper)" ]]; then + # openSUSE + zypper --non-interactive install git make gcc kernel-devel patch wget + +fi