at 25.11-pre 1.4 kB view raw
1{ 2 pkgs, 3 config, 4 lib, 5 ... 6}: 7 8let 9 cfg = config.programs.fzf; 10in 11{ 12 options = { 13 programs.fzf = { 14 fuzzyCompletion = lib.mkEnableOption "fuzzy completion with fzf"; 15 keybindings = lib.mkEnableOption "fzf keybindings"; 16 }; 17 }; 18 19 config = lib.mkIf (cfg.keybindings || cfg.fuzzyCompletion) { 20 environment.systemPackages = [ pkgs.fzf ]; 21 22 programs = { 23 # load after programs.bash.completion.enable 24 bash.promptPluginInit = lib.mkAfter ( 25 lib.optionalString cfg.fuzzyCompletion '' 26 source ${pkgs.fzf}/share/fzf/completion.bash 27 '' 28 + lib.optionalString cfg.keybindings '' 29 source ${pkgs.fzf}/share/fzf/key-bindings.bash 30 '' 31 ); 32 33 zsh = { 34 interactiveShellInit = lib.optionalString (!config.programs.zsh.ohMyZsh.enable) ( 35 lib.optionalString cfg.fuzzyCompletion '' 36 source ${pkgs.fzf}/share/fzf/completion.zsh 37 '' 38 + lib.optionalString cfg.keybindings '' 39 source ${pkgs.fzf}/share/fzf/key-bindings.zsh 40 '' 41 ); 42 43 ohMyZsh.plugins = lib.mkIf config.programs.zsh.ohMyZsh.enable [ "fzf" ]; 44 }; 45 46 fish.interactiveShellInit = lib.optionalString cfg.keybindings '' 47 source ${pkgs.fzf}/share/fzf/key-bindings.fish 48 ''; 49 }; 50 }; 51 52 meta.maintainers = with lib.maintainers; [ laalsaas ]; 53}