umask 022

# remote gpg-agent handling
if [[ ${HOST} == "arrakis.bitgnome.net" ]]; then
	if [[ ! -d /run/user/1000/gnupg ]]; then
		gpgconf --create-socketdir
	fi
fi

eval $(dircolors)

# set SWAYSOCK correctly
if pgrep -U nipsy -x sway >/dev/null; then
	export SWAYSOCK=/run/user/$(id -u)/sway-ipc.$(id -u).$(pgrep -x sway).sock
fi

# start sway by default if logging into tty1
if [[ -z "${DISPLAY}" ]] && [[ $(tty) == "/dev/tty1" ]]; then

	export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)

	# set some Wayland specific variables
	export ELECTRON_OZONE_PLATFORM_HINT=auto
	export MOZ_ENABLE_WAYLAND=1
	export GDK_BACKEND=wayland
	export QT_QPA_PLATFORM=wayland
	export SDL_VIDEODRIVER=wayland
	export XDG_SESSION_TYPE=wayland

	exec sway > ~/.sway.log

fi

# completion options
setopt LIST_PACKED MENU_COMPLETE
# expansion and globbing options
setopt NO_NOMATCH
# history options
setopt SHARE_HISTORY EXTENDED_HISTORY HIST_FCNTL_LOCK HIST_IGNORE_ALL_DUPS HIST_REDUCE_BLANKS HIST_SAVE_NO_DUPS
# input/output options
setopt PRINT_EXIT_VALUE RM_STAR_SILENT
# job control options
setopt LONG_LIST_JOBS NO_HUP
# zle options
setopt NO_BEEP

# menu completion
zstyle ':completion:*' menu select=5

# vi keybindings and settings
bindkey -v
export KEYTIMEOUT=1
autoload -U edit-command-line
zle -N edit-command-line
bindkey -M vicmd v edit-command-line

# always open tmux if interactive
[[ $- != *i* ]] && return
#[[ -z "$TMUX" ]] && (tmux -2 new-session -t default \; new-window || tmux -2 new-session -s default)
[[ -z "$TMUX" ]] && (tmux -2 attach -t default || tmux -2 new-session -s default)

# useful helper functions
function nix-file-list { find $(nix build ${1} --print-out-paths --no-link) }

function ntrace {

	if [[ -z ${argv} ]]; then
		echo 'you must specify a command to strace!' >&2
		return 1
	fi

	eval strace -f -e trace=network -s 10000 ${=argv[@]}

}

# prompt/theme shit
function precmd {

	local RC=${?}
	#local RC=${(%)RC-%?}
	
	print -nP '\n'
	
	# current user
	if [[ ${EUID} -eq 0 ]]; then
		print -nP '%{%S%F{red}%}%n%{%f%s%}'
	else
		print -nP '%{%F{magenta}%}%n%{%f%}'
	fi
	
	print -nP '@'
	
	# current host
	if [[ -n "$SSH_CLIENT" || -n "$SSH2_CLIENT" ]]; then
		print -nP '%{%F{yellow}%}%m%{%f%}'
	else
		print -nP '%{%F{green}%}%m%{%f%}'
	fi
	
	# connected terminal
	print -nP '/%{%U%}%l%{%u%} '
	
	# cwd
	print -nP '%{%F{cyan}%}%~%{%f%} '
	
	# job count
	JOBCOUNT='%j'
	if [[ ${(%)JOBCOUNT} -gt 0 ]]; then
		print -nP 'j=%{%F{yellow}%}%j%{%f%} '
	fi
	
	# previous return code
	if [[ ${RC} -ne 0 ]]; then
		print -nP 'rc=%{%F{red}%}'
		echo -n "${RC}"
		print -nP '%{%f%} '
	else
		print -nP 'rc=%{%F{green}%}'
		echo -n "${RC}"
		print -nP '%{%f%} '
	fi
	
	# time stamp
	print -P '%{%F{cyan}%}%D{%FT%T%z}%{%f%}'

}

PS1='%# '
