diff --git a/.gitignore b/.gitignore index 63123fb..e6cbaea 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ .DS_store +*antigen-compat +*.zwc diff --git a/aliases.sh b/aliases.sh index 29902c0..f35c97b 100755 --- a/aliases.sh +++ b/aliases.sh @@ -24,6 +24,8 @@ if [[ "$(uname)" == "Darwin" ]]; then alias lsrt='ls -G -lrt | tail -5' ## Add opened files to Textmate's recent menu item alias mate='mate --recent' +else + alias ls='ls --color' fi #### @@ -47,17 +49,12 @@ alias ka="killall" ## Load pylab by default when running ipython alias ipy="ipython --pylab" -## Go up one directory or several (with integer argument) -alias upcd='. upcd.sh' - ## Show the last 10 modified files if [[ ! "$(uname)" == "Darwin" ]]; then alias lsrt="ls -lrt | tail -10" fi -## List open connections, TCP and UDP -alias listconnections="lsof -n -i TCP -i UDP" -## Stress (run stress &>/dev/null &) +## Stress one CPU core alias stress='yes >> /dev/null' # use textmate to diff two files diff --git a/brethil-minimal.zsh-theme b/brethil-minimal.zsh-theme index 378e5da..be32ab2 100644 --- a/brethil-minimal.zsh-theme +++ b/brethil-minimal.zsh-theme @@ -1,5 +1,5 @@ -ret_status="%(?:%{$fg_bold[green]%}➜%{$reset_color%}:%{$fg[red]%}➜%{$reset_color%})" -user="%(#:root@:)" +local ret_status="%(?:%{$fg_bold[green]%}➜%{$reset_color%}:%{$fg[red]%}➜%{$reset_color%})" +local user="%(#:root@:)" PROMPT='[%{$fg[red]%}${user}%M%{$reset_color%}][:%{$fg[green]%}%c%{$reset_color%}]$(git_prompt_info) ${ret_status} ' ZSH_THEME_GIT_PROMPT_PREFIX=" %{$fg[yellow]%}git:(" diff --git a/brethil.zsh-theme b/brethil.zsh-theme index bdad14a..34b26b0 100644 --- a/brethil.zsh-theme +++ b/brethil.zsh-theme @@ -1,5 +1,5 @@ -ret_status="%(?:%{$fg_bold[green]%}➜%{$reset_color%}:%{$fg[red]%}➜%{$reset_color%})" -user="%(#:root@:)" +local ret_status="%(?:%{$fg_bold[green]%}➜%{$reset_color%}:%{$fg[red]%}➜%{$reset_color%})" +local user="%(#:root@:)" PROMPT='[%*][%{$fg[red]%}${user}%M%{$reset_color%}][:%{$fg[green]%}%c%{$reset_color%}]$(git_prompt_info) ${ret_status} ' ZSH_THEME_GIT_PROMPT_PREFIX=" %{$fg[yellow]%}git:(" diff --git a/brethil_dotfile.sh b/brethil_dotfile.sh index 44b1170..eb45648 100755 --- a/brethil_dotfile.sh +++ b/brethil_dotfile.sh @@ -1,24 +1,38 @@ # Check for update, set DISABLE_UPDATE_PROMPT=yes to disable the prompt and automatically update 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) +# antigen plugins +antigen_plugins="git +common-alias +alias-tips +sudo +zsh-navigation-tools +colored-man-pages +zdharma/fast-syntax-highlighting +zsh-users/zsh-autosuggestions +djui/alias-tips" uname=$(uname -a) if [[ $uname == *"Darwin"* ]]; then - if [[ $(which port) ]]; then - os_extra=(osx macports) - else - os_extra=(osx) - fi -elif [[ $uname == *"ARCH"* ]]; then - os_extra=(archlinux systemd) -elif [[ $uname == *"MANJARO"* ]]; then - os_extra=(archlinux systemd) + os_extra="osx" +elif [[ $uname == *"ARCH"* || $uname == *"MANJARO"* ]]; then + os_extra="archlinux systemd" elif [[ $uname == *"Debian"* ]]; then - os_extra=(debian) + os_extra="debian systemd" fi +plugins="$antigen_plugins $os_extra" + +antigen use oh-my-zsh + +antigen bundles <&2 fi - # custom zsh plugins - custom_plugins=("alias-tips" "fast-syntax-highlighting" "zsh-autosuggestions") - for plugin in $custom_plugins; do - (cd $ZSH/custom/plugins/$plugin && git pull -q --rebase && echo "Upgraded oh-my-zsh plugin: $plugin" || echo "Could not upgrade oh-my-zsh plugin: $plugin" >&2) - done - + antigen update # update the zsh file _update_dotfiles_update } diff --git a/install.sh b/install.sh index c6f11ac..476f35a 100755 --- a/install.sh +++ b/install.sh @@ -1,15 +1,22 @@ #!/bin/bash -## brethil's dotfiles installation file +## brethil's dotfiles installation script ## 20 June 2016 # Get the location for the dotfiles DOTFILES=$PWD -ZSHTMP="$HOME/.zshrctmp" -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" +# Install packages +# vim, zsh +# antigen: zsh plugin manager +# grc: generic colourizer, colors output of any command +# ccze: similar to the above +# byobu: configuration/wrapper for tmux +# bmon: bandwidth monitor, monitors bandwith usage, shows graph +# mtr: mytraceroute, traceroute tool +# pv: pipe view, monitor the progress of data through a pipe +# byobu: tmux wrapper +# htop: like top, but bettah +PACKAGES="vim zsh antigen git grc ccze bmon mtr pv tmux byobu htop" # TODO: add bat function setup_git { # set up some git stuff @@ -17,25 +24,6 @@ function setup_git { git config --global merge.ff only } -function install_rmate { - # Install python version of the textmate rmate remote (from github) - if [[ $(whoami) == "root" ]]; then - destpath="/usr/bin" - else - destpath="$HOME/bin" - fi - if [[ -f $destpath/rmate ]]; then - echo "rmate already exists: not installed" - return 1 - else - curl -sL https://raw.githubusercontent.com/sclukey/rmate-python/master/bin/rmate > $destpath/rmate - chmod a+x $destpath/rmate - ln -s $destpath/rmate $destpath/mate || "Could not create symbolic link to $destpath/mate (already exists?)" - echo "Installed rmate (and mate symlink) in $destpath" - return 0 - fi -} - 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 @@ -45,21 +33,6 @@ function setup_vim { ln -s $DOTFILES/my_configs.vim $HOME/.vim_runtime/my_configs.vim } -function install_zsh_plugins { - # 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" - # NOTE: if adding plugins here, be sure to also add them to the _dotfiles_upgrade function in check_for_upgrade.sh - 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 - else - return 0 - fi -} - # Add an ssh config file with: # - Connection multiplexer for faster multiple connections # - Keep connections alive (avoid timeout disconnections) @@ -103,43 +76,60 @@ function create_ssh_config { chmod 755 ~/.ssh/rc exec 1>>$ssh_config # redirect everything below to the $ssh_config file - if [[ "$modifyssh" != "n" ]]; then - echo "# brethil's dotfiles setup start" - echo 'TCPKeepAlive=yes' - echo 'ServerAliveCountMax=6' - echo - echo "## Uncomment to enable compression for all ssh sessions" - echo '#Compression=yes' - echo - 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 - echo 'Host *' - echo ' ServerAliveInterval 300' - echo - echo '## Enable the following if you want to use the rmate textmate remote' - echo "#Host *" - echo "# RemoteForward 52698 localhost:52698" - echo - 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 - 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)" - else + if [[ "$modifyssh" == "n" ]]; then echo "Did not modify $ssh_config." + exec 1>&3 # restore stdout + return fi + echo "# brethil's dotfiles setup start" + echo 'TCPKeepAlive=yes' + echo 'ServerAliveCountMax=6' + echo + echo "## Uncomment to enable compression for all ssh sessions" + echo '#Compression=yes' + echo + 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 + echo 'Host *' + echo ' ServerAliveInterval 300' + echo + echo '## Enable the following if you want to use the rmate textmate remote' + echo "#Host *" + echo "# RemoteForward 52698 localhost:52698" + echo + 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 + 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 remote:2222->localhost:22 (revere tunnel to scp back to the original host using mecp)" echo "# End of ssh config." } +function fix_annoyances { + ## 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 + + # remove ls from the grc.zsh config: # TODO: fix this on MacOS + sed 's|ls \\|#ls \\|' /etc/grc.zsh + + # TODO: add iptables, docker to grc.zsh + + +} + + # First setup function brethil_dotfiles_setup { bin="$HOME/bin" @@ -147,18 +137,6 @@ function brethil_dotfiles_setup { git="$HOME/git" mkdir -p "$bin" "$projects" "$git" && echo "Created dirs $bin, $projects, $git" - # Install packages - # zsh - # grc: generic colourizer, colors output of any command - # ccze: similar to the above - # byobu: configuration/wrapper for tmux - # bmon: bandwidth monitor, monitors bandwith usage, shows graph - # mtr: mytraceroute, traceroute tool - # pv: pipe view, monitor the progress of data through a pipe - # byobu: tmux wrapper - # htop: like top, but bettah - 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 @@ -182,83 +160,59 @@ function brethil_dotfiles_setup { fi if [[ $(which apt-get ) ]]; then + PACKAGES=${PACKAGES/antigen/zsh-antigen/} + antigen_path=/usr/share/zsh-antigen/antigen.zsh install_command="${sudo}apt-get install" elif [[ $(which pacman) ]]; then pacman -Sy yay # also install the yay aur package managery - packages="$packages" + antigen_path=/usr/share/zsh/share/antigen.zsh + grc_path=/etc/grc.zsh install_command="${sudo}yay -Sy" elif [[ $(which yum) ]]; then + antigen_path=/usr/share/zsh/share/antigen.zsh install_command="${sudo}yum" - elif [[ $(which port) ]]; then - install_command="${sudo}port install" elif [[ $(which brew) ]]; then + antigen_path=/usr/local/share/antigen/antigen.zsh install_command="${sudo}brew install" else 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 | 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 - 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 + if [[ ! -f $antigen_path ]]; then + echo "antigen.zsh not found, please set up manually in ~/.zshrc" 1>&2 + exit 0 fi - # remove ls from the grc.zsh config: - sed 's|ls \\|#ls \\|' /etc/grc.zsh + # actually install the packages + $install_command $PACKAGES - # 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 - #install_rmate && echo "Installed rmate Textmate remote "|| echo "Failed to install rmate Textmate remote" + # prepare .zshrc + exec 1>&3 # save stdout + exec 1>$HOME/.zshrc + echo "source $antigen_path" + echo -e "\n\n# brethil's dotfiles:" + # Source antigen + echo "source $antigen_path" + echo "DOTFILES=$DOTFILES" + echo "source \$DOTFILES/brethil_dotfile.sh" + echo -e "# End of brethil's dotfiles\n\n" + fix_annoyances # Install vim awesomerc (git amix/vimrc) install_vimrc && echo "Installed vim awesome rc" || echo "Failed to install vim awesome rc" + setup_vim # 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 - sed -i "" -e 's/plugins=.*/plugins=\( $plugins \)/' $HOME/.zshrc - 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/ + ln -s $DOTFILES/brethil.zsh-theme $HOME/.antigen/bundles/robbyrussell/oh-my-zsh/themes/ # TODO: improve this # Symlink brethil-minimal.zsh-theme - ln -s $DOTFILES/brethil-minimal.zsh-theme $HOME/.oh-my-zsh/custom/ + ln -s $DOTFILES/brethil-minimal.zsh-theme $HOME/.antigen/bundles/robbyrussell/oh-my-zsh/themes/ - # 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? + # TODO: powerline? }