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}