summary refs log tree commit diff
path: root/nixos/modules/programs/skim.nix
blob: 57a5d68ec3d5a4b3d5a857a29ed492468778ad05 (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
33
34
{ pkgs, config, lib, ... }:
let
  inherit (lib) mdDoc mkEnableOption mkPackageOption optional optionalString;
  cfg = config.programs.skim;
in
{
  options = {
    programs.skim = {
      fuzzyCompletion = mkEnableOption (mdDoc "fuzzy completion with skim");
      keybindings = mkEnableOption (mdDoc "skim keybindings");
      package = mkPackageOption pkgs "skim" {};
    };
  };

  config = {
    environment.systemPackages = optional (cfg.keybindings || cfg.fuzzyCompletion) cfg.package;

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

    programs.zsh.interactiveShellInit = optionalString cfg.fuzzyCompletion ''
      source ${cfg.package}/share/skim/completion.zsh
    '' + optionalString cfg.keybindings ''
      source ${cfg.package}/share/skim/key-bindings.zsh
    '';

    programs.fish.interactiveShellInit = optionalString cfg.keybindings ''
      source ${cfg.package}/share/skim/key-bindings.fish && skim_key_bindings
    '';
  };
}