#!/bin/bash # Headless NVIM=true ZSH=true PROFILE=true TMUX=true # GUI AWESOME=false ALACRITTY=false MPV=false SUDO="sudo" if [[ $(whoami) == "root" ]]; then SUDO="" fi ################################################# # Basic Preparation # ################################################# OS=$(grep -E '^(NAME)=' /etc/os-release ) if [[ -z "${XDG_CONFIG_HOME}" ]]; then mkdir -p "$HOME"/.config XDG_CONFIG_HOME="$HOME"/.config fi if [[ -z "${XDG_DATA_HOME}" ]]; then mkdir -p "$HOME"/.local/share XDG_DATA_HOME="$HOME"/.local/share fi ################################################# # Neovim # ################################################# if $NVIM; then dependencies="neovim git unzip fzf cmake gcc make curl wget ripgrep" if [[ $OS == "NAME=\"Arch Linux\"" ]]; then $SUDO pacman -Sy --needed --noconfirm $dependencies npm go fd dotnet-sdk elif [[ $OS == "NAME=\"Ubuntu\"" ]]; then $SUDO apt update $SUDO apt install -y software-properties-common $SUDO add-apt-repository ppa:neovim-ppa/unstable -y $SUDO curl -sL https://deb.nodesource.com/setup_21.x | $SUDO bash - repo_version=$(if command -v lsb_release &> /dev/null; then lsb_release -r -s; else grep -oP '(?<=^VERSION_ID=).+' /etc/os-release | tr -d '"'; fi) wget https://packages.microsoft.com/config/ubuntu/"$repo_version"/packages-microsoft-prod.deb -O packages-microsoft-prod.deb $SUDO dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb $SUDO apt update $SUDO apt install -y $dependencies python3-venv python3-pip nodejs golang fd-find cargo dotnet-sdk-8.0 fi nvim --headless "+Lazy! sync" +qa nvim --headless "+MasonInstall bash-language-server pyright typescript-language-server rust-analyzer clangd cmake-language-server css-lsp dockerfile-language-server emmet-ls gopls html-lsp jdtls json-lsp ltex-ls lua-language-server ruff-lsp rustfmt rustywind texlab vetur-vls vim-language-server yaml-language-server csharp-language-server typst-lsp" +qa fi ################################################# # ZSH # ################################################# if $ZSH; then PROFILE=true dependencies="fzf zsh curl zoxide fzy" if [[ $OS == "NAME=\"Arch Linux\"" ]]; then $SUDO pacman -Sy --needed --noconfirm $dependencies zsh-autosuggestions echo "Please manually install yay" elif [[ $OS == "NAME=\"Ubuntu\"" ]]; then $SUDO apt update $SUDO apt install -y $dependencies fi mkdir -p "$HOME"/.local/state/zsh/ git clone https://github.com/cxreg/smartcd.git /tmp/smartcd cd /tmp/smartcd || exit make install cd - || exit fi ################################################# # Awesome # ################################################# if $AWESOME; then dependencies="awesome picom numlockx xcape rofi" if [[ $OS == "NAME=\"Arch Linux\"" ]]; then $SUDO pacman -Sy --needed --noconfirm $dependencies network-manager-applet xorg-xmodmap adobe-source-code-pro-fonts noto-fonts ttf-nerd-fonts-symbols elif [[ $OS == "NAME=\"Ubuntu\"" ]]; then $SUDO apt update $SUDO apt install -y $dependencies awesome-extra fi fi ################################################# # Alacritty # ################################################# if $ALACRITTY; then dependencies="alacritty" if [[ $OS == "NAME=\"Arch Linux\"" ]]; then $SUDO pacman -Sy --needed --noconfirm $dependencies elif [[ $OS == "NAME=\"Ubuntu\"" ]]; then $SUDO apt update $SUDO apt install -y software-properties-common $SUDO add-apt-repository ppa:aslatter/ppa -y $SUDO apt update $SUDO apt install -y $dependencies fi fi ################################################# # MPV # ################################################# if $MPV; then dependencies="mpv" if [[ $OS == "NAME=\"Arch Linux\"" ]]; then $SUDO pacman -Sy --needed --noconfirm $dependencies elif [[ $OS == "NAME=\"Ubuntu\"" ]]; then $SUDO apt update $SUDO apt install -y $dependencies fi fi ################################################# # Tmux # ################################################# if $TMUX; then dependencies="tmux git zsh xdg-utils" if [[ $OS == "NAME=\"Arch Linux\"" ]]; then $SUDO pacman -Sy --needed --noconfirm $dependencies git clone https://github.com/tmux-plugins/tpm "$XDG_DATA_HOME"/tmux/plugins/tpm "$XDG_DATA_HOME"/tmux/plugins/tpm/bin/install_plugins elif [[ $OS == "NAME=\"Ubuntu\"" ]]; then $SUDO apt update $SUDO apt install -y $dependencies git clone https://github.com/tmux-plugins/tpm "$HOME"/.tmux/plugins/tpm "$HOME"/.tmux/plugins/tpm/bin/install_plugins fi fi