diff --git a/templates/rde/flake.nix b/templates/rde/flake.nix index 12ae4f0..27e3f5a 100644 --- a/templates/rde/flake.nix +++ b/templates/rde/flake.nix @@ -185,6 +185,10 @@ julia = config.enabledLanguages.julia; python = config.enabledLanguages.python; r = config.enabledLanguages.r; + # Enable markdown/quarto plugins whenever R is active so that + # .qmd buffers get proper syntax highlighting and chunk + # recognition via quarto-nvim and otter-nvim. + markdown = config.enabledLanguages.r; project = true; gitPlugins = config.enabledPackages.gitPlugins; background = config.theme.background; @@ -202,11 +206,22 @@ # Development shell configuration devShells = forSystems (system: let pkgs = import nixpkgs {inherit system;}; + # When R is enabled, build an overlaid pkgs that includes the R-enhanced + # quarto (with knitr and other R packages baked in via extraRPackages). + # This ensures `quarto render` from the terminal also works correctly. + rPkgs = + if config.enabledLanguages.r + then + import nixpkgs { + inherit system; + overlays = [rixOverlay rOverlay]; + } + else pkgs; # Language-specific packages that should be available in shell - languagePackages = with pkgs; + languagePackages = [] - ++ (if config.enabledLanguages.r then [quarto] else []) - ++ (if config.enabledLanguages.python then [uv] else []) + ++ (if config.enabledLanguages.r then [rPkgs.quarto] else []) + ++ (if config.enabledLanguages.python then [pkgs.uv] else []) ++ (if config.enabledLanguages.julia then [] else []); in { default = pkgs.mkShell { diff --git a/templates/rde/overlays/r.nix b/templates/rde/overlays/r.nix index 255079b..13415ba 100644 --- a/templates/rde/overlays/r.nix +++ b/templates/rde/overlays/r.nix @@ -18,8 +18,10 @@ final: prev: let broom # Tidy model outputs data_table # Fast data manipulation janitor # Data cleaning helpers + knitr # Required by Quarto to execute R code chunks languageserver # LSP for IDE support reprex # Reproducible examples + rmarkdown # Required by Quarto for R-based rendering styler # Code formatting tidyverse # Data science ecosystem ]