{
  lib,
  pkgs,
  assets,
  ...
}:
{

  programs.zsh = {
    enable = true;
    defaultKeymap = lib.mkDefault "viins";
  };

  programs.bash = {
    enable = true;
    bashrcExtra = ''
      set -o vi
    '';
  };

  # to prevent strange errors
  programs.kitty.enable = true;

  # a better cat
  programs.bat = {
    enable = true;
    #config.theme = "gruvbox-light";
  };

  home.shellAliases.cat = "${pkgs.bat}/bin/bat --theme='gruvbox-light'";
  home.shellAliases.llt = "${pkgs.eza}/bin/exa -a --tree";

  # use z instead of cd
  # use zi to fuzzy search through all registered directories
  programs.zoxide = {
    enable = true;
    enableZshIntegration = true;
  };

  # provide better `Ctrl+r` command in terminal
  programs.atuin = {
    enable = true;
    enableBashIntegration = true;
    enableZshIntegration = true;
    daemon.enable = true;
    settings = {
      auto_sync = true;
      sync_frequency = "5m";
      sync_address = "http://chungus.private:8888";
      search_mode = "fuzzy";
      style = "full";
      inline_height = 20;
      keymap_mode = "vim-normal";

      # With workspace filtering enabled, Atuin will filter for commands executed
      # in any directory within a git repository tree.
      workspaces = true;

    };
  };
}