diff --git a/modules/plugins/languages/r.nix b/modules/plugins/languages/r.nix index 752ccdd..9c32376 100644 --- a/modules/plugins/languages/r.nix +++ b/modules/plugins/languages/r.nix @@ -20,24 +20,14 @@ defaultFormat = "format_r"; formats = { - prettier = { - package = pkgs.nodePackages.prettier; - nullConfig = '' - local prettier = null_ls.builtins.formatting.prettier.with({ - filetypes = { "r" }, - extra_args = { - "--plugin", "prettier-plugin-r", - "--parser", "r" - } - }) - table.insert(ls_sources, prettier) - ''; - }; - styler = { - package = pkgs.rWrapper.override { - packages = with pkgs.rPackages; [styler]; - }; + package = + if cfg.useWrappedPackages + then + (pkgs.rWrapper.override { + packages = with pkgs.rPackages; [styler]; + }) + else pkgs.rPackages.styler; nullConfig = '' table.insert( ls_sources, @@ -49,9 +39,13 @@ }; format_r = { - package = pkgs.rWrapper.override { - packages = with pkgs.rPackages; [formatR]; - }; + package = + if cfg.useWrappedPackages + then + (pkgs.rWrapper.override { + packages = with pkgs.rPackages; [formatR]; + }) + else pkgs.rPackages.formatR; nullConfig = '' table.insert( ls_sources, @@ -66,9 +60,16 @@ defaultServer = "r_language_server"; servers = { r_language_server = { - package = pkgs.writeShellScriptBin "r_lsp" '' - ${r-with-languageserver}/bin/R --slave -e "languageserver::run()" - ''; + package = + if cfg.useWrappedPackages + then + (pkgs.writeShellScriptBin "r_lsp" '' + ${r-with-languageserver}/bin/R --slave -e "languageserver::run()" + '') + else + pkgs.writeShellScriptBin "r_lsp" '' + R --slave -e "languageserver::run()" + ''; lspConfig = '' lspconfig.r_language_server.setup{ capabilities = capabilities; @@ -85,6 +86,7 @@ in { options.vim.languages.r = { enable = mkEnableOption "R language support"; + useWrappedPackages = mkEnableOption "use rWrapper for packages to work without R in user's PATH" // {default = true;}; treesitter = { enable = mkEnableOption "R treesitter" // {default = config.vim.languages.enableTreesitter;}; @@ -93,16 +95,13 @@ in { lsp = { enable = mkEnableOption "R LSP support" // {default = config.vim.languages.enableLSP;}; - server = mkOption { description = "R LSP server to use"; type = enum (attrNames servers); default = defaultServer; }; - package = mkOption { description = "R LSP server package, or the command to run as a list of strings"; - example = literalExpression "[ (lib.getExe pkgs.jdt-language-server) \"-data\" \"~/.cache/jdtls/workspace\" ]"; type = either package (listOf str); default = servers.${cfg.lsp.server}.package; }; @@ -110,13 +109,11 @@ in { format = { enable = mkEnableOption "R formatting" // {default = config.vim.languages.enableFormat;}; - type = mkOption { description = "R formatter to use"; type = enum (attrNames formats); default = defaultFormat; }; - package = mkOption { description = "R formatter package"; type = package;