#!/bin/bash set -e #set -u #set -x if [[ -f "${HOME}"/.zshrc ]]; then mv "${HOME}"/.zshrc "${HOME}"/.zshrc.bak fi if [[ -f "${HOME}"/.zhistory ]]; then mv "${HOME}"/.zhistory "${HOME}"/.zhistory.bak fi if [[ -f "${HOME}"/.zsh_history ]]; then mv "${HOME}"/.zsh_history "${HOME}"/.zsh_history.bak fi if [[ -d "${HOME}"/.oh-my-zsh ]]; then mv "${HOME}"/.oh-my-zsh "${HOME}"/.oh-my-zsh.bak fi if [[ -d "${HOME}"/.zinit ]]; then mv "${HOME}"/.zinit "${HOME}"/.zinit.bak fi if [[ $(grep -E '^ID=' /etc/os-release) == 'ID=ubuntu' ]]; then platform='ubuntu' elif [[ $(grep -E '^ID=' /etc/os-release) == 'ID="centos"' ]]; then platform='centos' elif [[ $(grep -E '^ID=' /etc/os-release) == 'ID=clear-linux-os' ]]; then platform='clearlinux' elif [[ $(uname -s) == 'Darwin' ]]; then platform='osx' fi # Get operating system if [[ $platform == 'ubuntu' ]]; then DEBIAN_FRONTEND=noninteractive export DEBIAN_FRONTEND=noninteractive INSTALL_GOENV=false INSTALL_PYENV=false INSTALL_NVM=false INSTALL_DOCKER=false echo "What do you want to install?" echo "1) goenv" echo "2) pyenv" echo "3) nvm" echo "4) docker" echo "5) all" echo "6) none" while true; do printf "Pick one [1-6]: " > /dev/tty read -r package_choice < /dev/tty case "$package_choice" in 1) INSTALL_GOENV=true echo "Selected: goenv" break ;; 2) INSTALL_PYENV=true echo "Selected: pyenv" break ;; 3) INSTALL_NVM=true echo "Selected: nvm" break ;; 4) INSTALL_DOCKER=true echo "Selected: docker" break ;; 5) INSTALL_GOENV=true INSTALL_PYENV=true INSTALL_NVM=true INSTALL_DOCKER=true echo "Selected: all optional packages" break ;; 6) echo "Selected: none" break ;; *) echo "Invalid selection. Pick 1-6." ;; esac done sudo NEEDRESTART_MODE=a DEBIAN_FRONTEND=noninteractive apt-get update --fix-missing -qq sudo NEEDRESTART_MODE=a DEBIAN_FRONTEND=noninteractive apt-get upgrade -y -qq echo "Installing basic packages..." sudo NEEDRESTART_MODE=a DEBIAN_FRONTEND=noninteractive apt-get install -y -qq aptitude ca-certificates curl git gnupg libssl-dev liblzma-dev lzma lzma-dev libbz2-dev libreadline-dev libsqlite3-dev libffi-dev zsh boxes fortune glances linuxlogo lolcat toilet toilet-fonts xcowsay if command -v make >/dev/null 2>&1; then echo "make is already installed. skipping..." else echo "Installing make..." sudo apt-get install -y -qq make fi if [[ "$INSTALL_GOENV" == true ]]; then if [[ ! -d "${HOME}"/.goenv ]]; then echo "Downloading goenv..." git clone https://github.com/syndbg/goenv.git "${HOME}"/.goenv else echo "goenv directory already exists. skipping..." fi fi if [[ "$INSTALL_PYENV" == true ]]; then if [[ ! -d "${HOME}"/.pyenv ]]; then echo "Downloading pyenv..." curl https://pyenv.run | bash else echo "pyenv directory already exists. skipping..." fi fi if [[ "$INSTALL_NVM" == true ]]; then if [[ ! -d "${HOME}"/.nvm ]]; then echo "Downloading nvm..." curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash else echo "nvm directory already exists. skipping..." fi fi if [[ "$INSTALL_DOCKER" == true ]]; then if command -v docker >/dev/null 2>&1; then echo "docker is already installed. skipping..." else echo "Installing docker..." sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update -qq #apt-cache policy docker-ce sudo apt-get install -y -qq docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin fi fi sudo chsh -s /bin/zsh fi if [[ $platform == 'clearlinux' ]]; then sudo swupd bundle-add git zsh go-basic git clone https://github.com/syndbg/goenv.git ~/.goenv fi if [[ $platform == 'osx' ]]; then if [[ ! -d /opt/homebrew ]]; then /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" fi fi #curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh | bash if [[ ! -f "${HOME}"/.aliases.zsh ]]; then echo "Downloading aliases..." curl -fsSL https://gist.githubusercontent.com/ericbaranowski/04cc4b1e625686449bac4756f33b930c/raw/aliases.zsh > "${HOME}"/.aliases.zsh fi # Default settings ZSH=${ZSH:-~/.oh-my-zsh} REPO=${REPO:-ohmyzsh/ohmyzsh} REMOTE=${REMOTE:-https://github.com/${REPO}.git} BRANCH=${BRANCH:-master} echo "Installing ohmyzsh..." curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh | CHSH=yes RUNZSH=no KEEP_ZSHRC=yes sh echo "Downloading zsh plugins..." git clone https://github.com/zsh-users/zsh-autosuggestions.git "${ZSH}"/plugins/zsh-autosuggestions git clone https://github.com/zsh-users/zsh-syntax-highlighting.git "${ZSH}"/plugins/zsh-syntax-highlighting git clone https://github.com/rutchkiwi/copyzshell.git "${ZSH}"/custom/plugins/copyzshell #sed -i -e 's/git/git copyzshell zsh-autosuggestions zsh-syntax-highlighting/g' ~/.zshrc #sed -i -e 's/^ZSH_THEME.*/ZSH_THEME=random/g' ~/.zshrc #sed -i -e 's/^# ZSH_THEME_RANDOM_CANDIDATES.*/ZSH_THEME_RANDOM_CANDIDATES=( "amuse" "aussiegeek" "avit" "bira" "candy" "crcandy" "darkblood" "dst" "dstufft" "duellj" "fino-time" "fino" "fox" "frisk" "frontcube" "funky" "gnzh" "intheloop" "itchy" "jispwoso" "jonathan" "josh" "jtriley" "juanghurtado" "junkfood" "kphoen" "linuxonly" "mortalscumbag" "murilasso" "peepcode" "pmcgee" "re5et" "refined" "rgm" "rixius" "rkj-repos" "simonoff" "smt" "Soliah" "sporty_256" "steeef" "strug" "suvash" "takashiyoshida" "tjkirch" "xiong-chiamiov" "xiong-chiamiov-plus" "ys" )/g' ~/.zshrc #sed -i -e 's/^ZSH_THEME.*/ZSH_THEME="xiong-chiamiov-plus"/g' ~/.zshrc #mkdir "${HOME}"/.zinit #git clone https://github.com/zdharma/zinit.git "${HOME}"/.zinit/bin echo "Installing zinit..." bash -c "$(curl --fail --show-error --silent --location https://raw.githubusercontent.com/zdharma-continuum/zinit/HEAD/scripts/install.sh)" if [[ -f "${HOME}"/.zshrc ]]; then echo "Backing up existing .zshrc to .zshrc.bak..." mv "${HOME}"/.zshrc "${HOME}"/.zshrc.bak fi echo "Downloading zshrc..." curl -fsSL https://gist.githubusercontent.com/ericbaranowski/04cc4b1e625686449bac4756f33b930c/raw/zshrc > "${HOME}"/.zshrc #curl -fsSL https://gist.githubusercontent.com/ericbaranowski/04cc4b1e625686449bac4756f33b930c/raw/ab.sh > /tmp/ab.sh #sudo chmod +x /tmp/ab.sh #linuxlogo -logo -a | toilet -f term | lolcat #echo '' #echo 'LOG BACK IN AND RUN:' #echo '/tmp/ab.sh' echo "FINISHED!" #echo "\nREBOOTING..." #sudo reboot # echo '' >> "${HOME}"/.zshrc # echo '#source "${HOME}"/.aliases.zsh' >> "${HOME}"/.zshrc # echo '' >> "${HOME}"/.zshrc # echo '#export PATH="$JAVA_HOME/bin:$PATH"' >> "${HOME}"/.zshrc # echo '#export PATH=""${HOME}"/.cargo/bin:$PATH"' >> "${HOME}"/.zshrc # echo '#export PATH=""${HOME}"/.yarn/bin:"${HOME}"/.config/yarn/global/node_modules/.bin:$PATH"' >> "${HOME}"/.zshrc # echo '#export PATH=""${HOME}"/.nvm/versions/node/v*/bin:$PATH"' >> "${HOME}"/.zshrc # echo '#export GOROOT="/usr/share/go"' >> "${HOME}"/.zshrc # echo '#export GOPATH=""${HOME}"/go"' >> "${HOME}"/.zshrc # echo '#export PATH=$GOPATH/bin:$PATH' >> "${HOME}"/.zshrc # echo '#export PATH="$GOPATH/bin:$PATH"' >> "${HOME}"/.zshrc # echo '#export GOENV_ROOT=""${HOME}"/.goenv"' >> "${HOME}"/.zshrc # echo '#export PATH="$GOENV_ROOT/bin:$PATH"' >> "${HOME}"/.zshrc # echo '#eval "$(goenv init -)"' >> "${HOME}"/.zshrc # echo '#export PATH="$GOROOT/bin:$PATH"' >> "${HOME}"/.zshrc # echo '#export PATH="$PATH:$GOPATH/bin"' >> "${HOME}"/.zshrc # echo '#export GOBIN="$GOPATH/bin"' >> "${HOME}"/.zshrc # echo '' >> "${HOME}"/.zshrc # echo 'export PYENV_ROOT=""${HOME}"/.pyenv"' >> "${HOME}"/.zshrc # echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> "${HOME}"/.zshrc # echo 'eval "$(pyenv init -)"' >> "${HOME}"/.zshrc # echo "TZ='America/New_York'; export TZ" >> "${HOME}"/.zprofile # echo 'To install ccat, run:' # echo 'go install -v github.com/owenthereal/ccat@latest'