Я думаю, что проблема заключается в следующем:
source ~/bin/dotfiles/zsh/*
source ~/bin/dotfiles/zsh/functions/*
Исходная команда принимает только один параметр файла, остальные принимаются в качестве других аргументов и не загружаются, что означает, что источником является только первый глобализированный файл, а не все. Это даже не работало в обычном терминале без экрана. Попробуйте что-то вроде этого:
for x in ~/bin/dotfiles/zsh/* ~/bin/dotfiles/zsh/functions/*; source $x