at 24.11-pre 1.2 kB view raw
1{ pkgs, config, lib, ... }: 2 3let 4 cfg = config.programs.fzf; 5in 6{ 7 options = { 8 programs.fzf = { 9 fuzzyCompletion = lib.mkEnableOption "fuzzy completion with fzf"; 10 keybindings = lib.mkEnableOption "fzf keybindings"; 11 }; 12 }; 13 14 config = lib.mkIf (cfg.keybindings || cfg.fuzzyCompletion) { 15 environment.systemPackages = lib.mkIf (cfg.keybindings || cfg.fuzzyCompletion) [ pkgs.fzf ]; 16 17 programs = { 18 # load after programs.bash.enableCompletion 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 ''); 24 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 ''); 32 33 ohMyZsh.plugins = lib.mkIf config.programs.zsh.ohMyZsh.enable [ "fzf" ]; 34 }; 35 }; 36 }; 37 38 meta.maintainers = with lib.maintainers; [ laalsaas ]; 39}