Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)

Merge pull request #67376 from oxij/nixos/zsh-doc

nixos: zsh: add more helpful documentation into generated files

authored by Michael Raskin and committed by GitHub f320a023 6763bdd8

+53 -13
+53 -13
nixos/modules/programs/zsh/zsh.nix
··· 15 15 (filterAttrs (k: v: v != null) cfg.shellAliases) 16 16 ); 17 17 18 + zshStartupNotes = '' 19 + # Note that generated /etc/zprofile and /etc/zshrc files do a lot of 20 + # non-standard setup to make zsh usable with no configuration by default. 21 + # 22 + # Which means that unless you explicitly meticulously override everything 23 + # generated, interactions between your ~/.zshrc and these files are likely 24 + # to be rather surprising. 25 + # 26 + # Note however, that you can disable loading of the generated /etc/zprofile 27 + # and /etc/zshrc (you can't disable loading of /etc/zshenv, but it is 28 + # designed to not set anything surprising) by setting `no_global_rcs` option 29 + # in ~/.zshenv: 30 + # 31 + # echo setopt no_global_rcs >> ~/.zshenv 32 + # 33 + # See "STARTUP/SHUTDOWN FILES" section of zsh(1) for more info. 34 + ''; 35 + 18 36 in 19 37 20 38 { ··· 69 87 70 88 promptInit = mkOption { 71 89 default = '' 90 + # Note that to manually override this in ~/.zshrc you should run `prompt off` 91 + # before setting your PS1 and etc. Otherwise this will likely to interact with 92 + # your ~/.zshrc configuration in unexpected ways as the default prompt sets 93 + # a lot of different prompt variables. 72 94 autoload -U promptinit && promptinit && prompt walters && setopt prompt_sp 73 95 ''; 74 96 description = '' ··· 100 122 ]; 101 123 example = [ "EXTENDED_HISTORY" "RM_STAR_WAIT" ]; 102 124 description = '' 103 - Configure zsh options. 125 + Configure zsh options. See 126 + <citerefentry><refentrytitle>zshoptions</refentrytitle><manvolnum>1</manvolnum></citerefentry>. 104 127 ''; 105 128 }; 106 129 ··· 147 170 . ${config.system.build.setEnvironment} 148 171 fi 149 172 173 + HELPDIR="${pkgs.zsh}/share/zsh/$ZSH_VERSION/help" 174 + 175 + # Tell zsh how to find installed completions. 176 + for p in ''${(z)NIX_PROFILES}; do 177 + fpath+=($p/share/zsh/site-functions $p/share/zsh/$ZSH_VERSION/functions $p/share/zsh/vendor-completions) 178 + done 179 + 180 + # Setup custom shell init stuff. 150 181 ${cfge.shellInit} 151 182 152 183 ${cfg.shellInit} ··· 161 192 '' 162 193 # /etc/zprofile: DO NOT EDIT -- this file has been generated automatically. 163 194 # This file is read for login shells. 195 + # 196 + ${zshStartupNotes} 164 197 165 198 # Only execute this file once per shell. 166 199 if [ -n "$__ETC_ZPROFILE_SOURCED" ]; then return; fi 167 200 __ETC_ZPROFILE_SOURCED=1 168 201 202 + # Setup custom login shell init stuff. 169 203 ${cfge.loginShellInit} 170 204 171 205 ${cfg.loginShellInit} ··· 180 214 '' 181 215 # /etc/zshrc: DO NOT EDIT -- this file has been generated automatically. 182 216 # This file is read for interactive shells. 217 + # 218 + ${zshStartupNotes} 183 219 184 220 # Only execute this file once per shell. 185 221 if [ -n "$__ETC_ZSHRC_SOURCED" -o -n "$NOSYSZSHRC" ]; then return; fi 186 222 __ETC_ZSHRC_SOURCED=1 187 223 188 - . /etc/zinputrc 224 + ${optionalString (cfg.setOptions != []) '' 225 + # Set zsh options. 226 + setopt ${concatStringsSep " " cfg.setOptions} 227 + ''} 189 228 190 - # Don't export these, otherwise other shells (bash) will try to use same histfile 229 + # Setup command line history. 230 + # Don't export these, otherwise other shells (bash) will try to use same HISTFILE. 191 231 SAVEHIST=${toString cfg.histSize} 192 232 HISTSIZE=${toString cfg.histSize} 193 233 HISTFILE=${cfg.histFile} 194 234 195 - HELPDIR="${pkgs.zsh}/share/zsh/$ZSH_VERSION/help" 235 + # Configure sane keyboard defaults. 236 + . /etc/zinputrc 196 237 197 - # Tell zsh how to find installed completions 198 - for p in ''${(z)NIX_PROFILES}; do 199 - fpath+=($p/share/zsh/site-functions $p/share/zsh/$ZSH_VERSION/functions $p/share/zsh/vendor-completions) 200 - done 201 - 202 - ${optionalString cfg.enableGlobalCompInit "autoload -U compinit && compinit"} 238 + ${optionalString cfg.enableGlobalCompInit '' 239 + # Enable autocompletion. 240 + autoload -U compinit && compinit 241 + ''} 203 242 243 + # Setup custom interactive shell init stuff. 204 244 ${cfge.interactiveShellInit} 205 245 206 246 ${cfg.interactiveShellInit} 207 247 208 - ${optionalString (cfg.setOptions != []) "setopt ${concatStringsSep " " cfg.setOptions}"} 209 - 248 + # Setup aliases. 210 249 ${zshAliases} 211 250 251 + # Setup prompt. 212 252 ${cfg.promptInit} 213 253 214 - # Need to disable features to support TRAMP 254 + # Disable some features to support TRAMP. 215 255 if [ "$TERM" = dumb ]; then 216 256 unsetopt zle prompt_cr prompt_subst 217 257 unset RPS1 RPROMPT