{ lib, helpers, pkgs, ... }: with lib; helpers.neovim-plugin.mkNeovimPlugin { name = "coq-nvim"; originalName = "coq_nvim"; defaultPackage = pkgs.vimPlugins.coq_nvim; maintainers = [ maintainers.traxys helpers.maintainers.Kareem-Medhat ]; extraOptions = { installArtifacts = mkEnableOption "and install coq-artifacts"; artifactsPackage = mkOption { type = types.package; description = "Package to use for coq-artifacts (when enabled with installArtifacts)"; default = pkgs.vimPlugins.coq-artifacts; }; }; # TODO: Introduced 12-03-2022, remove 12-05-2022 optionsRenamedToSettings = [ "xdg" "autoStart" ]; imports = let basePath = [ "plugins" "coq-nvim" ]; settingsPath = basePath ++ [ "settings" ]; in [ (mkRenamedOptionModule (basePath ++ [ "recommendedKeymaps" ]) ( settingsPath ++ [ "keymap" "recommended" ] )) (mkRenamedOptionModule (basePath ++ [ "alwaysComplete" ]) ( settingsPath ++ [ "completion" "always" ] )) ]; callSetup = false; settingsOptions = { auto_start = helpers.mkNullOrOption ( with helpers.nixvimTypes; maybeRaw (either bool (enum [ "shut-up" ])) ) "Auto-start or shut up"; xdg = mkOption { type = types.bool; default = true; description = "Use XDG paths. May be required when installing coq with Nix."; }; keymap.recommended = helpers.defaultNullOpts.mkBool true "Use the recommended keymaps"; completion.always = helpers.defaultNullOpts.mkBool true "Always trigger completion on keystroke"; }; extraConfig = cfg: { extraPlugins = mkIf cfg.installArtifacts [ cfg.artifactsPackage ]; globals = { coq_settings = cfg.settings; }; extraConfigLua = "require('coq')"; plugins.lsp = { preConfig = '' local coq = require 'coq' ''; setupWrappers = [ (s: ''coq.lsp_ensure_capabilities(${s})'') ]; }; }; }