diff --git a/flake.nix b/flake.nix index d6577635..4fc9a6f7 100644 --- a/flake.nix +++ b/flake.nix @@ -39,7 +39,12 @@ enable = true; }; + extraPlugins = [ + pkgs.vimPlugins.vim-nix + ]; + options.number = true; + options.mouse = "a"; maps.normalVisualOp."รง" = ":"; @@ -65,6 +70,13 @@ servers.clangd.enable = true; }; + plugins.telescope = { + enable = true; + extensions = { + frecency.enable = true; + }; + }; + globals = { vimsyn_embed = "l"; mapleader = " "; diff --git a/plugins/default.nix b/plugins/default.nix index e7f047c9..c4e6261a 100644 --- a/plugins/default.nix +++ b/plugins/default.nix @@ -13,6 +13,7 @@ ./utils/startify.nix ./utils/goyo.nix ./utils/endwise.nix + ./utils/telescope.nix ./languages/treesitter.nix ./languages/nix.nix diff --git a/plugins/utils/telescope.nix b/plugins/utils/telescope.nix new file mode 100644 index 00000000..ec593356 --- /dev/null +++ b/plugins/utils/telescope.nix @@ -0,0 +1,56 @@ +{ pkgs, config, lib, ... }: +with lib; +let + cfg = config.programs.nixvim.plugins.telescope; +in +{ + # TODO Add support for aditional filetypes. This requires autocommands! + + options.programs.nixvim.plugins.telescope = { + enable = mkEnableOption "Enable telescope.nvim"; + + highlightTheme = mkOption { + default = config.programs.nixvim.colorscheme; + type = types.nullOr types.str; + description = "The colorscheme to use for syntax highlighting"; + }; + + extensions = { + frecency = { + enable = mkEnableOption "Enable telescope-frecency"; + }; + }; + }; + + config = let + extensionPlugins = with cfg.extensions; with pkgs.vimPlugins; + (optional frecency.enable telescope-frecency-nvim) ++ + (optional frecency.enable sql-nvim); + + extensionPackages = with cfg.extensions; with pkgs; + (optional frecency.enable sqlite); + + extensions = with cfg.extensions; + (optional frecency.enable "frecency"); + + loadExtensions = "require('telescope')" + (concatMapStrings (e: ".load_extension('${e}')") extensions); + in mkIf cfg.enable { + programs.nixvim = { + extraPackages = with pkgs; [ + bat + ] ++ extensionPackages; + + extraPlugins = with pkgs.vimPlugins; [ + telescope-nvim + plenary-nvim + popup-nvim + ] ++ extensionPlugins; + + extraConfigVim = mkIf (cfg.highlightTheme != null) '' + let $BAT_THEME = '${cfg.highlightTheme}' + ''; + + extraConfigLua = mkIf (extensions != []) loadExtensions; + }; + }; +}