nixos/autosuggestions: add module (#41397)
The `zsh-autosuggestions` package provides several configuration options such as a different highlight style (like `fg=cyan` which is easier to read). With `rename.nix` the old `programs.zsh.enableAutosuggestions` is still functional, but yields the following warning like this during evaluation: ``` trace: warning: The option `programs.zsh.enableAutosuggestions' defined in `<unknown-file>' has been renamed to `programs.zsh.autosuggestions.enable'. ``` The module provides the most common `zsh-autosuggestions` (highlight style and strategy) as options that will be written into the interactive shell init (`/etc/zshrc` by default). Further configuration options can be declared using the `extraConfig` attr set: ``` { programs.zsh.autosuggestions.extraConfig = { "ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE" = "buffer_size"; }; } ``` A full list of available configuration options for `zsh-autosuggestions` can be viewed here: https://github.com/zsh-users/zsh-autosuggestions/blob/v0.4.3/README.mdwip/yesman
parent
35ce5c1c8e
commit
aa46b1ec0e
@ -0,0 +1,60 @@ |
||||
{ config, pkgs, lib, ... }: |
||||
|
||||
with lib; |
||||
|
||||
let |
||||
cfg = config.programs.zsh.autosuggestions; |
||||
in |
||||
{ |
||||
options.programs.zsh.autosuggestions = { |
||||
|
||||
enable = mkEnableOption "zsh-autosuggestions"; |
||||
|
||||
highlightStyle = mkOption { |
||||
type = types.str; |
||||
default = "fg=8"; # https://github.com/zsh-users/zsh-autosuggestions/tree/v0.4.3#suggestion-highlight-style |
||||
description = "Highlight style for suggestions ({fore,back}ground color)"; |
||||
example = "fg=cyan"; |
||||
}; |
||||
|
||||
strategy = mkOption { |
||||
type = types.enum [ "default" "match_prev_cmd" ]; |
||||
default = "default"; |
||||
description = '' |
||||
Set ZSH_AUTOSUGGEST_STRATEGY to choose the strategy for generating suggestions. |
||||
There are currently two to choose from: |
||||
|
||||
* default: Chooses the most recent match. |
||||
* match_prev_cmd: Chooses the most recent match whose preceding history item matches |
||||
the most recently executed command (more info). Note that this strategy won't work as |
||||
expected with ZSH options that don't preserve the history order such as |
||||
HIST_IGNORE_ALL_DUPS or HIST_EXPIRE_DUPS_FIRST. |
||||
''; |
||||
}; |
||||
|
||||
extraConfig = mkOption { |
||||
type = with types; attrsOf str; |
||||
default = {}; |
||||
description = "Attribute set with additional configuration values"; |
||||
example = literalExample '' |
||||
{ |
||||
"ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE" = "20"; |
||||
} |
||||
''; |
||||
}; |
||||
|
||||
}; |
||||
|
||||
config = mkIf cfg.enable { |
||||
|
||||
programs.zsh.interactiveShellInit = '' |
||||
source ${pkgs.zsh-autosuggestions}/share/zsh-autosuggestions/zsh-autosuggestions.zsh |
||||
|
||||
export ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="${cfg.highlightStyle}" |
||||
export ZSH_AUTOSUGGEST_STRATEGY="${cfg.strategy}" |
||||
|
||||
${concatStringsSep "\n" (mapAttrsToList (key: value: ''export ${key}="${value}"'') cfg.extraConfig)} |
||||
''; |
||||
|
||||
}; |
||||
} |
Loading…
Reference in new issue