Skip to content

Instantly share code, notes, and snippets.

@gafda
Last active April 24, 2024 11:24
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 gafda/50e272110100fbbb35dbb742bcab9953 to your computer and use it in GitHub Desktop.
Save gafda/50e272110100fbbb35dbb742bcab9953 to your computer and use it in GitHub Desktop.
WSL2 Startup process
#!/bin/bash
# Install WSL Ubuntu: wsl --install -d Ubuntu-22.04
# Stop WSL Ubuntu: wsl --shutdown Ubuntu-22.04
# Uninstall WSL Ubuntu: wsl --unregister Ubuntu-22.04
# List all WSL images: wsl -l -v
DISTRO=ubuntu2204
architecture=$(uname -m)
# ################################
# Start by updating & preparations
sudo apt-get update
sudo apt-get install -y nala
sudo nala update
sudo nala upgrade -y
sudo nala install -y btop ca-certificates curl gcc neofetch python3-pip python3-venv python-is-python3 unzip wget
mkdir -p ~/workspace/{.poshthemes,.tools,downloads,gh,poc}
touch ~/.my_extras
echo "PATH=\$PATH:~/workspace/.tools/" >> .my_extras
echo "" >> .bashrc
echo "if [ -f ~/.my_extras ]; then" >> .bashrc
echo " . ~/.my_extras" >> .bashrc
echo "fi" >> .bashrc
# ##########
# Oh-my-Posh
cd ~/workspace/downloads
set $TERM=xterm-256color
curl -s https://ohmyposh.dev/install.sh | sudo bash -s
oh-my-posh font install CascadiaCode
oh-my-posh font install CascadiaMono
oh-my-posh enable notice
cd
# Ubuntu-22.04
sudo rsync -a --chown=$USER /root/.cache/oh-my-posh/themes/ ~/workspace/.poshthemes/
echo "# Oh-my-Posh init." >> .my_extras
echo "eval \"\$(oh-my-posh init bash --config \$HOME/workspace/.poshthemes/powerlevel10k_rainbow.omp.json)\"" >> .my_extras
. ~/.bashrc
# ######
# Docker
sudo nala install docker.io docker-compose docker-compose-v2 docker-buildx -y
sudo groupadd docker
sudo usermod -aG docker $USER
# ##########
# LazyDocker
cd ~/workspace/downloads
wget -O lazydocker-installer.sh --show-progress https://raw.githubusercontent.com/jesseduffield/lazydocker/master/scripts/install_update_linux.sh
chmod +x lazydocker-installer.sh
./lazydocker-installer.sh
cd
# ####
# Dive
cd ~/workspace/downloads
DIVE_VERSION=$(curl -sL "https://api.github.com/repos/wagoodman/dive/releases/latest" | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/\1/')
curl -OL https://github.com/wagoodman/dive/releases/download/v${DIVE_VERSION}/dive_${DIVE_VERSION}_linux_amd64.deb
sudo dpkg -i ./dive_${DIVE_VERSION}_linux_amd64.deb
cd
# ########
# Anaconda
# UserInput: ENTER, (scroll), yes, ENTER, ENTER, ENTER
cd ~/workspace/downloads
html=$(curl -s https://repo.anaconda.com/archive/)
files=$(echo "$html" | sed -n 's/.*href="\([^"]*\).*/\1/p' | grep -i "Linux" | grep -i "${architecture}" | grep -i "anaconda3" | sort -rV)
latest=$(echo "$files" | head -n 1)
echo "Found Anaconda : $latest"
wget -O anaconda-installer.sh --show-progress https://repo.anaconda.com/archive/$latest
echo "This may take a few minutes..."
bash anaconda-installer.sh
source ~/anaconda3/bin/activate
conda config --set auto_activate_base false
conda update --all
cd
# ############
# Cuda on WSL2
cd ~/workspace/downloads
sudo apt-key del 7fa2af80
cuda_html=$(curl -s https://developer.nvidia.com/cuda-toolkit-archive)
driver_html=$(curl -s https://developer.download.nvidia.com/compute/cuda/repos/$DISTRO/$architecture/)
cuda_version=$(echo $cuda_html | grep -ioP "CUDA Toolkit \K\d+\.\d+\.\d+" | sort -rV | head -n 1)
driver_version=$(echo $driver_html | grep -ioP "cuda-drivers-\d+_\K[^-]+" | sort -rV | head -n 1)
echo "Found CUDA: $cuda_version"
echo "Found nVidia driver: $driver_version"
wget -O cuda-installer.run --show-progress https://developer.download.nvidia.com/compute/cuda/${cuda_version}/local_installers/cuda_${cuda_version}_${driver_version}_linux.run
chmod +x cuda-installer.run
echo "This may take a few minutes..."
sudo ./cuda-installer.run --toolkit --silent --override
nvidia-smi
cd
# ########################
# nVidia Container toolkit
cd ~/workspace/downloads
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo nala update
sudo nala install -y nvidia-container-toolkit nvtop
sudo nala instal -y nvidia-docker2
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
cd
# ############
# ReUpdate JIC
sudo nala update
sudo nala upgrade -y
sudo nala autoremove
# ###################################
# Shortcuts
echo "" >> ~/.my_extras
echo "# General aliases" >> ~/.my_extras
echo "alias lt='ls --human-readable --size -1 -S --classify'" >> ~/.my_extras
echo "" >> ~/.my_extras
echo "# Copy with progress bar" >> ~/.my_extras
echo "alias cpv='rsync -ah --info=progress2'" >> ~/.my_extras
echo "" >> ~/.my_extras
echo "# Conda aliases" >> ~/.my_extras
echo "alias conda-on='conda activate \"\$(basename \"\$PWD\")\"'" >> ~/.my_extras
echo "alias conda-create='conda create -n \"\$(basename \"\$PWD\")\"'" >> ~/.my_extras
echo "alias conda-destroy='conda deactivate; conda remove --name \"\$(basename \"\$PWD\")\" --all'" >> ~/.my_extras
echo "alias conda-off='conda deactivate'" >> ~/.my_extras
echo "alias update-conda='conda update --all'" >> ~/.my_extras
echo "" >> ~/.my_extras
echo "# Other updates" >> ~/.my_extras
echo "alias update-ohmyposh='curl -s https://ohmyposh.dev/install.sh | sudo bash -s && sudo rsync -a --chown=\$USER /root/.cache/oh-my-posh/themes/ ~/workspace/.poshthemes/'" >> ~/.my_extras
echo "alias update='sudo nala update && sudo nala upgrade -y && sudo nala autoremove'" >> ~/.my_extras
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment