# terminals/zsh.nix { lib, pkgs, ... }: let username = "henrov"; in { # Export as a flake module zsh = { config, pkgs, lib, ... }: { options.mySystem.terminals.zsh.enable = lib.mkEnableOption "Enable Zsh terminal with Oh-My-Zsh"; config = lib.mkIf (config.mySystem.terminals.zsh.enable or false) { home-manager.users.${username} = { programs.zsh.enable = true; programs.zsh.enableCompletion = true; programs.zsh.ohMyZsh = { enable = true; theme = "catppuccin-mocha"; plugins = [ "git" "docker" "direnv" "zsh-autosuggestions" "zsh-completions" "zsh-history-substring-search" # zsh-syntax-highlighting is sourced in initExtra ]; }; programs.zsh.initExtra = '' # Catppuccin Mocha colors local mocha_base="#1E1E2E" local mocha_surface0="#313244" local mocha_text="#CDD6F4" local mocha_lavender="#B4BEFE" local mocha_blue="#89B4FA" local mocha_sapphire="#74C7EC" local mocha_teal="#94D2D5" local mocha_green="#A6E3A1" local mocha_yellow="#F9E2AF" local mocha_peach="#FAB387" local mocha_maroon="#EBA0AC" local mocha_red="#F38BA8" local mocha_mauve="#CBA6F7" local mocha_pink="#F5E2C7" local mocha_flamingo="#F2CDCD" local mocha_rosewater="#F5E0DC" # Prompt PROMPT='%{$fg[$mocha_blue]%}%n%{$reset_color%}@%{$fg[$mocha_peach]%}%m%{$reset_color%} %{$fg[$mocha_lavender]%}%~%{$reset_color%} %{$fg[$mocha_red]%}$%{$reset_color%} ' RPROMPT='%{$fg[$mocha_green]%}%T%{$reset_color%}' # Source zsh-syntax-highlighting if [ -f ${pkgs.zsh-syntax-highlighting}/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ]; then source ${pkgs.zsh-syntax-highlighting}/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh fi ''; }; }; }; }