diff --git a/brethil_dotfile.sh b/brethil_dotfile.sh index 7531f72..0933565 100755 --- a/brethil_dotfile.sh +++ b/brethil_dotfile.sh @@ -2,29 +2,26 @@ env ZSH=$ZSH DISABLE_UPDATE_PROMPT=$DISABLE_UPDATE_PROMPT DOTFILES=$DOTFILES zsh -f $DOTFILES/check_for_update.sh # oh-my-zsh plugins (some of these have to be installed by running install.sh or install_zsh_plugins, found in install.sh) -shared_plugins=(git alias-tips sudo common-aliases fast-syntax-highlighting zsh-autosuggestions colored-man-pages zsh-navigation-tools zsh_reload themes ) +shared_plugins=(git alias-tips sudo common-aliases fast-syntax-highlighting zsh-autosuggestions colored-man-pages zsh-navigation-tools zsh_reload themes) uname=$(uname -a) if [[ $uname == *"Darwin"* ]]; then - if [[ $(which brew) ]]; then - os_extra=(osx brew) - elif [[ $(which port) ]]; then + if [[ $(which port) ]]; then os_extra=(osx macports) else os_extra=(osx) fi elif [[ $uname == *"ARCH"* ]]; then - os_extra=(archlinux) + os_extra=(archlinux systemd) elif [[ $uname == *"Debian"* ]]; then os_extra=(debian) fi - # https://www.xkcd.com/378/ export EDITOR="vim" - + plugins=($shared_plugins $os_extra) - + alias esource="$EDITOR $HOME/.zshrc" alias resource="source $HOME/.zshrc" alias dotedit="$EDITOR $DOTFILES/brethil_dotfile.sh" @@ -39,9 +36,8 @@ colors_file=$DOTFILES/colors.sh # Colors definitions # Source extras if [ -f $functions_file ]; then source $functions_file; else echo "[brethil-dotfiles] Couldn't load functions: $functions_file"; fi -if [ -f $aliases_file ]; then source $aliases_file; else echo "[brethil-dotfiles] Couldn't load aliases: $aliases_file"; fi +if [ -f $aliases_file ]; then source $aliases_file; else echo "[brethil-dotfiles] Couldn't load aliases: $aliases_file"; fi if [ -f $colors_file ]; then source $colors_file; else echo "[brethil-dotfiles] Couldn't load colors: $colors_file";fi ### SETUP PATHS #### export PATH=$PATH:$HOME/bin -#export PYTHONPATH=$PYTHONPATH:$HOME/python/:$HOME/bin \ No newline at end of file diff --git a/functions.sh b/functions.sh index 99a6023..e049f69 100755 --- a/functions.sh +++ b/functions.sh @@ -5,17 +5,17 @@ function dotfiles_selfupdate { # Pull dotfiles - (cd $DOTFILES; git pull) + (cd $DOTFILES; git pull --rebase) WD=$PWD # Update all git repos in $ZSH/custom/plugins - cd $ZSH/custom/plugins - for folder in $(ls); do + cd "$ZSH/custom/plugins" + for folder in *; do if [[ -f "$folder/.git" ]]; then (cd $folder; git pull) fi done # go back to previous working directory - cd $WD + cd "$WD" } ## get cheat sheets for commands from cheat.sh. Usage: cheat commandname @@ -198,12 +198,6 @@ function ramdisk echo " $ diskutil eject $mydev" } -## Anybar support https://github.com/tonsky/AnyBar -function anybar -{ - echo -n $1 | nc -4u -w0 localhost ${2:-1738}; -} - ## Open a pdf version of the man in Preview function man2pdf { @@ -221,7 +215,7 @@ function nman } fi # end of mac-specific functions -# Force update git repo from origin/master# Force update git repo from origin/master# Force update git repo from origin/master +# Force update git repo from origin/master function gitupdate(){ git fetch --all git reset --hard origin/master @@ -233,6 +227,7 @@ function pipupdate(){ done } +# dotfiles user functions if [[ -f ~/.dotfiles_functions ]]; then source ~/.dotfiles_functions fi diff --git a/install.sh b/install.sh index 4c8805e..db497e8 100755 --- a/install.sh +++ b/install.sh @@ -10,6 +10,13 @@ echo -e "\n\n# brethil's dotfiles:" >> $ZSHTMP echo "DOTFILES=$DOTFILES" >> $ZSHTMP echo "source \$DOTFILES/brethil_dotfile.sh" >> $ZSHTMP echo -e "# End of brethil's dotfiles\n\n" + +function setup_git { + # set up some git stuff + git config --global pull.ff only + git config --global merge.ff only +} + function install_rmate { # Install python version of the textmate rmate remote (from github) if [[ $(whoami) == "root" ]]; then @@ -19,7 +26,7 @@ function install_rmate { fi if [[ -f $destpath/rmate ]]; then echo "rmate already exists: not installed" - return -1 + return 1 else curl -sL https://raw.githubusercontent.com/sclukey/rmate-python/master/bin/rmate > $destpath/rmate chmod a+x $destpath/rmate @@ -31,18 +38,19 @@ function install_rmate { function install_vimrc { # Install vimrc from github.com/amix/vimrc - git clone https://github.com/amix/vimrc.git $HOME/.vim_runtime && sh $HOME/.vim_runtime/install_awesome_vimrc.sh || return -1 + git clone "https://github.com/amix/vimrc.git" "$HOME/.vim_runtime" && sh "$HOME/.vim_runtime/install_awesome_vimrc.sh" || return 1 } function install_zsh_plugins { - # Install fast-syntax-highlighting (git: zdharma), zsh-autosuggestions (git:zsh-users) + # Install fast-syntax-highlighting (git: zdharma), zsh-autosuggestions (git:zsh-users), alias-tips ZSH_PLUGINS="$HOME/.oh-my-zsh/custom/plugins" - mkdir -p $ZSH_PLUGINS - git clone https://github.com/zdharma/fast-syntax-highlighting.git ${ZSH_PLUGINS}/fast-syntax-highlighting || error=true - git clone git://github.com/zsh-users/zsh-autosuggestions ${ZSH_PLUGINS}/zsh-autosuggestions || error=true + mkdir -p "$ZSH_PLUGINS" + git clone https://github.com/zdharma/fast-syntax-highlighting.git "${ZSH_PLUGINS}/fast-syntax-highlighting" || error=true + git clone https://github.com/zsh-users/zsh-autosuggestions "${ZSH_PLUGINS}/zsh-autosuggestions" || error=true + git clone https://github.com/djui/alias-tips.git "${ZSH_PLUGINS}/alias-tips" || error=true if [[ $error ]]; then - return -1 + return 1 else return 0 fi @@ -53,54 +61,57 @@ function install_zsh_plugins { # - Keep connections alive (avoid timeout disconnections) function create_ssh_config { echo "# Configuring ssh..." - + ssh_config="$HOME/.ssh/config" - + if [ ! -f $HOME/.ssh/id_rsa ]; then echo "Creating ssh key (4096bit)..." - + echo "Enter ssh-key comment (leave empty for default: user@host)" read comment if [[ $comment ]]; then - ssh-keygen -t rsa -b 4096 -C $comment + ssh-keygen -t rsa -b 4096 -C $comment else ssh-keygen -t rsa -b 4096 fi # fix permissions chmod 0700 "$HOME/.ssh" fi - + if [[ -f $ssh_config ]]; then until [[ $modifyssh == "y" || $modifyssh == "n" ]]; do echo "Do you want to modify the existing ssh config? (New values will be appended) (y/n)" read modifyssh - done + done fi - + + exec 3>&1 # save stdout file descriptor + exec 1>$ssh_config # redirect everything below to the $ssh_config file if [[ "$modifyssh" != "n" ]] - then - echo "# brethil's dotfiles setup start" >> $ssh_config - echo 'TCPKeepAlive=yes' >> $ssh_config - echo 'ServerAliveCountMax=6' >> $ssh_config - - echo "## Uncomment to enable compression for all ssh sessions" >> $ssh_config - echo '#Compression=yes' >> $ssh_config - - echo '## Uncomment the following to enable ssh ControlMaster and ssh session persistence' >> $ssh_config - echo '#ControlMaster auto' >> $ssh_config - echo '#ControlPath /tmp/%r@%h:%p' >> $ssh_config - echo '#ControlPersist yes' >> $ssh_config - echo 'Host *' >> $ssh_config - echo 'ServerAliveInterval 300' >> $ssh_config - echo '## Enable the following if you want to use the rmate textmate remote' >> $ssh_config - echo "#Host *" >> $ssh_config - echo "#RemoteForward 52698 localhost:52698" >> $ssh_config - echo '## Enable the following if you want to use a reverse ssh tunnel to use mecp command on remote hosts' >> $ssh_config - echo "Host *" >> $ssh_config - echo "Remoteforward 2222 localhost:22" >> $ssh_config - echo '# end of brethil dotfiles setup #' >> $ssh_config - - echo ".ssh/ssh_config configured check it to enable custom options:" + then + echo "# brethil's dotfiles setup start" + echo 'TCPKeepAlive=yes' + echo 'ServerAliveCountMax=6' + + echo "## Uncomment to enable compression for all ssh sessions" + echo '#Compression=yes' + + echo '## Uncomment the following to enable ssh ControlMaster and ssh session persistence' + echo '#ControlMaster auto' + echo '#ControlPath /tmp/%r@%h:%p' + echo '#ControlPersist yes' + echo 'Host *' + echo 'ServerAliveInterval 300' + echo '## Enable the following if you want to use the rmate textmate remote' + echo "#Host *" + echo "#RemoteForward 52698 localhost:52698" + echo '## Enable the following if you want to use a reverse ssh tunnel to use mecp command on remote hosts' + echo "Host *" + echo "Remoteforward 2222 localhost:22" + echo '# end of brethil dotfiles setup #' + + exec 1>&3 # restore stdout + echo ".ssh/ssh_config configured. Edit it to enable custom options:" echo "- Compression" echo "- Remote forwarding port 52698->52698 (Textmate rmate remote)" echo "- Remote forwarding remote:2222->localhost:22 (mecp)" @@ -126,15 +137,15 @@ function brethil_dotfiles_setup { # mtr: mytraceroute, traceroute tool # pv: pipe view, monitor the progress of data through a pipe # byobu: tmux wrapper - packages="zsh git grc ccze bmon mtr pv tmux byobu" - + packages="zsh git grc ccze bmon mtr pv tmux byobu htop" + # Check if running as root, if try using sudo to install packages. # If sudo is not installed, launch a shell to try and install it if [[ $(id -u) != 0 ]]; then if [[ ! -f $(which sudo) ]] ; then unset yn until [[ $yn == "y" || $yn == "n" ]]; do - echo "Cannot install new packages without root access. Do you want to try to manually install sudo? (yn) " + echo "Cannot install new packages without root access. Do you want to try to manually install sudo? (yn) " read yn done if [[ $yn == "y" ]]; then @@ -149,10 +160,11 @@ function brethil_dotfiles_setup { sudo="sudo " fi fi - + if [[ $(which apt-get ) ]]; then install_command="${sudo}apt-get install" elif [[ $(which pacman) ]]; then + packages="$packages yay" # also install the yay aur package manager install_command="${sudo}pacman -Sy" elif [[ $(which yum) ]]; then install_command="${sudo}yum" @@ -164,59 +176,65 @@ function brethil_dotfiles_setup { echo "I do not know how to install the required packages. Quitting." exit 0 fi - + + # actually install the packages: $install_command $packages + # Install oh-my-zsh echo "Installing oh-my-zsh..." - sh -c "$(curl -sL zsh.dioporc.one)" - + sh -c "$(curl -sL zsh.dioporc.one | sed 's/env zsh/#env zsh/')" # comment the part that launches zsh + # oh-my-zsh's zshrc has been installed, prepend the dotfiles setup to it - cat $HOME/.zshrc >> $ZSHTMP + cat "$HOME/.zshrc" >> $ZSHTMP mv $ZSHTMP $HOME/.zshrc - + # Increase history size echo "export HISTSIZE=100000" >> $HOME/.zshrc - + ## Fix scrolling in byobu if [[ $(uname) == "Darwin" ]]; then sed -i '' 's/set -g terminal-overrides/#set -g terminal-overrides/' /usr/share/byobu/profiles/tmux else sed -i 's/set -g terminal-overrides/#set -g terminal-overrides/' /usr/share/byobu/profiles/tmux fi - + # Set m and M to enable/disable mouse mode in tmux/byobu echo 'bind-key m source $BYOBU_PREFIX/share/byobu/keybindings/mouse.tmux.enable \; display-message "Mouse: ON"' >> ~/.tmux.conf echo 'bind-key M source $BYOBU_PREFIX/share/byobu/keybindings/mouse.tmux.disable \; display-message "Mouse: Off"' >> ~/.tmux.conf - - # Install the rmate client for textmate - inhstall_rmate && echo "Installed rmate Textmate remote "|| echo "Failed to install rmate Textmate remote" - + + ## Install the rmate client for textmate + #install_rmate && echo "Installed rmate Textmate remote "|| echo "Failed to install rmate Textmate remote" + # Install vim awesomerc (git amix/vimrc) install_vimrc && echo "Installed vim awesome rc" || echo "Failed to install vim awesome rc" # Create ssh config create_ssh_config - + # git config + setup_git + # Install new zsh plugins in $ZSH/custom/plugins/ install_zsh_plugins && echo "Installed custom zsh plugins in $ZSH/custom/plugins/" || echo "Failed to install custom zsh plugins" - + # Source the plugins defined in brethil_dotfile.sh ($plugins) - if [[ $(uname) == "Darwin" ]]; then # MacOS has a different syntax for sed + if [[ $(uname) == "Darwin" ]]; then sed -i "" -e 's/plugins=.*/plugins=\( $plugins \)/' $HOME/.zshrc - else + else sed -i -e 's/plugins=.*/plugins=\( $plugins \)/' $HOME/.zshrc fi - + # Symlink brethil.zsh-theme ln -s $DOTFILES/brethil.zsh-theme $HOME/.oh-my-zsh/custom/ # Symlink brethil-minimal.zsh-theme ln -s $DOTFILES/brethil-minimal.zsh-theme $HOME/.oh-my-zsh/custom/ - + # Set brethil theme if [[ $(uname) == "Darwin" ]]; then # MacOS has a different syntax for sed sed -i '' 's/ZSH_THEME=".*"/ZSH_THEME="brethil"/' $HOME/.zshrc else sed -i 's/ZSH_THEME=".*"/ZSH_THEME="brethil"/' $HOME/.zshrc fi + + #TODO: replace brethil theme with powerline? }