1{ pkgs, config, lib, ... }:
2with lib;
3let
4 cfg = config.programs.fzf;
5in
6{
7 options = {
8 programs.fzf = {
9 fuzzyCompletion = mkEnableOption (mdDoc "fuzzy completion with fzf");
10 keybindings = mkEnableOption (mdDoc "fzf keybindings");
11 };
12 };
13 config = {
14 environment.systemPackages = optional (cfg.keybindings || cfg.fuzzyCompletion) pkgs.fzf;
15
16 programs.bash.interactiveShellInit = optionalString cfg.fuzzyCompletion ''
17 source ${pkgs.fzf}/share/fzf/completion.bash
18 '' + optionalString cfg.keybindings ''
19 source ${pkgs.fzf}/share/fzf/key-bindings.bash
20 '';
21
22 programs.zsh.interactiveShellInit = optionalString (!config.programs.zsh.ohMyZsh.enable)
23 (optionalString cfg.fuzzyCompletion ''
24 source ${pkgs.fzf}/share/fzf/completion.zsh
25 '' + optionalString cfg.keybindings ''
26 source ${pkgs.fzf}/share/fzf/key-bindings.zsh
27 '');
28
29 programs.zsh.ohMyZsh.plugins = lib.mkIf (cfg.keybindings || cfg.fuzzyCompletion) [ "fzf" ];
30 };
31 meta.maintainers = with maintainers; [ laalsaas ];
32}