{ config, lib, pkgs, ... }:
{
  programs.zsh =
    {
      enable = true;
      history = {
        save = 50000;
        size = 50000;
      };
      enableCompletion = true;
      enableAutosuggestions = true;
      enableSyntaxHighlighting = true;
      initExtra = ''
        source ${./p10k.zsh}
        autoload -Uz up-line-or-beginning-search down-line-or-beginning-search
        zle -N up-line-or-beginning-search
        zle -N down-line-or-beginning-search

        [[ -n "$key[Up]"   ]] && bindkey -- "$key[Up]"   up-line-or-beginning-search
        [[ -n "$key[Down]" ]] && bindkey -- "$key[Down]" down-line-or-beginning-search

        eval $(${pkgs.thefuck}/bin/thefuck --alias)
      '';
      oh-my-zsh = {
        enable = true;
        plugins = [
          "git"
          "terraform"
          "systemd"
        ];
      };
      plugins = [
        {
          name = "powerlevel10k";
          src = pkgs.zsh-powerlevel10k;
          file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme";
        }
        {
          name = "powerlevel10k-config";
          src = ./p10k.zsh;
        }
        {
          name = "nix-zsh-completions";
          src = pkgs.nix-zsh-completions;
        }
        {
          name = "zsh-completions";
          src = pkgs.zsh-completions;
        }
      ];
    };
}
