1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234
|
# -*- mode: ruby -*-
# vi: set ft=ruby :
# 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|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com.
# Every Vagrant development environment requires a box. You can search for
# boxes at https://atlas.hashicorp.com/search.
config.vm.box = "terrywang/archlinux"
# 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 forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# config.vm.network "forwarded_port", guest: 80, host: 8080
# 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"
# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
# config.vm.network "public_network"
# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config.vm.synced_folder "../data", "/vagrant_data"
# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
config.vm.provider "virtualbox" do |vb|
# Need memory to compile Coq!
vb.memory = 2048
vb.cpus = 2
end
#
# View the documentation for the provider you are using for more
# information on available options.
# Define a Vagrant Push strategy for pushing to Atlas. Other push strategies
# such as FTP and Heroku are also available. See the documentation at
# https://docs.vagrantup.com/v2/push/atlas.html for more information.
# config.push.define "atlas" do |push|
# push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME"
# end
# Enable provisioning with a shell script. Additional provisioners such as
# Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
# documentation for more information about their specific syntax and use.
# Make sure keys are up to date before upgrading packages, otherwise PGP
# signatures will fail to check
config.vm.provision "upgrade",
type: "shell",
privileged: false,
run: "always",
inline: <<-SHELL
sudo pacman --noconfirm -Sy
sudo pacman --noconfirm --needed -S archlinux-keyring
sudo pacman --noconfirm -Su
SHELL
# Get the latest flycheck master
config.vm.provision "flycheck",
type: "shell",
privileged: false,
run: "always",
inline: <<-SHELL
if [ ! -d flycheck ]; then
git clone --depth=1 https://github.com/flycheck/flycheck.git
else
pushd flycheck
git pull
fi
SHELL
# The additional packages needed to run the Flycheck integration tests
config.vm.provision "flycheck-deps",
type: "shell",
privileged: false,
inline: <<-SHELL
echo "Installing packages with pacman..."
sudo pacman --noconfirm --needed -S npm \
jdk8-openjdk \
gcc-ada \
asciidoc \
asciidoctor \
clang \
cppcheck \
coffee-script \
coq \
dmd \
erlang \
gcc-fortran \
go \
groovy \
ghc \
haskell-hlint \
stack \
tidy \
perl \
cpanminus \
php \
processing \
protobuf \
puppet \
flake8 \
python-pylint \
racket-minimal \
python-docutils \
python-sphinx \
r \
jruby \
rustup \
scala \
chicken \
shellcheck \
xmlstarlet
echo "Installing packages from AUR..."
yaourt --noconfirm --needed -S cask \
cfengine \
luacheck \
nix \
phpmd \
php-pear \
scalastyle
# verilator
echo "Installing packages with gem..."
gem install --no-document foodcritic \
haml \
mdl \
puppet-lint \
reek \
rubocop \
ruby-lint \
sass \
scss_lint \
scss_lint_reporter_checkstyle \
slim \
sqlint
echo "Installing packages from npm..."
npm install --global --prefix ~/.node_modules coffeelint \
csslint \
handlebars \
jshint \
eslint \
jscs \
standard \
semistandard \
jsonlint \
less \
pug-cli \
tslint \
typescript \
js-yaml
echo "Installing packages with go get..."
go get -u github.com/kisielk/errcheck \
github.com/mdempsky/unconvert \
github.com/golang/lint/golint \
honnef.co/go/tools/cmd/megacheck
echo "Installing packages with raco pkg..."
raco pkg install --auto --skip-installed compiler-lib
echo "Installing rust with rustup..."
rustup install stable
rustup default stable
echo "Installing GHC for stack..."
stack setup
echo "Installing packages from CPAN..."
sudo cpanm Perl::Critic
sudo chmod -R a+rX /usr/share/perl5 /usr/lib/perl5
echo "Installing packages from PEAR..."
sudo pear install PHP_CodeSniffer
echo 'include_path=".:/usr/share/pear/"' | sudo tee /etc/php/conf.d/pear.ini
echo 'extension=iconv.so' | sudo tee /etc/php/conf.d/iconv.ini
sudo chmod -R a+rX /usr/share/pear/PHP /etc/php/conf.d
echo "Installing packages from CRAN..."
export R_LIBS_USER=~/R
cat <<-EOF > install-packages.R
dir.create(Sys.getenv("R_LIBS_USER"), showWarnings = FALSE, recursive = TRUE)
install.packages("lintr", Sys.getenv("R_LIBS_USER"), repos="http://cran.case.edu")
EOF
R CMD BATCH install-packages.R
echo "Installing hadolint..."
if [ ! -d hadolint ]; then
git clone --depth=1 https://github.com/lukasmartinelli/hadolint
else
pushd hadolint
git pull
popd
fi
pushd hadolint
stack setup
stack install
popd
SHELL
# Add binaries from ad-hoc package managers to PATH
config.vm.provision "path-setup",
type: "shell",
privileged: false,
inline: <<-SHELL
echo export PATH=$(ruby -e 'print Gem.user_dir')/bin:'$PATH' >> ~/.profile
echo export PATH=$HOME/.node_modules/bin:'$PATH' >> ~/.profile
echo export PATH=$HOME/go/bin:'$PATH' >> ~/.profile
echo export PATH=$HOME/.local/bin:'$PATH' >> ~/.profile
echo export R_LIBS_USER=$HOME/R >> ~/.profile
SHELL
end
|