{lib, config, pkgs, pkgs-unstable, ...}: {
  programs.zsh = {
    enable = true;
    enableCompletion = true;
    autosuggestion.enable = true;
    syntaxHighlighting.enable = true;
    defaultKeymap = "viins";

    shellAliases = {
      Gst = "git status";
      Gco = "git checkout";
      Gd = "git diff";
      Gds = "git diff --staged";
      Gc = "git commit";
    };

    history.size = 10000;
    history.path = "$HOME/.zsh_history";

    plugins = [

    ];

    initExtra = ''
      setopt promptsubst
      export PROMPT='%F{12}[%f%F{10}%n%f%F{12}@%f%F{white}%m%f%F{12}]%f%F{white}:%f %F{white}%~%f%F{12}>%b$(${lib.getExe pkgs-unstable.gitprompt-rs} zsh)%f%F{10}%(!.#.$)%f '
      unsetopt beep
      bindkey '^R' history-incremental-search-backward
    '';

    initExtraBeforeCompInit = "zstyle ':completion:*' matcher-list '' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]}' 'r:|[._-]=* r:|=*'";
  };
}