diff options
author | Maximilian Bosch <maximilian@mbosch.me> | 2018-06-10 23:08:50 +0200 |
---|---|---|
committer | xeji <36407913+xeji@users.noreply.github.com> | 2018-06-10 23:08:50 +0200 |
commit | aa46b1ec0ecb498716813549fe4de479b8f5e893 (patch) | |
tree | feaa56a454ec05534b85292ab79d70a41638fb2e /nixos/modules/programs/zsh/zsh-autosuggestions.nix | |
parent | 35ce5c1c8e5228f43cde083f897ac9da9f24031c (diff) | |
download | nixpkgs-aa46b1ec0ecb498716813549fe4de479b8f5e893.tar nixpkgs-aa46b1ec0ecb498716813549fe4de479b8f5e893.tar.gz nixpkgs-aa46b1ec0ecb498716813549fe4de479b8f5e893.tar.bz2 nixpkgs-aa46b1ec0ecb498716813549fe4de479b8f5e893.tar.lz nixpkgs-aa46b1ec0ecb498716813549fe4de479b8f5e893.tar.xz nixpkgs-aa46b1ec0ecb498716813549fe4de479b8f5e893.tar.zst nixpkgs-aa46b1ec0ecb498716813549fe4de479b8f5e893.zip |
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.md
Diffstat (limited to 'nixos/modules/programs/zsh/zsh-autosuggestions.nix')
-rw-r--r-- | nixos/modules/programs/zsh/zsh-autosuggestions.nix | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/nixos/modules/programs/zsh/zsh-autosuggestions.nix b/nixos/modules/programs/zsh/zsh-autosuggestions.nix new file mode 100644 index 00000000000..416f4c9c675 --- /dev/null +++ b/nixos/modules/programs/zsh/zsh-autosuggestions.nix @@ -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)} + ''; + + }; +} |