Skip to content

Instantly share code, notes, and snippets.

@rapgru
Last active April 5, 2023 21:51
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rapgru/e11298478a0c23d6a0b7b97a79d9543e to your computer and use it in GitHub Desktop.
Save rapgru/e11298478a0c23d6a0b7b97a79d9543e to your computer and use it in GitHub Desktop.
WSL Ubuntu 18.04 LTS Provisioning Script
#!/bin/bash
echo "Provisioning WSL Ubuntu 1804"
# This script needs to be repeatable !
WindowsHome="{{home_folder}}"
function addCdAlias() {
name="$1"
path="$2"
if [[ $(grep -c "alias $name" "$HOME/.profile") -eq 0 ]]; then
echo "alias $name='cd $path'" >> "$HOME/.profile"
fi
}
function addAlias() {
name="$1"
command="$2"
if [[ $(grep -c "alias $name" "$HOME/.profile") -eq 0 ]]; then
echo "alias $name='$command'" >> "$HOME/.profile"
fi
}
function setGitConfig() {
key="$1"
val="$2"
if [[ $(git config "$key") != "$val" ]]; then
echo "Setting git $key to $val"
git config --global "$key" "$val"
fi
}
function addPath() {
path="$1"
if [[ $(grep -c "export PATH="'"$PATH:'"$path"'"' "$HOME/.profile") -eq 0 ]]; then
echo "export PATH="'"$PATH:'"$path"'"' >> "$HOME/.profile"
fi
}
export DEBIAN_FRONTEND=noninteractive
export DEBIAN_PRIORITY=critical
sudo -E apt-get -qy update
sudo -E apt-get -qy -o "Dpkg::Options::=--force-confdef" -o "Dpkg::Options::=--force-confold" upgrade
sudo -E apt-get -qy autoclean
# Git config
setGitConfig "user.name" "Raphael Gruber"
setGitConfig "user.email" "raphael.gruber@gmail.com"
setGitConfig "credential.helper" "store"
setGitConfig "core.editor" "vim"
sudo apt-get -qy install texlive-full texlive-lang-german texlive-latex-extra openjdk-8-jre
sudo apt-get -qy install shellcheck
addCdAlias "h4" "$WindowsHome/OneDrive/Dokumente/IT-HTL/4_Klasse"
addCdAlias "dg" "$WindowsHome/OneDrive/Dokumente/IT-HTL/4_Klasse/Datagate/dg"
addCdAlias "doc" "$WindowsHome/OneDrive/Dokumente"
if [[ ! -d "$HOME/latex/latex-templates" ]]; then
git clone "https://github.com/rapgru/latex-templates.git" "$HOME/latex/latex-templates"
chmod +x "$HOME/latex/latex-templates/newtex.sh"
fi
addAlias "newtex" "$HOME/latex/latex-templates/newtex.sh"
addAlias "vagrant" "vagrant.exe"
sudo apt-get -qy install apache2
sudo apt-get -qy install mysql-server
sudo apt-get -qy install php libapache2-mod-php php-mysql php-mcrypt php-mbstring php-dom
sudo service mysql start
# may fail if user already exists
sudo mysql -u root -e "CREATE USER 'rgruber'@'%' IDENTIFIED BY 'default';"
sudo mysql -u root -e "GRANT ALL PRIVILEGES ON *.* TO 'rgruber'@'%';"
sudo service mysql stop
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1e613307e16318854d24ae64f26d17af3ef0bf7cfb710ca74755a') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
mv composer.phar /usr/local/bin/composer
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
source ~/.bashrc
nvm install 12.18.0
npm install -g @vue/cli
# haskell stack
curl -sSL https://get.haskellstack.org/ | sh
source ~/.bashrc
# hie (new vs code extension installs language server itself)
# sudo apt-get -qy install libicu-dev libtinfo-dev libgmp-dev
# (
# mkdir $HOME/haskell-ide-engine
# cd $HOME/haskell-ide-engine
# git clone https://github.com/haskell/haskell-ide-engine --recursive
# cd haskell-ide-engine
# stack install.hs hie
# echo 'export PATH=$PATH:'"$HOME"'/.local/bin' >> "$HOME/.profile"
# )
sudo apt-get -qy install alex
# sagemath
curl -o ~/sage.tar.bz2 http://ftp.rediris.es/mirror/sagemath/linux/64bit/sage-9.1-Ubuntu_18.04-x86_64.tar.bz2
mkdir ~/sage
tar -xjf ~/sage.tar.bz2 -C ~/sage
sudo apt-get -qy install pandoc
addPath "$HOME/sage/SageMath"
# update locate database
sudo updatedb
# After installation run:
# sudo mysql_secure_installation
# sudo mysql -u root -e "ALTER USER 'rgruber'@'%' IDENTIFIED BY '<other password>'"
# After OneDrive synt run:
# sudo updatedb
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment