declare -a autojump_paths
autojump_paths=(
  $HOME/.autojump/etc/profile.d/autojump.zsh               # manual installation
  $HOME/.autojump/share/autojump/autojump.zsh              # manual installation
  $HOME/.nix-profile/etc/profile.d/autojump.sh             # NixOS installation
  /run/current-system/sw/share/autojump/autojump.zsh       # NixOS installation
  /etc/profiles/per-user/$USER/share/autojump/autojump.zsh # Home Manager, NixOS with user-scoped packages
  /usr/share/autojump/autojump.zsh                         # Debian and Ubuntu package
  /etc/profile.d/autojump.zsh                              # manual installation
  /etc/profile.d/autojump.sh                               # Gentoo installation
  /usr/local/share/autojump/autojump.zsh                   # FreeBSD installation
  /usr/pkg/share/autojump/autojump.zsh                     # NetBSD installation
  /opt/local/etc/profile.d/autojump.sh                     # macOS with MacPorts
  /usr/local/etc/profile.d/autojump.sh                     # macOS with Homebrew (default)
  /opt/homebrew/etc/profile.d/autojump.sh                  # macOS with Homebrew (default on M1 macs)
  /opt/pkg/share/autojump/autojump.zsh                     # macOS with pkgsrc
  /etc/profiles/per-user/$USER/etc/profile.d/autojump.sh   # macOS Nix, Home Manager and flakes
  /nix/var/nix/gcroots/current-system/sw/share/zsh/site-functions/autojump.zsh  # macOS Nix, nix-darwin
)

for file in $autojump_paths; do
  if [[ -f "$file" ]]; then
    source "$file"
    found=1
    break
  fi
done

# if no path found, try Homebrew
if (( ! found && $+commands[brew] )); then
  file=$(brew --prefix)/etc/profile.d/autojump.sh
  if [[ -f "$file" ]]; then
    source "$file"
    found=1
  fi
fi

(( ! found )) && echo '[oh-my-zsh] autojump not found. Please install it first.'

unset autojump_paths file found