sneeuwvlok/modules/shell/toolset/fzf.nix

53 lines
1.6 KiB
Nix

{ config, options, lib, pkgs, ... }:
let
inherit (lib.attrsets) optionalAttrs;
inherit (lib.modules) mkIf;
in
{
options.modules.shell.toolset.fzf = let
inherit (lib.options) mkEnableOption;
in { enable = mkEnableOption "TUI Fuzzy Finder."; };
config = mkIf config.modules.shell.toolset.fzf.enable {
hm.programs.fzf = let
defShell = config.modules.shell.default;
in {
enable = true;
enableBashIntegration = true;
enableZshIntegration = defShell == "zsh";
enableFishIntegration = defShell == "fish";
tmux.enableShellIntegration = true;
tmux.shellIntegrationOptions = ["-d 40%"];
defaultCommand = "fd --type f";
defaultOptions = ["--height 40%" "--border"];
changeDirWidgetCommand = "fd --type d";
changeDirWidgetOptions = ["--preview 'tree -C {} | head -200'"];
fileWidgetCommand = "fd --type f";
fileWidgetOptions = ["--preview 'head {}'"];
historyWidgetOptions = ["--sort" "--exact"];
colors = let
inherit (config.modules.themes) active;
inherit (config.modules.themes.colors.main) normal types;
in
mkIf (active != null) {
bg = "${types.bg}";
"bg+" = "${types.bg}";
fg = "${types.border}";
"fg+" = "${types.border}";
hl = "${normal.red}";
"hl+" = "${normal.red}";
header = "${normal.red}";
marker = "${normal.magenta}";
info = "${normal.magenta}";
prompt = "${types.border}";
spinner = "${types.panelbg}";
pointer = "${types.border}";
};
};
};
}