{ pkgs, lib, config, ... }: let cfg = config.mods.terminal; aliases = with lib; { la = "ls -lah"; xc = "${getExe pkgs.xclip} -selection clipboard"; ".." = "cd .."; "..." = "cd ../.."; "...." = "cd ../.."; "....." = "cd ../../.."; "......" = "cd ../../../.."; }; in { options.mods.terminal = {zsh.enable = lib.mkEnableOption "enables zsh";}; config = { programs.starship.enable = true; programs.zsh = lib.mkIf cfg.zsh.enable { enable = true; enableCompletion = true; autosuggestion.enable = true; syntaxHighlighting.enable = true; history = { save = 2097152; size = 2097152; expireDuplicatesFirst = true; ignoreDups = true; ignoreSpace = true; path = "${config.xdg.dataHome}/zsh/history"; }; initContent = '' autoload -U compinit setopt no_auto_remove_slash ''; shellAliases = aliases; plugins = with pkgs; [ { name = "zsh-vi-mode"; src = zsh-vi-mode; file = "share/zsh-vi-mode/zsh-vi-mode.plugin.zsh"; } ]; }; }; }