{ config, pkgs, ... }:
let
  zsh-config = {
    enable = true;
    shellAliases = {
      #ll = "ls -l";
      #update = "sudo nixos-rebuild switch";
    };
    history.size = 1000;
    history.ignoreDups = true;
    #history.ignoreAllDups = true;

    oh-my-zsh = {
      enable = true;
      plugins = [
        # Provides many aliases and a few useful functions.
        #"git"
        # Easily prefix your current or previous commands with sudo by pressing `esc` twice.
        #"sudo"
      ];
      #theme = "robbyrussell";
      theme = "agnoster";
    };
  };
in
{
  # https://nixos.wiki/wiki/Command_Shell
  # https://nixos.wiki/wiki/Zsh
  programs.zsh.enable = true;
  users.defaultUserShell = pkgs.zsh;

  # Inside the following Home Manager configuration block,
  # `config` refers to Home Manager configuration.
  home-manager.users.yoda = { osConfig, config, pkgs, ... }: {
    programs.zsh = zsh-config // {
      # nix-repl: config.home-manager.users.yoda.programs.zsh.history.path
      # -> ~/.local/share/.histfile
      history.path = "${config.xdg.dataHome}/.histfile";
    };
  };
  home-manager.users.root = { osConfig, config, pkgs, ... }: {
    programs.zsh = zsh-config // {
      history.path = "${config.xdg.dataHome}/.histfile";
    };
  };
}
