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 
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 
…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";
};
}
];
};