5303a7077a
This feature should make initial setup a /little/ faster. If the user accepts the install prompt, the approiate install script for the current distro will be downloaded and ran. Assumes the user has sudo access and has read the script contents beforehand.
125 lines
3.8 KiB
Bash
Executable File
125 lines
3.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# This ensures that the entire script is downloaded before execution
|
|
{
|
|
|
|
# Change this url to point to your repo if you made customizations
|
|
repourl="git://github.com/alopexc0de/dotfiles.git"
|
|
|
|
# Exit the script if any errors are encountered
|
|
#set -e
|
|
|
|
basedir=$HOME/dotfiles
|
|
bindir=$HOME/bin
|
|
postinst=$HOME/.dotfiles.postinst
|
|
|
|
# Attempts to safely install the configs as symlinks (backing up existing ones)
|
|
function symlink() {
|
|
src=$1
|
|
dest=$2
|
|
|
|
if [ -e $dest ]; then
|
|
if [ -L $dest ]; then
|
|
# Already symlinked -- I'll assume correctly.
|
|
return
|
|
else
|
|
# Rename files with a ".old" extension.
|
|
echo "$dest already exists, renaming to $dest.old"
|
|
backup=$dest.old
|
|
if [ -e $backup ]; then
|
|
echo "Error: $backup already exists. Please delete or rename it."
|
|
exit 1
|
|
fi
|
|
mv -v $dest $backup
|
|
fi
|
|
fi
|
|
echo "Linking $(basename $src)..."
|
|
ln -sf $src $dest
|
|
}
|
|
|
|
read -p "Press enter to install my dotfiles " WAIT_FOR_INPUT
|
|
|
|
echo "[Dotfiles] Would you like to detect distro and auto-install dependencies? [Y/n]: \c"
|
|
read line
|
|
if [[ "$line" == Y* ]] || [[ "$line" == y* ]] || [ -z "$line" ]; then
|
|
distrourl="https://raw.githubusercontent.com/alopexc0de/dotfiles/master/.bin"
|
|
if [ -f /etc/arch-release ]; then
|
|
bash <(curl -sL $distrourl/install.deb)
|
|
elif [ -f /etc/debian_version]; then
|
|
bash <(curl -sL $distrourl/install.arch)
|
|
else
|
|
echo "This system does not have an auto-install file. Please install the following packages manually"
|
|
echo "- tmux zsh vim git"
|
|
echo "- terminator rofi feh xcompmgr"
|
|
echo "- i3lock-fancy i3blocks"
|
|
fi
|
|
fi
|
|
|
|
if ! which git >>/dev/null ; then
|
|
echo "Error: git is not installed"
|
|
exit 1
|
|
fi
|
|
|
|
# If the update script exists, try to do a normal update
|
|
if [ -x "$basedir/.bin/check_for_upgrade.sh" ]; then
|
|
source "$basedir/shell/env"
|
|
env _DOTFILES=$basedir DISABLE_UPDATE_PROMPT='FALSE' zsh -f $basedir/.bin/check_for_upgrade.sh
|
|
else
|
|
echo "Cloning dotfiles to $basedir"
|
|
rm -rf $basedir
|
|
git clone --depth=1 $repourl $basedir
|
|
fi
|
|
|
|
# Start installing config
|
|
|
|
echo "Installing Oh-My-ZSH"
|
|
echo "When the install is done, type `exit` to continue installing dotfiles"
|
|
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
|
|
|
|
echo "Creating Symlinks..."
|
|
symlink $basedir/shell/zshrc $HOME/.zshrc
|
|
symlink $basedir/shell/bashrc $HOME/.bashrc
|
|
symlink $basedir/home/tmux.conf $HOME/.tmux.conf
|
|
symlink $basedir/home/vimrc $HOME/.vimrc
|
|
symlink $basedir/home/gitconfig $HOME/.gitconfig
|
|
symlink $basedir/home/Xresources $HOME/.Xresources
|
|
|
|
echo "Installing VIM Pathogen..."
|
|
mkdir -p $HOME/.vim/autoload $HOME/.vim/bundle
|
|
curl -LSso $HOME/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim
|
|
|
|
echo "Installing VIM Sensible..."
|
|
cd $HOME/.vim/bundle
|
|
git clone git://github.com/tpope/vim-sensible.git
|
|
|
|
echo "Adding user bin..."
|
|
mkdir -p $bindir $basedir/.bin
|
|
for path in bin/* ; do
|
|
symlink $basedir/$path $bindir/$(basename $path)
|
|
done
|
|
|
|
echo "Changing default shell to ZSH..."
|
|
chsh -s /usr/bin/zsh
|
|
|
|
# Install i3 config
|
|
echo "Installing i3 configuration"
|
|
mkdir -p $HOME/.config/i3
|
|
mkdir -p $HOME/.i3
|
|
symlink $basedir/i3/config $HOME/.config/i3/config
|
|
symlink $basedir/i3/i3blocks.conf $HOME/.i3/i3blocks.conf
|
|
symlink $basedir/i3/wallpaper.sh $Home/.i3/wallpaper.sh
|
|
symlink $basedir/i3/compton.conf $HOME/.compton.conf
|
|
|
|
if [ -e "$postinst" ]; then
|
|
echo "Running post install..."
|
|
source "$postinst"
|
|
else
|
|
echo "No post install script found. Optionally create one at $postinst and reinstall your dotfies"
|
|
fi
|
|
|
|
echo "Install done."
|
|
echo "Check tmux, vim, and your shell to verify everything is correct"
|
|
echo "you may need to launch a new instance of your shell"
|
|
|
|
} # Ensures that the whole script is downloaded before execution
|