aboutsummaryrefslogtreecommitdiff
path: root/dot_zshrc
diff options
context:
space:
mode:
authorRyan Kavanagh <rak@rak.ac>2021-12-13 16:07:35 -0500
committerRyan Kavanagh <rak@rak.ac>2021-12-13 16:07:36 -0500
commit61f89d0a3d43a835b333e76317d49027e5a4c06e (patch)
tree1c537dce87c7603cddec9e94ce8eeec7a1a09100 /dot_zshrc
parentLESS=-FQXR (diff)
Migrating to chezmoi
Diffstat (limited to 'dot_zshrc')
-rw-r--r--dot_zshrc654
1 files changed, 654 insertions, 0 deletions
diff --git a/dot_zshrc b/dot_zshrc
new file mode 100644
index 0000000..54d4e57
--- /dev/null
+++ b/dot_zshrc
@@ -0,0 +1,654 @@
+#
+# ~/.zshrc
+# Z shell configuration file.
+# CREDITS
+# File was first taken from the following location:
+#
+# http://www.tomaw.net/configs/zshrc
+#
+# Some additions were made by me, Jonathan Patrick Davies <jpds@ubuntu.com>.
+# Among these are the Launchpad, Debian, Wikipedia/Wikitravel, BBC search,
+# Demonoid, Lonely Planet, Urbandictionary and other various functions. I also
+# implemented a few "if" statements to stop zsh complaining about any missing
+# objects and placed the dircolors support.
+#
+# The forkex() function is thanks to Siegfried-Angel Gevatter Pujals
+# <rainct@ubuntu.com>.
+#
+# Some of this file is thanks to <slarti@gentoo.org>, some is take from
+# spider's <spider@gentoo.org> zshrc, and some from the zshwiki.org.
+# Some bash functions are nicked from ciaranm's <ciaranm@gentoo.org>
+# bashrc.
+#
+# READ ME
+#
+# • Remember to change the stuff specific to me! It's all at the top of
+# this file.
+#
+# • You can obviously only get the most out of this file if you take the
+# time to read through the comments. Of course, you can still experience
+# zsh's superiority by simply plugging this file in and using it.
+#
+
+# BEGIN LOCAL
+
+export LANG="LOCALE"
+export LC_TIME="en_GB.UTF-8"
+export LC_COLLATE=C # force strict lexicographic sorting
+export TIME_STYLE=long-iso # make ls -l use YYYY-MM-DD in dired
+export TZ="America/Toronto" # Force our time zone this location.
+export EDITOR="vim" # Long live vim (as our editor).
+export NAME="Ryan Kavanagh" # Our name.
+export EMAIL="rak@rak.ac" # Our email address.
+export GPGKEY="4E469519ED677734268FBD958F7BF8FC4A11C97A" # Our GnuPG key ID.
+export DEBFULLNAME=$NAME # These are used by Debian packaging...
+export DEBEMAIL="rak@debian.org" # ...programs.
+export DEBSIGN_KEYID=$GPGKEY # Key ID for signing Debian packages.
+export BZR_EMAIL="$NAME <$EMAIL>" # Override email for Bazaar.
+export GIT_AUTHOR_NAME=$NAME
+export DARCS_EMAIL="$NAME <$EMAIL>"
+export QUILT_PATCHES=debian/patches
+if [[ `hostname` = "demeter.rak.ac" ]]; then
+ export PATH=${HOME}/bin:/opt/local/bin:/opt/local/sbin:/usr/sbin:/sbin:$PATH:${GEM_BIN}:${HOME}/.local/bin/
+ export MANPATH=/opt/local/share/man:$MANPATH
+else
+ export PATH=${HOME}/bin:/usr/sbin:/sbin:$PATH:${GEM_BIN}:${HOME}/.local/bin/
+fi
+export MANWIDTH=80
+export MANOPT="-L en"
+export PAGER=less
+export LESS=-FQXR
+export PDFVIEWER=evince
+export BROWSER=firefox
+export TEXMFHOME=${HOME}/.texmf
+export KRB5CCNAME=DIR:${HOME}/.cache/krb5cc # kerberos credentials cache
+
+alias apt-upgrade='sudo apt-get update && sudo apt-get dist-upgrade'
+alias dbuild='GPG_TTY=$(tty) debuild -S -sa -k$GPGKEY'
+alias itp='reportbug -M -B debian --email rak@debian.org --paranoid -K $GPGKEY wnpp'
+alias sneezymud='nc play.sneezymud.com 7900'
+alias news='tin -g pqnews.cogeco.ca'
+alias 1920s='mplayer -playlist http://kara.fast-serv.com:8398/listen.pls'
+alias dismuke='mplayer -playlist http://early1900s.org/radiodismuke/radiodismuke.ram'
+alias mplayer-fb='mplayer -vo fbdev'
+alias links2-fb='links2 -driver fb'
+alias svbuildi='svn-buildpackage --svn-ignore-new --svn-builder="debuild -S -sa -k$GPGKEY"'
+alias svbuild='svn-buildpackage --svn-builder="debuild -S -sa -k$GPGKEY"'
+alias gibuild='git-buildpackage --git-builder="sbuild -sAd u"'
+alias gibuildi='git-buildpackage --git-ignore-new --git-builder="sbuild -sAd u"'
+alias dquilt="quilt --quiltrc=${HOME}/.quiltrc-dpkg"
+alias vi='vim'
+alias sm='tmux attach -t mail || tmux -f ${HOME}/.tmux-mail.conf attach -t mail'
+alias sshfw='ssh -oForwardAgent=yes'
+alias slpr="lpr -P scs_public -o Staple=1Staple\(Left\) -o KMDuplex=True"
+
+# END LOCAL
+
+fpath=($fpath
+ /home/ryan/.zen/zsh/scripts
+ /home/ryan/.zen/zsh/zle)
+autoload -U zen
+
+# Ensure that we possess a ~/.zsh/ directory. This is required for the
+# ~/.zsh/history file.
+if [ ! -d $HOME/.zsh/ ]; then
+ mkdir -p $HOME/.zsh/
+fi
+
+# Alias/custom commands
+#
+# Many of these options don's exist on BSD rm/cp/mkdir/ln/etc.
+#
+# Some are just in case - for 'rm', 'cp' and 'mv' - ask about overwriting or
+# deleting files.
+# Furthermore, be verbose about what each command is performing to be present of
+# what is occuring every time.
+if [[ `uname` = "Linux" ]]; then
+ alias cp="cp -iv"
+ alias mkdir="mkdir -v"
+ alias mv="mv -iv"
+ alias ln="ln -v"
+ # Only delete files on the current file system to avoid removing recursively
+ # from bind mounts.
+ alias rm="rm -iv --one-file-system"
+
+ alias grep="grep --colour=auto"
+
+ alias chown="chown -v"
+ alias chmod="chmod -v"
+ alias ls="ls --classify --color=always" # Add all colours and
+ # have fancy symbols for files, etc.
+elif [[ `uname` = "OpenBSD" && -x /usr/local/bin/colorls ]]; then
+ alias ls="colorls -G"
+fi
+
+fpath=($fpath $HOME/.zsh/func)
+
+# Prompt theme.
+autoload -U promptinit; promptinit
+# prompt walters
+
+# Colours.
+autoload -U colors; colors
+setopt promptsubst
+
+# Give us a prompt along the lines of:
+#
+# jpds@topr>
+#
+#export PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[green]%}%m%{$reset_color%}%\> "
+
+# Change word boundary characters. Nabbed from
+# http://zshwiki.org/KeyBindings.
+
+# By default: export WORDCHARS='*?_-.[]~=/&;!#$%^(){}<>'
+# We remove the slash, period, angle brackets, dash here.
+export WORDCHARS='*?_-[]~=&;!#$%^(){}'
+
+# Follow GNU LS_COLORS for completion menus
+zmodload -i zsh/complist
+
+# Should dircolors exist. Fetch LS_COLORS from it.
+if [ "`which dircolors`" != 'dircolors not found' ]; then
+ eval "$(dircolors -b)"
+fi
+
+zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
+zstyle ':completion:*:*:kill:*' list-colors '=%*=01;31'
+
+# Load the completion system
+autoload -U compinit; compinit
+
+compdef _quilt dquilt=quilt # Quilt tab completion for dquilt
+
+# pattern history search
+bindkey '^R' history-incremental-pattern-search-backward
+
+# Very powerful version of mv implemented in zsh. The main feature I
+# know of it that seperates it from the standard mv is that it saves you
+# time by being able to use patterns which are expanded into positional
+# parameters. So:
+#
+# slarti@pohl % zmv (*)foo ${1}bar
+#
+# On a series of files like onefoo, twofoo, threefoo, fivefoo would be
+# renamed to onebar twobar threebar fourbar.
+#
+# Although that's nifty enough, I suspect there are other features I
+# don't know about yet...
+#
+# Read $fpath/zmv for some more basic examples of usage, and also use
+# run-help on it :)
+autoload -U zmv
+
+# Like xargs, but instead of reading lines of arguments from standard input,
+# it takes them from the command line. This is possible/useful because,
+# especially with recursive glob operators, zsh often can construct a command
+# line for a shell function that is longer than can be accepted by an external
+# command. This is what's often referred to as the "shitty Linux exec limit" ;)
+# The limitation is on the number of characters or arguments.
+#
+# slarti@pohl % echo {1..30000}
+# zsh: argument list too long: /bin/echo
+# zsh: exit 127 /bin/echo {1..30000}
+autoload -U zargs
+
+# Makes it easy to type URLs as command line arguments. As you type, the
+# input character is analyzed and, if it mayn eed quoting, the current
+# word is checked for a URI scheme. If one is found and the current word
+# is not already quoted, a blackslash is inserted before the input
+# caracter.
+autoload -U url-quote-magic
+zle -N self-insert url-quote-magic
+
+# zed is a tiny command-line editor in pure ZSH; no other shell could do
+# this. zed itself is simple as anything, but it's killer feature for
+# me is that it can edit functions on the go with zed -f <funcname> (or
+# fned <funcname>. This is useful for me when I'm using and defining
+# functions interactively, for example, when I'm working through the
+# Portage tree in CVS. It allows me to edit a function on the fly,
+# without having to call the last definition back up from the history
+# and re-edit that in ZLE. It also indents the function, even if it was
+# defined on all one line in the line editor, making it easy as anything
+# to edit.
+#
+# ^X^W to save, ^C to abort.
+autoload -U zed
+
+# Incremental completion of a word. After starting this, a list of
+# completion choices can be shown after every character you type, which
+# can deleted with ^H or delete. Return will accept the current
+# completion. Hit tab for normal completion, ^G to get back where you
+# came from and ^D to list matches.
+autoload -U incremental-complete-word
+zle -N incremental-complete-word
+bindkey "^Xi" incremental-complete-word
+
+# This function allows you type a file pattern, and see the results of
+# the expansion at each step. When you hit return, they will be
+# inserted into the command line.
+autoload -U insert-files
+zle -N insert-files
+bindkey "^Xf" insert-files
+
+# This set of functions implements a sort of magic history searching.
+# After predict-on, typing characters causes the editor to look backward
+# in the history for the first line beginning with what you have typed so
+# far. After predict-off, editing returns to normal for the line found.
+# In fact, you often don't even need to use predict-off, because if the
+# line doesn't match something in the history, adding a key performs
+# standard completion - though editing in the middle is liable to delete
+# the rest of the line.
+autoload -U predict-on
+zle -N predict-on
+zle -N predict-off
+bindkey "^X^Z" predict-on
+bindkey "^Z" predict-off
+
+# run-help is a help finder, bound in ZLE to M-h. It doesn't need to be
+# autoloaded to work - the non-autoloaded version just looks up a man
+# page for the command under the cursor, then when that process is
+# finished it pulls your old command line back up from the buffer stack.
+# However, with the autoloaded function and:
+#
+# mkdir ~/zsh-help; cd ~/zsh-help MANPAGER="less" man zshbuiltins | \
+# colcrt | perl /usr/share/zsh/4.2.1/Util/helpfiles
+#
+# It'll work for zsh builtins too. By the way, I've assumed some things
+# in that command. ~/zsh-help can be wherever you like, MANPAGER needs
+# to be any standard pager (less, pg, more, just not the MANPAGER I have
+# defined in this file), colcrt can be col -bx, and the path to
+# helpfiles may be different for you (Util may not even be installed
+# with your distribution; fair enough, make install doesn't install it.
+# Dig up a source tarball and everything is in there).
+
+# Load the new one
+autoload -U run-help
+
+# Press Alt-H to show help for command we are currently on.
+bindkey '[[A' run-help
+
+# https://zsh.sourceforge.io/Doc/Release/Options.html#History
+# History file name and maximum size.
+HISTFILE="$HOME/.zsh/history"
+SAVEHIST=500000
+HISTSIZE=600000 # should be > SAVEHIST
+
+# Save each command’s beginning timestamp (in seconds since the epoch) and the
+# duration (in seconds) to the history file.
+setopt EXTENDED_HISTORY
+
+# If the internal history needs to be trimmed to add the current command line,
+# setting this option will cause the oldest history event that has a duplicate
+# to be lost before losing a unique event from the list.
+setopt HIST_EXPIRE_DUPS_FIRST
+
+# Better locking to avoid corruption
+setopt HIST_FCNTL_LOCK
+
+# When searching for history entries in the line editor, do not display
+# duplicates of a line previously found, even if the duplicates are not
+# contiguous.
+setopt HIST_FIND_NO_DUPS
+
+# Don't story commands in history if they start with a space
+setopt HIST_IGNORE_SPACE
+
+# Don't store history/fc -l in the history list when invoked
+setopt HIST_NO_STORE
+
+# Remove superfluous blanks from each command line being added to the history
+# list.
+setopt HIST_REDUCE_BLANKS
+
+# This option works like APPEND_HISTORY except that new history lines are added
+# to the $HISTFILE incrementally (as soon as they are entered), rather than
+# waiting until the shell exits. The file will still be periodically re-written
+# to trim it when the number of lines grows 20% beyond the value specified by
+# $SAVEHIST (see also the HIST_SAVE_BY_COPY option).
+setopt INC_APPEND_HISTORY
+
+# Push History from previous sessions. IF $HISTFILE exists.
+if [ -f $HISTFILE ]; then
+ fc -RI $HISTFILE
+fi
+
+## Key bindings
+# You may use:
+# % autoload -U zkbd
+# % zkbd
+# to discover your keys.
+
+
+typeset -U fpath
+
+prompt wunjo
+# Actually, stick with emacs for the moment. The vi keymap just doesn't
+# seem to be as complete (even if it's nicer for editing, there's no
+# execute-named-cmd bound, for example).
+bindkey -e # Emacs keybindings.
+
+# This function sets the window tile to user@host:/workingdir before each
+# prompt. If you're using screen, it sets the window title (works
+# wonderfully for 'hardstatus' lines.
+precmd() {
+# [[ -t 1 ]] || return
+ case $TERM in
+ *xterm*|rxvt*) print -Pn "\e]2;%n@%m:%~\a"
+ ;;
+ screen*) print -Pn "\ek%n@%m:%~\e\\"
+ ;;
+ esac
+}
+
+# This sets the window title to the last run command.
+preexec() {
+# [[ -t 1 ]] || return
+ case $TERM in
+ *xterm*|rxvt*) print -Pn "\e]2;$1\a"
+ ;;
+ screen*) print -Pn "\ek$1\e\\"
+ ;;
+ esac
+}
+
+# Custom commands.
+
+loop() {
+ while [ 1 -eq 1 ]; do
+ $@
+ done
+}
+
+# CTAN downloader
+
+ctand() {
+ wget http://mirror.ctan.org/macros/latex/contrib/$1.zip && unzip $1.zip
+}
+
+# For formating text files for a printer
+fmtpr() {
+ fmt --width=62 $@ | LC_ALL=C LANG=C pr -o 10 -W 62 -J -F -l 62
+}
+
+# Russian
+#
+
+verb.rus() {
+ curl -s "http://en.wiktionary.org/w/index.php?title=$1&action=edit" | grep 'ru-conj-'
+ firefox "http://en.wiktionary.org/w/index.php?title=$1"
+}
+
+#
+# Debian.
+#
+debian.bugs.number() {
+ # Debian Bug Tracker - by number.
+ w3m "http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=$1"
+}
+
+debian.bugs.package() {
+ # Debian Bug Tracker - by package.
+ w3m "http://bugs.debian.org/cgi-bin/pkgreport.cgi?src=$1"
+}
+
+debian.packages() {
+ # Debian Packages.
+ # Add 'src:' in front of the package name to search for source packages.
+ w3m "http://packages.debian.org/$1"
+}
+
+debian.qa.maintainer() {
+ # Debian QA Maintainer search by email address.
+ w3m "http://qa.debian.org/developer.php?login=$1"
+}
+
+debian.qa.package() {
+ # Debian QA Maintainer search by package name.
+ w3m "http://qa.debian.org/developer.php?package=$1"
+}
+
+debian.qa.pts() {
+ # Debian Package Tracking system - developers.
+ w3m "http://packages.qa.debian.org/$1"
+}
+
+debian.qa.task() {
+ # Debian QA - search for task.
+ w3m "http://qa.debian.org/developer.php?task=$1"
+}
+
+debian.wiki() {
+ # Search the Debian Wiki.
+ w3m "http://wiki.debian.org/?action=fullsearch&value=$@"
+}
+
+#
+# Others.
+#
+
+wttr() {
+ local request="wttr.in/${1-Montreal}"
+ [ "$(tput cols)" -lt 125 ] && request+='?n'
+ curl -H "Accept-Language: ${LANG%_*}" --compressed "$request"
+}
+
+google() {
+ # Google search.
+ w3m "http://www.google.com/search?q=$@"
+}
+
+wikipedia() {
+ # Wikipedia search. English section.
+ w3m "http://en.wikipedia.org/wiki/Special:Search?search=$@"
+}
+
+wiktionary() {
+ # Search Wiktionary for a term.
+ w3m "http://en.wiktionary.org/wiki/Special:Search?search=$@"
+}
+
+forkex() {
+ # Fork program $@ from console.
+ nohup "$@" >/dev/null 2>&1 <&1 & disown %%
+}
+
+gbp-snap() {
+ if [[ -e $@ ]]; then
+ git-dch -aSN $1
+ else
+ git-dch -aS
+ fi
+ gpg-mounter
+ gibuild --git-ignore-new
+ DSC=`head -n1 debian/changelog | sed -e 's/\(.*\) (\(.*\)).*/\1_\2.dsc/g'`
+ DIST=`head -n1 debian/changelog | sed -e 's/.* \(.*\);.*/\1/g'`
+ cd ..
+ sbuild -d $DIST $DSC
+}
+
+# Pretty menu!
+zstyle ':completion:*' menu select=1
+zstyle ':completion:*' select-prompt %SScroll active at %p%s.
+
+# Completion options.
+zstyle ':completion:*' completer _complete _prefix
+zstyle ':completion::prefix-1:*' completer _complete
+zstyle ':completion:incremental:*' completer _complete _correct
+zstyle ':completion:predict:*' completer _complete
+
+# Completion caching.
+zstyle ':completion::complete:*' use-cache 1
+zstyle ':completion::complete:*' cache-path ~/.zsh/cache/$HOST
+
+# Expand partial paths.
+zstyle ':completion:*' expand 'yes'
+zstyle ':completion:*' squeeze-slashes 'yes'
+
+# Include non-hidden directories in globbed file completions
+# for certain commands.
+zstyle ':completion::complete:*' '\'
+
+# Use menuselection for PID completion.
+zstyle ':completion:*:*:kill:*' menu yes select
+zstyle ':completion:*:kill:*' force-list always
+
+# tag-order 'globbed-files directories' all-files.
+zstyle ':completion::complete:*:tar:directories' file-patterns '*~.*(-/)'
+
+# Do not complete backup files as executables.
+zstyle ':completion:*:complete:-command-::commands' ignored-patterns '*\~'
+
+# Separate matches into groups.
+zstyle ':completion:*:matches' group 'yes'
+
+# With commands like rm, it's annoying if you keep getting offered the same
+# file multiple times. This fixes it. Also good for cp, et cetera..
+zstyle ':completion:*:rm:*' ignore-line yes
+zstyle ':completion:*:cp:*' ignore-line yes
+
+# Describe each match group.
+zstyle ':completion:*:descriptions' format "%B---- %d%b"
+
+# Messages/warnings format.
+zstyle ':completion:*:messages' format '%B%U---- %d%u%b'
+zstyle ':completion:*:warnings' format '%B%U---- no match for: %d%u%b'
+
+# Describe options in full.
+zstyle ':completion:*:options' description 'yes'
+zstyle ':completion:*:options' auto-description '%d'
+
+# Simulate spider's old abbrev-expand 3.0.5 patch
+#zstyle ':completion:*:history-words' stop verbose
+#zstyle ':completion:*:history-words' remove-all-dups yes
+#zstyle ':completion:*:history-words' list false
+
+# From the zshwiki. Hide CVS files/directories from being completed.
+zstyle ':completion:*:(all-|)files' ignored-patterns '(|*/)CVS'
+zstyle ':completion:*:cd:*' ignored-patterns '(*/)#CVS'
+
+# Also from the wiki. Hide uninteresting users from completion.
+zstyle ':completion:*:*:*:users' ignored-patterns \
+adm apache bin daemon games gdm halt ident junkbust lp mail mailnull \
+named news nfsnobody nobody nscd ntp operator pcap postgres radvd \
+rpc rpcuser rpm shutdown squid sshd sync uucp vcsa xfs backup bind \
+dictd gnats identd irc man messagebus postfix proxy sys \
+www-data alias amavis at clamav cmd5checkpw cron cyrus dhcp dnscache \
+dnslog foldingathome guest haldaemon jabber ldap mailman mpd mysql \
+nut p2p portage postmaster qmaild qmaill qmailp qmailq qmailr qmails \
+smmsp tinydns vpopmail wasabi zope
+
+# Approximate completion. From the wiki.
+zstyle ':completion:*' completer _complete _match _approximate
+zstyle ':completion:*:match:*' original only
+zstyle ':completion:*:approximate:*' max-errors 1 numeric
+
+zstyle ':completion:*:sudo:*' command-path /usr/sbin /usr/bin /sbin /bin \
+ /usr/X11R6/bin
+
+# Options
+setopt \
+NO_all_export \
+ always_last_prompt \
+ always_to_end \
+ append_history \
+ auto_cd \
+ auto_list \
+ auto_menu \
+ auto_name_dirs \
+ auto_param_keys \
+ auto_param_slash \
+ auto_pushd \
+ auto_remove_slash \
+NO_auto_resume \
+ bad_pattern \
+ bang_hist \
+NO_beep \
+ brace_ccl \
+ correct_all \
+NO_bsd_echo \
+NO_cdable_vars \
+NO_chase_links \
+ clobber \
+ complete_aliases \
+ complete_in_word \
+ correct \
+NO_correct_all \
+ csh_junkie_history \
+NO_csh_junkie_loops \
+NO_csh_junkie_quotes \
+NO_csh_null_glob \
+ equals \
+ extended_glob \
+ extended_history \
+ function_argzero \
+ glob \
+NO_glob_assign \
+ glob_complete \
+NO_glob_dots \
+NO_glob_subst \
+NO_hash_cmds \
+NO_hash_dirs \
+ hash_list_all \
+ hist_allow_clobber \
+ hist_beep \
+ hist_ignore_dups \
+ hist_ignore_space \
+NO_hist_no_store \
+ hist_verify \
+NO_hup \
+NO_ignore_braces \
+NO_ignore_eof \
+ interactive_comments \
+ inc_append_history \
+NO_list_ambiguous \
+NO_list_beep \
+ list_types \
+ long_list_jobs \
+ magic_equal_subst \
+NO_mail_warning \
+NO_mark_dirs \
+ menu_complete \
+ multios \
+ nomatch \
+ notify \
+NO_null_glob \
+ numeric_glob_sort \
+NO_overstrike \
+ path_dirs \
+ posix_builtins \
+NO_print_exit_value \
+NO_prompt_cr \
+ prompt_subst \
+ pushd_ignore_dups \
+NO_pushd_minus \
+ pushd_silent \
+ pushd_to_home \
+ rc_expand_param \
+NO_rc_quotes \
+NO_rm_star_silent \
+NO_sh_file_expansion \
+ sh_option_letters \
+ share_history \
+ short_loops \
+NO_sh_word_split \
+NO_single_line_zle \
+NO_sun_keyboard_hack \
+NO_verbose \
+ zle
+
+# GPG / SSH AGENT
+
+if [ "xKEYCHAIN" != "x" ]; then
+ keychain KEYCHAIN
+ #keychain -Q ${GPGKEY} ${GPGKEY1}
+ [ -z "$HOSTNAME" ] && HOSTNAME=`uname -n`
+ [ -f $HOME/.keychain/$HOSTNAME-sh ] &&
+ . $HOME/.keychain/$HOSTNAME-sh
+ [ -f $HOME/.keychain/$HOSTNAME-sh-gpg ] &&
+ . $HOME/.keychain/$HOSTNAME-sh-gpg
+fi
+
+# ocaml
+
+. ${HOME}/.opam/opam-init/init.zsh > /dev/null 2> /dev/null || true