148 lines
5.0 KiB
Bash
Executable File
148 lines
5.0 KiB
Bash
Executable File
#!/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
|