{ config, options, lib, pkgs, ... }: let zshConfig = config.modules.shell.zsh; in { options.modules.shell.zsh = { enable = lib.mkOption { type = lib.types.bool; default = true; }; }; config = lib.mkIf (zshConfig.enable) { programs.zsh.enable = true; users.defaultUserShell = pkgs.zsh; environment.sessionVariables.SHELL = "${pkgs.zsh}/bin/zsh"; environment.pathsToLink = ["/share/zsh"]; home.packages = [ pkgs.zsh-autocomplete pkgs.pure-prompt pkgs.wget pkgs.curl pkgs.htop pkgs.btop ]; home.manager.programs = { direnv = { enable = true; enableZshIntegration = true; nix-direnv.enable = true; }; zsh = { enable = true; enableAutosuggestions = true; enableCompletion = true; syntaxHighlighting.enable = true; autocd = true; defaultKeymap = "viins"; dotDir = ".config/zsh"; history = { size = 10000; ignoreDups = true; }; }; }; }; }