dotfiles/common/configure_fresh_system.sh

210 lines
4.8 KiB
Bash
Executable File

#!/bin/bash
SUDO=""
if [[ -z $NOSUDO ]]; then
SUDO="sudo"
fi
echo "using '$SUDO' as sudo"
set -e
echo
echo "configuring settings common among OSes"
$SUDO true
#zsh
if [[ -z $DONT_CHANGE_SHELL ]]; then
echo "changing shell to zsh"
chsh -s `which zsh` $USER
fi
CURL="curl -sSfL"
jobs_count=`nproc`
if [[ -z $DIR ]]; then
echo "please set DIR"
exit 1
fi
DIR=`realpath $DIR`
echo "using $DIR as the top level directory"
cd $DIR
git submodule update --init --recursive
#configs
ln -vfs "$DIR/.vim" ~/.
ln -vfs "$DIR/.vimrc.linux" ~/.vimrc
ln -vfs "$DIR/.tmux.conf" ~/.
rm -f "~/.zshrc"
ln -vfs "$DIR/.zprezto" ~/.
ln -vfs "$DIR/.zpreztorc" ~/.zpreztorc
ln -vfs "$DIR/.zprofile" ~/.zprofile
ln -vfs "$DIR/.zprezto/runcoms/zshenv" ~/.zshenv
ln -vfs "$DIR/.zshrc" ~/.zshrc
ln -vfs "$DIR/.setenv.sh" ~/.setenv
ln -vfs "$DIR/.Slic3r" ~/.
ln -vfs "$DIR/.ghci" ~/.
ln -vfs "$DIR/.conkyrc" ~/.
mkdir -p ~/.kde/share/config/
ln -vfs "$DIR/.kdiff3rc" ~/.kde/share/config/kdiff3rc
ln -vfs "$DIR/.gitconfig.linux.private" ~/.gitconfig
mkdir -p ~/.config/autostart/
# autostart apps
ln -vfs "$DIR/.config/autostart/redshift-gtk.desktop" ~/.config/autostart/
mkdir -p ~/.config/vdirsyncer/
ln -vfs "$DIR/.config/vdirsyncer/config" ~/.config/vdirsyncer/
ln -vfs "$DIR/.config/redshift.conf" ~/.config/redshift.conf
mkdir -p ~/.config/Code/User
ln -vfs "$DIR/.config/Code/User/settings.json" ~/.config/Code/User/settings.json
source ~/.setenv
# symlink 'nodejs' as node on some systems
# will replace symlink if it exists, but won't replace regular file
if [[ ! -f /usr/bin/node ]]; then
$SUDO ln -vfs /usr/bin/nodejs /usr/bin/node
fi
# tools
ln -vfs "$DIR/tools" ~/
# stuff that does not like symbolic links
mkdir -vp ~/.config/terminator
rm -f ~/.config/terminator/config
ln "$DIR/.config/terminator/config" ~/.config/terminator/config
#install fonts
mkdir -p ~/.fonts
cp -rv "$DIR/fonts" ~/.fonts
set +e
fc-cache -rv
$SUDO fc-cache -rv
set -e
if [[ -z $NORUST ]]; then
#rust
echo "installing rust"
RUSTUP_TEMP="/tmp/blastoff.sh"
$CURL https://sh.rustup.rs > "$RUSTUP_TEMP"
chmod a+x "$RUSTUP_TEMP"
"$RUSTUP_TEMP" -y
rm -f "$RUSTUP_TEMP"
rustup update
rustup default stable
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
cd "$DIR/../"
echo "getting rust sources..."
if [[ ! -d rust ]]; then
git clone https://github.com/rust-lang/rust.git --recursive
else
cd rust
git pull
git submodule update --init --recursive
fi
set +e
cargo install rustfmt
cargo install racer
cargo install rustsym
cargo install ripgrep
set -e
fi
set +e
echo "Querying for gpg2 path"
gpg2_path=`which gpg2`
echo "Got $gpg2_path for gpg2 path"
set -e
if [[ -x "$gpg2_path" ]]; then
echo "Using gpg2"
GPG=gpg2
else
echo "WARNING using gpg instead of gpg2"
GPG=gpg
fi
if [[ -z $NORUBY ]]; then
set +e
$GPG --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
set -e
$GPG --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
echo "Downloading RVM..."
$CURL https://get.rvm.io | bash
set +e
echo "Sourcing RVM..."
source /usr/local/rvm/scripts/rvm
source ~/.rvm/scripts/rvm
set -e
echo "Installing Ruby..."
rvm install 2.3.1 --disable-binary
fi
if [[ -z $NOVIM ]]; then
if [[ ! -d ~/.fzf ]]; then
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
else
cd ~/.fzf
git pull
git submodule update --init --recursive
fi
echo "Installing fzf"
~/.fzf/install --64 --all
echo "Installing Vim plugins"
echo "\n" | vim +PluginInstall +qa
if [[ -z $NOYCM ]]; then
echo "configuring YouCompleteMe"
cd ~/.vim/bundle/YouCompleteMe
if [[ -z $NOPYTHON3 ]]; then
python3 ./install.py --clang-completer --racer-completer --tern-completer
else
python ./install.py --clang-completer --racer-completer --tern-completer
fi
fi
fi
if [[ -z $NO_GO ]]; then
export GOPATH="$HOME/go"
mkdir -p "$GOPATH"
# excercism
go get -u github.com/exercism/cli/exercism
fi
echo "Installing Reveal-md"
# talks: reveal-md
$SUDO npm install -g reveal-md
echo "Installing fancy differ"
$SUDO npm install -g diff-so-fancy
if [[ -z $NOPYTHON3 ]]; then
set +e
pip3_path=`which pip3`
set -e
echo "pip3 path is $pip3_path"
if [[ -x "$pip3_path" ]]; then
echo "Choosing pip3 for pip"
PIP=pip3
else
echo "Choosing pip"
PIP=pip
fi
echo "Installing Nikola"
$SUDO $PIP install pygments-style-solarized ws4py watchdog webassets Nikola
fi
if [[ -z $USER ]]; then
USER=`whoami`
fi
# normalize npm permissions
mkdir -p $HOME/.npm
$SUDO chown $USER $HOME/.npm -R
echo
echo "now go ahead and restart"
echo