Share your ultimate Zsh + Oh My Zsh + Powerlevel10k config (Home Manager/NixOS welcome!)


Hey folks,

I’m trying to build a solid and clean terminal setup with Zsh, Oh My Zsh, and Powerlevel10k — but mine is currently a mess, with random bits thrown together and things not working as expected. Instead of fighting with it, I’d love to see how others have approached this.

If you have a well-tuned Zsh config, especially one that includes:

  • Powerlevel10k (with a clean and useful prompt)
  • Oh My Zsh with useful plugins
  • Nice aliases / functions / completions
  • Extra things like fzf, zoxide, bat, eza, fd, etc.
  • (Bonus) Integrated with Home Manager or NixOS

Please share your config, or snippets of it! I’m especially interested in setups that are:

  • Fast
  • Minimal but powerful
  • Readable / easy to maintain
  • Nice-looking (but functional)

Feel free to also drop your .p10k.zsh file, or any custom plugins / tips you rely on. I’m sure many others will appreciate it too!

Thanks in advance :raised_hands:


I personally use https://starship.rs/ for a custom prompt, as it appears quick to start up, works well for me, and is easier to maintain, in comparison to omz which I found slow and a bit obscure in the past. There’s a NixOS module for starship, and it even provides support for tools like nix-shell and direnv. Aliases I just handle directly via my zsh config, as writing one-liners worked best in terms of ensuring my dependencies were properly specified. Any reason you specifically want omz/p10k?

1 Like

i only have

programs.zsh.ohMyZsh.theme = "random";
programs.zsh.ohMyZsh.preLoaded = "ZSH_THEME_RANDOM_QUIET=true";

for the random prompt every time (out of like 100), which i find pretty fun :smiley:

…but im moving away from zsh soon anyway…

There’s no particular reason I wanted to use omz/p10k, I just decided to try it out.

programs.zsh = {
        enable = true;
        enableCompletion = true;
        autosuggestion.enable = true;
        syntaxHighlighting.enable = true;
        oh-my-zsh = {
          enable = true;
          plugins = ["git" "sudo"];
          theme = "ys";
        };
        history.size = 10000;
        history.ignoreAllDups = true;
        history.ignorePatterns = ["rm *" "git clone *" "ls *"];
        plugins = mkIf cfg.zsh.setNixShellDefault.enable [
          {
            name = "zsh-nix-shell";
            file = "nix-shell.plugin.zsh";
            src = pkgs.fetchFromGitHub {
              owner = "chisui";
              repo = "zsh-nix-shell";
              rev = "v0.8.0";
              sha256 = "1lzrn0n4fxfcgg65v0qhnj7wnybybqzs4adz7xsrkgmcsr0ii8b7";
            };
          }
        ];
      };