/ modules / home / programs / zsh / default.nix
default.nix
 1  {
 2    lib,
 3    pkgs,
 4    config,
 5    ...
 6  }:
 7  {
 8    programs.zsh = {
 9      enable = true;
10      autocd = false;
11      enableCompletion = true;
12      dotDir = "${config.xdg.configHome}/zsh";
13  
14      history = {
15        size = 10000;
16        save = 10000;
17        share = true;
18        append = true;
19        extended = true;
20        ignoreDups = true;
21        ignoreAllDups = true;
22        expireDuplicatesFirst = true;
23        # path = "`\${config.programs.zsh.dotDir}/.zsh_history`"; # default
24      };
25  
26      autosuggestion = {
27        enable = true;
28        strategy = [
29          "history"
30          "completion"
31        ];
32      };
33  
34      syntaxHighlighting = {
35        enable = true;
36        highlighters = [
37          "line"
38          "main"
39          "root"
40          "regexp"
41          "pattern"
42          "brackets"
43        ];
44      };
45  
46      plugins = [
47        {
48          name = "powerlevel10k";
49          src = pkgs.zsh-powerlevel10k;
50          file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme";
51        }
52        {
53          name = "powerlevel10k-config";
54          src = lib.cleanSource ./.;
55          file = ".p10k.zsh";
56        }
57      ];
58  
59      oh-my-zsh = {
60        enable = true;
61        plugins = [
62          "uv"
63          "git"
64          "sudo"
65          "rust"
66          "emoji"
67          "docker"
68          "pulumi"
69          "kubectl"
70          "colorize"
71          "tailscale"
72          "docker-compose"
73          "colored-man-pages"
74        ]
75        ++ lib.optionals pkgs.stdenv.isDarwin [
76          "brew"
77          "dash"
78          "macos"
79        ];
80      };
81  
82      # envExtra = '''';     # ~/.zshenv
83      # loginExtra = '''';   # ~/.zlogin
84      # logoutExtra = '''';  # ~/.zlogout
85      # profileExtra = ''''; # ~/.zprofile
86    };
87  }