{pkgs, ...}: {
  programs = {
    zoxide = {
      enable = true;
    };
    zsh = {
      enable = true;
      shellAliases = {
        cd = "z";
        code = "codium ./";
        ls = "eza";
        lh = "ls -lah";
        cat = "bat";
        tree = "tre";
        neofetch = "hyfetch";
        shutdown = "shutdown 0";
        reboot = "reboot 0";
      };
      plugins = [
        {
          name = "zsh-nix-shell";
          file = "nix-shell.plugin.zsh";
          src = pkgs.fetchFromGitHub {
            owner = "chisui";
            repo = "zsh-nix-shell";
            rev = "v0.8.0";
            sha256 = "sha256-Z6EYQdasvpl1P78poj9efnnLj7QQg13Me8x1Ryyw+dM=";
          };
        }
        {
          name = "terraform";
          src = pkgs.fetchFromGitHub {
            owner = "macunha1";
            repo = "zsh-terraform";
            rev = "fd1471d3757f8ed13f56c4426f88616111de2a87";
            sha256 = "0z6i9wjjklb4lvr7zjhbphibsyx51psv50gm07mbb0kj9058j6kc";
          };
        }
      ];
      autosuggestion.enable = true;
      enableCompletion = true;
      historySubstringSearch.enable = true;
      syntaxHighlighting.enable = true;
      #zsh-abbr.enable = true;
      oh-my-zsh = {
        enable = true;
        plugins = [
          "git"
          "colored-man-pages"
          "colorize"
          "dirhistory"
          "dirpersist"
          "history"
          "history-substring-search"
          "fancy-ctrl-z"
          "git-flow"
          "isodate"
          "z"
          "zsh-interactive-cd"
          "zsh-navigation-tools"
        ];
      };
      # Extra commands that take more complex forms
      initExtra = ''
        eval "$(zoxide init --cmd cd zsh)"
        tre() { command tre "$@" -e && source "/tmp/tre_aliases_$USER" 2>/dev/null; }
        zhx() { command zellij action new-tab --layout $HOME/.config/zellij/layouts/helix.kdl; }
      '';
    };
  };
}