diff options
Diffstat (limited to 'user-profiles/zsh/default.nix')
-rw-r--r-- | user-profiles/zsh/default.nix | 100 |
1 files changed, 67 insertions, 33 deletions
diff --git a/user-profiles/zsh/default.nix b/user-profiles/zsh/default.nix index daeb7e82..ab523a52 100644 --- a/user-profiles/zsh/default.nix +++ b/user-profiles/zsh/default.nix | |||
@@ -1,38 +1,72 @@ | |||
1 | { userName, pkgs, customUtils, lib, config, ... }: | 1 | { userName, pkgs, customUtils, lib, config, ... }: |
2 | let | 2 | { |
3 | dotDir = ".config/zsh"; | 3 | config = { |
4 | p10kZsh = "${dotDir}/.p10k.zsh"; | 4 | home-manager.users.${userName} = let sysConfig = config; in { config, ... }: { |
5 | cfg = config.home-manager.users.${userName}; | 5 | config = { |
6 | in { | 6 | programs.zsh = { |
7 | home-manager.users.${userName} = { | 7 | dotDir = ".config/zsh"; |
8 | programs.zsh = { | 8 | enable = true; |
9 | inherit dotDir; | 9 | autocd = true; |
10 | enable = true; | 10 | enableCompletion = true; |
11 | autocd = true; | 11 | enableVteIntegration = true; |
12 | enableCompletion = true; | 12 | history = { |
13 | 13 | append = true; | |
14 | plugins = [ | 14 | expireDuplicatesFirst = true; |
15 | { name = "powerlevel10k"; | 15 | extended = true; |
16 | file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme"; | 16 | findNoDups = true; |
17 | src = pkgs.zsh-powerlevel10k; | 17 | }; |
18 | } | 18 | syntaxHighlighting.enable = true; |
19 | ]; | 19 | zsh-abbr = { |
20 | initExtraFirst = '' | 20 | enable = true; |
21 | if [[ $TERM == "dumb" ]]; then | 21 | abbreviations = { |
22 | unsetopt zle | 22 | re = "systemctl restart"; |
23 | PS1='$ ' | 23 | ure = "systemctl --user restart"; |
24 | return | 24 | st = "systemctl status"; |
25 | fi | 25 | ust = "systemctl --user status"; |
26 | ''; | 26 | }; |
27 | initExtraBeforeCompInit = '' | 27 | globalAbbreviations = { |
28 | source "${cfg.home.homeDirectory}/${p10kZsh}" | 28 | "L" = "| less"; |
29 | ''; | 29 | "S" = "&> /dev/null"; |
30 | initExtra = lib.mkAfter '' | 30 | "G" = "| grep"; |
31 | source ${./zshrc} | 31 | "B" = "&> /dev/null &"; |
32 | source "${pkgs.zsh-syntax-highlighting}/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" | 32 | "BB" = "&> /dev/null &!"; |
33 | ''; | 33 | "J" = lib.mkIf config.programs.jq.enable "| jq '.'"; |
34 | }; | ||
35 | }; | ||
36 | |||
37 | plugins = [ | ||
38 | { name = "powerlevel10k"; | ||
39 | file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme"; | ||
40 | src = pkgs.zsh-powerlevel10k; | ||
41 | } | ||
42 | ]; | ||
43 | initContent = lib.mkMerge [ | ||
44 | (lib.mkBefore '' | ||
45 | if [[ $TERM == "dumb" ]]; then | ||
46 | unsetopt zle | ||
47 | PS1='$ ' | ||
48 | return | ||
49 | fi | ||
50 | '') | ||
51 | (lib.mkOrder 550 '' | ||
52 | source "$HOME/${config.xdg.configFile."zsh/.p10k.zsh".target}" | ||
53 | '') | ||
54 | (lib.mkAfter '' | ||
55 | source ${./zshrc} | ||
56 | '') | ||
57 | ]; | ||
58 | }; | ||
59 | |||
60 | xdg.configFile."zsh/.p10k.zsh".source = ./p10k.zsh; | ||
61 | }; | ||
34 | }; | 62 | }; |
35 | 63 | ||
36 | home.file.${p10kZsh}.source = ./p10k.zsh; | 64 | programs.zsh.enable = true; |
65 | environment.pathsToLink = [ "/share/zsh" ]; | ||
66 | environment.shellAliases = lib.mkOverride 90 {}; | ||
67 | |||
68 | nixpkgs.externalConfig.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ | ||
69 | "zsh-abbr" | ||
70 | ]; | ||
37 | }; | 71 | }; |
38 | } | 72 | } |