diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..856a485 --- /dev/null +++ b/install.sh @@ -0,0 +1,149 @@ +#!/bin/bash + +# Headless +NVIM=true +ZSH=true +PROFILE=true +TMUX=true + +# GUI +AWESOME=false +ALACRITTY=false +MPV=false + + +################################################# +# 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 npm unzip fzf cmake gcc make curl wget" + if [[ $OS == "NAME=\"Arch Linux\"" ]]; then + pacman -Sy --noconfirm $dependencies + elif [[ $OS == "NAME=\"Ubuntu\"" ]]; then + apt update + apt install -y software-properties-common + add-apt-repository ppa:neovim-ppa/unstable -y + apt update + apt install -y $dependencies + fi + + ln -s $PWD/nvim $XDG_CONFIG_HOME/nvim + ln -s $PWD/clang/.clang-tidy $HOME/.clang-tidy + git clone --depth 1 https://github.com/wbthomason/packer.nvim $XDG_DATA_HOME/nvim/site/pack/packer/start/packer.nvim + nvim --headless -c 'autocmd User PackerComplete quitall' -c 'PackerSync' +fi + +################################################# +# ZSH # +################################################# +if $ZSH; then + PROFILE=true + dependencies="fzf zsh curl" + if [[ $OS == "NAME=\"Arch Linux\"" ]]; then + pacman -Sy --noconfirm $dependencies + echo "Please manually install yay and autojump-rs" + elif [[ $OS == "NAME=\"Ubuntu\"" ]]; then + apt update + apt install -y $dependencies autojump + fi + + ln -s $PWD/zsh $XDG_CONFIG_HOME/zsh + ln -s $PWD/zsh/.zshrc $HOME/.zshrc + mkdir -p $HOME/.local/state/zsh/ + + curl -L http://smartcd.org/install | bash +fi + +################################################# +# Profile # +################################################# +if $PROFILE; then + rm -rf $HOME/.profile && ln -s $PWD/profile/.profile $HOME/.profile +fi + +################################################# +# Awesome # +################################################# + +if $AWESOME; then + dependencies="awesome picom xbindkeys numlockx xcape" + if [[ $OS == "NAME=\"Arch Linux\"" ]]; then + pacman -Sy --noconfirm $dependencies network-manager-applet + elif [[ $OS == "NAME=\"Ubuntu\"" ]]; then + apt update + 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/picom/picom.conf $XDG_CONFIG_HOME/picom.conf +fi + +################################################# +# Alacritty # +################################################# + +if $ALACRITTY; then + dependencies="alacritty" + if [[ $OS == "NAME=\"Arch Linux\"" ]]; then + pacman -Sy --noconfirm $dependencies + elif [[ $OS == "NAME=\"Ubuntu\"" ]]; then + apt update + apt install -y software-properties-common + add-apt-repository ppa:aslatter/ppa -y + apt update + 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 + pacman -Sy --noconfirm $dependencies + elif [[ $OS == "NAME=\"Ubuntu\"" ]]; then + apt update + 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 + pacman -Sy --noconfirm $dependencies + elif [[ $OS == "NAME=\"Ubuntu\"" ]]; then + apt update + apt install -y $dependencies + fi + + 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