#!/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 - declare 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 ln -s "$PWD"/nvim "$XDG_CONFIG_HOME"/nvim ln -s "$PWD"/clang/.clang-tidy "$HOME"/.clang-tidy 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" 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 ln -s "$PWD"/zsh "$XDG_CONFIG_HOME"/zsh ln -s "$PWD"/zsh/.zshrc "$HOME"/.zshrc mkdir -p "$HOME"/.local/state/zsh/ git clone https://github.com/cxreg/smartcd.git /tmp/smartcd cd /tmp/smartcd || exit make install ln -s "$XDG_CONFIG_HOME"/zsh/.smartcd_config "$HOME"/.smartcd_config cd - || exit fi ################################################# # Profile # ################################################# if $PROFILE; then rm -rf "$HOME"/.profile && ln -s "$PWD"/profile/.profile "$HOME"/.profile 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 ln -s "$PWD"/awesome "$XDG_CONFIG_HOME"/awesome ln -s "$PWD"/picom/picom.conf "$XDG_CONFIG_HOME"/picom.conf ln -s "$PWD"/xmodmap/.Xmodmap "$XDG_CONFIG_HOME"/.Xmodmap ln -s "$PWD"/rofi "$XDG_CONFIG_HOME"/rofi 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 ln -s "$PWD"/alacritty "$XDG_CONFIG_HOME"/alacritty 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 ln -s "$PWD"/mpv "$XDG_CONFIG_HOME"/mpv fi ################################################# # Tmux # ################################################# if $TMUX; then dependencies="tmux git zsh xdg-utils" if [[ $OS == "NAME=\"Arch Linux\"" ]]; then $SUDO pacman -Sy --needed --noconfirm $dependencies ln -s "$PWD"/tmux "$XDG_CONFIG_HOME"/tmux 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 ln -s "$PWD"/tmux "$HOME"/.tmux ln -s "$PWD"/tmux/tmux.conf "$HOME"/.tmux.conf git clone https://github.com/tmux-plugins/tpm "$HOME"/.tmux/plugins/tpm "$HOME"/.tmux/plugins/tpm/bin/install_plugins fi fi