vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / programs / fzf.nix
blobb9258ab1e5052ddeb5a973b9d875d989d38f8a9e
1 { pkgs, config, lib, ... }:
3 let
4   cfg = config.programs.fzf;
5 in
7   options = {
8     programs.fzf = {
9       fuzzyCompletion = lib.mkEnableOption "fuzzy completion with fzf";
10       keybindings = lib.mkEnableOption "fzf keybindings";
11     };
12   };
14   config = lib.mkIf (cfg.keybindings || cfg.fuzzyCompletion) {
15     environment.systemPackages = lib.mkIf (cfg.keybindings || cfg.fuzzyCompletion) [ pkgs.fzf ];
17     programs = {
18       # load after programs.bash.completion.enable
19       bash.promptPluginInit = lib.mkAfter (lib.optionalString cfg.fuzzyCompletion ''
20         source ${pkgs.fzf}/share/fzf/completion.bash
21       '' + lib.optionalString cfg.keybindings ''
22         source ${pkgs.fzf}/share/fzf/key-bindings.bash
23       '');
25       zsh = {
26         interactiveShellInit = lib.optionalString (!config.programs.zsh.ohMyZsh.enable)
27         (lib.optionalString cfg.fuzzyCompletion ''
28           source ${pkgs.fzf}/share/fzf/completion.zsh
29         '' + lib.optionalString cfg.keybindings ''
30           source ${pkgs.fzf}/share/fzf/key-bindings.zsh
31         '');
33         ohMyZsh.plugins = lib.mkIf config.programs.zsh.ohMyZsh.enable [ "fzf" ];
34       };
35     };
36   };
38   meta.maintainers = with lib.maintainers; [ laalsaas ];