at master 1.1 kB view raw
1{ 2 config, 3 lib, 4 pkgs, 5 ... 6}: 7 8let 9 cfg = config.programs.iay; 10 inherit (lib) 11 mkEnableOption 12 mkIf 13 mkOption 14 mkPackageOption 15 optionalString 16 types 17 ; 18in 19{ 20 options.programs.iay = { 21 enable = mkEnableOption "iay, a minimalistic shell prompt"; 22 package = mkPackageOption pkgs "iay" { }; 23 24 minimalPrompt = mkOption { 25 type = types.bool; 26 default = false; 27 description = "Use minimal one-liner prompt."; 28 }; 29 }; 30 31 config = mkIf cfg.enable { 32 programs.bash.promptInit = '' 33 if [[ $TERM != "dumb" && (-z $INSIDE_EMACS || $INSIDE_EMACS == "vterm") ]]; then 34 PS1='$(iay ${optionalString cfg.minimalPrompt "-m"})' 35 fi 36 ''; 37 38 programs.zsh.promptInit = '' 39 if [[ $TERM != "dumb" && (-z $INSIDE_EMACS || $INSIDE_EMACS == "vterm") ]]; then 40 autoload -Uz add-zsh-hook 41 _iay_prompt() { 42 PROMPT="$(iay -z ${optionalString cfg.minimalPrompt "-m"})" 43 } 44 add-zsh-hook precmd _iay_prompt 45 fi 46 ''; 47 }; 48 49 meta.maintainers = pkgs.iay.meta.maintainers; 50}