#!/usr/bin/env bash ##makedesc: Install nvim + lazyvim set -eo pipefail # https://www.lazyvim.org/installation # https://www.devas.life/effective-neovim-setup-for-web-development-towards-2024/ # TODO https://github.com/rockerBOO/awesome-neovim # TODO https://docs.astronvim.com url="https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.tar.gz" downloadPath="$HOME/install" downloadTarGz="$downloadPath/nvim.tar.gz" installPath="/opt/nvim" cfgPath="$HOME/.config/nvim" nvimDataPaths=( "$cfgPath" "$HOME"/.local/share/nvim "$HOME"/.local/state/nvim "$HOME"/.cache/nvim ) backup() { echo "Backup configuration files..." t=$(date +'%s') for path in "${nvimDataPaths[@]}"; do [[ -d "$path" ]] && cp -v "$path" "$path-$t.bak" done echo "Done" } install() { echo echo "===============================================" echo "Installing neovim" echo "===============================================" echo backup wget "$url" -O "$downloadTarGz" tar -xzf "$downloadTarGz" -C "$downloadPath" sudo rm -rf "$installPath" sudo mv "$downloadPath/nvim-linux-x86_64" "$installPath" git clone --depth=1 --single-branch https://github.com/LazyVim/starter "$cfgPath" rm -rf "$cfgPath/.git" sudo update-desktop-database xdg-desktop-menu forceupdate echo echo "Finish!" nvim -v echo } remove() { echo echo "===============================================" echo "Removing nerd-fonts" echo "===============================================" echo find "$downloadPath" -type d -name "Nerd-*" -exec rm -rf {} + fc-cache -vf "$downloadPath" echo echo "Finish!" echo } case "$1" in b|backup) backup ;; r|remove|d|delete|p|purge) remove ;; *) install ;; esac # export PATH="$PATH:/opt/nvim-linux-x86_64/bin"