{ config, lib, pkgs, ... }: let aliases = { cls = "printf '\\033c'; clear"; vim = "nvim"; hm = "home-manager --flake ~/dotfiles"; hms = "home-manager switch"; lsa = "eza -la --icons"; lg = "lazygit"; }; in { programs.zsh = { enable = true; autocd = true; dotDir = ".config/zsh"; enableAutosuggestions = true; enableCompletion = true; shellAliases = aliases; oh-my-zsh = { enable = true; plugins = [ "git" "extract" "httpie" "gh" "node" "npm" "yarn" # "bun" "deno" "vscode" # "zsh-interactive-cd" ]; custom = "${pkgs.spaceship-prompt}/share/zsh"; theme = "spaceship"; }; plugins = [ { name = "zsh-nix-shell"; file = "nix-shell.plugin.zsh"; src = pkgs.fetchFromGitHub { owner = "chisui"; repo = "zsh-nix-shell"; rev = "v0.8.0"; sha256 = "1lzrn0n4fxfcgg65v0qhnj7wnybybqzs4adz7xsrkgmcsr0ii8b7"; }; } ]; initExtra = '' SHELL=${pkgs.zsh}/bin/zsh SPACESHIP_HOST_SHOW="always" SPACESHIP_TIME_SHOW=false SPACESHIP_PROMPT_ORDER=( time # Time stamps section # user # Username section dir # Current directory section host # Hostname section git # Git section (git_branch + git_status) node # Node.js section bun # Bun section deno # Deno section crystal # Crystal section ruby # Ruby section golang # Go section php # PHP section rust # Rust section venv # virtualenv section python # Python section exec_time # Execution time line_sep # Line break # battery # Battery level and status # vi_mode # Vi-mode indicator jobs # Background jobs indicator exit_code # Exit code section char # Prompt character sudo # sudo status ) ''; }; programs.bash = { enable = true; shellAliases = aliases; }; }