summary refs log tree commit diff
path: root/nixos/modules/programs/fzf.nix
blob: 7c4f338e29b30d8ae974d59b7ca7cf3bfb518b05 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
{ pkgs, config, lib, ... }:
with lib;
let
  cfg = config.programs.fzf;
in
{
  options = {
    programs.fzf = {
      fuzzyCompletion = mkEnableOption (mdDoc "fuzzy completion with fzf");
      keybindings = mkEnableOption (mdDoc "fzf keybindings");
    };
  };
  config = {
    environment.systemPackages = optional (cfg.keybindings || cfg.fuzzyCompletion) pkgs.fzf;

    programs.bash.interactiveShellInit = optionalString cfg.fuzzyCompletion ''
      source ${pkgs.fzf}/share/fzf/completion.bash
    '' + optionalString cfg.keybindings ''
      source ${pkgs.fzf}/share/fzf/key-bindings.bash
    '';

    programs.zsh.interactiveShellInit = optionalString (!config.programs.zsh.ohMyZsh.enable)
      (optionalString cfg.fuzzyCompletion ''
        source ${pkgs.fzf}/share/fzf/completion.zsh
      '' + optionalString cfg.keybindings ''
        source ${pkgs.fzf}/share/fzf/key-bindings.zsh
      '');

    programs.zsh.ohMyZsh.plugins = lib.mkIf (cfg.keybindings || cfg.fuzzyCompletion) [ "fzf" ];
  };
  meta.maintainers = with maintainers; [ laalsaas ];
}