Last active
April 24, 2024 11:24
-
-
Save gafda/50e272110100fbbb35dbb742bcab9953 to your computer and use it in GitHub Desktop.
WSL2 Startup process
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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