{ pkgs, lib, ... }: let inherit (lib) mkMappingOption mkEnableOption mkOption types; in { options.vim.telescope = { mappings = { findProjects = mkMappingOption "Find files [Telescope]" "fp"; findFiles = mkMappingOption "Find files [Telescope]" "ff"; liveGrep = mkMappingOption "Live grep [Telescope]" "fg"; buffers = mkMappingOption "Buffers [Telescope]" "fb"; helpTags = mkMappingOption "Help tags [Telescope]" "fh"; open = mkMappingOption "Open [Telescope]" "ft"; gitCommits = mkMappingOption "Git commits [Telescope]" "fvcw"; gitBufferCommits = mkMappingOption "Git buffer commits [Telescope]" "fvcb"; gitBranches = mkMappingOption "Git branches [Telescope]" "fvb"; gitStatus = mkMappingOption "Git status [Telescope]" "fvs"; gitStash = mkMappingOption "Git stash [Telescope]" "fvx"; lspDocumentSymbols = mkMappingOption "LSP Document Symbols [Telescope]" "flsb"; lspWorkspaceSymbols = mkMappingOption "LSP Workspace Symbols [Telescope]" "flsw"; lspReferences = mkMappingOption "LSP References [Telescope]" "flr"; lspImplementations = mkMappingOption "LSP Implementations [Telescope]" "fli"; lspDefinitions = mkMappingOption "LSP Definitions [Telescope]" "flD"; lspTypeDefinitions = mkMappingOption "LSP Type Definitions [Telescope]" "flt"; diagnostics = mkMappingOption "Diagnostics [Telescope]" "fld"; treesitter = mkMappingOption "Treesitter [Telescope]" "fs"; }; enable = mkEnableOption "telescope.nvim: multi-purpose search and picker utility"; vimgrep_arguments = mkOption { description = "Arguments to use for the grep command"; type = types.listOf types.str; default = [ "${pkgs.ripgrep}/bin/rg" "--color=never" "--no-heading" "--with-filename" "--line-number" "--column" "--smart-case" "--hidden" "--no-ignore" ]; }; }; }