{ config, pkgs, lib, ... }: let cfg = config.my.home.shell; aliases = config.my.home.shell.aliases; in { config = lib.mkIf (cfg.name == "zsh") { home.packages = with pkgs; [ zsh-completions ]; programs.zsh = { enable = true; dotDir = ".config/zsh"; enableCompletion = true; enableAutosuggestions = true; history = { size = 500000; save = 500000; extended = false; ignoreSpace = true; ignoreDups = true; share = false; # see # https://github.com/nix-community/home-manager/blob/32a7da69dc53c9eb5ad0675eb7fdc58f7fe35272/modules/programs/zsh.nix#L537 path = ".local/share/zsh/zsh_history"; }; localVariables = { # Print timing statistics for everything which takes longer than 5 seconds of # user + system time. REPORTTIME = 5; }; shellAliases = aliases; defaultKeymap = "emacs"; initExtra = lib.concatMapStrings builtins.readFile [ ./completion-style.zsh ./options.zsh ./prompt.zsh ./tmux.zsh ./new-go-project.zsh ]; }; }; }