{ lib, config, namespace, ... }: let inherit (lib) mkIf enabled; inherit (lib.${namespace}) mkEnableModule; cfg = config.${namespace}.programs.fzf; inherit (config.${namespace}) theme; has-ripgrep = config.programs.ripgrep.enable; has-fd = config.programs.fd.enable; has-eza = config.programs.eza.enable; has-bat = config.programs.bat.enable; has-tmux = config.programs.tmux.enable; has-delta = config.programs.git.delta.enable; has-difft = config.programs.git.difftastic.enable; in { options = mkEnableModule "programs.fzf"; config = mkIf cfg.enable { programs.fzf = { enable = true; "${theme.colors.base}" = enabled; defaultOptions = [ "--margin=10%,5%" "--border=sharp" "--pointer= " "--marker= " "--prompt= " "--preview-label-pos='bottom'" "--preview-window='border-sharp'" ]; defaultCommand = lib.mkIf has-ripgrep "rg --files --hidden --glob \"!.git\""; changeDirWidgetCommand = lib.mkIf has-fd "fd --type d"; changeDirWidgetOptions = lib.mkIf has-eza [ "--preview 'eza --all --color=always --sort=name --group-directories-first --level=3 {}'" ]; fileWidgetCommand = lib.mkIf has-fd "fd --type f"; fileWidgetOptions = lib.mkIf has-bat [ "--preview 'bat {}'" ]; tmux.enableShellIntegration = lib.mkIf has-tmux true; }; home.sessionVariables = if has-delta then { fzf_diff_highlighter = "delta --paging=never --features=arctic-fox"; } else if has-difft then { fzf_diff_highlighter = "difft --color=always"; } else { }; }; }