# Fuzzy finder, CLI fuzzy search tool { config, lib, ... }: { imports = [ ./assertions.nix ]; options.terminal.fzf = { enable = lib.mkEnableOption "Enables fzf."; package = lib.mkOption { type = lib.types.package; readOnly = true; default = config.programs.fzf.package; description = "The fzf package to use."; }; }; config = let shellIntegration = '' ${if config.terminal.zsh.enable then "eval \"$(fzf --zsh)\"" else "eval \"$(fzf --bash)\""} ''; in lib.mkIf config.terminal.fzf.enable { programs.fzf = { enable = true; defaultOptions = [ "--height 100%" "--layout=reverse" "--pointer='󰠁 '" "--header=' '" "--prompt='󰎕 '" "--marker='✓ '" "--border=none" "--cycle" "--no-info" "--margin='1,2'" ]; colors = with config.scheme.withHashtag; { fg = base05; bg = "-1"; hl = base0D; "fg+" = base07; "bg+" = "-1"; "hl+" = base0D; gutter = "-1"; info = base0B; border = base03; prompt = base0A; pointer = base0F; marker = base0C; spinner = base0C; }; }; programs.zsh.initContent = lib.mkIf config.terminal.zsh.enable (lib.mkAfter shellIntegration); }; }