From 43c9825e49d25fbd2c19abcdeb8f73aee8be2a4c Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Wed, 14 May 2025 10:50:27 +0200 Subject: ... --- user-profiles/zsh/default.nix | 95 ++++++++++++++++++++++++++++--------------- user-profiles/zsh/zshrc | 6 --- 2 files changed, 63 insertions(+), 38 deletions(-) (limited to 'user-profiles/zsh') diff --git a/user-profiles/zsh/default.nix b/user-profiles/zsh/default.nix index 428e2459..973ff775 100644 --- a/user-profiles/zsh/default.nix +++ b/user-profiles/zsh/default.nix @@ -1,38 +1,69 @@ { userName, pkgs, customUtils, lib, config, ... }: -let - dotDir = ".config/zsh"; - p10kZsh = "${dotDir}/.p10k.zsh"; - cfg = config.home-manager.users.${userName}; -in { - home-manager.users.${userName} = { - programs.zsh = { - inherit dotDir; - enable = true; - autocd = true; - enableCompletion = true; +{ + config = { + home-manager.users.${userName} = let sysConfig = config; in { config, ... }: { + config = { + programs.zsh = { + dotDir = ".config/zsh"; + enable = true; + autocd = true; + enableCompletion = true; + enableVteIntegration = true; + history = { + append = true; + expireDuplicatesFirst = true; + extended = true; + findNoDups = true; + }; + syntaxHighlighting.enable = true; + zsh-abbr = { + enable = true; + abbreviations = { + re = "systemctl restart"; + ure = "systemctl --user restart"; + }; + globalAbbreviations = { + "L" = "| less"; + "S" = "&> /dev/null"; + "G" = "| grep"; + "B" = "&> /dev/null &"; + "BB" = "&> /dev/null &!"; + }; + }; - plugins = [ - { name = "powerlevel10k"; - file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme"; - src = pkgs.zsh-powerlevel10k; - } - ]; - initExtraFirst = '' - if [[ $TERM == "dumb" ]]; then - unsetopt zle - PS1='$ ' - return - fi - ''; - initExtraBeforeCompInit = '' - source "${cfg.home.homeDirectory}/${p10kZsh}" - ''; - initExtra = lib.mkAfter '' - source ${./zshrc} - source "${pkgs.zsh-syntax-highlighting}/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" - ''; + plugins = [ + { name = "powerlevel10k"; + file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme"; + src = pkgs.zsh-powerlevel10k; + } + ]; + initContent = lib.mkMerge [ + (lib.mkBefore '' + if [[ $TERM == "dumb" ]]; then + unsetopt zle + PS1='$ ' + return + fi + '') + (lib.mkOrder 550 '' + source "$HOME/${config.xdg.configFile."zsh/.p10k.zsh".target}" + '') + (lib.mkAfter '' + source ${./zshrc} + '') + ]; + }; + + xdg.configFile."zsh/.p10k.zsh".source = ./p10k.zsh; + }; }; - home.file.${p10kZsh}.source = ./p10k.zsh; + programs.zsh.enable = true; + environment.pathsToLink = [ "/share/zsh" ]; + environment.shellAliases = lib.mkOverride 90 {}; + + nixpkgs.externalConfig.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ + "zsh-abbr" + ]; }; } diff --git a/user-profiles/zsh/zshrc b/user-profiles/zsh/zshrc index ed614182..af3aca64 100644 --- a/user-profiles/zsh/zshrc +++ b/user-profiles/zsh/zshrc @@ -33,9 +33,3 @@ zle -N self-insert url-quote-magic zle -N bracketed-paste bracketed-paste-magic setopt extended_glob - -alias -g L='| less' -alias -g S='&> /dev/null' -alias -g G='| grep' -alias -g B='&> /dev/null &' -alias -g BB='&> /dev/null &!' -- cgit v1.2.3