From f2a408d5a5233d1d702a935efeaa57b19cf2e50c Mon Sep 17 00:00:00 2001 From: thomasjm Date: Sat, 29 Aug 2026 03:02:54 -0700 Subject: [PATCH 1/8] Move stable Nixpkgs to release-26.05 - Python 3.11 is out (ipykernel doesn't evaluate on it in 26.05) and 3.14 is in - Give cling GCC 14's libstdc++ headers; clang 18 segfaults parsing GCC 15's --- OPTIONS.md | 79 ++++++++++++++++++- README.md | 2 + default.nix | 6 +- docs/feature-matrix-dark.svg | 10 +-- docs/feature-matrix.json | 2 +- docs/feature-matrix.svg | 10 +-- flake.lock | 8 +- flake.nix | 2 +- modules/kernels/cpp/module.nix | 6 +- modules/kernels/python/module.nix | 17 +--- sample_environments.nix | 2 +- .../{python311.nix => python314.nix} | 4 +- tests/app/Spec/Tests/Python.hs | 3 +- 13 files changed, 107 insertions(+), 44 deletions(-) rename sample_environments/{python311.nix => python314.nix} (86%) diff --git a/OPTIONS.md b/OPTIONS.md index 0f355e22..85c247b3 100644 --- a/OPTIONS.md +++ b/OPTIONS.md @@ -748,7 +748,7 @@ string *Type:* -one of “go”, “go_1_23”, “go_1_24”, “go_1_25”, “go_1_26”, “go_latest” +one of “go”, “go_1_23”, “go_1_25”, “go_1_26”, “go_1_27”, “go_latest” @@ -1936,7 +1936,7 @@ false *Type:* -one of “python3”, “python311”, “python312”, “python313” +one of “python3”, “python312”, “python313”, “python314” @@ -2254,11 +2254,80 @@ one of “rust”, “rust_1_95” -## language-servers\.spellchecker\.enable +## language-servers\.spellchecker\.markdown\.enable -Enable the Markdown spellchecker\. +**Check Markdown** + +Include the Markdown spellchecker (\.md, \.ipynb)\. + + + +*Type:* +boolean + + + +*Default:* + +```nix +true +``` + + + +## language-servers\.spellchecker\.typst\.enable + + + +**Check Typst** + +Include the Typst spellchecker (\.typ)\. + + + +*Type:* +boolean + + + +*Default:* + +```nix +true +``` + + + +## language-servers\.spellchecker\.typst\.checkBlockComments + + + +**Check Typst block comments** + +Spellcheck the prose inside Typst block comments (/\* … \*/)\. + + + +*Type:* +boolean + + + +*Default:* + +```nix +false +``` + + + +## language-servers\.spellchecker\.typst\.checkLineComments + +**Check Typst line comments** + +Spellcheck the prose inside Typst line comments (// …)\. @@ -2298,6 +2367,8 @@ string ## shells\.bash\.enable + + Enable the Bash shell\. diff --git a/README.md b/README.md index 2e16af95..dcd53d4a 100644 --- a/README.md +++ b/README.md @@ -13,4 +13,6 @@ See the available options in [OPTIONS.md](./OPTIONS.md). Feature support by language +_15 languages, 22 features. See [FEATURE-MATRIX.md](./FEATURE-MATRIX.md) for the same data as tables, and for how it's generated._ + diff --git a/default.nix b/default.nix index 5f674b9f..67651ac9 100644 --- a/default.nix +++ b/default.nix @@ -6,16 +6,16 @@ }: let - stableRev = "f5190b692864072e79a2fb7c52d72d1d57fcb269"; # nixpkgs-rev + stableRev = "ca23145d9899c9d4b7f035339e2f21cf3106aa79"; # nixpkgs-rev stableFetchFromGitHub = fetchFromGitHub { owner = "NixOS"; repo = "nixpkgs"; rev = stableRev; - hash = "sha256-6mqKLf7ukajFOrVjO7EH1i37CQOVG22AnuU3wR84xK0="; # nixpkgs-hash + hash = "sha256-UxFzpSVQ7zZdd9bPc/sgCkbtSMwJkAKi82tas5FXgFI="; # nixpkgs-hash }; stableBuiltins = builtins.fetchTarball { url = ''https://github.com/NixOS/nixpkgs/archive/${stableRev}.tar.gz''; - sha256 = "1bf470gw2dz5ks06s6wm0c4znbfn0yqknqxm7b2si4gfzqnqlspa"; # nixpkgs-sha256 + sha256 = "0ll0ay8v6nkbyfi05409ri4fsiha43xp7kynfxfkdvsh4njp64ak"; # nixpkgs-sha256 }; pkgsStableSrc = if fetchFromGitHub != null then stableFetchFromGitHub else stableBuiltins; pkgsStable = import pkgsStableSrc ({ diff --git a/docs/feature-matrix-dark.svg b/docs/feature-matrix-dark.svg index a7af3a5d..30e06173 100644 --- a/docs/feature-matrix-dark.svg +++ b/docs/feature-matrix-dark.svg @@ -122,7 +122,7 @@ C++ 23 - 21.1.7 + 21.1.8 C++ 23 - Jupyter kernel: yes @@ -210,7 +210,7 @@ Clojure - 1.12.3.1577 + 1.12.5.1645 Clojure - Jupyter kernel: yes @@ -369,7 +369,7 @@ Go - 1.25.9 + 1.26.6 Go - Jupyter kernel: yes @@ -853,7 +853,7 @@ Python - 3.13.12 + 3.13.15 Python - Jupyter kernel: yes @@ -940,7 +940,7 @@ R - 4.5.1 + 4.5.3 R - Jupyter kernel: yes diff --git a/docs/feature-matrix.json b/docs/feature-matrix.json index 66c70d93..0b17c391 100644 --- a/docs/feature-matrix.json +++ b/docs/feature-matrix.json @@ -1 +1 @@ -{"features":[{"description":"Runs notebook cells through a Jupyter kernel.","group":"core","id":"jupyterKernel","name":"Jupyter kernel","source":"nix"},{"description":"Ships an interactive console you can attach to the same session.","group":"core","id":"repl","name":"REPL","source":"nix"},{"description":"Lists the variables currently defined in the session, with drill-down.","group":"core","id":"variableInspector","name":"Variable inspector","source":"nix"},{"description":"Breakpoints and stepping via the Jupyter debug protocol.","group":"core","id":"debugger","name":"Debugger","source":"nix"},{"description":"Editor highlighting for the language.","group":"core","id":"syntaxHighlighting","name":"Syntax highlighting","source":"nix"},{"description":"An LSP server is wired up for notebook cells and files.","group":"intelligence","id":"languageServer","name":"Language server","source":"nix"},{"description":"Context-aware completions as you type.","group":"intelligence","id":"completion","name":"Code completion","source":"lsp"},{"description":"Type and documentation popups on hover.","group":"intelligence","id":"hover","name":"Hover docs","source":"lsp"},{"description":"Parameter hints while calling a function.","group":"intelligence","id":"signatureHelp","name":"Signature help","source":"lsp"},{"description":"Errors, warnings and lints reported inline.","group":"intelligence","id":"diagnostics","name":"Diagnostics","source":"lsp"},{"description":"Highlighting driven by the compiler/analyzer rather than a regex grammar.","group":"intelligence","id":"semanticTokens","name":"Semantic highlighting","source":"lsp"},{"description":"Inferred types and parameter names rendered inline.","group":"intelligence","id":"inlayHints","name":"Inlay hints","source":"lsp"},{"description":"Go from a use of a symbol to where it's defined.","group":"navigation","id":"definition","name":"Jump to definition","source":"lsp"},{"description":"Go from a value to the definition of its type.","group":"navigation","id":"typeDefinition","name":"Jump to type definition","source":"lsp"},{"description":"Find every use of a symbol.","group":"navigation","id":"references","name":"Find references","source":"lsp"},{"description":"Symbol tree for the current document.","group":"navigation","id":"documentSymbols","name":"Document outline","source":"lsp"},{"description":"Search symbols across the whole project.","group":"navigation","id":"workspaceSymbols","name":"Workspace symbol search","source":"lsp"},{"description":"Highlights other occurrences of the symbol under the cursor.","group":"navigation","id":"documentHighlight","name":"Highlight occurrences","source":"lsp"},{"description":"Format a document or a selection.","group":"editing","id":"formatting","name":"Formatting","source":"lsp"},{"description":"Rename a symbol and every reference to it.","group":"editing","id":"rename","name":"Rename symbol","source":"lsp"},{"description":"Quick fixes and refactorings offered on a range.","group":"editing","id":"codeActions","name":"Code actions","source":"lsp"},{"description":"A searchable set of language packages you can add to the environment declaratively.","group":"packages","id":"subPackageManagement","name":"Subpackage management","source":"nix"}],"groups":[{"id":"core","name":"Notebook"},{"id":"intelligence","name":"Code intelligence"},{"id":"navigation","name":"Navigation"},{"id":"editing","name":"Editing"},{"id":"packages","name":"Packages"}],"languages":[{"attrs":["bash"],"componentVersions":{"bash":"5.3p9","bash-kernel":"0.10.0","bash-language-server":"5.6.0"},"description":"GNU Bourne-Again Shell, the de facto standard shell on Linux (for interactive use)","displayName":"Bash","extensions":["sh","bash"],"iconMonochrome":"modules/kernels/bash/gnubash-monochrome.svg","id":"bash","languageServers":{"available":["bash-language-server"],"enabledByDefault":["bash-language-server"],"probed":["bash-language-server"]},"support":{"codeActions":{"detail":"bash-language-server","level":"full"},"completion":{"detail":"bash-language-server","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"bash-language-server","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"bash-language-server","level":"full"},"documentSymbols":{"detail":"bash-language-server","level":"full"},"formatting":{"detail":"bash-language-server","level":"full"},"hover":{"detail":"bash-language-server","level":"full"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"bash-language-server","level":"full"},"references":{"detail":"bash-language-server","level":"full"},"rename":{"detail":"bash-language-server","level":"full"},"repl":{"detail":"bash","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":null,"level":"none"},"subPackageManagement":{"detail":null,"level":"none"},"syntaxHighlighting":{"detail":"shell","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"bash-language-server","level":"full"}},"version":"5.3p9"},{"attrs":["c++23","cpp"],"componentVersions":{"clang":"21.1.7","clangd":"21.1.7","cling":"1.2","std":"c++23","xeus-cling":"0.15.3"},"description":"C language family frontend for LLVM (wrapper script)","displayName":"C++ 23","extensions":["cpp","hpp","cxx","hxx","c","h"],"iconMonochrome":"modules/kernels/cpp/cpp23-monochrome.svg","id":"cpp","languageServers":{"available":["clangd"],"enabledByDefault":["clangd"],"probed":["clangd"]},"support":{"codeActions":{"detail":"clangd","level":"full"},"completion":{"detail":"clangd","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"clangd","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"clangd","level":"full"},"documentSymbols":{"detail":"clangd","level":"full"},"formatting":{"detail":"clangd","level":"full"},"hover":{"detail":"clangd","level":"full"},"inlayHints":{"detail":"clangd","level":"full"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"clangd","level":"full"},"references":{"detail":"clangd","level":"full"},"rename":{"detail":"clangd","level":"full"},"repl":{"detail":"cling","level":"full"},"semanticTokens":{"detail":"clangd","level":"full"},"signatureHelp":{"detail":"clangd","level":"full"},"subPackageManagement":{"detail":null,"level":"none"},"syntaxHighlighting":{"detail":"clike","level":"full"},"typeDefinition":{"detail":"clangd","level":"full"},"variableInspector":{"detail":null,"level":"none"},"workspaceSymbols":{"detail":"clangd","level":"full"}},"version":"21.1.7"},{"attrs":["clojure"],"componentVersions":{"clojure":"1.12.3.1577","clojure-lsp":"2025.08.25-14.21.46"},"description":"Lisp dialect for the JVM","displayName":"Clojure","extensions":["clj"],"iconMonochrome":"modules/kernels/clojure/clojure-monochrome.svg","id":"clojure","languageServers":{"available":["clojure-lsp"],"enabledByDefault":["clojure-lsp"],"probed":["clojure-lsp"]},"support":{"codeActions":{"detail":"clojure-lsp","level":"full"},"completion":{"detail":"clojure-lsp","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"clojure-lsp","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"clojure-lsp","level":"full"},"documentSymbols":{"detail":"clojure-lsp","level":"full"},"formatting":{"detail":"clojure-lsp","level":"full"},"hover":{"detail":"clojure-lsp","level":"full"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"clojure-lsp","level":"full"},"references":{"detail":"clojure-lsp","level":"full"},"rename":{"detail":"clojure-lsp","level":"full"},"repl":{"detail":"clojure","level":"full"},"semanticTokens":{"detail":"clojure-lsp","level":"full"},"signatureHelp":{"detail":"clojure-lsp","level":"full"},"subPackageManagement":{"detail":null,"level":"none"},"syntaxHighlighting":{"detail":"clojure","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"clojure-lsp","level":"full"}},"version":"1.12.3.1577"},{"attrs":["coq"],"componentVersions":{"coq":"9.1.1"},"description":"Coq proof assistant","displayName":"Coq","extensions":["v"],"iconMonochrome":"modules/kernels/coq/coq-monochrome.svg","id":"coq","languageServers":{"available":[],"enabledByDefault":[],"probed":[]},"support":{"codeActions":{"detail":null,"level":"none"},"completion":{"detail":null,"level":"none"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":null,"level":"none"},"diagnostics":{"detail":null,"level":"none"},"documentHighlight":{"detail":null,"level":"none"},"documentSymbols":{"detail":null,"level":"none"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":null,"level":"none"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":null,"level":"none"},"references":{"detail":null,"level":"none"},"rename":{"detail":null,"level":"none"},"repl":{"detail":"console","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":null,"level":"none"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"coq","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"none"},"workspaceSymbols":{"detail":null,"level":"none"}},"version":"9.1.1"},{"attrs":["go"],"componentVersions":{"go":"1.25.9","gopls":"0.20.0"},"description":"Go Programming language","displayName":"Go","extensions":["go"],"iconMonochrome":"modules/kernels/go/go-monochrome.svg","id":"go","languageServers":{"available":["gopls"],"enabledByDefault":["gopls"],"probed":["gopls"]},"support":{"codeActions":{"detail":"gopls","level":"full"},"completion":{"detail":"gopls","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"gopls","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"gopls","level":"full"},"documentSymbols":{"detail":"gopls","level":"full"},"formatting":{"detail":"gopls","level":"full"},"hover":{"detail":"gopls","level":"full"},"inlayHints":{"detail":"gopls","level":"full"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"gopls","level":"full"},"references":{"detail":"gopls","level":"full"},"rename":{"detail":"gopls","level":"full"},"repl":{"detail":"console","level":"full"},"semanticTokens":{"detail":"gopls","level":"full"},"signatureHelp":{"detail":"gopls","level":"full"},"subPackageManagement":{"detail":null,"level":"none"},"syntaxHighlighting":{"detail":"go","level":"full"},"typeDefinition":{"detail":"gopls","level":"full"},"variableInspector":{"detail":null,"level":"none"},"workspaceSymbols":{"detail":"gopls","level":"full"}},"version":"1.25.9"},{"attrs":["haskell"],"componentVersions":{"ghc":"9.10.3","haskell-language-server":"2.13.0.0"},"description":"An advanced, purely functional programming language (GHC 9.10.3)","displayName":"Haskell","extensions":["hs"],"iconMonochrome":"modules/kernels/haskell/haskell-monochrome.svg","id":"haskell","languageServers":{"available":["haskell-language-server"],"enabledByDefault":["haskell-language-server"],"probed":["haskell-language-server"]},"support":{"codeActions":{"detail":"haskell-language-server","level":"full"},"completion":{"detail":"haskell-language-server","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"haskell-language-server","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"haskell-language-server","level":"full"},"documentSymbols":{"detail":"haskell-language-server","level":"full"},"formatting":{"detail":"haskell-language-server","level":"full"},"hover":{"detail":"haskell-language-server","level":"full"},"inlayHints":{"detail":"haskell-language-server","level":"full"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"haskell-language-server","level":"full"},"references":{"detail":"haskell-language-server","level":"full"},"rename":{"detail":"haskell-language-server","level":"full"},"repl":{"detail":"ghci","level":"full"},"semanticTokens":{"detail":"haskell-language-server","level":"full"},"signatureHelp":{"detail":"haskell-language-server","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"haskell","level":"full"},"typeDefinition":{"detail":"haskell-language-server","level":"full"},"variableInspector":{"detail":null,"level":"none"},"workspaceSymbols":{"detail":"haskell-language-server","level":"full"}},"version":"9.10.3"},{"attrs":["julia"],"componentVersions":{"julia":"1.12.6"},"description":"High-level performance-oriented dynamical language for technical computing","displayName":"Julia","extensions":["jl"],"iconMonochrome":"modules/kernels/julia/julia-monochrome.svg","id":"julia","languageServers":{"available":["LanguageServer"],"enabledByDefault":["LanguageServer"],"probed":["LanguageServer"]},"support":{"codeActions":{"detail":"LanguageServer","level":"full"},"completion":{"detail":"LanguageServer","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"LanguageServer","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"LanguageServer","level":"full"},"documentSymbols":{"detail":"LanguageServer","level":"full"},"formatting":{"detail":"LanguageServer","level":"full"},"hover":{"detail":"LanguageServer","level":"full"},"inlayHints":{"detail":"LanguageServer","level":"full"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"LanguageServer","level":"full"},"references":{"detail":"LanguageServer","level":"full"},"rename":{"detail":"LanguageServer","level":"full"},"repl":{"detail":"julia","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":"LanguageServer","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"julia","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"LanguageServer","level":"full"}},"version":"1.12.6"},{"attrs":["octave"],"componentVersions":{"octave":"11.1.0"},"description":"Scientific Programming Language","displayName":"Octave","extensions":["m"],"iconMonochrome":"modules/kernels/octave/octave-monochrome.svg","id":"octave","languageServers":{"available":[],"enabledByDefault":[],"probed":[]},"support":{"codeActions":{"detail":null,"level":"none"},"completion":{"detail":null,"level":"none"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":null,"level":"none"},"diagnostics":{"detail":null,"level":"none"},"documentHighlight":{"detail":null,"level":"none"},"documentSymbols":{"detail":null,"level":"none"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":null,"level":"none"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":null,"level":"none"},"references":{"detail":null,"level":"none"},"rename":{"detail":null,"level":"none"},"repl":{"detail":"octave","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":null,"level":"none"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"octave","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":null,"level":"none"}},"version":"11.1.0"},{"attrs":["postgres"],"componentVersions":{"postgres-kernel":"0.1"},"description":"A simple Jupyter kernel for PostgreSQL","displayName":"PostgreSQL","extensions":["sql"],"iconMonochrome":"modules/kernels/postgres/postgresql-monochrome.svg","id":"postgres","languageServers":{"available":[],"enabledByDefault":[],"probed":[]},"support":{"codeActions":{"detail":null,"level":"none"},"completion":{"detail":null,"level":"none"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":null,"level":"none"},"diagnostics":{"detail":null,"level":"none"},"documentHighlight":{"detail":null,"level":"none"},"documentSymbols":{"detail":null,"level":"none"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":null,"level":"none"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":null,"level":"none"},"references":{"detail":null,"level":"none"},"rename":{"detail":null,"level":"none"},"repl":{"detail":"console","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":null,"level":"none"},"subPackageManagement":{"detail":null,"level":"none"},"syntaxHighlighting":{"detail":"sql","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"none"},"workspaceSymbols":{"detail":null,"level":"none"}},"version":"0.1"},{"attrs":["python3","python"],"componentVersions":{"flake8":"7.3.0","jedi-language-server":"0.46.0","pycodestyle":"2.14.0","pylint":"3.3.7","pyright":"1.1.407","python":"7.3.20","python-lsp-server":"1.13.2"},"description":"Fast, compliant alternative implementation of the Python language (3.11)","displayName":"PyPy","extensions":["py"],"iconMonochrome":"modules/kernels/python/python-monochrome.svg","id":"pypy3","languageServers":{"available":["flake8","jedi","microsoft","pycodestyle","pylint","pyright","python-language-server","python-lsp-server"],"enabledByDefault":["jedi"],"probed":[]},"support":{"codeActions":{"detail":null,"level":"unknown"},"completion":{"detail":null,"level":"unknown"},"debugger":{"detail":null,"level":"full"},"definition":{"detail":null,"level":"unknown"},"diagnostics":{"detail":null,"level":"unknown"},"documentHighlight":{"detail":null,"level":"unknown"},"documentSymbols":{"detail":null,"level":"unknown"},"formatting":{"detail":null,"level":"unknown"},"hover":{"detail":null,"level":"unknown"},"inlayHints":{"detail":null,"level":"unknown"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"jedi","level":"full"},"references":{"detail":null,"level":"unknown"},"rename":{"detail":null,"level":"unknown"},"repl":{"detail":"ipython","level":"full"},"semanticTokens":{"detail":null,"level":"unknown"},"signatureHelp":{"detail":null,"level":"unknown"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"python","level":"full"},"typeDefinition":{"detail":null,"level":"unknown"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":null,"level":"unknown"}},"version":"7.3.20"},{"attrs":["python3","python"],"componentVersions":{"flake8":"7.3.0","jedi-language-server":"0.46.0","pycodestyle":"2.14.0","pylint":"3.3.7","pyright":"1.1.407","python":"3.13.12","python-lsp-server":"1.13.2"},"description":"High-level dynamically-typed programming language","displayName":"Python","extensions":["py"],"iconMonochrome":"modules/kernels/python/python-monochrome.svg","id":"python3","languageServers":{"available":["flake8","jedi","microsoft","pycodestyle","pylint","pyright","python-language-server","python-lsp-server"],"enabledByDefault":["jedi"],"probed":["jedi"]},"support":{"codeActions":{"detail":"jedi","level":"full"},"completion":{"detail":"jedi","level":"full"},"debugger":{"detail":null,"level":"full"},"definition":{"detail":"jedi","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"jedi","level":"full"},"documentSymbols":{"detail":"jedi","level":"full"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":"jedi","level":"full"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"jedi","level":"full"},"references":{"detail":"jedi","level":"full"},"rename":{"detail":"jedi","level":"full"},"repl":{"detail":"ipython","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":"jedi","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"python","level":"full"},"typeDefinition":{"detail":"jedi","level":"full"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"jedi","level":"full"}},"version":"3.13.12"},{"attrs":["r","R"],"componentVersions":{"languageserver":"0.3.16","r":"4.5.1"},"description":"Free software environment for statistical computing and graphics","displayName":"R","extensions":["r"],"iconMonochrome":"modules/kernels/r/r-monochrome.svg","id":"R","languageServers":{"available":["languageserver"],"enabledByDefault":["languageserver"],"probed":["languageserver"]},"support":{"codeActions":{"detail":"languageserver","level":"full"},"completion":{"detail":"languageserver","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"languageserver","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"languageserver","level":"full"},"documentSymbols":{"detail":"languageserver","level":"full"},"formatting":{"detail":"languageserver","level":"full"},"hover":{"detail":"languageserver","level":"full"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"languageserver","level":"full"},"references":{"detail":"languageserver","level":"full"},"rename":{"detail":"languageserver","level":"full"},"repl":{"detail":"r","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":"languageserver","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"r","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"languageserver","level":"full"}},"version":"4.5.1"},{"attrs":["r","R"],"componentVersions":{"ark":"0.1.252","r":"4.5.3"},"description":"Free software environment for statistical computing and graphics","displayName":"R (Ark)","extensions":["r"],"iconMonochrome":"modules/kernels/r-ark/r-monochrome.svg","id":"R-ark","languageServers":{"available":[],"enabledByDefault":[],"probed":[]},"support":{"codeActions":{"detail":null,"level":"none"},"completion":{"detail":null,"level":"none"},"debugger":{"detail":null,"level":"full"},"definition":{"detail":null,"level":"none"},"diagnostics":{"detail":null,"level":"none"},"documentHighlight":{"detail":null,"level":"none"},"documentSymbols":{"detail":null,"level":"none"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":null,"level":"none"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":null,"level":"none"},"references":{"detail":null,"level":"none"},"rename":{"detail":null,"level":"none"},"repl":{"detail":"r","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":null,"level":"none"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"r","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":null,"level":"none"}},"version":"4.5.3"},{"attrs":["ruby"],"componentVersions":{"iruby":"v0.8.2","ruby":"3.4.9","solargraph":"0.57.0"},"description":"Object-oriented language for quick and easy programming","displayName":"Ruby","extensions":["rb"],"iconMonochrome":"modules/kernels/ruby/ruby-monochrome.svg","id":"ruby","languageServers":{"available":["solargraph"],"enabledByDefault":["solargraph"],"probed":["solargraph"]},"support":{"codeActions":{"detail":null,"level":"none"},"completion":{"detail":"solargraph","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"solargraph","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"solargraph","level":"full"},"documentSymbols":{"detail":"solargraph","level":"full"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":"solargraph","level":"full"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"solargraph","level":"full"},"references":{"detail":"solargraph","level":"full"},"rename":{"detail":"solargraph","level":"full"},"repl":{"detail":"irb","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":"solargraph","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"ruby","level":"full"},"typeDefinition":{"detail":"solargraph","level":"full"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"solargraph","level":"full"}},"version":"3.4.9"},{"attrs":["rust"],"componentVersions":{"cargo":"1.95.0","evcxr":"0.21.1","rust":"1.95.0","rust-analyzer":"2026-04-27"},"description":"Safe, concurrent, practical language (wrapper script)","displayName":"Rust","extensions":["rs","rlib"],"iconMonochrome":"modules/kernels/rust/rust-logo-monochrome.svg","id":"rust","languageServers":{"available":["rust-analyzer"],"enabledByDefault":["rust-analyzer"],"probed":["rust-analyzer"]},"support":{"codeActions":{"detail":"rust-analyzer","level":"full"},"completion":{"detail":"rust-analyzer","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"rust-analyzer","level":"full"},"diagnostics":{"detail":"pull + push","level":"full"},"documentHighlight":{"detail":"rust-analyzer","level":"full"},"documentSymbols":{"detail":"rust-analyzer","level":"full"},"formatting":{"detail":"rust-analyzer","level":"full"},"hover":{"detail":"rust-analyzer","level":"full"},"inlayHints":{"detail":"rust-analyzer","level":"full"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"rust-analyzer","level":"full"},"references":{"detail":"rust-analyzer","level":"full"},"rename":{"detail":"rust-analyzer","level":"full"},"repl":{"detail":"evcxr","level":"full"},"semanticTokens":{"detail":"rust-analyzer","level":"full"},"signatureHelp":{"detail":"rust-analyzer","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"rust","level":"full"},"typeDefinition":{"detail":"rust-analyzer","level":"full"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"rust-analyzer","level":"full"}},"version":"1.95.0"}],"provenance":{"lsp":"Read from language server `initialize` responses (nix/lsp-capabilities.json, regenerated by scripts/probe-lsp-capabilities).","lspProbedKernels":["R","R-ark","bash","clojure","coq","cpp","go","haskell","julia","octave","postgres","python3","ruby","rust"],"nix":"Evaluated from the codedown-languages module system (nix/feature-matrix.nix)."},"schemaVersion":1} \ No newline at end of file +{"features":[{"description":"Runs notebook cells through a Jupyter kernel.","group":"core","id":"jupyterKernel","name":"Jupyter kernel","source":"nix"},{"description":"Ships an interactive console you can attach to the same session.","group":"core","id":"repl","name":"REPL","source":"nix"},{"description":"Lists the variables currently defined in the session, with drill-down.","group":"core","id":"variableInspector","name":"Variable inspector","source":"nix"},{"description":"Breakpoints and stepping via the Jupyter debug protocol.","group":"core","id":"debugger","name":"Debugger","source":"nix"},{"description":"Editor highlighting for the language.","group":"core","id":"syntaxHighlighting","name":"Syntax highlighting","source":"nix"},{"description":"An LSP server is wired up for notebook cells and files.","group":"intelligence","id":"languageServer","name":"Language server","source":"nix"},{"description":"Context-aware completions as you type.","group":"intelligence","id":"completion","name":"Code completion","source":"lsp"},{"description":"Type and documentation popups on hover.","group":"intelligence","id":"hover","name":"Hover docs","source":"lsp"},{"description":"Parameter hints while calling a function.","group":"intelligence","id":"signatureHelp","name":"Signature help","source":"lsp"},{"description":"Errors, warnings and lints reported inline.","group":"intelligence","id":"diagnostics","name":"Diagnostics","source":"lsp"},{"description":"Highlighting driven by the compiler/analyzer rather than a regex grammar.","group":"intelligence","id":"semanticTokens","name":"Semantic highlighting","source":"lsp"},{"description":"Inferred types and parameter names rendered inline.","group":"intelligence","id":"inlayHints","name":"Inlay hints","source":"lsp"},{"description":"Go from a use of a symbol to where it's defined.","group":"navigation","id":"definition","name":"Jump to definition","source":"lsp"},{"description":"Go from a value to the definition of its type.","group":"navigation","id":"typeDefinition","name":"Jump to type definition","source":"lsp"},{"description":"Find every use of a symbol.","group":"navigation","id":"references","name":"Find references","source":"lsp"},{"description":"Symbol tree for the current document.","group":"navigation","id":"documentSymbols","name":"Document outline","source":"lsp"},{"description":"Search symbols across the whole project.","group":"navigation","id":"workspaceSymbols","name":"Workspace symbol search","source":"lsp"},{"description":"Highlights other occurrences of the symbol under the cursor.","group":"navigation","id":"documentHighlight","name":"Highlight occurrences","source":"lsp"},{"description":"Format a document or a selection.","group":"editing","id":"formatting","name":"Formatting","source":"lsp"},{"description":"Rename a symbol and every reference to it.","group":"editing","id":"rename","name":"Rename symbol","source":"lsp"},{"description":"Quick fixes and refactorings offered on a range.","group":"editing","id":"codeActions","name":"Code actions","source":"lsp"},{"description":"A searchable set of language packages you can add to the environment declaratively.","group":"packages","id":"subPackageManagement","name":"Subpackage management","source":"nix"}],"groups":[{"id":"core","name":"Notebook"},{"id":"intelligence","name":"Code intelligence"},{"id":"navigation","name":"Navigation"},{"id":"editing","name":"Editing"},{"id":"packages","name":"Packages"}],"languages":[{"attrs":["bash"],"componentVersions":{"bash":"5.3p9","bash-kernel":"0.10.0","bash-language-server":"5.6.0"},"description":"GNU Bourne-Again Shell, the de facto standard shell on Linux (for interactive use)","displayName":"Bash","extensions":["sh","bash"],"iconMonochrome":"modules/kernels/bash/gnubash-monochrome.svg","id":"bash","languageServers":{"available":["bash-language-server"],"enabledByDefault":["bash-language-server"],"probed":["bash-language-server"]},"support":{"codeActions":{"detail":"bash-language-server","level":"full"},"completion":{"detail":"bash-language-server","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"bash-language-server","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"bash-language-server","level":"full"},"documentSymbols":{"detail":"bash-language-server","level":"full"},"formatting":{"detail":"bash-language-server","level":"full"},"hover":{"detail":"bash-language-server","level":"full"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"bash-language-server","level":"full"},"references":{"detail":"bash-language-server","level":"full"},"rename":{"detail":"bash-language-server","level":"full"},"repl":{"detail":"bash","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":null,"level":"none"},"subPackageManagement":{"detail":null,"level":"none"},"syntaxHighlighting":{"detail":"shell","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"bash-language-server","level":"full"}},"version":"5.3p9"},{"attrs":["c++23","cpp"],"componentVersions":{"clang":"21.1.8","clangd":"21.1.8","cling":"1.2","std":"c++23","xeus-cling":"0.15.3"},"description":"C language family frontend for LLVM (wrapper script)","displayName":"C++ 23","extensions":["cpp","hpp","cxx","hxx","c","h"],"iconMonochrome":"modules/kernels/cpp/cpp23-monochrome.svg","id":"cpp","languageServers":{"available":["clangd"],"enabledByDefault":["clangd"],"probed":["clangd"]},"support":{"codeActions":{"detail":"clangd","level":"full"},"completion":{"detail":"clangd","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"clangd","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"clangd","level":"full"},"documentSymbols":{"detail":"clangd","level":"full"},"formatting":{"detail":"clangd","level":"full"},"hover":{"detail":"clangd","level":"full"},"inlayHints":{"detail":"clangd","level":"full"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"clangd","level":"full"},"references":{"detail":"clangd","level":"full"},"rename":{"detail":"clangd","level":"full"},"repl":{"detail":"cling","level":"full"},"semanticTokens":{"detail":"clangd","level":"full"},"signatureHelp":{"detail":"clangd","level":"full"},"subPackageManagement":{"detail":null,"level":"none"},"syntaxHighlighting":{"detail":"clike","level":"full"},"typeDefinition":{"detail":"clangd","level":"full"},"variableInspector":{"detail":null,"level":"none"},"workspaceSymbols":{"detail":"clangd","level":"full"}},"version":"21.1.8"},{"attrs":["clojure"],"componentVersions":{"clojure":"1.12.5.1645","clojure-lsp":"2026.02.20-16.08.58"},"description":"Lisp dialect for the JVM","displayName":"Clojure","extensions":["clj"],"iconMonochrome":"modules/kernels/clojure/clojure-monochrome.svg","id":"clojure","languageServers":{"available":["clojure-lsp"],"enabledByDefault":["clojure-lsp"],"probed":["clojure-lsp"]},"support":{"codeActions":{"detail":"clojure-lsp","level":"full"},"completion":{"detail":"clojure-lsp","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"clojure-lsp","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"clojure-lsp","level":"full"},"documentSymbols":{"detail":"clojure-lsp","level":"full"},"formatting":{"detail":"clojure-lsp","level":"full"},"hover":{"detail":"clojure-lsp","level":"full"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"clojure-lsp","level":"full"},"references":{"detail":"clojure-lsp","level":"full"},"rename":{"detail":"clojure-lsp","level":"full"},"repl":{"detail":"clojure","level":"full"},"semanticTokens":{"detail":"clojure-lsp","level":"full"},"signatureHelp":{"detail":"clojure-lsp","level":"full"},"subPackageManagement":{"detail":null,"level":"none"},"syntaxHighlighting":{"detail":"clojure","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"clojure-lsp","level":"full"}},"version":"1.12.5.1645"},{"attrs":["coq"],"componentVersions":{"coq":"9.1.1"},"description":"Coq proof assistant","displayName":"Coq","extensions":["v"],"iconMonochrome":"modules/kernels/coq/coq-monochrome.svg","id":"coq","languageServers":{"available":[],"enabledByDefault":[],"probed":[]},"support":{"codeActions":{"detail":null,"level":"none"},"completion":{"detail":null,"level":"none"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":null,"level":"none"},"diagnostics":{"detail":null,"level":"none"},"documentHighlight":{"detail":null,"level":"none"},"documentSymbols":{"detail":null,"level":"none"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":null,"level":"none"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":null,"level":"none"},"references":{"detail":null,"level":"none"},"rename":{"detail":null,"level":"none"},"repl":{"detail":"console","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":null,"level":"none"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"coq","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"none"},"workspaceSymbols":{"detail":null,"level":"none"}},"version":"9.1.1"},{"attrs":["go"],"componentVersions":{"go":"1.26.6","gopls":"0.22.0"},"description":"Go Programming language","displayName":"Go","extensions":["go"],"iconMonochrome":"modules/kernels/go/go-monochrome.svg","id":"go","languageServers":{"available":["gopls"],"enabledByDefault":["gopls"],"probed":["gopls"]},"support":{"codeActions":{"detail":"gopls","level":"full"},"completion":{"detail":"gopls","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"gopls","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"gopls","level":"full"},"documentSymbols":{"detail":"gopls","level":"full"},"formatting":{"detail":"gopls","level":"full"},"hover":{"detail":"gopls","level":"full"},"inlayHints":{"detail":"gopls","level":"full"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"gopls","level":"full"},"references":{"detail":"gopls","level":"full"},"rename":{"detail":"gopls","level":"full"},"repl":{"detail":"console","level":"full"},"semanticTokens":{"detail":"gopls","level":"full"},"signatureHelp":{"detail":"gopls","level":"full"},"subPackageManagement":{"detail":null,"level":"none"},"syntaxHighlighting":{"detail":"go","level":"full"},"typeDefinition":{"detail":"gopls","level":"full"},"variableInspector":{"detail":null,"level":"none"},"workspaceSymbols":{"detail":"gopls","level":"full"}},"version":"1.26.6"},{"attrs":["haskell"],"componentVersions":{"ghc":"9.10.3","haskell-language-server":"2.13.0.0"},"description":"An advanced, purely functional programming language (GHC 9.10.3)","displayName":"Haskell","extensions":["hs"],"iconMonochrome":"modules/kernels/haskell/haskell-monochrome.svg","id":"haskell","languageServers":{"available":["haskell-language-server"],"enabledByDefault":["haskell-language-server"],"probed":["haskell-language-server"]},"support":{"codeActions":{"detail":"haskell-language-server","level":"full"},"completion":{"detail":"haskell-language-server","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"haskell-language-server","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"haskell-language-server","level":"full"},"documentSymbols":{"detail":"haskell-language-server","level":"full"},"formatting":{"detail":"haskell-language-server","level":"full"},"hover":{"detail":"haskell-language-server","level":"full"},"inlayHints":{"detail":"haskell-language-server","level":"full"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"haskell-language-server","level":"full"},"references":{"detail":"haskell-language-server","level":"full"},"rename":{"detail":"haskell-language-server","level":"full"},"repl":{"detail":"ghci","level":"full"},"semanticTokens":{"detail":"haskell-language-server","level":"full"},"signatureHelp":{"detail":"haskell-language-server","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"haskell","level":"full"},"typeDefinition":{"detail":"haskell-language-server","level":"full"},"variableInspector":{"detail":null,"level":"none"},"workspaceSymbols":{"detail":"haskell-language-server","level":"full"}},"version":"9.10.3"},{"attrs":["julia"],"componentVersions":{"julia":"1.12.6"},"description":"High-level performance-oriented dynamical language for technical computing","displayName":"Julia","extensions":["jl"],"iconMonochrome":"modules/kernels/julia/julia-monochrome.svg","id":"julia","languageServers":{"available":["LanguageServer"],"enabledByDefault":["LanguageServer"],"probed":["LanguageServer"]},"support":{"codeActions":{"detail":"LanguageServer","level":"full"},"completion":{"detail":"LanguageServer","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"LanguageServer","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"LanguageServer","level":"full"},"documentSymbols":{"detail":"LanguageServer","level":"full"},"formatting":{"detail":"LanguageServer","level":"full"},"hover":{"detail":"LanguageServer","level":"full"},"inlayHints":{"detail":"LanguageServer","level":"full"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"LanguageServer","level":"full"},"references":{"detail":"LanguageServer","level":"full"},"rename":{"detail":"LanguageServer","level":"full"},"repl":{"detail":"julia","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":"LanguageServer","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"julia","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"LanguageServer","level":"full"}},"version":"1.12.6"},{"attrs":["octave"],"componentVersions":{"octave":"11.1.0"},"description":"Scientific Programming Language","displayName":"Octave","extensions":["m"],"iconMonochrome":"modules/kernels/octave/octave-monochrome.svg","id":"octave","languageServers":{"available":[],"enabledByDefault":[],"probed":[]},"support":{"codeActions":{"detail":null,"level":"none"},"completion":{"detail":null,"level":"none"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":null,"level":"none"},"diagnostics":{"detail":null,"level":"none"},"documentHighlight":{"detail":null,"level":"none"},"documentSymbols":{"detail":null,"level":"none"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":null,"level":"none"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":null,"level":"none"},"references":{"detail":null,"level":"none"},"rename":{"detail":null,"level":"none"},"repl":{"detail":"octave","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":null,"level":"none"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"octave","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":null,"level":"none"}},"version":"11.1.0"},{"attrs":["postgres"],"componentVersions":{"postgres-kernel":"0.1"},"description":"A simple Jupyter kernel for PostgreSQL","displayName":"PostgreSQL","extensions":["sql"],"iconMonochrome":"modules/kernels/postgres/postgresql-monochrome.svg","id":"postgres","languageServers":{"available":[],"enabledByDefault":[],"probed":[]},"support":{"codeActions":{"detail":null,"level":"none"},"completion":{"detail":null,"level":"none"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":null,"level":"none"},"diagnostics":{"detail":null,"level":"none"},"documentHighlight":{"detail":null,"level":"none"},"documentSymbols":{"detail":null,"level":"none"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":null,"level":"none"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":null,"level":"none"},"references":{"detail":null,"level":"none"},"rename":{"detail":null,"level":"none"},"repl":{"detail":"console","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":null,"level":"none"},"subPackageManagement":{"detail":null,"level":"none"},"syntaxHighlighting":{"detail":"sql","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"none"},"workspaceSymbols":{"detail":null,"level":"none"}},"version":"0.1"},{"attrs":["python3","python"],"componentVersions":{"flake8":"7.3.0","jedi-language-server":"0.46.0","pycodestyle":"2.14.0","pylint":"4.0.5","pyright":"1.1.411","python":"7.3.20","python-lsp-server":"1.14.0"},"description":"Fast, compliant alternative implementation of the Python language (3.11)","displayName":"PyPy","extensions":["py"],"iconMonochrome":"modules/kernels/python/python-monochrome.svg","id":"pypy3","languageServers":{"available":["flake8","jedi","microsoft","pycodestyle","pylint","pyright","python-language-server","python-lsp-server"],"enabledByDefault":["jedi"],"probed":[]},"support":{"codeActions":{"detail":null,"level":"unknown"},"completion":{"detail":null,"level":"unknown"},"debugger":{"detail":null,"level":"full"},"definition":{"detail":null,"level":"unknown"},"diagnostics":{"detail":null,"level":"unknown"},"documentHighlight":{"detail":null,"level":"unknown"},"documentSymbols":{"detail":null,"level":"unknown"},"formatting":{"detail":null,"level":"unknown"},"hover":{"detail":null,"level":"unknown"},"inlayHints":{"detail":null,"level":"unknown"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"jedi","level":"full"},"references":{"detail":null,"level":"unknown"},"rename":{"detail":null,"level":"unknown"},"repl":{"detail":"ipython","level":"full"},"semanticTokens":{"detail":null,"level":"unknown"},"signatureHelp":{"detail":null,"level":"unknown"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"python","level":"full"},"typeDefinition":{"detail":null,"level":"unknown"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":null,"level":"unknown"}},"version":"7.3.20"},{"attrs":["python3","python"],"componentVersions":{"flake8":"7.3.0","jedi-language-server":"0.46.0","pycodestyle":"2.14.0","pylint":"4.0.5","pyright":"1.1.411","python":"3.13.15","python-lsp-server":"1.14.0"},"description":"High-level dynamically-typed programming language","displayName":"Python","extensions":["py"],"iconMonochrome":"modules/kernels/python/python-monochrome.svg","id":"python3","languageServers":{"available":["flake8","jedi","microsoft","pycodestyle","pylint","pyright","python-language-server","python-lsp-server"],"enabledByDefault":["jedi"],"probed":["jedi"]},"support":{"codeActions":{"detail":"jedi","level":"full"},"completion":{"detail":"jedi","level":"full"},"debugger":{"detail":null,"level":"full"},"definition":{"detail":"jedi","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"jedi","level":"full"},"documentSymbols":{"detail":"jedi","level":"full"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":"jedi","level":"full"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"jedi","level":"full"},"references":{"detail":"jedi","level":"full"},"rename":{"detail":"jedi","level":"full"},"repl":{"detail":"ipython","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":"jedi","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"python","level":"full"},"typeDefinition":{"detail":"jedi","level":"full"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"jedi","level":"full"}},"version":"3.13.15"},{"attrs":["r","R"],"componentVersions":{"languageserver":"0.3.16","r":"4.5.3"},"description":"Free software environment for statistical computing and graphics","displayName":"R","extensions":["r"],"iconMonochrome":"modules/kernels/r/r-monochrome.svg","id":"R","languageServers":{"available":["languageserver"],"enabledByDefault":["languageserver"],"probed":["languageserver"]},"support":{"codeActions":{"detail":"languageserver","level":"full"},"completion":{"detail":"languageserver","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"languageserver","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"languageserver","level":"full"},"documentSymbols":{"detail":"languageserver","level":"full"},"formatting":{"detail":"languageserver","level":"full"},"hover":{"detail":"languageserver","level":"full"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"languageserver","level":"full"},"references":{"detail":"languageserver","level":"full"},"rename":{"detail":"languageserver","level":"full"},"repl":{"detail":"r","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":"languageserver","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"r","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"languageserver","level":"full"}},"version":"4.5.3"},{"attrs":["r","R"],"componentVersions":{"ark":"0.1.252","r":"4.5.3"},"description":"Free software environment for statistical computing and graphics","displayName":"R (Ark)","extensions":["r"],"iconMonochrome":"modules/kernels/r-ark/r-monochrome.svg","id":"R-ark","languageServers":{"available":[],"enabledByDefault":[],"probed":[]},"support":{"codeActions":{"detail":null,"level":"none"},"completion":{"detail":null,"level":"none"},"debugger":{"detail":null,"level":"full"},"definition":{"detail":null,"level":"none"},"diagnostics":{"detail":null,"level":"none"},"documentHighlight":{"detail":null,"level":"none"},"documentSymbols":{"detail":null,"level":"none"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":null,"level":"none"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":null,"level":"none"},"references":{"detail":null,"level":"none"},"rename":{"detail":null,"level":"none"},"repl":{"detail":"r","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":null,"level":"none"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"r","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":null,"level":"none"}},"version":"4.5.3"},{"attrs":["ruby"],"componentVersions":{"iruby":"v0.8.2","ruby":"3.4.9","solargraph":"0.57.0"},"description":"Object-oriented language for quick and easy programming","displayName":"Ruby","extensions":["rb"],"iconMonochrome":"modules/kernels/ruby/ruby-monochrome.svg","id":"ruby","languageServers":{"available":["solargraph"],"enabledByDefault":["solargraph"],"probed":["solargraph"]},"support":{"codeActions":{"detail":null,"level":"none"},"completion":{"detail":"solargraph","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"solargraph","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"solargraph","level":"full"},"documentSymbols":{"detail":"solargraph","level":"full"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":"solargraph","level":"full"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"solargraph","level":"full"},"references":{"detail":"solargraph","level":"full"},"rename":{"detail":"solargraph","level":"full"},"repl":{"detail":"irb","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":"solargraph","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"ruby","level":"full"},"typeDefinition":{"detail":"solargraph","level":"full"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"solargraph","level":"full"}},"version":"3.4.9"},{"attrs":["rust"],"componentVersions":{"cargo":"1.95.0","evcxr":"0.21.1","rust":"1.95.0","rust-analyzer":"2026-04-27"},"description":"Safe, concurrent, practical language (wrapper script)","displayName":"Rust","extensions":["rs","rlib"],"iconMonochrome":"modules/kernels/rust/rust-logo-monochrome.svg","id":"rust","languageServers":{"available":["rust-analyzer"],"enabledByDefault":["rust-analyzer"],"probed":["rust-analyzer"]},"support":{"codeActions":{"detail":"rust-analyzer","level":"full"},"completion":{"detail":"rust-analyzer","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"rust-analyzer","level":"full"},"diagnostics":{"detail":"pull + push","level":"full"},"documentHighlight":{"detail":"rust-analyzer","level":"full"},"documentSymbols":{"detail":"rust-analyzer","level":"full"},"formatting":{"detail":"rust-analyzer","level":"full"},"hover":{"detail":"rust-analyzer","level":"full"},"inlayHints":{"detail":"rust-analyzer","level":"full"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"rust-analyzer","level":"full"},"references":{"detail":"rust-analyzer","level":"full"},"rename":{"detail":"rust-analyzer","level":"full"},"repl":{"detail":"evcxr","level":"full"},"semanticTokens":{"detail":"rust-analyzer","level":"full"},"signatureHelp":{"detail":"rust-analyzer","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"rust","level":"full"},"typeDefinition":{"detail":"rust-analyzer","level":"full"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"rust-analyzer","level":"full"}},"version":"1.95.0"}],"provenance":{"lsp":"Read from language server `initialize` responses (nix/lsp-capabilities.json, regenerated by scripts/probe-lsp-capabilities).","lspProbedKernels":["R","R-ark","bash","clojure","coq","cpp","go","haskell","julia","octave","postgres","python3","ruby","rust"],"nix":"Evaluated from the codedown-languages module system (nix/feature-matrix.nix)."},"schemaVersion":1} \ No newline at end of file diff --git a/docs/feature-matrix.svg b/docs/feature-matrix.svg index 88bd936a..6ac67629 100644 --- a/docs/feature-matrix.svg +++ b/docs/feature-matrix.svg @@ -122,7 +122,7 @@ C++ 23 - 21.1.7 + 21.1.8 C++ 23 - Jupyter kernel: yes @@ -210,7 +210,7 @@ Clojure - 1.12.3.1577 + 1.12.5.1645 Clojure - Jupyter kernel: yes @@ -369,7 +369,7 @@ Go - 1.25.9 + 1.26.6 Go - Jupyter kernel: yes @@ -853,7 +853,7 @@ Python - 3.13.12 + 3.13.15 Python - Jupyter kernel: yes @@ -940,7 +940,7 @@ R - 4.5.1 + 4.5.3 R - Jupyter kernel: yes diff --git a/flake.lock b/flake.lock index 8cfa03a5..61b52e83 100644 --- a/flake.lock +++ b/flake.lock @@ -17,16 +17,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1779930049, - "narHash": "sha256-6mqKLf7ukajFOrVjO7EH1i37CQOVG22AnuU3wR84xK0=", + "lastModified": 1787993413, + "narHash": "sha256-UxFzpSVQ7zZdd9bPc/sgCkbtSMwJkAKi82tas5FXgFI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f5190b692864072e79a2fb7c52d72d1d57fcb269", + "rev": "ca23145d9899c9d4b7f035339e2f21cf3106aa79", "type": "github" }, "original": { "owner": "NixOS", - "ref": "release-25.11", + "ref": "release-26.05", "repo": "nixpkgs", "type": "github" } diff --git a/flake.nix b/flake.nix index 4aa64914..16111278 100644 --- a/flake.nix +++ b/flake.nix @@ -1,7 +1,7 @@ { description = "CodeDown languages"; - inputs.nixpkgs.url = "github:NixOS/nixpkgs/release-25.11"; + inputs.nixpkgs.url = "github:NixOS/nixpkgs/release-26.05"; inputs.nixpkgs-master.url = "github:NixOS/nixpkgs/master"; inputs.flake-utils.url = "github:numtide/flake-utils"; diff --git a/modules/kernels/cpp/module.nix b/modules/kernels/cpp/module.nix index 37272e8e..207eea46 100644 --- a/modules/kernels/cpp/module.nix +++ b/modules/kernels/cpp/module.nix @@ -3,7 +3,11 @@ with lib; let - pkgsToUse = config.pkgs; + # cling 1.2 is built on clang 18, which segfaults parsing GCC 15's libstdc++ headers, so give + # it GCC 14's. + pkgsToUse = config.pkgs.extend (_final: prev: { + cling = prev.cling.override { gcc-unwrapped = prev.gcc14.cc; }; + }); in diff --git a/modules/kernels/python/module.nix b/modules/kernels/python/module.nix index 7ad93b7f..94f66535 100644 --- a/modules/kernels/python/module.nix +++ b/modules/kernels/python/module.nix @@ -133,10 +133,9 @@ in "python3" # "python310" - "python311" "python312" "python313" - # "python314" + "python314" ] # ++ (builtins.filter (n: builtins.match "^python3[0-9]*$" n != null) (builtins.attrNames config.pkgs)) )); @@ -168,19 +167,7 @@ in x = config.kernels.python3.python3Package; - basePython = (lib.getAttr x config.pkgs).override { - packageOverrides = _pyFinal: pyPrev: { - # Every pylint primer test drives one shared PRIMER_DIRECTORY and reads back the - # comment.txt it writes there, so the pytest-xdist workers overwrite each other's - # output and one of them reads an empty file. They only run on Python 3.11, and - # they cover pylint's own CI tooling rather than anything we ship. - pylint = pyPrev.pylint.overridePythonAttrs (old: { - disabledTestPaths = (old.disabledTestPaths or []) ++ [ - "tests/testutils/_primer/test_primer.py" - ]; - }); - }; - }; + basePython = lib.getAttr x config.pkgs; # if lib.hasAttr x specialEnvPythons then (config.pkgs.poetry2nix.mkPoetryEnv { # projectDir = ./envs/${x}; # python = specialEnvPythons.${x}; diff --git a/sample_environments.nix b/sample_environments.nix index 390c7334..3b472866 100644 --- a/sample_environments.nix +++ b/sample_environments.nix @@ -37,9 +37,9 @@ julia110 = import ./sample_environments/julia110.nix args; julia111 = import ./sample_environments/julia111.nix args; mega = import ./sample_environments/mega.nix args; - python311 = import ./sample_environments/python311.nix args; python312 = import ./sample_environments/python312.nix args; python313 = import ./sample_environments/python313.nix args; + python314 = import ./sample_environments/python314.nix args; python3 = import ./sample_environments/python3.nix args; } // pkgsStable.lib.optionalAttrs pkgsStable.stdenv.targetPlatform.isLinux { # PyPy's bootstrap interpreter doesn't build on Darwin: its libffi calls are guarded by diff --git a/sample_environments/python311.nix b/sample_environments/python314.nix similarity index 86% rename from sample_environments/python311.nix rename to sample_environments/python314.nix index 96ff6e32..3c7fd697 100644 --- a/sample_environments/python311.nix +++ b/sample_environments/python314.nix @@ -3,9 +3,9 @@ }: codedown.makeEnvironment { - name = "python311"; + name = "python314"; - kernels.python3.python3Package = "python311"; + kernels.python3.python3Package = "python314"; kernels.python3.enable = true; kernels.python3.packages = [ diff --git a/tests/app/Spec/Tests/Python.hs b/tests/app/Spec/Tests/Python.hs index a27d1b01..6ccc33ef 100644 --- a/tests/app/Spec/Tests/Python.hs +++ b/tests/app/Spec/Tests/Python.hs @@ -23,10 +23,9 @@ tests :: LanguageSpec tests = describe "Python" $ parallel $ do tests' ("python3", "python3") -- tests' ("python3", "python310") - tests' ("python3", "python311") tests' ("python3", "python312") tests' ("python3", "python313") - -- tests' ("python3", "python314") + tests' ("python3", "python314") -- PyPy's bootstrap interpreter doesn't build on Darwin, so there's no kernel to test there. when (os /= "darwin") pypyTests From 264253ebbd4a22608b281a8a0e6d33f13041aa49 Mon Sep 17 00:00:00 2001 From: thomasjm Date: Sat, 29 Aug 2026 06:31:53 -0700 Subject: [PATCH 2/8] Build every kernel and exporter from stable Nixpkgs Nothing in the package set reaches for pkgsMaster now, so a store that evaluates codedown-languages no longer fetches the master Nixpkgs tree at all. Only version change across all kernels: rust-analyzer 2026-04-27 -> 2026-06-01. --- modules/exporters/nbconvert/module.nix | 2 +- modules/exporters/pandoc/module.nix | 2 +- modules/exporters/typst/module.nix | 2 +- modules/kernels/coq/module.nix | 2 +- modules/kernels/haskell/compilers-stable.nix | 12 ------------ .../{compilers-unstable.nix => compilers.nix} | 0 modules/kernels/haskell/module.nix | 5 +---- modules/kernels/julia/module.nix | 2 +- modules/kernels/octave/module.nix | 2 +- modules/kernels/r-ark/module.nix | 2 +- modules/kernels/ruby/module.nix | 2 +- modules/kernels/rust/module.nix | 2 +- 12 files changed, 10 insertions(+), 25 deletions(-) delete mode 100644 modules/kernels/haskell/compilers-stable.nix rename modules/kernels/haskell/{compilers-unstable.nix => compilers.nix} (100%) diff --git a/modules/exporters/nbconvert/module.nix b/modules/exporters/nbconvert/module.nix index 26391c2e..fa126cd5 100644 --- a/modules/exporters/nbconvert/module.nix +++ b/modules/exporters/nbconvert/module.nix @@ -43,7 +43,7 @@ with lib; }; config = mkIf config.exporters.nbconvert.enable { - builtExporters.nbconvert = config.pkgsMaster.callPackage ./default.nix { + builtExporters.nbconvert = config.pkgs.callPackage ./default.nix { texliveScheme = config.pkgs.texlive.combined.${config.exporters.nbconvert.texliveScheme}; settings = config.exporters.nbconvert; diff --git a/modules/exporters/pandoc/module.nix b/modules/exporters/pandoc/module.nix index 9edc903b..0c9da69d 100644 --- a/modules/exporters/pandoc/module.nix +++ b/modules/exporters/pandoc/module.nix @@ -43,7 +43,7 @@ with lib; }; config = mkIf config.exporters.pandoc.enable { - builtExporters.pandoc = config.pkgsMaster.callPackage ./default.nix { + builtExporters.pandoc = config.pkgs.callPackage ./default.nix { texliveScheme = config.pkgs.texlive.combined.${config.exporters.pandoc.texliveScheme}; settings = config.exporters.pandoc; diff --git a/modules/exporters/typst/module.nix b/modules/exporters/typst/module.nix index a92cdd07..23673076 100644 --- a/modules/exporters/typst/module.nix +++ b/modules/exporters/typst/module.nix @@ -58,7 +58,7 @@ in }; config = mkIf config.exporters.typst.enable { - builtExporters.typst = config.pkgsMaster.callPackage ./default.nix { + builtExporters.typst = config.pkgs.callPackage ./default.nix { settings = config.exporters.typst; settingsSchema = nixosOptionsToSettingsSchema { componentsToDrop = 2; } options.exporters.typst; }; diff --git a/modules/kernels/coq/module.nix b/modules/kernels/coq/module.nix index d223557c..8c801d34 100644 --- a/modules/kernels/coq/module.nix +++ b/modules/kernels/coq/module.nix @@ -3,7 +3,7 @@ with lib; let - pkgsToUse = config.pkgsMaster; + pkgsToUse = config.pkgs; in diff --git a/modules/kernels/haskell/compilers-stable.nix b/modules/kernels/haskell/compilers-stable.nix deleted file mode 100644 index 8a941674..00000000 --- a/modules/kernels/haskell/compilers-stable.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ fetchFromGitHub -, lib -, libsodium -, runCommand -, haskell - -, ihaskell-source -}: - - -{ -} diff --git a/modules/kernels/haskell/compilers-unstable.nix b/modules/kernels/haskell/compilers.nix similarity index 100% rename from modules/kernels/haskell/compilers-unstable.nix rename to modules/kernels/haskell/compilers.nix diff --git a/modules/kernels/haskell/module.nix b/modules/kernels/haskell/module.nix index 565036b6..22865281 100644 --- a/modules/kernels/haskell/module.nix +++ b/modules/kernels/haskell/module.nix @@ -76,10 +76,7 @@ in sha256 = "sha256-2SeTakYt/DPQ7S+uHVOVbL/xAcil7g5OGPIx+ZSKYCA="; }; - compilers = - config.pkgs.callPackage ./compilers-stable.nix { inherit ihaskell-source; } - // config.pkgsMaster.callPackage ./compilers-unstable.nix { inherit ihaskell-source; } - ; + compilers = config.pkgs.callPackage ./compilers.nix { inherit ihaskell-source; }; compilerName = config.kernels.haskell.ghcPackage; diff --git a/modules/kernels/julia/module.nix b/modules/kernels/julia/module.nix index d670d345..7f4b47d4 100644 --- a/modules/kernels/julia/module.nix +++ b/modules/kernels/julia/module.nix @@ -3,7 +3,7 @@ with lib; let - pkgsToUse = config.pkgsMaster; + pkgsToUse = config.pkgs; in diff --git a/modules/kernels/octave/module.nix b/modules/kernels/octave/module.nix index 72d6ebe3..00036773 100644 --- a/modules/kernels/octave/module.nix +++ b/modules/kernels/octave/module.nix @@ -3,7 +3,7 @@ with lib; let - pkgsToUse = config.pkgsMaster; + pkgsToUse = config.pkgs; in diff --git a/modules/kernels/r-ark/module.nix b/modules/kernels/r-ark/module.nix index 37e25ed0..05d40598 100644 --- a/modules/kernels/r-ark/module.nix +++ b/modules/kernels/r-ark/module.nix @@ -5,7 +5,7 @@ with lib; let # Ark requires rustc >= 1.94, which is newer than the stable nixpkgs pin # ships, so build it (and its R) from the master pin like the Rust kernel. - pkgsToUse = config.pkgsMaster; + pkgsToUse = config.pkgs; in diff --git a/modules/kernels/ruby/module.nix b/modules/kernels/ruby/module.nix index ed0451d8..db67376c 100644 --- a/modules/kernels/ruby/module.nix +++ b/modules/kernels/ruby/module.nix @@ -3,7 +3,7 @@ with lib; let - pkgs = config.pkgsMaster; + pkgs = config.pkgs; in diff --git a/modules/kernels/rust/module.nix b/modules/kernels/rust/module.nix index 810c917e..0a691e71 100644 --- a/modules/kernels/rust/module.nix +++ b/modules/kernels/rust/module.nix @@ -17,7 +17,7 @@ let ]; }; - pkgsToUse = config.pkgsMaster; + pkgsToUse = config.pkgs; in From 915debe2129b9f0b2d6460dd0a67f69ee6d4119b Mon Sep 17 00:00:00 2001 From: thomasjm Date: Sun, 30 Aug 2026 04:16:05 -0700 Subject: [PATCH 3/8] Skip gophernotes' upstream tests, which time out on slow builders --- modules/kernels/go/kernel.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/kernels/go/kernel.nix b/modules/kernels/go/kernel.nix index d2b021b8..7997d79a 100644 --- a/modules/kernels/go/kernel.nix +++ b/modules/kernels/go/kernel.nix @@ -22,6 +22,10 @@ let }; vendorHash = "sha256-bGaXnd0E6dRNiwvGIn7Ptddrt7dRzPfkPThgHPuL2Vo="; + + # The upstream tests give the kernel a fixed retry budget to come up on a ZMQ port, which + # isn't long enough on an emulated or loaded builder. The go suite covers the kernel anyway. + doCheck = false; }); argv = [ From ce168417a2eeadda1b976b846c8b06365e8a74d8 Mon Sep 17 00:00:00 2001 From: thomasjm Date: Mon, 31 Aug 2026 14:45:27 -0700 Subject: [PATCH 4/8] Fixups noci --- README.md | 2 -- docs/feature-matrix.json | 2 +- modules/kernels/python/module.nix | 15 ++++++++++++++- scripts/update-feature-matrix | 6 ------ 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index dcd53d4a..2e16af95 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,4 @@ See the available options in [OPTIONS.md](./OPTIONS.md). Feature support by language -_15 languages, 22 features. See [FEATURE-MATRIX.md](./FEATURE-MATRIX.md) for the same data as tables, and for how it's generated._ - diff --git a/docs/feature-matrix.json b/docs/feature-matrix.json index 0b17c391..06b98816 100644 --- a/docs/feature-matrix.json +++ b/docs/feature-matrix.json @@ -1 +1 @@ -{"features":[{"description":"Runs notebook cells through a Jupyter kernel.","group":"core","id":"jupyterKernel","name":"Jupyter kernel","source":"nix"},{"description":"Ships an interactive console you can attach to the same session.","group":"core","id":"repl","name":"REPL","source":"nix"},{"description":"Lists the variables currently defined in the session, with drill-down.","group":"core","id":"variableInspector","name":"Variable inspector","source":"nix"},{"description":"Breakpoints and stepping via the Jupyter debug protocol.","group":"core","id":"debugger","name":"Debugger","source":"nix"},{"description":"Editor highlighting for the language.","group":"core","id":"syntaxHighlighting","name":"Syntax highlighting","source":"nix"},{"description":"An LSP server is wired up for notebook cells and files.","group":"intelligence","id":"languageServer","name":"Language server","source":"nix"},{"description":"Context-aware completions as you type.","group":"intelligence","id":"completion","name":"Code completion","source":"lsp"},{"description":"Type and documentation popups on hover.","group":"intelligence","id":"hover","name":"Hover docs","source":"lsp"},{"description":"Parameter hints while calling a function.","group":"intelligence","id":"signatureHelp","name":"Signature help","source":"lsp"},{"description":"Errors, warnings and lints reported inline.","group":"intelligence","id":"diagnostics","name":"Diagnostics","source":"lsp"},{"description":"Highlighting driven by the compiler/analyzer rather than a regex grammar.","group":"intelligence","id":"semanticTokens","name":"Semantic highlighting","source":"lsp"},{"description":"Inferred types and parameter names rendered inline.","group":"intelligence","id":"inlayHints","name":"Inlay hints","source":"lsp"},{"description":"Go from a use of a symbol to where it's defined.","group":"navigation","id":"definition","name":"Jump to definition","source":"lsp"},{"description":"Go from a value to the definition of its type.","group":"navigation","id":"typeDefinition","name":"Jump to type definition","source":"lsp"},{"description":"Find every use of a symbol.","group":"navigation","id":"references","name":"Find references","source":"lsp"},{"description":"Symbol tree for the current document.","group":"navigation","id":"documentSymbols","name":"Document outline","source":"lsp"},{"description":"Search symbols across the whole project.","group":"navigation","id":"workspaceSymbols","name":"Workspace symbol search","source":"lsp"},{"description":"Highlights other occurrences of the symbol under the cursor.","group":"navigation","id":"documentHighlight","name":"Highlight occurrences","source":"lsp"},{"description":"Format a document or a selection.","group":"editing","id":"formatting","name":"Formatting","source":"lsp"},{"description":"Rename a symbol and every reference to it.","group":"editing","id":"rename","name":"Rename symbol","source":"lsp"},{"description":"Quick fixes and refactorings offered on a range.","group":"editing","id":"codeActions","name":"Code actions","source":"lsp"},{"description":"A searchable set of language packages you can add to the environment declaratively.","group":"packages","id":"subPackageManagement","name":"Subpackage management","source":"nix"}],"groups":[{"id":"core","name":"Notebook"},{"id":"intelligence","name":"Code intelligence"},{"id":"navigation","name":"Navigation"},{"id":"editing","name":"Editing"},{"id":"packages","name":"Packages"}],"languages":[{"attrs":["bash"],"componentVersions":{"bash":"5.3p9","bash-kernel":"0.10.0","bash-language-server":"5.6.0"},"description":"GNU Bourne-Again Shell, the de facto standard shell on Linux (for interactive use)","displayName":"Bash","extensions":["sh","bash"],"iconMonochrome":"modules/kernels/bash/gnubash-monochrome.svg","id":"bash","languageServers":{"available":["bash-language-server"],"enabledByDefault":["bash-language-server"],"probed":["bash-language-server"]},"support":{"codeActions":{"detail":"bash-language-server","level":"full"},"completion":{"detail":"bash-language-server","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"bash-language-server","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"bash-language-server","level":"full"},"documentSymbols":{"detail":"bash-language-server","level":"full"},"formatting":{"detail":"bash-language-server","level":"full"},"hover":{"detail":"bash-language-server","level":"full"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"bash-language-server","level":"full"},"references":{"detail":"bash-language-server","level":"full"},"rename":{"detail":"bash-language-server","level":"full"},"repl":{"detail":"bash","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":null,"level":"none"},"subPackageManagement":{"detail":null,"level":"none"},"syntaxHighlighting":{"detail":"shell","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"bash-language-server","level":"full"}},"version":"5.3p9"},{"attrs":["c++23","cpp"],"componentVersions":{"clang":"21.1.8","clangd":"21.1.8","cling":"1.2","std":"c++23","xeus-cling":"0.15.3"},"description":"C language family frontend for LLVM (wrapper script)","displayName":"C++ 23","extensions":["cpp","hpp","cxx","hxx","c","h"],"iconMonochrome":"modules/kernels/cpp/cpp23-monochrome.svg","id":"cpp","languageServers":{"available":["clangd"],"enabledByDefault":["clangd"],"probed":["clangd"]},"support":{"codeActions":{"detail":"clangd","level":"full"},"completion":{"detail":"clangd","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"clangd","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"clangd","level":"full"},"documentSymbols":{"detail":"clangd","level":"full"},"formatting":{"detail":"clangd","level":"full"},"hover":{"detail":"clangd","level":"full"},"inlayHints":{"detail":"clangd","level":"full"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"clangd","level":"full"},"references":{"detail":"clangd","level":"full"},"rename":{"detail":"clangd","level":"full"},"repl":{"detail":"cling","level":"full"},"semanticTokens":{"detail":"clangd","level":"full"},"signatureHelp":{"detail":"clangd","level":"full"},"subPackageManagement":{"detail":null,"level":"none"},"syntaxHighlighting":{"detail":"clike","level":"full"},"typeDefinition":{"detail":"clangd","level":"full"},"variableInspector":{"detail":null,"level":"none"},"workspaceSymbols":{"detail":"clangd","level":"full"}},"version":"21.1.8"},{"attrs":["clojure"],"componentVersions":{"clojure":"1.12.5.1645","clojure-lsp":"2026.02.20-16.08.58"},"description":"Lisp dialect for the JVM","displayName":"Clojure","extensions":["clj"],"iconMonochrome":"modules/kernels/clojure/clojure-monochrome.svg","id":"clojure","languageServers":{"available":["clojure-lsp"],"enabledByDefault":["clojure-lsp"],"probed":["clojure-lsp"]},"support":{"codeActions":{"detail":"clojure-lsp","level":"full"},"completion":{"detail":"clojure-lsp","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"clojure-lsp","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"clojure-lsp","level":"full"},"documentSymbols":{"detail":"clojure-lsp","level":"full"},"formatting":{"detail":"clojure-lsp","level":"full"},"hover":{"detail":"clojure-lsp","level":"full"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"clojure-lsp","level":"full"},"references":{"detail":"clojure-lsp","level":"full"},"rename":{"detail":"clojure-lsp","level":"full"},"repl":{"detail":"clojure","level":"full"},"semanticTokens":{"detail":"clojure-lsp","level":"full"},"signatureHelp":{"detail":"clojure-lsp","level":"full"},"subPackageManagement":{"detail":null,"level":"none"},"syntaxHighlighting":{"detail":"clojure","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"clojure-lsp","level":"full"}},"version":"1.12.5.1645"},{"attrs":["coq"],"componentVersions":{"coq":"9.1.1"},"description":"Coq proof assistant","displayName":"Coq","extensions":["v"],"iconMonochrome":"modules/kernels/coq/coq-monochrome.svg","id":"coq","languageServers":{"available":[],"enabledByDefault":[],"probed":[]},"support":{"codeActions":{"detail":null,"level":"none"},"completion":{"detail":null,"level":"none"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":null,"level":"none"},"diagnostics":{"detail":null,"level":"none"},"documentHighlight":{"detail":null,"level":"none"},"documentSymbols":{"detail":null,"level":"none"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":null,"level":"none"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":null,"level":"none"},"references":{"detail":null,"level":"none"},"rename":{"detail":null,"level":"none"},"repl":{"detail":"console","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":null,"level":"none"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"coq","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"none"},"workspaceSymbols":{"detail":null,"level":"none"}},"version":"9.1.1"},{"attrs":["go"],"componentVersions":{"go":"1.26.6","gopls":"0.22.0"},"description":"Go Programming language","displayName":"Go","extensions":["go"],"iconMonochrome":"modules/kernels/go/go-monochrome.svg","id":"go","languageServers":{"available":["gopls"],"enabledByDefault":["gopls"],"probed":["gopls"]},"support":{"codeActions":{"detail":"gopls","level":"full"},"completion":{"detail":"gopls","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"gopls","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"gopls","level":"full"},"documentSymbols":{"detail":"gopls","level":"full"},"formatting":{"detail":"gopls","level":"full"},"hover":{"detail":"gopls","level":"full"},"inlayHints":{"detail":"gopls","level":"full"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"gopls","level":"full"},"references":{"detail":"gopls","level":"full"},"rename":{"detail":"gopls","level":"full"},"repl":{"detail":"console","level":"full"},"semanticTokens":{"detail":"gopls","level":"full"},"signatureHelp":{"detail":"gopls","level":"full"},"subPackageManagement":{"detail":null,"level":"none"},"syntaxHighlighting":{"detail":"go","level":"full"},"typeDefinition":{"detail":"gopls","level":"full"},"variableInspector":{"detail":null,"level":"none"},"workspaceSymbols":{"detail":"gopls","level":"full"}},"version":"1.26.6"},{"attrs":["haskell"],"componentVersions":{"ghc":"9.10.3","haskell-language-server":"2.13.0.0"},"description":"An advanced, purely functional programming language (GHC 9.10.3)","displayName":"Haskell","extensions":["hs"],"iconMonochrome":"modules/kernels/haskell/haskell-monochrome.svg","id":"haskell","languageServers":{"available":["haskell-language-server"],"enabledByDefault":["haskell-language-server"],"probed":["haskell-language-server"]},"support":{"codeActions":{"detail":"haskell-language-server","level":"full"},"completion":{"detail":"haskell-language-server","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"haskell-language-server","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"haskell-language-server","level":"full"},"documentSymbols":{"detail":"haskell-language-server","level":"full"},"formatting":{"detail":"haskell-language-server","level":"full"},"hover":{"detail":"haskell-language-server","level":"full"},"inlayHints":{"detail":"haskell-language-server","level":"full"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"haskell-language-server","level":"full"},"references":{"detail":"haskell-language-server","level":"full"},"rename":{"detail":"haskell-language-server","level":"full"},"repl":{"detail":"ghci","level":"full"},"semanticTokens":{"detail":"haskell-language-server","level":"full"},"signatureHelp":{"detail":"haskell-language-server","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"haskell","level":"full"},"typeDefinition":{"detail":"haskell-language-server","level":"full"},"variableInspector":{"detail":null,"level":"none"},"workspaceSymbols":{"detail":"haskell-language-server","level":"full"}},"version":"9.10.3"},{"attrs":["julia"],"componentVersions":{"julia":"1.12.6"},"description":"High-level performance-oriented dynamical language for technical computing","displayName":"Julia","extensions":["jl"],"iconMonochrome":"modules/kernels/julia/julia-monochrome.svg","id":"julia","languageServers":{"available":["LanguageServer"],"enabledByDefault":["LanguageServer"],"probed":["LanguageServer"]},"support":{"codeActions":{"detail":"LanguageServer","level":"full"},"completion":{"detail":"LanguageServer","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"LanguageServer","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"LanguageServer","level":"full"},"documentSymbols":{"detail":"LanguageServer","level":"full"},"formatting":{"detail":"LanguageServer","level":"full"},"hover":{"detail":"LanguageServer","level":"full"},"inlayHints":{"detail":"LanguageServer","level":"full"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"LanguageServer","level":"full"},"references":{"detail":"LanguageServer","level":"full"},"rename":{"detail":"LanguageServer","level":"full"},"repl":{"detail":"julia","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":"LanguageServer","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"julia","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"LanguageServer","level":"full"}},"version":"1.12.6"},{"attrs":["octave"],"componentVersions":{"octave":"11.1.0"},"description":"Scientific Programming Language","displayName":"Octave","extensions":["m"],"iconMonochrome":"modules/kernels/octave/octave-monochrome.svg","id":"octave","languageServers":{"available":[],"enabledByDefault":[],"probed":[]},"support":{"codeActions":{"detail":null,"level":"none"},"completion":{"detail":null,"level":"none"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":null,"level":"none"},"diagnostics":{"detail":null,"level":"none"},"documentHighlight":{"detail":null,"level":"none"},"documentSymbols":{"detail":null,"level":"none"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":null,"level":"none"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":null,"level":"none"},"references":{"detail":null,"level":"none"},"rename":{"detail":null,"level":"none"},"repl":{"detail":"octave","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":null,"level":"none"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"octave","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":null,"level":"none"}},"version":"11.1.0"},{"attrs":["postgres"],"componentVersions":{"postgres-kernel":"0.1"},"description":"A simple Jupyter kernel for PostgreSQL","displayName":"PostgreSQL","extensions":["sql"],"iconMonochrome":"modules/kernels/postgres/postgresql-monochrome.svg","id":"postgres","languageServers":{"available":[],"enabledByDefault":[],"probed":[]},"support":{"codeActions":{"detail":null,"level":"none"},"completion":{"detail":null,"level":"none"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":null,"level":"none"},"diagnostics":{"detail":null,"level":"none"},"documentHighlight":{"detail":null,"level":"none"},"documentSymbols":{"detail":null,"level":"none"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":null,"level":"none"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":null,"level":"none"},"references":{"detail":null,"level":"none"},"rename":{"detail":null,"level":"none"},"repl":{"detail":"console","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":null,"level":"none"},"subPackageManagement":{"detail":null,"level":"none"},"syntaxHighlighting":{"detail":"sql","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"none"},"workspaceSymbols":{"detail":null,"level":"none"}},"version":"0.1"},{"attrs":["python3","python"],"componentVersions":{"flake8":"7.3.0","jedi-language-server":"0.46.0","pycodestyle":"2.14.0","pylint":"4.0.5","pyright":"1.1.411","python":"7.3.20","python-lsp-server":"1.14.0"},"description":"Fast, compliant alternative implementation of the Python language (3.11)","displayName":"PyPy","extensions":["py"],"iconMonochrome":"modules/kernels/python/python-monochrome.svg","id":"pypy3","languageServers":{"available":["flake8","jedi","microsoft","pycodestyle","pylint","pyright","python-language-server","python-lsp-server"],"enabledByDefault":["jedi"],"probed":[]},"support":{"codeActions":{"detail":null,"level":"unknown"},"completion":{"detail":null,"level":"unknown"},"debugger":{"detail":null,"level":"full"},"definition":{"detail":null,"level":"unknown"},"diagnostics":{"detail":null,"level":"unknown"},"documentHighlight":{"detail":null,"level":"unknown"},"documentSymbols":{"detail":null,"level":"unknown"},"formatting":{"detail":null,"level":"unknown"},"hover":{"detail":null,"level":"unknown"},"inlayHints":{"detail":null,"level":"unknown"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"jedi","level":"full"},"references":{"detail":null,"level":"unknown"},"rename":{"detail":null,"level":"unknown"},"repl":{"detail":"ipython","level":"full"},"semanticTokens":{"detail":null,"level":"unknown"},"signatureHelp":{"detail":null,"level":"unknown"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"python","level":"full"},"typeDefinition":{"detail":null,"level":"unknown"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":null,"level":"unknown"}},"version":"7.3.20"},{"attrs":["python3","python"],"componentVersions":{"flake8":"7.3.0","jedi-language-server":"0.46.0","pycodestyle":"2.14.0","pylint":"4.0.5","pyright":"1.1.411","python":"3.13.15","python-lsp-server":"1.14.0"},"description":"High-level dynamically-typed programming language","displayName":"Python","extensions":["py"],"iconMonochrome":"modules/kernels/python/python-monochrome.svg","id":"python3","languageServers":{"available":["flake8","jedi","microsoft","pycodestyle","pylint","pyright","python-language-server","python-lsp-server"],"enabledByDefault":["jedi"],"probed":["jedi"]},"support":{"codeActions":{"detail":"jedi","level":"full"},"completion":{"detail":"jedi","level":"full"},"debugger":{"detail":null,"level":"full"},"definition":{"detail":"jedi","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"jedi","level":"full"},"documentSymbols":{"detail":"jedi","level":"full"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":"jedi","level":"full"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"jedi","level":"full"},"references":{"detail":"jedi","level":"full"},"rename":{"detail":"jedi","level":"full"},"repl":{"detail":"ipython","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":"jedi","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"python","level":"full"},"typeDefinition":{"detail":"jedi","level":"full"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"jedi","level":"full"}},"version":"3.13.15"},{"attrs":["r","R"],"componentVersions":{"languageserver":"0.3.16","r":"4.5.3"},"description":"Free software environment for statistical computing and graphics","displayName":"R","extensions":["r"],"iconMonochrome":"modules/kernels/r/r-monochrome.svg","id":"R","languageServers":{"available":["languageserver"],"enabledByDefault":["languageserver"],"probed":["languageserver"]},"support":{"codeActions":{"detail":"languageserver","level":"full"},"completion":{"detail":"languageserver","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"languageserver","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"languageserver","level":"full"},"documentSymbols":{"detail":"languageserver","level":"full"},"formatting":{"detail":"languageserver","level":"full"},"hover":{"detail":"languageserver","level":"full"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"languageserver","level":"full"},"references":{"detail":"languageserver","level":"full"},"rename":{"detail":"languageserver","level":"full"},"repl":{"detail":"r","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":"languageserver","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"r","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"languageserver","level":"full"}},"version":"4.5.3"},{"attrs":["r","R"],"componentVersions":{"ark":"0.1.252","r":"4.5.3"},"description":"Free software environment for statistical computing and graphics","displayName":"R (Ark)","extensions":["r"],"iconMonochrome":"modules/kernels/r-ark/r-monochrome.svg","id":"R-ark","languageServers":{"available":[],"enabledByDefault":[],"probed":[]},"support":{"codeActions":{"detail":null,"level":"none"},"completion":{"detail":null,"level":"none"},"debugger":{"detail":null,"level":"full"},"definition":{"detail":null,"level":"none"},"diagnostics":{"detail":null,"level":"none"},"documentHighlight":{"detail":null,"level":"none"},"documentSymbols":{"detail":null,"level":"none"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":null,"level":"none"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":null,"level":"none"},"references":{"detail":null,"level":"none"},"rename":{"detail":null,"level":"none"},"repl":{"detail":"r","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":null,"level":"none"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"r","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":null,"level":"none"}},"version":"4.5.3"},{"attrs":["ruby"],"componentVersions":{"iruby":"v0.8.2","ruby":"3.4.9","solargraph":"0.57.0"},"description":"Object-oriented language for quick and easy programming","displayName":"Ruby","extensions":["rb"],"iconMonochrome":"modules/kernels/ruby/ruby-monochrome.svg","id":"ruby","languageServers":{"available":["solargraph"],"enabledByDefault":["solargraph"],"probed":["solargraph"]},"support":{"codeActions":{"detail":null,"level":"none"},"completion":{"detail":"solargraph","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"solargraph","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"solargraph","level":"full"},"documentSymbols":{"detail":"solargraph","level":"full"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":"solargraph","level":"full"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"solargraph","level":"full"},"references":{"detail":"solargraph","level":"full"},"rename":{"detail":"solargraph","level":"full"},"repl":{"detail":"irb","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":"solargraph","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"ruby","level":"full"},"typeDefinition":{"detail":"solargraph","level":"full"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"solargraph","level":"full"}},"version":"3.4.9"},{"attrs":["rust"],"componentVersions":{"cargo":"1.95.0","evcxr":"0.21.1","rust":"1.95.0","rust-analyzer":"2026-04-27"},"description":"Safe, concurrent, practical language (wrapper script)","displayName":"Rust","extensions":["rs","rlib"],"iconMonochrome":"modules/kernels/rust/rust-logo-monochrome.svg","id":"rust","languageServers":{"available":["rust-analyzer"],"enabledByDefault":["rust-analyzer"],"probed":["rust-analyzer"]},"support":{"codeActions":{"detail":"rust-analyzer","level":"full"},"completion":{"detail":"rust-analyzer","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"rust-analyzer","level":"full"},"diagnostics":{"detail":"pull + push","level":"full"},"documentHighlight":{"detail":"rust-analyzer","level":"full"},"documentSymbols":{"detail":"rust-analyzer","level":"full"},"formatting":{"detail":"rust-analyzer","level":"full"},"hover":{"detail":"rust-analyzer","level":"full"},"inlayHints":{"detail":"rust-analyzer","level":"full"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"rust-analyzer","level":"full"},"references":{"detail":"rust-analyzer","level":"full"},"rename":{"detail":"rust-analyzer","level":"full"},"repl":{"detail":"evcxr","level":"full"},"semanticTokens":{"detail":"rust-analyzer","level":"full"},"signatureHelp":{"detail":"rust-analyzer","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"rust","level":"full"},"typeDefinition":{"detail":"rust-analyzer","level":"full"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"rust-analyzer","level":"full"}},"version":"1.95.0"}],"provenance":{"lsp":"Read from language server `initialize` responses (nix/lsp-capabilities.json, regenerated by scripts/probe-lsp-capabilities).","lspProbedKernels":["R","R-ark","bash","clojure","coq","cpp","go","haskell","julia","octave","postgres","python3","ruby","rust"],"nix":"Evaluated from the codedown-languages module system (nix/feature-matrix.nix)."},"schemaVersion":1} \ No newline at end of file +{"features":[{"description":"Runs notebook cells through a Jupyter kernel.","group":"core","id":"jupyterKernel","name":"Jupyter kernel","source":"nix"},{"description":"Ships an interactive console you can attach to the same session.","group":"core","id":"repl","name":"REPL","source":"nix"},{"description":"Lists the variables currently defined in the session, with drill-down.","group":"core","id":"variableInspector","name":"Variable inspector","source":"nix"},{"description":"Breakpoints and stepping via the Jupyter debug protocol.","group":"core","id":"debugger","name":"Debugger","source":"nix"},{"description":"Editor highlighting for the language.","group":"core","id":"syntaxHighlighting","name":"Syntax highlighting","source":"nix"},{"description":"An LSP server is wired up for notebook cells and files.","group":"intelligence","id":"languageServer","name":"Language server","source":"nix"},{"description":"Context-aware completions as you type.","group":"intelligence","id":"completion","name":"Code completion","source":"lsp"},{"description":"Type and documentation popups on hover.","group":"intelligence","id":"hover","name":"Hover docs","source":"lsp"},{"description":"Parameter hints while calling a function.","group":"intelligence","id":"signatureHelp","name":"Signature help","source":"lsp"},{"description":"Errors, warnings and lints reported inline.","group":"intelligence","id":"diagnostics","name":"Diagnostics","source":"lsp"},{"description":"Highlighting driven by the compiler/analyzer rather than a regex grammar.","group":"intelligence","id":"semanticTokens","name":"Semantic highlighting","source":"lsp"},{"description":"Inferred types and parameter names rendered inline.","group":"intelligence","id":"inlayHints","name":"Inlay hints","source":"lsp"},{"description":"Go from a use of a symbol to where it's defined.","group":"navigation","id":"definition","name":"Jump to definition","source":"lsp"},{"description":"Go from a value to the definition of its type.","group":"navigation","id":"typeDefinition","name":"Jump to type definition","source":"lsp"},{"description":"Find every use of a symbol.","group":"navigation","id":"references","name":"Find references","source":"lsp"},{"description":"Symbol tree for the current document.","group":"navigation","id":"documentSymbols","name":"Document outline","source":"lsp"},{"description":"Search symbols across the whole project.","group":"navigation","id":"workspaceSymbols","name":"Workspace symbol search","source":"lsp"},{"description":"Highlights other occurrences of the symbol under the cursor.","group":"navigation","id":"documentHighlight","name":"Highlight occurrences","source":"lsp"},{"description":"Format a document or a selection.","group":"editing","id":"formatting","name":"Formatting","source":"lsp"},{"description":"Rename a symbol and every reference to it.","group":"editing","id":"rename","name":"Rename symbol","source":"lsp"},{"description":"Quick fixes and refactorings offered on a range.","group":"editing","id":"codeActions","name":"Code actions","source":"lsp"},{"description":"A searchable set of language packages you can add to the environment declaratively.","group":"packages","id":"subPackageManagement","name":"Subpackage management","source":"nix"}],"groups":[{"id":"core","name":"Notebook"},{"id":"intelligence","name":"Code intelligence"},{"id":"navigation","name":"Navigation"},{"id":"editing","name":"Editing"},{"id":"packages","name":"Packages"}],"languages":[{"attrs":["bash"],"componentVersions":{"bash":"5.3p9","bash-kernel":"0.10.0","bash-language-server":"5.6.0"},"description":"GNU Bourne-Again Shell, the de facto standard shell on Linux (for interactive use)","displayName":"Bash","extensions":["sh","bash"],"iconMonochrome":"modules/kernels/bash/gnubash-monochrome.svg","id":"bash","languageServers":{"available":["bash-language-server"],"enabledByDefault":["bash-language-server"],"probed":["bash-language-server"]},"support":{"codeActions":{"detail":"bash-language-server","level":"full"},"completion":{"detail":"bash-language-server","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"bash-language-server","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"bash-language-server","level":"full"},"documentSymbols":{"detail":"bash-language-server","level":"full"},"formatting":{"detail":"bash-language-server","level":"full"},"hover":{"detail":"bash-language-server","level":"full"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"bash-language-server","level":"full"},"references":{"detail":"bash-language-server","level":"full"},"rename":{"detail":"bash-language-server","level":"full"},"repl":{"detail":"bash","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":null,"level":"none"},"subPackageManagement":{"detail":null,"level":"none"},"syntaxHighlighting":{"detail":"shell","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"bash-language-server","level":"full"}},"version":"5.3p9"},{"attrs":["c++23","cpp"],"componentVersions":{"clang":"21.1.8","clangd":"21.1.8","cling":"1.2","std":"c++23","xeus-cling":"0.15.3"},"description":"C language family frontend for LLVM (wrapper script)","displayName":"C++ 23","extensions":["cpp","hpp","cxx","hxx","c","h"],"iconMonochrome":"modules/kernels/cpp/cpp23-monochrome.svg","id":"cpp","languageServers":{"available":["clangd"],"enabledByDefault":["clangd"],"probed":["clangd"]},"support":{"codeActions":{"detail":"clangd","level":"full"},"completion":{"detail":"clangd","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"clangd","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"clangd","level":"full"},"documentSymbols":{"detail":"clangd","level":"full"},"formatting":{"detail":"clangd","level":"full"},"hover":{"detail":"clangd","level":"full"},"inlayHints":{"detail":"clangd","level":"full"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"clangd","level":"full"},"references":{"detail":"clangd","level":"full"},"rename":{"detail":"clangd","level":"full"},"repl":{"detail":"cling","level":"full"},"semanticTokens":{"detail":"clangd","level":"full"},"signatureHelp":{"detail":"clangd","level":"full"},"subPackageManagement":{"detail":null,"level":"none"},"syntaxHighlighting":{"detail":"clike","level":"full"},"typeDefinition":{"detail":"clangd","level":"full"},"variableInspector":{"detail":null,"level":"none"},"workspaceSymbols":{"detail":"clangd","level":"full"}},"version":"21.1.8"},{"attrs":["clojure"],"componentVersions":{"clojure":"1.12.5.1645","clojure-lsp":"2026.02.20-16.08.58"},"description":"Lisp dialect for the JVM","displayName":"Clojure","extensions":["clj"],"iconMonochrome":"modules/kernels/clojure/clojure-monochrome.svg","id":"clojure","languageServers":{"available":["clojure-lsp"],"enabledByDefault":["clojure-lsp"],"probed":["clojure-lsp"]},"support":{"codeActions":{"detail":"clojure-lsp","level":"full"},"completion":{"detail":"clojure-lsp","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"clojure-lsp","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"clojure-lsp","level":"full"},"documentSymbols":{"detail":"clojure-lsp","level":"full"},"formatting":{"detail":"clojure-lsp","level":"full"},"hover":{"detail":"clojure-lsp","level":"full"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"clojure-lsp","level":"full"},"references":{"detail":"clojure-lsp","level":"full"},"rename":{"detail":"clojure-lsp","level":"full"},"repl":{"detail":"clojure","level":"full"},"semanticTokens":{"detail":"clojure-lsp","level":"full"},"signatureHelp":{"detail":"clojure-lsp","level":"full"},"subPackageManagement":{"detail":null,"level":"none"},"syntaxHighlighting":{"detail":"clojure","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"clojure-lsp","level":"full"}},"version":"1.12.5.1645"},{"attrs":["coq"],"componentVersions":{"coq":"9.1.1"},"description":"Coq proof assistant","displayName":"Coq","extensions":["v"],"iconMonochrome":"modules/kernels/coq/coq-monochrome.svg","id":"coq","languageServers":{"available":[],"enabledByDefault":[],"probed":[]},"support":{"codeActions":{"detail":null,"level":"none"},"completion":{"detail":null,"level":"none"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":null,"level":"none"},"diagnostics":{"detail":null,"level":"none"},"documentHighlight":{"detail":null,"level":"none"},"documentSymbols":{"detail":null,"level":"none"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":null,"level":"none"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":null,"level":"none"},"references":{"detail":null,"level":"none"},"rename":{"detail":null,"level":"none"},"repl":{"detail":"console","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":null,"level":"none"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"coq","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"none"},"workspaceSymbols":{"detail":null,"level":"none"}},"version":"9.1.1"},{"attrs":["go"],"componentVersions":{"go":"1.26.6","gopls":"0.22.0"},"description":"Go Programming language","displayName":"Go","extensions":["go"],"iconMonochrome":"modules/kernels/go/go-monochrome.svg","id":"go","languageServers":{"available":["gopls"],"enabledByDefault":["gopls"],"probed":["gopls"]},"support":{"codeActions":{"detail":"gopls","level":"full"},"completion":{"detail":"gopls","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"gopls","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"gopls","level":"full"},"documentSymbols":{"detail":"gopls","level":"full"},"formatting":{"detail":"gopls","level":"full"},"hover":{"detail":"gopls","level":"full"},"inlayHints":{"detail":"gopls","level":"full"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"gopls","level":"full"},"references":{"detail":"gopls","level":"full"},"rename":{"detail":"gopls","level":"full"},"repl":{"detail":"console","level":"full"},"semanticTokens":{"detail":"gopls","level":"full"},"signatureHelp":{"detail":"gopls","level":"full"},"subPackageManagement":{"detail":null,"level":"none"},"syntaxHighlighting":{"detail":"go","level":"full"},"typeDefinition":{"detail":"gopls","level":"full"},"variableInspector":{"detail":null,"level":"none"},"workspaceSymbols":{"detail":"gopls","level":"full"}},"version":"1.26.6"},{"attrs":["haskell"],"componentVersions":{"ghc":"9.10.3","haskell-language-server":"2.13.0.0"},"description":"An advanced, purely functional programming language (GHC 9.10.3)","displayName":"Haskell","extensions":["hs"],"iconMonochrome":"modules/kernels/haskell/haskell-monochrome.svg","id":"haskell","languageServers":{"available":["haskell-language-server"],"enabledByDefault":["haskell-language-server"],"probed":["haskell-language-server"]},"support":{"codeActions":{"detail":"haskell-language-server","level":"full"},"completion":{"detail":"haskell-language-server","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"haskell-language-server","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"haskell-language-server","level":"full"},"documentSymbols":{"detail":"haskell-language-server","level":"full"},"formatting":{"detail":"haskell-language-server","level":"full"},"hover":{"detail":"haskell-language-server","level":"full"},"inlayHints":{"detail":"haskell-language-server","level":"full"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"haskell-language-server","level":"full"},"references":{"detail":"haskell-language-server","level":"full"},"rename":{"detail":"haskell-language-server","level":"full"},"repl":{"detail":"ghci","level":"full"},"semanticTokens":{"detail":"haskell-language-server","level":"full"},"signatureHelp":{"detail":"haskell-language-server","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"haskell","level":"full"},"typeDefinition":{"detail":"haskell-language-server","level":"full"},"variableInspector":{"detail":null,"level":"none"},"workspaceSymbols":{"detail":"haskell-language-server","level":"full"}},"version":"9.10.3"},{"attrs":["julia"],"componentVersions":{"julia":"1.12.6"},"description":"High-level performance-oriented dynamical language for technical computing","displayName":"Julia","extensions":["jl"],"iconMonochrome":"modules/kernels/julia/julia-monochrome.svg","id":"julia","languageServers":{"available":["LanguageServer"],"enabledByDefault":["LanguageServer"],"probed":["LanguageServer"]},"support":{"codeActions":{"detail":"LanguageServer","level":"full"},"completion":{"detail":"LanguageServer","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"LanguageServer","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"LanguageServer","level":"full"},"documentSymbols":{"detail":"LanguageServer","level":"full"},"formatting":{"detail":"LanguageServer","level":"full"},"hover":{"detail":"LanguageServer","level":"full"},"inlayHints":{"detail":"LanguageServer","level":"full"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"LanguageServer","level":"full"},"references":{"detail":"LanguageServer","level":"full"},"rename":{"detail":"LanguageServer","level":"full"},"repl":{"detail":"julia","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":"LanguageServer","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"julia","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"LanguageServer","level":"full"}},"version":"1.12.6"},{"attrs":["octave"],"componentVersions":{"octave":"11.1.0"},"description":"Scientific Programming Language","displayName":"Octave","extensions":["m"],"iconMonochrome":"modules/kernels/octave/octave-monochrome.svg","id":"octave","languageServers":{"available":[],"enabledByDefault":[],"probed":[]},"support":{"codeActions":{"detail":null,"level":"none"},"completion":{"detail":null,"level":"none"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":null,"level":"none"},"diagnostics":{"detail":null,"level":"none"},"documentHighlight":{"detail":null,"level":"none"},"documentSymbols":{"detail":null,"level":"none"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":null,"level":"none"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":null,"level":"none"},"references":{"detail":null,"level":"none"},"rename":{"detail":null,"level":"none"},"repl":{"detail":"octave","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":null,"level":"none"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"octave","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":null,"level":"none"}},"version":"11.1.0"},{"attrs":["postgres"],"componentVersions":{"postgres-kernel":"0.1"},"description":"A simple Jupyter kernel for PostgreSQL","displayName":"PostgreSQL","extensions":["sql"],"iconMonochrome":"modules/kernels/postgres/postgresql-monochrome.svg","id":"postgres","languageServers":{"available":[],"enabledByDefault":[],"probed":[]},"support":{"codeActions":{"detail":null,"level":"none"},"completion":{"detail":null,"level":"none"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":null,"level":"none"},"diagnostics":{"detail":null,"level":"none"},"documentHighlight":{"detail":null,"level":"none"},"documentSymbols":{"detail":null,"level":"none"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":null,"level":"none"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":null,"level":"none"},"references":{"detail":null,"level":"none"},"rename":{"detail":null,"level":"none"},"repl":{"detail":"console","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":null,"level":"none"},"subPackageManagement":{"detail":null,"level":"none"},"syntaxHighlighting":{"detail":"sql","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"none"},"workspaceSymbols":{"detail":null,"level":"none"}},"version":"0.1"},{"attrs":["python3","python"],"componentVersions":{"flake8":"7.3.0","jedi-language-server":"0.46.0","pycodestyle":"2.14.0","pylint":"4.0.5","pyright":"1.1.411","python":"7.3.20","python-lsp-server":"1.14.0"},"description":"Fast, compliant alternative implementation of the Python language (3.11)","displayName":"PyPy","extensions":["py"],"iconMonochrome":"modules/kernels/python/python-monochrome.svg","id":"pypy3","languageServers":{"available":["flake8","jedi","microsoft","pycodestyle","pylint","pyright","python-language-server","python-lsp-server"],"enabledByDefault":["jedi"],"probed":[]},"support":{"codeActions":{"detail":null,"level":"unknown"},"completion":{"detail":null,"level":"unknown"},"debugger":{"detail":null,"level":"full"},"definition":{"detail":null,"level":"unknown"},"diagnostics":{"detail":null,"level":"unknown"},"documentHighlight":{"detail":null,"level":"unknown"},"documentSymbols":{"detail":null,"level":"unknown"},"formatting":{"detail":null,"level":"unknown"},"hover":{"detail":null,"level":"unknown"},"inlayHints":{"detail":null,"level":"unknown"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"jedi","level":"full"},"references":{"detail":null,"level":"unknown"},"rename":{"detail":null,"level":"unknown"},"repl":{"detail":"ipython","level":"full"},"semanticTokens":{"detail":null,"level":"unknown"},"signatureHelp":{"detail":null,"level":"unknown"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"python","level":"full"},"typeDefinition":{"detail":null,"level":"unknown"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":null,"level":"unknown"}},"version":"7.3.20"},{"attrs":["python3","python"],"componentVersions":{"flake8":"7.3.0","jedi-language-server":"0.46.0","pycodestyle":"2.14.0","pylint":"4.0.5","pyright":"1.1.411","python":"3.13.15","python-lsp-server":"1.14.0"},"description":"High-level dynamically-typed programming language","displayName":"Python","extensions":["py"],"iconMonochrome":"modules/kernels/python/python-monochrome.svg","id":"python3","languageServers":{"available":["flake8","jedi","microsoft","pycodestyle","pylint","pyright","python-language-server","python-lsp-server"],"enabledByDefault":["jedi"],"probed":["jedi"]},"support":{"codeActions":{"detail":"jedi","level":"full"},"completion":{"detail":"jedi","level":"full"},"debugger":{"detail":null,"level":"full"},"definition":{"detail":"jedi","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"jedi","level":"full"},"documentSymbols":{"detail":"jedi","level":"full"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":"jedi","level":"full"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"jedi","level":"full"},"references":{"detail":"jedi","level":"full"},"rename":{"detail":"jedi","level":"full"},"repl":{"detail":"ipython","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":"jedi","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"python","level":"full"},"typeDefinition":{"detail":"jedi","level":"full"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"jedi","level":"full"}},"version":"3.13.15"},{"attrs":["r","R"],"componentVersions":{"languageserver":"0.3.16","r":"4.5.3"},"description":"Free software environment for statistical computing and graphics","displayName":"R","extensions":["r"],"iconMonochrome":"modules/kernels/r/r-monochrome.svg","id":"R","languageServers":{"available":["languageserver"],"enabledByDefault":["languageserver"],"probed":["languageserver"]},"support":{"codeActions":{"detail":"languageserver","level":"full"},"completion":{"detail":"languageserver","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"languageserver","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"languageserver","level":"full"},"documentSymbols":{"detail":"languageserver","level":"full"},"formatting":{"detail":"languageserver","level":"full"},"hover":{"detail":"languageserver","level":"full"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"languageserver","level":"full"},"references":{"detail":"languageserver","level":"full"},"rename":{"detail":"languageserver","level":"full"},"repl":{"detail":"r","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":"languageserver","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"r","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"languageserver","level":"full"}},"version":"4.5.3"},{"attrs":["r","R"],"componentVersions":{"ark":"0.1.252","r":"4.5.3"},"description":"Free software environment for statistical computing and graphics","displayName":"R (Ark)","extensions":["r"],"iconMonochrome":"modules/kernels/r-ark/r-monochrome.svg","id":"R-ark","languageServers":{"available":[],"enabledByDefault":[],"probed":[]},"support":{"codeActions":{"detail":null,"level":"none"},"completion":{"detail":null,"level":"none"},"debugger":{"detail":null,"level":"full"},"definition":{"detail":null,"level":"none"},"diagnostics":{"detail":null,"level":"none"},"documentHighlight":{"detail":null,"level":"none"},"documentSymbols":{"detail":null,"level":"none"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":null,"level":"none"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":null,"level":"none"},"references":{"detail":null,"level":"none"},"rename":{"detail":null,"level":"none"},"repl":{"detail":"r","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":null,"level":"none"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"r","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":null,"level":"none"}},"version":"4.5.3"},{"attrs":["ruby"],"componentVersions":{"iruby":"v0.8.2","ruby":"3.4.9","solargraph":"0.57.0"},"description":"Object-oriented language for quick and easy programming","displayName":"Ruby","extensions":["rb"],"iconMonochrome":"modules/kernels/ruby/ruby-monochrome.svg","id":"ruby","languageServers":{"available":["solargraph"],"enabledByDefault":["solargraph"],"probed":["solargraph"]},"support":{"codeActions":{"detail":null,"level":"none"},"completion":{"detail":"solargraph","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"solargraph","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"solargraph","level":"full"},"documentSymbols":{"detail":"solargraph","level":"full"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":"solargraph","level":"full"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"solargraph","level":"full"},"references":{"detail":"solargraph","level":"full"},"rename":{"detail":"solargraph","level":"full"},"repl":{"detail":"irb","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":"solargraph","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"ruby","level":"full"},"typeDefinition":{"detail":"solargraph","level":"full"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"solargraph","level":"full"}},"version":"3.4.9"},{"attrs":["rust"],"componentVersions":{"cargo":"1.95.0","evcxr":"0.21.1","rust":"1.95.0","rust-analyzer":"2026-06-01"},"description":"Safe, concurrent, practical language (wrapper script)","displayName":"Rust","extensions":["rs","rlib"],"iconMonochrome":"modules/kernels/rust/rust-logo-monochrome.svg","id":"rust","languageServers":{"available":["rust-analyzer"],"enabledByDefault":["rust-analyzer"],"probed":["rust-analyzer"]},"support":{"codeActions":{"detail":"rust-analyzer","level":"full"},"completion":{"detail":"rust-analyzer","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"rust-analyzer","level":"full"},"diagnostics":{"detail":"pull + push","level":"full"},"documentHighlight":{"detail":"rust-analyzer","level":"full"},"documentSymbols":{"detail":"rust-analyzer","level":"full"},"formatting":{"detail":"rust-analyzer","level":"full"},"hover":{"detail":"rust-analyzer","level":"full"},"inlayHints":{"detail":"rust-analyzer","level":"full"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"rust-analyzer","level":"full"},"references":{"detail":"rust-analyzer","level":"full"},"rename":{"detail":"rust-analyzer","level":"full"},"repl":{"detail":"evcxr","level":"full"},"semanticTokens":{"detail":"rust-analyzer","level":"full"},"signatureHelp":{"detail":"rust-analyzer","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"rust","level":"full"},"typeDefinition":{"detail":"rust-analyzer","level":"full"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"rust-analyzer","level":"full"}},"version":"1.95.0"}],"provenance":{"lsp":"Read from language server `initialize` responses (nix/lsp-capabilities.json, regenerated by scripts/probe-lsp-capabilities).","lspProbedKernels":["R","R-ark","bash","clojure","coq","cpp","go","haskell","julia","octave","postgres","python3","ruby","rust"],"nix":"Evaluated from the codedown-languages module system (nix/feature-matrix.nix)."},"schemaVersion":1} \ No newline at end of file diff --git a/modules/kernels/python/module.nix b/modules/kernels/python/module.nix index 94f66535..c59a12c2 100644 --- a/modules/kernels/python/module.nix +++ b/modules/kernels/python/module.nix @@ -167,7 +167,20 @@ in x = config.kernels.python3.python3Package; - basePython = lib.getAttr x config.pkgs; + basePython = (lib.getAttr x config.pkgs).override { + packageOverrides = _pyFinal: pyPrev: { + # Every pylint primer test drives one shared PRIMER_DIRECTORY and reads back the + # comment.txt it writes there, so the pytest-xdist workers overwrite each other's + # output and one of them reads an empty file. They only run on the single + # interpreter pylint pins them to (PRIMER_CURRENT_INTERPRETER, currently 3.13), and + # they cover pylint's own CI tooling rather than anything we ship. + pylint = pyPrev.pylint.overridePythonAttrs (old: { + disabledTestPaths = (old.disabledTestPaths or []) ++ [ + "tests/testutils/_primer/test_primer.py" + ]; + }); + }; + }; # if lib.hasAttr x specialEnvPythons then (config.pkgs.poetry2nix.mkPoetryEnv { # projectDir = ./envs/${x}; # python = specialEnvPythons.${x}; diff --git a/scripts/update-feature-matrix b/scripts/update-feature-matrix index ccb2ec4a..a119b2ba 100755 --- a/scripts/update-feature-matrix +++ b/scripts/update-feature-matrix @@ -53,17 +53,11 @@ def main(): (DOCS / name).chmod(0o644) print(f" wrote docs/{name}", flush=True) - matrix = json.loads((DOCS / "feature-matrix.json").read_text()) - counts = f"{len(matrix['languages'])} languages, {len(matrix['features'])} features" - graphic = "\n".join([ "", ' ', ' Feature support by language', "", - "", - f"_{counts}. See [FEATURE-MATRIX.md](./FEATURE-MATRIX.md) for the same data as " - "tables, and for how it's generated._", ]) tables = (built / "feature-matrix.md").read_text().strip() From 89771c3bfbe423443e9036a52d0845120def6a04 Mon Sep 17 00:00:00 2001 From: thomasjm Date: Mon, 31 Aug 2026 14:53:22 -0700 Subject: [PATCH 5/8] Fixups noci --- FEATURE-MATRIX.md | 6 +-- docs/feature-matrix-dark.svg | 74 ++++++++++++++++++++---------------- docs/feature-matrix.json | 2 +- docs/feature-matrix.svg | 74 ++++++++++++++++++++---------------- nix/lsp-capabilities.json | 58 ++++++++++++++++++++++++++++ 5 files changed, 146 insertions(+), 68 deletions(-) diff --git a/FEATURE-MATRIX.md b/FEATURE-MATRIX.md index d2c6dd08..186707a2 100644 --- a/FEATURE-MATRIX.md +++ b/FEATURE-MATRIX.md @@ -40,7 +40,7 @@ Which languages support which notebook and editor features. The graphic version | Julia | ✅ | ✅ | ✅ | ✅ | ✅ | – | ✅ | | Octave | – | – | – | – | – | – | – | | PostgreSQL | – | – | – | – | – | – | – | -| PyPy | ✅ | ? | ? | ? | ? | ? | ? | +| PyPy | ✅ | ✅ | ✅ | ✅ | ✅ | – | – | | Python | ✅ | ✅ | ✅ | ✅ | ✅ | – | – | | R | ✅ | ✅ | ✅ | ✅ | ✅ | – | – | | R (Ark) | – | – | – | – | – | – | – | @@ -60,7 +60,7 @@ Which languages support which notebook and editor features. The graphic version | Julia | ✅ | – | ✅ | ✅ | ✅ | ✅ | | Octave | – | – | – | – | – | – | | PostgreSQL | – | – | – | – | – | – | -| PyPy | ? | ? | ? | ? | ? | ? | +| PyPy | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | Python | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | R | ✅ | – | ✅ | ✅ | ✅ | ✅ | | R (Ark) | – | – | – | – | – | – | @@ -80,7 +80,7 @@ Which languages support which notebook and editor features. The graphic version | Julia | ✅ | ✅ | ✅ | | Octave | – | – | – | | PostgreSQL | – | – | – | -| PyPy | ? | ? | ? | +| PyPy | – | ✅ | ✅ | | Python | – | ✅ | ✅ | | R | ✅ | ✅ | ✅ | | R (Ark) | – | – | – | diff --git a/docs/feature-matrix-dark.svg b/docs/feature-matrix-dark.svg index 30e06173..0d31a659 100644 --- a/docs/feature-matrix-dark.svg +++ b/docs/feature-matrix-dark.svg @@ -802,50 +802,62 @@ - PyPy - Code completion: unknown - ? + PyPy - Code completion: yes (jedi) + + - PyPy - Hover docs: unknown - ? + PyPy - Hover docs: yes (jedi) + + - PyPy - Signature help: unknown - ? + PyPy - Signature help: yes (jedi) + + - PyPy - Diagnostics: unknown - ? + PyPy - Diagnostics: yes (push) + + - PyPy - Semantic highlighting: unknown - ? + PyPy - Semantic highlighting: no + - PyPy - Inlay hints: unknown - ? + PyPy - Inlay hints: no + - PyPy - Jump to definition: unknown - ? + PyPy - Jump to definition: yes (jedi) + + - PyPy - Jump to type definition: unknown - ? + PyPy - Jump to type definition: yes (jedi) + + - PyPy - Find references: unknown - ? + PyPy - Find references: yes (jedi) + + - PyPy - Document outline: unknown - ? + PyPy - Document outline: yes (jedi) + + - PyPy - Workspace symbol search: unknown - ? + PyPy - Workspace symbol search: yes (jedi) + + - PyPy - Highlight occurrences: unknown - ? + PyPy - Highlight occurrences: yes (jedi) + + - PyPy - Formatting: unknown - ? + PyPy - Formatting: no + - PyPy - Rename symbol: unknown - ? + PyPy - Rename symbol: yes (jedi) + + - PyPy - Code actions: unknown - ? + PyPy - Code actions: yes (jedi) + + PyPy - Subpackage management: yes @@ -1285,7 +1297,5 @@ supported not available - ? - not measured diff --git a/docs/feature-matrix.json b/docs/feature-matrix.json index 06b98816..db0467e9 100644 --- a/docs/feature-matrix.json +++ b/docs/feature-matrix.json @@ -1 +1 @@ -{"features":[{"description":"Runs notebook cells through a Jupyter kernel.","group":"core","id":"jupyterKernel","name":"Jupyter kernel","source":"nix"},{"description":"Ships an interactive console you can attach to the same session.","group":"core","id":"repl","name":"REPL","source":"nix"},{"description":"Lists the variables currently defined in the session, with drill-down.","group":"core","id":"variableInspector","name":"Variable inspector","source":"nix"},{"description":"Breakpoints and stepping via the Jupyter debug protocol.","group":"core","id":"debugger","name":"Debugger","source":"nix"},{"description":"Editor highlighting for the language.","group":"core","id":"syntaxHighlighting","name":"Syntax highlighting","source":"nix"},{"description":"An LSP server is wired up for notebook cells and files.","group":"intelligence","id":"languageServer","name":"Language server","source":"nix"},{"description":"Context-aware completions as you type.","group":"intelligence","id":"completion","name":"Code completion","source":"lsp"},{"description":"Type and documentation popups on hover.","group":"intelligence","id":"hover","name":"Hover docs","source":"lsp"},{"description":"Parameter hints while calling a function.","group":"intelligence","id":"signatureHelp","name":"Signature help","source":"lsp"},{"description":"Errors, warnings and lints reported inline.","group":"intelligence","id":"diagnostics","name":"Diagnostics","source":"lsp"},{"description":"Highlighting driven by the compiler/analyzer rather than a regex grammar.","group":"intelligence","id":"semanticTokens","name":"Semantic highlighting","source":"lsp"},{"description":"Inferred types and parameter names rendered inline.","group":"intelligence","id":"inlayHints","name":"Inlay hints","source":"lsp"},{"description":"Go from a use of a symbol to where it's defined.","group":"navigation","id":"definition","name":"Jump to definition","source":"lsp"},{"description":"Go from a value to the definition of its type.","group":"navigation","id":"typeDefinition","name":"Jump to type definition","source":"lsp"},{"description":"Find every use of a symbol.","group":"navigation","id":"references","name":"Find references","source":"lsp"},{"description":"Symbol tree for the current document.","group":"navigation","id":"documentSymbols","name":"Document outline","source":"lsp"},{"description":"Search symbols across the whole project.","group":"navigation","id":"workspaceSymbols","name":"Workspace symbol search","source":"lsp"},{"description":"Highlights other occurrences of the symbol under the cursor.","group":"navigation","id":"documentHighlight","name":"Highlight occurrences","source":"lsp"},{"description":"Format a document or a selection.","group":"editing","id":"formatting","name":"Formatting","source":"lsp"},{"description":"Rename a symbol and every reference to it.","group":"editing","id":"rename","name":"Rename symbol","source":"lsp"},{"description":"Quick fixes and refactorings offered on a range.","group":"editing","id":"codeActions","name":"Code actions","source":"lsp"},{"description":"A searchable set of language packages you can add to the environment declaratively.","group":"packages","id":"subPackageManagement","name":"Subpackage management","source":"nix"}],"groups":[{"id":"core","name":"Notebook"},{"id":"intelligence","name":"Code intelligence"},{"id":"navigation","name":"Navigation"},{"id":"editing","name":"Editing"},{"id":"packages","name":"Packages"}],"languages":[{"attrs":["bash"],"componentVersions":{"bash":"5.3p9","bash-kernel":"0.10.0","bash-language-server":"5.6.0"},"description":"GNU Bourne-Again Shell, the de facto standard shell on Linux (for interactive use)","displayName":"Bash","extensions":["sh","bash"],"iconMonochrome":"modules/kernels/bash/gnubash-monochrome.svg","id":"bash","languageServers":{"available":["bash-language-server"],"enabledByDefault":["bash-language-server"],"probed":["bash-language-server"]},"support":{"codeActions":{"detail":"bash-language-server","level":"full"},"completion":{"detail":"bash-language-server","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"bash-language-server","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"bash-language-server","level":"full"},"documentSymbols":{"detail":"bash-language-server","level":"full"},"formatting":{"detail":"bash-language-server","level":"full"},"hover":{"detail":"bash-language-server","level":"full"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"bash-language-server","level":"full"},"references":{"detail":"bash-language-server","level":"full"},"rename":{"detail":"bash-language-server","level":"full"},"repl":{"detail":"bash","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":null,"level":"none"},"subPackageManagement":{"detail":null,"level":"none"},"syntaxHighlighting":{"detail":"shell","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"bash-language-server","level":"full"}},"version":"5.3p9"},{"attrs":["c++23","cpp"],"componentVersions":{"clang":"21.1.8","clangd":"21.1.8","cling":"1.2","std":"c++23","xeus-cling":"0.15.3"},"description":"C language family frontend for LLVM (wrapper script)","displayName":"C++ 23","extensions":["cpp","hpp","cxx","hxx","c","h"],"iconMonochrome":"modules/kernels/cpp/cpp23-monochrome.svg","id":"cpp","languageServers":{"available":["clangd"],"enabledByDefault":["clangd"],"probed":["clangd"]},"support":{"codeActions":{"detail":"clangd","level":"full"},"completion":{"detail":"clangd","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"clangd","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"clangd","level":"full"},"documentSymbols":{"detail":"clangd","level":"full"},"formatting":{"detail":"clangd","level":"full"},"hover":{"detail":"clangd","level":"full"},"inlayHints":{"detail":"clangd","level":"full"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"clangd","level":"full"},"references":{"detail":"clangd","level":"full"},"rename":{"detail":"clangd","level":"full"},"repl":{"detail":"cling","level":"full"},"semanticTokens":{"detail":"clangd","level":"full"},"signatureHelp":{"detail":"clangd","level":"full"},"subPackageManagement":{"detail":null,"level":"none"},"syntaxHighlighting":{"detail":"clike","level":"full"},"typeDefinition":{"detail":"clangd","level":"full"},"variableInspector":{"detail":null,"level":"none"},"workspaceSymbols":{"detail":"clangd","level":"full"}},"version":"21.1.8"},{"attrs":["clojure"],"componentVersions":{"clojure":"1.12.5.1645","clojure-lsp":"2026.02.20-16.08.58"},"description":"Lisp dialect for the JVM","displayName":"Clojure","extensions":["clj"],"iconMonochrome":"modules/kernels/clojure/clojure-monochrome.svg","id":"clojure","languageServers":{"available":["clojure-lsp"],"enabledByDefault":["clojure-lsp"],"probed":["clojure-lsp"]},"support":{"codeActions":{"detail":"clojure-lsp","level":"full"},"completion":{"detail":"clojure-lsp","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"clojure-lsp","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"clojure-lsp","level":"full"},"documentSymbols":{"detail":"clojure-lsp","level":"full"},"formatting":{"detail":"clojure-lsp","level":"full"},"hover":{"detail":"clojure-lsp","level":"full"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"clojure-lsp","level":"full"},"references":{"detail":"clojure-lsp","level":"full"},"rename":{"detail":"clojure-lsp","level":"full"},"repl":{"detail":"clojure","level":"full"},"semanticTokens":{"detail":"clojure-lsp","level":"full"},"signatureHelp":{"detail":"clojure-lsp","level":"full"},"subPackageManagement":{"detail":null,"level":"none"},"syntaxHighlighting":{"detail":"clojure","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"clojure-lsp","level":"full"}},"version":"1.12.5.1645"},{"attrs":["coq"],"componentVersions":{"coq":"9.1.1"},"description":"Coq proof assistant","displayName":"Coq","extensions":["v"],"iconMonochrome":"modules/kernels/coq/coq-monochrome.svg","id":"coq","languageServers":{"available":[],"enabledByDefault":[],"probed":[]},"support":{"codeActions":{"detail":null,"level":"none"},"completion":{"detail":null,"level":"none"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":null,"level":"none"},"diagnostics":{"detail":null,"level":"none"},"documentHighlight":{"detail":null,"level":"none"},"documentSymbols":{"detail":null,"level":"none"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":null,"level":"none"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":null,"level":"none"},"references":{"detail":null,"level":"none"},"rename":{"detail":null,"level":"none"},"repl":{"detail":"console","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":null,"level":"none"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"coq","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"none"},"workspaceSymbols":{"detail":null,"level":"none"}},"version":"9.1.1"},{"attrs":["go"],"componentVersions":{"go":"1.26.6","gopls":"0.22.0"},"description":"Go Programming language","displayName":"Go","extensions":["go"],"iconMonochrome":"modules/kernels/go/go-monochrome.svg","id":"go","languageServers":{"available":["gopls"],"enabledByDefault":["gopls"],"probed":["gopls"]},"support":{"codeActions":{"detail":"gopls","level":"full"},"completion":{"detail":"gopls","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"gopls","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"gopls","level":"full"},"documentSymbols":{"detail":"gopls","level":"full"},"formatting":{"detail":"gopls","level":"full"},"hover":{"detail":"gopls","level":"full"},"inlayHints":{"detail":"gopls","level":"full"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"gopls","level":"full"},"references":{"detail":"gopls","level":"full"},"rename":{"detail":"gopls","level":"full"},"repl":{"detail":"console","level":"full"},"semanticTokens":{"detail":"gopls","level":"full"},"signatureHelp":{"detail":"gopls","level":"full"},"subPackageManagement":{"detail":null,"level":"none"},"syntaxHighlighting":{"detail":"go","level":"full"},"typeDefinition":{"detail":"gopls","level":"full"},"variableInspector":{"detail":null,"level":"none"},"workspaceSymbols":{"detail":"gopls","level":"full"}},"version":"1.26.6"},{"attrs":["haskell"],"componentVersions":{"ghc":"9.10.3","haskell-language-server":"2.13.0.0"},"description":"An advanced, purely functional programming language (GHC 9.10.3)","displayName":"Haskell","extensions":["hs"],"iconMonochrome":"modules/kernels/haskell/haskell-monochrome.svg","id":"haskell","languageServers":{"available":["haskell-language-server"],"enabledByDefault":["haskell-language-server"],"probed":["haskell-language-server"]},"support":{"codeActions":{"detail":"haskell-language-server","level":"full"},"completion":{"detail":"haskell-language-server","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"haskell-language-server","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"haskell-language-server","level":"full"},"documentSymbols":{"detail":"haskell-language-server","level":"full"},"formatting":{"detail":"haskell-language-server","level":"full"},"hover":{"detail":"haskell-language-server","level":"full"},"inlayHints":{"detail":"haskell-language-server","level":"full"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"haskell-language-server","level":"full"},"references":{"detail":"haskell-language-server","level":"full"},"rename":{"detail":"haskell-language-server","level":"full"},"repl":{"detail":"ghci","level":"full"},"semanticTokens":{"detail":"haskell-language-server","level":"full"},"signatureHelp":{"detail":"haskell-language-server","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"haskell","level":"full"},"typeDefinition":{"detail":"haskell-language-server","level":"full"},"variableInspector":{"detail":null,"level":"none"},"workspaceSymbols":{"detail":"haskell-language-server","level":"full"}},"version":"9.10.3"},{"attrs":["julia"],"componentVersions":{"julia":"1.12.6"},"description":"High-level performance-oriented dynamical language for technical computing","displayName":"Julia","extensions":["jl"],"iconMonochrome":"modules/kernels/julia/julia-monochrome.svg","id":"julia","languageServers":{"available":["LanguageServer"],"enabledByDefault":["LanguageServer"],"probed":["LanguageServer"]},"support":{"codeActions":{"detail":"LanguageServer","level":"full"},"completion":{"detail":"LanguageServer","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"LanguageServer","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"LanguageServer","level":"full"},"documentSymbols":{"detail":"LanguageServer","level":"full"},"formatting":{"detail":"LanguageServer","level":"full"},"hover":{"detail":"LanguageServer","level":"full"},"inlayHints":{"detail":"LanguageServer","level":"full"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"LanguageServer","level":"full"},"references":{"detail":"LanguageServer","level":"full"},"rename":{"detail":"LanguageServer","level":"full"},"repl":{"detail":"julia","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":"LanguageServer","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"julia","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"LanguageServer","level":"full"}},"version":"1.12.6"},{"attrs":["octave"],"componentVersions":{"octave":"11.1.0"},"description":"Scientific Programming Language","displayName":"Octave","extensions":["m"],"iconMonochrome":"modules/kernels/octave/octave-monochrome.svg","id":"octave","languageServers":{"available":[],"enabledByDefault":[],"probed":[]},"support":{"codeActions":{"detail":null,"level":"none"},"completion":{"detail":null,"level":"none"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":null,"level":"none"},"diagnostics":{"detail":null,"level":"none"},"documentHighlight":{"detail":null,"level":"none"},"documentSymbols":{"detail":null,"level":"none"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":null,"level":"none"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":null,"level":"none"},"references":{"detail":null,"level":"none"},"rename":{"detail":null,"level":"none"},"repl":{"detail":"octave","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":null,"level":"none"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"octave","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":null,"level":"none"}},"version":"11.1.0"},{"attrs":["postgres"],"componentVersions":{"postgres-kernel":"0.1"},"description":"A simple Jupyter kernel for PostgreSQL","displayName":"PostgreSQL","extensions":["sql"],"iconMonochrome":"modules/kernels/postgres/postgresql-monochrome.svg","id":"postgres","languageServers":{"available":[],"enabledByDefault":[],"probed":[]},"support":{"codeActions":{"detail":null,"level":"none"},"completion":{"detail":null,"level":"none"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":null,"level":"none"},"diagnostics":{"detail":null,"level":"none"},"documentHighlight":{"detail":null,"level":"none"},"documentSymbols":{"detail":null,"level":"none"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":null,"level":"none"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":null,"level":"none"},"references":{"detail":null,"level":"none"},"rename":{"detail":null,"level":"none"},"repl":{"detail":"console","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":null,"level":"none"},"subPackageManagement":{"detail":null,"level":"none"},"syntaxHighlighting":{"detail":"sql","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"none"},"workspaceSymbols":{"detail":null,"level":"none"}},"version":"0.1"},{"attrs":["python3","python"],"componentVersions":{"flake8":"7.3.0","jedi-language-server":"0.46.0","pycodestyle":"2.14.0","pylint":"4.0.5","pyright":"1.1.411","python":"7.3.20","python-lsp-server":"1.14.0"},"description":"Fast, compliant alternative implementation of the Python language (3.11)","displayName":"PyPy","extensions":["py"],"iconMonochrome":"modules/kernels/python/python-monochrome.svg","id":"pypy3","languageServers":{"available":["flake8","jedi","microsoft","pycodestyle","pylint","pyright","python-language-server","python-lsp-server"],"enabledByDefault":["jedi"],"probed":[]},"support":{"codeActions":{"detail":null,"level":"unknown"},"completion":{"detail":null,"level":"unknown"},"debugger":{"detail":null,"level":"full"},"definition":{"detail":null,"level":"unknown"},"diagnostics":{"detail":null,"level":"unknown"},"documentHighlight":{"detail":null,"level":"unknown"},"documentSymbols":{"detail":null,"level":"unknown"},"formatting":{"detail":null,"level":"unknown"},"hover":{"detail":null,"level":"unknown"},"inlayHints":{"detail":null,"level":"unknown"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"jedi","level":"full"},"references":{"detail":null,"level":"unknown"},"rename":{"detail":null,"level":"unknown"},"repl":{"detail":"ipython","level":"full"},"semanticTokens":{"detail":null,"level":"unknown"},"signatureHelp":{"detail":null,"level":"unknown"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"python","level":"full"},"typeDefinition":{"detail":null,"level":"unknown"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":null,"level":"unknown"}},"version":"7.3.20"},{"attrs":["python3","python"],"componentVersions":{"flake8":"7.3.0","jedi-language-server":"0.46.0","pycodestyle":"2.14.0","pylint":"4.0.5","pyright":"1.1.411","python":"3.13.15","python-lsp-server":"1.14.0"},"description":"High-level dynamically-typed programming language","displayName":"Python","extensions":["py"],"iconMonochrome":"modules/kernels/python/python-monochrome.svg","id":"python3","languageServers":{"available":["flake8","jedi","microsoft","pycodestyle","pylint","pyright","python-language-server","python-lsp-server"],"enabledByDefault":["jedi"],"probed":["jedi"]},"support":{"codeActions":{"detail":"jedi","level":"full"},"completion":{"detail":"jedi","level":"full"},"debugger":{"detail":null,"level":"full"},"definition":{"detail":"jedi","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"jedi","level":"full"},"documentSymbols":{"detail":"jedi","level":"full"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":"jedi","level":"full"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"jedi","level":"full"},"references":{"detail":"jedi","level":"full"},"rename":{"detail":"jedi","level":"full"},"repl":{"detail":"ipython","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":"jedi","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"python","level":"full"},"typeDefinition":{"detail":"jedi","level":"full"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"jedi","level":"full"}},"version":"3.13.15"},{"attrs":["r","R"],"componentVersions":{"languageserver":"0.3.16","r":"4.5.3"},"description":"Free software environment for statistical computing and graphics","displayName":"R","extensions":["r"],"iconMonochrome":"modules/kernels/r/r-monochrome.svg","id":"R","languageServers":{"available":["languageserver"],"enabledByDefault":["languageserver"],"probed":["languageserver"]},"support":{"codeActions":{"detail":"languageserver","level":"full"},"completion":{"detail":"languageserver","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"languageserver","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"languageserver","level":"full"},"documentSymbols":{"detail":"languageserver","level":"full"},"formatting":{"detail":"languageserver","level":"full"},"hover":{"detail":"languageserver","level":"full"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"languageserver","level":"full"},"references":{"detail":"languageserver","level":"full"},"rename":{"detail":"languageserver","level":"full"},"repl":{"detail":"r","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":"languageserver","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"r","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"languageserver","level":"full"}},"version":"4.5.3"},{"attrs":["r","R"],"componentVersions":{"ark":"0.1.252","r":"4.5.3"},"description":"Free software environment for statistical computing and graphics","displayName":"R (Ark)","extensions":["r"],"iconMonochrome":"modules/kernels/r-ark/r-monochrome.svg","id":"R-ark","languageServers":{"available":[],"enabledByDefault":[],"probed":[]},"support":{"codeActions":{"detail":null,"level":"none"},"completion":{"detail":null,"level":"none"},"debugger":{"detail":null,"level":"full"},"definition":{"detail":null,"level":"none"},"diagnostics":{"detail":null,"level":"none"},"documentHighlight":{"detail":null,"level":"none"},"documentSymbols":{"detail":null,"level":"none"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":null,"level":"none"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":null,"level":"none"},"references":{"detail":null,"level":"none"},"rename":{"detail":null,"level":"none"},"repl":{"detail":"r","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":null,"level":"none"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"r","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":null,"level":"none"}},"version":"4.5.3"},{"attrs":["ruby"],"componentVersions":{"iruby":"v0.8.2","ruby":"3.4.9","solargraph":"0.57.0"},"description":"Object-oriented language for quick and easy programming","displayName":"Ruby","extensions":["rb"],"iconMonochrome":"modules/kernels/ruby/ruby-monochrome.svg","id":"ruby","languageServers":{"available":["solargraph"],"enabledByDefault":["solargraph"],"probed":["solargraph"]},"support":{"codeActions":{"detail":null,"level":"none"},"completion":{"detail":"solargraph","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"solargraph","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"solargraph","level":"full"},"documentSymbols":{"detail":"solargraph","level":"full"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":"solargraph","level":"full"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"solargraph","level":"full"},"references":{"detail":"solargraph","level":"full"},"rename":{"detail":"solargraph","level":"full"},"repl":{"detail":"irb","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":"solargraph","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"ruby","level":"full"},"typeDefinition":{"detail":"solargraph","level":"full"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"solargraph","level":"full"}},"version":"3.4.9"},{"attrs":["rust"],"componentVersions":{"cargo":"1.95.0","evcxr":"0.21.1","rust":"1.95.0","rust-analyzer":"2026-06-01"},"description":"Safe, concurrent, practical language (wrapper script)","displayName":"Rust","extensions":["rs","rlib"],"iconMonochrome":"modules/kernels/rust/rust-logo-monochrome.svg","id":"rust","languageServers":{"available":["rust-analyzer"],"enabledByDefault":["rust-analyzer"],"probed":["rust-analyzer"]},"support":{"codeActions":{"detail":"rust-analyzer","level":"full"},"completion":{"detail":"rust-analyzer","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"rust-analyzer","level":"full"},"diagnostics":{"detail":"pull + push","level":"full"},"documentHighlight":{"detail":"rust-analyzer","level":"full"},"documentSymbols":{"detail":"rust-analyzer","level":"full"},"formatting":{"detail":"rust-analyzer","level":"full"},"hover":{"detail":"rust-analyzer","level":"full"},"inlayHints":{"detail":"rust-analyzer","level":"full"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"rust-analyzer","level":"full"},"references":{"detail":"rust-analyzer","level":"full"},"rename":{"detail":"rust-analyzer","level":"full"},"repl":{"detail":"evcxr","level":"full"},"semanticTokens":{"detail":"rust-analyzer","level":"full"},"signatureHelp":{"detail":"rust-analyzer","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"rust","level":"full"},"typeDefinition":{"detail":"rust-analyzer","level":"full"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"rust-analyzer","level":"full"}},"version":"1.95.0"}],"provenance":{"lsp":"Read from language server `initialize` responses (nix/lsp-capabilities.json, regenerated by scripts/probe-lsp-capabilities).","lspProbedKernels":["R","R-ark","bash","clojure","coq","cpp","go","haskell","julia","octave","postgres","python3","ruby","rust"],"nix":"Evaluated from the codedown-languages module system (nix/feature-matrix.nix)."},"schemaVersion":1} \ No newline at end of file +{"features":[{"description":"Runs notebook cells through a Jupyter kernel.","group":"core","id":"jupyterKernel","name":"Jupyter kernel","source":"nix"},{"description":"Ships an interactive console you can attach to the same session.","group":"core","id":"repl","name":"REPL","source":"nix"},{"description":"Lists the variables currently defined in the session, with drill-down.","group":"core","id":"variableInspector","name":"Variable inspector","source":"nix"},{"description":"Breakpoints and stepping via the Jupyter debug protocol.","group":"core","id":"debugger","name":"Debugger","source":"nix"},{"description":"Editor highlighting for the language.","group":"core","id":"syntaxHighlighting","name":"Syntax highlighting","source":"nix"},{"description":"An LSP server is wired up for notebook cells and files.","group":"intelligence","id":"languageServer","name":"Language server","source":"nix"},{"description":"Context-aware completions as you type.","group":"intelligence","id":"completion","name":"Code completion","source":"lsp"},{"description":"Type and documentation popups on hover.","group":"intelligence","id":"hover","name":"Hover docs","source":"lsp"},{"description":"Parameter hints while calling a function.","group":"intelligence","id":"signatureHelp","name":"Signature help","source":"lsp"},{"description":"Errors, warnings and lints reported inline.","group":"intelligence","id":"diagnostics","name":"Diagnostics","source":"lsp"},{"description":"Highlighting driven by the compiler/analyzer rather than a regex grammar.","group":"intelligence","id":"semanticTokens","name":"Semantic highlighting","source":"lsp"},{"description":"Inferred types and parameter names rendered inline.","group":"intelligence","id":"inlayHints","name":"Inlay hints","source":"lsp"},{"description":"Go from a use of a symbol to where it's defined.","group":"navigation","id":"definition","name":"Jump to definition","source":"lsp"},{"description":"Go from a value to the definition of its type.","group":"navigation","id":"typeDefinition","name":"Jump to type definition","source":"lsp"},{"description":"Find every use of a symbol.","group":"navigation","id":"references","name":"Find references","source":"lsp"},{"description":"Symbol tree for the current document.","group":"navigation","id":"documentSymbols","name":"Document outline","source":"lsp"},{"description":"Search symbols across the whole project.","group":"navigation","id":"workspaceSymbols","name":"Workspace symbol search","source":"lsp"},{"description":"Highlights other occurrences of the symbol under the cursor.","group":"navigation","id":"documentHighlight","name":"Highlight occurrences","source":"lsp"},{"description":"Format a document or a selection.","group":"editing","id":"formatting","name":"Formatting","source":"lsp"},{"description":"Rename a symbol and every reference to it.","group":"editing","id":"rename","name":"Rename symbol","source":"lsp"},{"description":"Quick fixes and refactorings offered on a range.","group":"editing","id":"codeActions","name":"Code actions","source":"lsp"},{"description":"A searchable set of language packages you can add to the environment declaratively.","group":"packages","id":"subPackageManagement","name":"Subpackage management","source":"nix"}],"groups":[{"id":"core","name":"Notebook"},{"id":"intelligence","name":"Code intelligence"},{"id":"navigation","name":"Navigation"},{"id":"editing","name":"Editing"},{"id":"packages","name":"Packages"}],"languages":[{"attrs":["bash"],"componentVersions":{"bash":"5.3p9","bash-kernel":"0.10.0","bash-language-server":"5.6.0"},"description":"GNU Bourne-Again Shell, the de facto standard shell on Linux (for interactive use)","displayName":"Bash","extensions":["sh","bash"],"iconMonochrome":"modules/kernels/bash/gnubash-monochrome.svg","id":"bash","languageServers":{"available":["bash-language-server"],"enabledByDefault":["bash-language-server"],"probed":["bash-language-server"]},"support":{"codeActions":{"detail":"bash-language-server","level":"full"},"completion":{"detail":"bash-language-server","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"bash-language-server","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"bash-language-server","level":"full"},"documentSymbols":{"detail":"bash-language-server","level":"full"},"formatting":{"detail":"bash-language-server","level":"full"},"hover":{"detail":"bash-language-server","level":"full"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"bash-language-server","level":"full"},"references":{"detail":"bash-language-server","level":"full"},"rename":{"detail":"bash-language-server","level":"full"},"repl":{"detail":"bash","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":null,"level":"none"},"subPackageManagement":{"detail":null,"level":"none"},"syntaxHighlighting":{"detail":"shell","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"bash-language-server","level":"full"}},"version":"5.3p9"},{"attrs":["c++23","cpp"],"componentVersions":{"clang":"21.1.8","clangd":"21.1.8","cling":"1.2","std":"c++23","xeus-cling":"0.15.3"},"description":"C language family frontend for LLVM (wrapper script)","displayName":"C++ 23","extensions":["cpp","hpp","cxx","hxx","c","h"],"iconMonochrome":"modules/kernels/cpp/cpp23-monochrome.svg","id":"cpp","languageServers":{"available":["clangd"],"enabledByDefault":["clangd"],"probed":["clangd"]},"support":{"codeActions":{"detail":"clangd","level":"full"},"completion":{"detail":"clangd","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"clangd","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"clangd","level":"full"},"documentSymbols":{"detail":"clangd","level":"full"},"formatting":{"detail":"clangd","level":"full"},"hover":{"detail":"clangd","level":"full"},"inlayHints":{"detail":"clangd","level":"full"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"clangd","level":"full"},"references":{"detail":"clangd","level":"full"},"rename":{"detail":"clangd","level":"full"},"repl":{"detail":"cling","level":"full"},"semanticTokens":{"detail":"clangd","level":"full"},"signatureHelp":{"detail":"clangd","level":"full"},"subPackageManagement":{"detail":null,"level":"none"},"syntaxHighlighting":{"detail":"clike","level":"full"},"typeDefinition":{"detail":"clangd","level":"full"},"variableInspector":{"detail":null,"level":"none"},"workspaceSymbols":{"detail":"clangd","level":"full"}},"version":"21.1.8"},{"attrs":["clojure"],"componentVersions":{"clojure":"1.12.5.1645","clojure-lsp":"2026.02.20-16.08.58"},"description":"Lisp dialect for the JVM","displayName":"Clojure","extensions":["clj"],"iconMonochrome":"modules/kernels/clojure/clojure-monochrome.svg","id":"clojure","languageServers":{"available":["clojure-lsp"],"enabledByDefault":["clojure-lsp"],"probed":["clojure-lsp"]},"support":{"codeActions":{"detail":"clojure-lsp","level":"full"},"completion":{"detail":"clojure-lsp","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"clojure-lsp","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"clojure-lsp","level":"full"},"documentSymbols":{"detail":"clojure-lsp","level":"full"},"formatting":{"detail":"clojure-lsp","level":"full"},"hover":{"detail":"clojure-lsp","level":"full"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"clojure-lsp","level":"full"},"references":{"detail":"clojure-lsp","level":"full"},"rename":{"detail":"clojure-lsp","level":"full"},"repl":{"detail":"clojure","level":"full"},"semanticTokens":{"detail":"clojure-lsp","level":"full"},"signatureHelp":{"detail":"clojure-lsp","level":"full"},"subPackageManagement":{"detail":null,"level":"none"},"syntaxHighlighting":{"detail":"clojure","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"clojure-lsp","level":"full"}},"version":"1.12.5.1645"},{"attrs":["coq"],"componentVersions":{"coq":"9.1.1"},"description":"Coq proof assistant","displayName":"Coq","extensions":["v"],"iconMonochrome":"modules/kernels/coq/coq-monochrome.svg","id":"coq","languageServers":{"available":[],"enabledByDefault":[],"probed":[]},"support":{"codeActions":{"detail":null,"level":"none"},"completion":{"detail":null,"level":"none"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":null,"level":"none"},"diagnostics":{"detail":null,"level":"none"},"documentHighlight":{"detail":null,"level":"none"},"documentSymbols":{"detail":null,"level":"none"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":null,"level":"none"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":null,"level":"none"},"references":{"detail":null,"level":"none"},"rename":{"detail":null,"level":"none"},"repl":{"detail":"console","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":null,"level":"none"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"coq","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"none"},"workspaceSymbols":{"detail":null,"level":"none"}},"version":"9.1.1"},{"attrs":["go"],"componentVersions":{"go":"1.26.6","gopls":"0.22.0"},"description":"Go Programming language","displayName":"Go","extensions":["go"],"iconMonochrome":"modules/kernels/go/go-monochrome.svg","id":"go","languageServers":{"available":["gopls"],"enabledByDefault":["gopls"],"probed":["gopls"]},"support":{"codeActions":{"detail":"gopls","level":"full"},"completion":{"detail":"gopls","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"gopls","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"gopls","level":"full"},"documentSymbols":{"detail":"gopls","level":"full"},"formatting":{"detail":"gopls","level":"full"},"hover":{"detail":"gopls","level":"full"},"inlayHints":{"detail":"gopls","level":"full"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"gopls","level":"full"},"references":{"detail":"gopls","level":"full"},"rename":{"detail":"gopls","level":"full"},"repl":{"detail":"console","level":"full"},"semanticTokens":{"detail":"gopls","level":"full"},"signatureHelp":{"detail":"gopls","level":"full"},"subPackageManagement":{"detail":null,"level":"none"},"syntaxHighlighting":{"detail":"go","level":"full"},"typeDefinition":{"detail":"gopls","level":"full"},"variableInspector":{"detail":null,"level":"none"},"workspaceSymbols":{"detail":"gopls","level":"full"}},"version":"1.26.6"},{"attrs":["haskell"],"componentVersions":{"ghc":"9.10.3","haskell-language-server":"2.13.0.0"},"description":"An advanced, purely functional programming language (GHC 9.10.3)","displayName":"Haskell","extensions":["hs"],"iconMonochrome":"modules/kernels/haskell/haskell-monochrome.svg","id":"haskell","languageServers":{"available":["haskell-language-server"],"enabledByDefault":["haskell-language-server"],"probed":["haskell-language-server"]},"support":{"codeActions":{"detail":"haskell-language-server","level":"full"},"completion":{"detail":"haskell-language-server","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"haskell-language-server","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"haskell-language-server","level":"full"},"documentSymbols":{"detail":"haskell-language-server","level":"full"},"formatting":{"detail":"haskell-language-server","level":"full"},"hover":{"detail":"haskell-language-server","level":"full"},"inlayHints":{"detail":"haskell-language-server","level":"full"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"haskell-language-server","level":"full"},"references":{"detail":"haskell-language-server","level":"full"},"rename":{"detail":"haskell-language-server","level":"full"},"repl":{"detail":"ghci","level":"full"},"semanticTokens":{"detail":"haskell-language-server","level":"full"},"signatureHelp":{"detail":"haskell-language-server","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"haskell","level":"full"},"typeDefinition":{"detail":"haskell-language-server","level":"full"},"variableInspector":{"detail":null,"level":"none"},"workspaceSymbols":{"detail":"haskell-language-server","level":"full"}},"version":"9.10.3"},{"attrs":["julia"],"componentVersions":{"julia":"1.12.6"},"description":"High-level performance-oriented dynamical language for technical computing","displayName":"Julia","extensions":["jl"],"iconMonochrome":"modules/kernels/julia/julia-monochrome.svg","id":"julia","languageServers":{"available":["LanguageServer"],"enabledByDefault":["LanguageServer"],"probed":["LanguageServer"]},"support":{"codeActions":{"detail":"LanguageServer","level":"full"},"completion":{"detail":"LanguageServer","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"LanguageServer","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"LanguageServer","level":"full"},"documentSymbols":{"detail":"LanguageServer","level":"full"},"formatting":{"detail":"LanguageServer","level":"full"},"hover":{"detail":"LanguageServer","level":"full"},"inlayHints":{"detail":"LanguageServer","level":"full"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"LanguageServer","level":"full"},"references":{"detail":"LanguageServer","level":"full"},"rename":{"detail":"LanguageServer","level":"full"},"repl":{"detail":"julia","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":"LanguageServer","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"julia","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"LanguageServer","level":"full"}},"version":"1.12.6"},{"attrs":["octave"],"componentVersions":{"octave":"11.1.0"},"description":"Scientific Programming Language","displayName":"Octave","extensions":["m"],"iconMonochrome":"modules/kernels/octave/octave-monochrome.svg","id":"octave","languageServers":{"available":[],"enabledByDefault":[],"probed":[]},"support":{"codeActions":{"detail":null,"level":"none"},"completion":{"detail":null,"level":"none"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":null,"level":"none"},"diagnostics":{"detail":null,"level":"none"},"documentHighlight":{"detail":null,"level":"none"},"documentSymbols":{"detail":null,"level":"none"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":null,"level":"none"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":null,"level":"none"},"references":{"detail":null,"level":"none"},"rename":{"detail":null,"level":"none"},"repl":{"detail":"octave","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":null,"level":"none"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"octave","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":null,"level":"none"}},"version":"11.1.0"},{"attrs":["postgres"],"componentVersions":{"postgres-kernel":"0.1"},"description":"A simple Jupyter kernel for PostgreSQL","displayName":"PostgreSQL","extensions":["sql"],"iconMonochrome":"modules/kernels/postgres/postgresql-monochrome.svg","id":"postgres","languageServers":{"available":[],"enabledByDefault":[],"probed":[]},"support":{"codeActions":{"detail":null,"level":"none"},"completion":{"detail":null,"level":"none"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":null,"level":"none"},"diagnostics":{"detail":null,"level":"none"},"documentHighlight":{"detail":null,"level":"none"},"documentSymbols":{"detail":null,"level":"none"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":null,"level":"none"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":null,"level":"none"},"references":{"detail":null,"level":"none"},"rename":{"detail":null,"level":"none"},"repl":{"detail":"console","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":null,"level":"none"},"subPackageManagement":{"detail":null,"level":"none"},"syntaxHighlighting":{"detail":"sql","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"none"},"workspaceSymbols":{"detail":null,"level":"none"}},"version":"0.1"},{"attrs":["python3","python"],"componentVersions":{"flake8":"7.3.0","jedi-language-server":"0.46.0","pycodestyle":"2.14.0","pylint":"4.0.5","pyright":"1.1.411","python":"7.3.20","python-lsp-server":"1.14.0"},"description":"Fast, compliant alternative implementation of the Python language (3.11)","displayName":"PyPy","extensions":["py"],"iconMonochrome":"modules/kernels/python/python-monochrome.svg","id":"pypy3","languageServers":{"available":["flake8","jedi","microsoft","pycodestyle","pylint","pyright","python-language-server","python-lsp-server"],"enabledByDefault":["jedi"],"probed":["jedi"]},"support":{"codeActions":{"detail":"jedi","level":"full"},"completion":{"detail":"jedi","level":"full"},"debugger":{"detail":null,"level":"full"},"definition":{"detail":"jedi","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"jedi","level":"full"},"documentSymbols":{"detail":"jedi","level":"full"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":"jedi","level":"full"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"jedi","level":"full"},"references":{"detail":"jedi","level":"full"},"rename":{"detail":"jedi","level":"full"},"repl":{"detail":"ipython","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":"jedi","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"python","level":"full"},"typeDefinition":{"detail":"jedi","level":"full"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"jedi","level":"full"}},"version":"7.3.20"},{"attrs":["python3","python"],"componentVersions":{"flake8":"7.3.0","jedi-language-server":"0.46.0","pycodestyle":"2.14.0","pylint":"4.0.5","pyright":"1.1.411","python":"3.13.15","python-lsp-server":"1.14.0"},"description":"High-level dynamically-typed programming language","displayName":"Python","extensions":["py"],"iconMonochrome":"modules/kernels/python/python-monochrome.svg","id":"python3","languageServers":{"available":["flake8","jedi","microsoft","pycodestyle","pylint","pyright","python-language-server","python-lsp-server"],"enabledByDefault":["jedi"],"probed":["jedi"]},"support":{"codeActions":{"detail":"jedi","level":"full"},"completion":{"detail":"jedi","level":"full"},"debugger":{"detail":null,"level":"full"},"definition":{"detail":"jedi","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"jedi","level":"full"},"documentSymbols":{"detail":"jedi","level":"full"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":"jedi","level":"full"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"jedi","level":"full"},"references":{"detail":"jedi","level":"full"},"rename":{"detail":"jedi","level":"full"},"repl":{"detail":"ipython","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":"jedi","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"python","level":"full"},"typeDefinition":{"detail":"jedi","level":"full"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"jedi","level":"full"}},"version":"3.13.15"},{"attrs":["r","R"],"componentVersions":{"languageserver":"0.3.16","r":"4.5.3"},"description":"Free software environment for statistical computing and graphics","displayName":"R","extensions":["r"],"iconMonochrome":"modules/kernels/r/r-monochrome.svg","id":"R","languageServers":{"available":["languageserver"],"enabledByDefault":["languageserver"],"probed":["languageserver"]},"support":{"codeActions":{"detail":"languageserver","level":"full"},"completion":{"detail":"languageserver","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"languageserver","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"languageserver","level":"full"},"documentSymbols":{"detail":"languageserver","level":"full"},"formatting":{"detail":"languageserver","level":"full"},"hover":{"detail":"languageserver","level":"full"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"languageserver","level":"full"},"references":{"detail":"languageserver","level":"full"},"rename":{"detail":"languageserver","level":"full"},"repl":{"detail":"r","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":"languageserver","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"r","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"languageserver","level":"full"}},"version":"4.5.3"},{"attrs":["r","R"],"componentVersions":{"ark":"0.1.252","r":"4.5.3"},"description":"Free software environment for statistical computing and graphics","displayName":"R (Ark)","extensions":["r"],"iconMonochrome":"modules/kernels/r-ark/r-monochrome.svg","id":"R-ark","languageServers":{"available":[],"enabledByDefault":[],"probed":[]},"support":{"codeActions":{"detail":null,"level":"none"},"completion":{"detail":null,"level":"none"},"debugger":{"detail":null,"level":"full"},"definition":{"detail":null,"level":"none"},"diagnostics":{"detail":null,"level":"none"},"documentHighlight":{"detail":null,"level":"none"},"documentSymbols":{"detail":null,"level":"none"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":null,"level":"none"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":null,"level":"none"},"references":{"detail":null,"level":"none"},"rename":{"detail":null,"level":"none"},"repl":{"detail":"r","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":null,"level":"none"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"r","level":"full"},"typeDefinition":{"detail":null,"level":"none"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":null,"level":"none"}},"version":"4.5.3"},{"attrs":["ruby"],"componentVersions":{"iruby":"v0.8.2","ruby":"3.4.9","solargraph":"0.57.0"},"description":"Object-oriented language for quick and easy programming","displayName":"Ruby","extensions":["rb"],"iconMonochrome":"modules/kernels/ruby/ruby-monochrome.svg","id":"ruby","languageServers":{"available":["solargraph"],"enabledByDefault":["solargraph"],"probed":["solargraph"]},"support":{"codeActions":{"detail":null,"level":"none"},"completion":{"detail":"solargraph","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"solargraph","level":"full"},"diagnostics":{"detail":"push","level":"full"},"documentHighlight":{"detail":"solargraph","level":"full"},"documentSymbols":{"detail":"solargraph","level":"full"},"formatting":{"detail":null,"level":"none"},"hover":{"detail":"solargraph","level":"full"},"inlayHints":{"detail":null,"level":"none"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"solargraph","level":"full"},"references":{"detail":"solargraph","level":"full"},"rename":{"detail":"solargraph","level":"full"},"repl":{"detail":"irb","level":"full"},"semanticTokens":{"detail":null,"level":"none"},"signatureHelp":{"detail":"solargraph","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"ruby","level":"full"},"typeDefinition":{"detail":"solargraph","level":"full"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"solargraph","level":"full"}},"version":"3.4.9"},{"attrs":["rust"],"componentVersions":{"cargo":"1.95.0","evcxr":"0.21.1","rust":"1.95.0","rust-analyzer":"2026-06-01"},"description":"Safe, concurrent, practical language (wrapper script)","displayName":"Rust","extensions":["rs","rlib"],"iconMonochrome":"modules/kernels/rust/rust-logo-monochrome.svg","id":"rust","languageServers":{"available":["rust-analyzer"],"enabledByDefault":["rust-analyzer"],"probed":["rust-analyzer"]},"support":{"codeActions":{"detail":"rust-analyzer","level":"full"},"completion":{"detail":"rust-analyzer","level":"full"},"debugger":{"detail":null,"level":"none"},"definition":{"detail":"rust-analyzer","level":"full"},"diagnostics":{"detail":"pull + push","level":"full"},"documentHighlight":{"detail":"rust-analyzer","level":"full"},"documentSymbols":{"detail":"rust-analyzer","level":"full"},"formatting":{"detail":"rust-analyzer","level":"full"},"hover":{"detail":"rust-analyzer","level":"full"},"inlayHints":{"detail":"rust-analyzer","level":"full"},"jupyterKernel":{"detail":null,"level":"full"},"languageServer":{"detail":"rust-analyzer","level":"full"},"references":{"detail":"rust-analyzer","level":"full"},"rename":{"detail":"rust-analyzer","level":"full"},"repl":{"detail":"evcxr","level":"full"},"semanticTokens":{"detail":"rust-analyzer","level":"full"},"signatureHelp":{"detail":"rust-analyzer","level":"full"},"subPackageManagement":{"detail":null,"level":"full"},"syntaxHighlighting":{"detail":"rust","level":"full"},"typeDefinition":{"detail":"rust-analyzer","level":"full"},"variableInspector":{"detail":null,"level":"full"},"workspaceSymbols":{"detail":"rust-analyzer","level":"full"}},"version":"1.95.0"}],"provenance":{"lsp":"Read from language server `initialize` responses (nix/lsp-capabilities.json, regenerated by scripts/probe-lsp-capabilities).","lspProbedKernels":["R","R-ark","bash","clojure","coq","cpp","go","haskell","julia","octave","postgres","pypy3","python3","ruby","rust"],"nix":"Evaluated from the codedown-languages module system (nix/feature-matrix.nix)."},"schemaVersion":1} \ No newline at end of file diff --git a/docs/feature-matrix.svg b/docs/feature-matrix.svg index 6ac67629..9aba1638 100644 --- a/docs/feature-matrix.svg +++ b/docs/feature-matrix.svg @@ -802,50 +802,62 @@ - PyPy - Code completion: unknown - ? + PyPy - Code completion: yes (jedi) + + - PyPy - Hover docs: unknown - ? + PyPy - Hover docs: yes (jedi) + + - PyPy - Signature help: unknown - ? + PyPy - Signature help: yes (jedi) + + - PyPy - Diagnostics: unknown - ? + PyPy - Diagnostics: yes (push) + + - PyPy - Semantic highlighting: unknown - ? + PyPy - Semantic highlighting: no + - PyPy - Inlay hints: unknown - ? + PyPy - Inlay hints: no + - PyPy - Jump to definition: unknown - ? + PyPy - Jump to definition: yes (jedi) + + - PyPy - Jump to type definition: unknown - ? + PyPy - Jump to type definition: yes (jedi) + + - PyPy - Find references: unknown - ? + PyPy - Find references: yes (jedi) + + - PyPy - Document outline: unknown - ? + PyPy - Document outline: yes (jedi) + + - PyPy - Workspace symbol search: unknown - ? + PyPy - Workspace symbol search: yes (jedi) + + - PyPy - Highlight occurrences: unknown - ? + PyPy - Highlight occurrences: yes (jedi) + + - PyPy - Formatting: unknown - ? + PyPy - Formatting: no + - PyPy - Rename symbol: unknown - ? + PyPy - Rename symbol: yes (jedi) + + - PyPy - Code actions: unknown - ? + PyPy - Code actions: yes (jedi) + + PyPy - Subpackage management: yes @@ -1285,7 +1297,5 @@ supported not available - ? - not measured diff --git a/nix/lsp-capabilities.json b/nix/lsp-capabilities.json index 1f7a0f9a..74190fca 100644 --- a/nix/lsp-capabilities.json +++ b/nix/lsp-capabilities.json @@ -801,6 +801,64 @@ }, "octave": {}, "postgres": {}, + "pypy3": { + "jedi": { + "capabilities": { + "codeActionProvider": { + "codeActionKinds": [ + "refactor.inline", + "refactor.extract" + ] + }, + "completionProvider": { + "resolveProvider": true, + "triggerCharacters": [ + ".", + "'", + "\"" + ] + }, + "declarationProvider": true, + "definitionProvider": true, + "documentHighlightProvider": true, + "documentSymbolProvider": true, + "executeCommandProvider": { + "commands": [] + }, + "hoverProvider": true, + "positionEncoding": "utf-16", + "referencesProvider": true, + "renameProvider": { + "prepareProvider": false + }, + "signatureHelpProvider": { + "triggerCharacters": [ + "(", + "," + ] + }, + "textDocumentSync": { + "change": 2, + "openClose": true, + "save": true, + "willSave": false + }, + "typeDefinitionProvider": true, + "workspace": { + "fileOperations": {}, + "workspaceFolders": { + "changeNotifications": true, + "supported": true + } + }, + "workspaceSymbolProvider": { + "resolveProvider": false + } + }, + "displayName": "Jedi", + "version": "0.46.0" + } + }, "python3": { "jedi": { "capabilities": { From a8724ee38039acafd9d2371cfb14bf3470f9e2d1 Mon Sep 17 00:00:00 2001 From: thomasjm Date: Mon, 31 Aug 2026 15:55:59 -0700 Subject: [PATCH 6/8] Fixups noci --- .aliases/dev-verify-default-nix | 9 +------- default.nix | 37 ++++++++++++++++++++------------- flake.lock | 19 +---------------- flake.nix | 23 +++++++++++++------- 4 files changed, 39 insertions(+), 49 deletions(-) diff --git a/.aliases/dev-verify-default-nix b/.aliases/dev-verify-default-nix index 51705b92..3e74dc80 100755 --- a/.aliases/dev-verify-default-nix +++ b/.aliases/dev-verify-default-nix @@ -9,16 +9,12 @@ SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" cd "$SCRIPTDIR/.." FLAKE_NIXPKGS_REV=$(nix flake metadata --json | jq -r .locks.nodes.nixpkgs.locked.rev) -FLAKE_NIXPKGS_MASTER_REV=$(nix flake metadata --json | jq -r '.locks.nodes["nixpkgs-master"].locked.rev') echo "FLAKE_NIXPKGS_REV: '$FLAKE_NIXPKGS_REV'" -echo "FLAKE_NIXPKGS_MASTER_REV: '$FLAKE_NIXPKGS_MASTER_REV'" DEFAULT_NIXPKGS_REV=$(cat default.nix | grep nixpkgs-rev | cut -d'"' -f2) -DEFAULT_NIXPKGS_MASTER_REV=$(cat default.nix | grep nixpkgs-master-rev | cut -d'"' -f2) echo "DEFAULT_NIXPKGS_REV: '$DEFAULT_NIXPKGS_REV'" -echo "DEFAULT_NIXPKGS_MASTER_REV: '$DEFAULT_NIXPKGS_MASTER_REV'" if [ "$FLAKE_NIXPKGS_REV" != "$DEFAULT_NIXPKGS_REV" ]; then @@ -26,7 +22,4 @@ if [ "$FLAKE_NIXPKGS_REV" != "$DEFAULT_NIXPKGS_REV" ]; then exit 1 fi -if [ "$FLAKE_NIXPKGS_MASTER_REV" != "$DEFAULT_NIXPKGS_MASTER_REV" ]; then - echo "nixpkgs-master rev differed between flake and default.nix" - exit 1 -fi +# The nixpkgs-master check is gone while pkgsMaster is disabled; see the comment in default.nix. diff --git a/default.nix b/default.nix index 67651ac9..b84f34e3 100644 --- a/default.nix +++ b/default.nix @@ -22,21 +22,28 @@ let inherit overlays; } // (if system == null then {} else { inherit system; })); - masterRev = "f4d46d85b687293bc8d872010fb66a4f23c23139"; # nixpkgs-master-rev - masterFetchFromGitHub = fetchFromGitHub { - owner = "NixOS"; - repo = "nixpkgs"; - rev = masterRev; - hash = "sha256-j0P9+h7HX67KNlGki6puFfx8xO6wx4Jz23jXg3dpfCw="; # nixpkgs-master-hash - }; - masterBuiltins = builtins.fetchTarball { - url = ''https://github.com/NixOS/nixpkgs/archive/${masterRev}.tar.gz''; - sha256 = "0b3wd5vq7mvqvdrq5ixhxv27rz0mdsm8p92i6v5awpy73vxgshwg"; # nixpkgs-master-sha256 - }; - pkgsMasterSrc = if fetchFromGitHub != null then masterFetchFromGitHub else masterBuiltins; - pkgsMaster = import pkgsMasterSrc ({ - inherit overlays; - } // (if system == null then {} else { inherit system; })); + # Nothing builds from master. Importing it makes everyone realizing an environment fetch a + # second Nixpkgs, so it's off. To re-enable, uncomment this block and the pkgsMaster lines in + # flake.nix, and restore the nixpkgs-master check in .aliases/dev-verify-default-nix. + # masterRev = "f4d46d85b687293bc8d872010fb66a4f23c23139"; # nixpkgs-master-rev + # masterFetchFromGitHub = fetchFromGitHub { + # owner = "NixOS"; + # repo = "nixpkgs"; + # rev = masterRev; + # hash = "sha256-j0P9+h7HX67KNlGki6puFfx8xO6wx4Jz23jXg3dpfCw="; # nixpkgs-master-hash + # }; + # masterBuiltins = builtins.fetchTarball { + # url = ''https://github.com/NixOS/nixpkgs/archive/${masterRev}.tar.gz''; + # sha256 = "0b3wd5vq7mvqvdrq5ixhxv27rz0mdsm8p92i6v5awpy73vxgshwg"; # nixpkgs-master-sha256 + # }; + # pkgsMasterSrc = if fetchFromGitHub != null then masterFetchFromGitHub else masterBuiltins; + # pkgsMaster = import pkgsMasterSrc ({ + # inherit overlays; + # } // (if system == null then {} else { inherit system; })); + + masterDisabled = throw "pkgsMaster is disabled; see the comment above in default.nix"; + pkgsMasterSrc = masterDisabled; + pkgsMaster = masterDisabled; in diff --git a/flake.lock b/flake.lock index 61b52e83..2d6191e0 100644 --- a/flake.lock +++ b/flake.lock @@ -31,27 +31,10 @@ "type": "github" } }, - "nixpkgs-master": { - "locked": { - "lastModified": 1779951496, - "narHash": "sha256-j0P9+h7HX67KNlGki6puFfx8xO6wx4Jz23jXg3dpfCw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f4d46d85b687293bc8d872010fb66a4f23c23139", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "master", - "repo": "nixpkgs", - "type": "github" - } - }, "root": { "inputs": { "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs", - "nixpkgs-master": "nixpkgs-master" + "nixpkgs": "nixpkgs" } } }, diff --git a/flake.nix b/flake.nix index 16111278..8cfa1993 100644 --- a/flake.nix +++ b/flake.nix @@ -2,21 +2,28 @@ description = "CodeDown languages"; inputs.nixpkgs.url = "github:NixOS/nixpkgs/release-26.05"; - inputs.nixpkgs-master.url = "github:NixOS/nixpkgs/master"; + # See the pkgsMaster comment below. + # inputs.nixpkgs-master.url = "github:NixOS/nixpkgs/master"; inputs.flake-utils.url = "github:numtide/flake-utils"; - outputs = { self, nixpkgs, nixpkgs-master, flake-utils }: + outputs = { self, nixpkgs, flake-utils }: flake-utils.lib.eachDefaultSystem (system: let pkgsStable = import nixpkgs { inherit system; }; - pkgsMaster = import nixpkgs-master { inherit system; }; + # Nothing builds from master. Importing it makes everyone realizing an environment + # fetch a second Nixpkgs, so it's off. To re-enable, uncomment the nixpkgs-master input + # and these lines, the block in default.nix, and the nixpkgs-master check in + # .aliases/dev-verify-default-nix. + # pkgsMaster = import nixpkgs-master { inherit system; }; + pkgsMaster = throw "pkgsMaster is disabled; see the comment in flake.nix"; codedown = import ./codedown.nix { pkgsStableSrc = nixpkgs; inherit pkgsStable; - pkgsMasterSrc = nixpkgs-master; + # pkgsMasterSrc = nixpkgs-master; + pkgsMasterSrc = pkgsMaster; inherit pkgsMaster; }; @@ -36,9 +43,9 @@ '') attrs)} ''; - optionsDoc = pkgsMaster.nixosOptionsDoc { + optionsDoc = pkgsStable.nixosOptionsDoc { # Fold each option's "title" into its description so it survives into the docs. - options = (import ./nix/fold-option-titles.nix { lib = pkgsMaster.lib; }) (((pkgsMaster.callPackage ./nix/evaluate-config.nix { + options = (import ./nix/fold-option-titles.nix { lib = pkgsStable.lib; }) (((pkgsStable.callPackage ./nix/evaluate-config.nix { inherit pkgsStable pkgsMaster; extraSpecialArgs = { pkgs = {}; @@ -47,7 +54,7 @@ transformOptions = opt: opt // { # Remove declarations to hide "Declared by" lines declarations = []; - } // (pkgsMaster.lib.optionalAttrs (pkgsMaster.lib.head (opt.loc or []) == "_module") { + } // (pkgsStable.lib.optionalAttrs (pkgsStable.lib.head (opt.loc or []) == "_module") { visible = false; internal = true; }); @@ -99,7 +106,7 @@ inherit (codedown) packageSearch; allSettingsSchemas = pkgsStable.callPackage ./nix/all-settings-schemas.nix { inherit (sampleOutputs) sample_environments; }; - jupyter-runner = pkgsMaster.callPackage ./nix/jupyter-runner.nix {}; + jupyter-runner = pkgsStable.callPackage ./nix/jupyter-runner.nix {}; notebook = with pkgsStable; python3.pkgs.toPythonModule ( python3.pkgs.notebook.overridePythonAttrs (oldAttrs: { From 8193ddcde873aca375e9a5933eb410cc8d1923e5 Mon Sep 17 00:00:00 2001 From: thomasjm Date: Mon, 31 Aug 2026 16:22:36 -0700 Subject: [PATCH 7/8] Remove pkgsMaster Nothing builds from master any more, and importing it made everyone realizing an environment fetch a second Nixpkgs. optionsDoc and jupyter-runner move to stable, which leaves OPTIONS.md byte-identical. --- .../dev-update-default-nix-to-match-flake | 2 +- .aliases/dev-update-nixpkgs-master | 11 -------- .aliases/dev-verify-default-nix | 2 -- codedown.nix | 8 ++---- default.nix | 28 +------------------ flake.nix | 13 +-------- modules/base.nix | 7 ----- nix/evaluate-config.nix | 2 -- nix/makeEnvironment.nix | 3 +- 9 files changed, 7 insertions(+), 69 deletions(-) delete mode 100755 .aliases/dev-update-nixpkgs-master diff --git a/.aliases/dev-update-default-nix-to-match-flake b/.aliases/dev-update-default-nix-to-match-flake index fdece2ad..ff3b7d50 100755 --- a/.aliases/dev-update-default-nix-to-match-flake +++ b/.aliases/dev-update-default-nix-to-match-flake @@ -16,7 +16,7 @@ escape_for_sed() { echo "$string" } -for input in nixpkgs nixpkgs-master; do +for input in nixpkgs; do echo "Processing input: $input" # Update rev diff --git a/.aliases/dev-update-nixpkgs-master b/.aliases/dev-update-nixpkgs-master deleted file mode 100755 index 99bb6c0f..00000000 --- a/.aliases/dev-update-nixpkgs-master +++ /dev/null @@ -1,11 +0,0 @@ -#! /usr/bin/env nix-shell -#! nix-shell -i bash -p nix gnused - -set -e - -SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -cd "$SCRIPTDIR/.." - -nix flake update nixpkgs-master - -dev-update-default-nix-to-match-flake diff --git a/.aliases/dev-verify-default-nix b/.aliases/dev-verify-default-nix index 3e74dc80..572a20a0 100755 --- a/.aliases/dev-verify-default-nix +++ b/.aliases/dev-verify-default-nix @@ -21,5 +21,3 @@ if [ "$FLAKE_NIXPKGS_REV" != "$DEFAULT_NIXPKGS_REV" ]; then echo "nixpkgs rev differed between flake and default.nix" exit 1 fi - -# The nixpkgs-master check is gone while pkgsMaster is disabled; see the comment in default.nix. diff --git a/codedown.nix b/codedown.nix index 5a0fdfc2..065b058f 100644 --- a/codedown.nix +++ b/codedown.nix @@ -1,7 +1,5 @@ { pkgsStableSrc , pkgsStable -, pkgsMasterSrc -, pkgsMaster , requiredPackages ? [] , system ? "x86_64-linux" }: @@ -29,7 +27,7 @@ rec { settingsSchemas = lib.mapAttrs (attr: value: value.meta.settingsSchema or []) kernels; evaluateConfig = callPackage ./nix/evaluate-config.nix { - inherit pkgsStable pkgsMaster; + inherit pkgsStable; }; everythingConfig = let @@ -60,7 +58,7 @@ rec { exporters = everythingEnv.config.builtExporters; makeEnvironment = callPackage ./nix/makeEnvironment.nix { - inherit pkgsStable pkgsMaster; + inherit pkgsStable; }; # Which languages support which features, derived from the module evaluation. @@ -101,5 +99,5 @@ rec { ; # Exposed so it's easier to compute build dependencies in the presence of IFD - inherit pkgsStableSrc pkgsStable pkgsMasterSrc pkgsMaster requiredPackages; + inherit pkgsStableSrc pkgsStable requiredPackages; } diff --git a/default.nix b/default.nix index b84f34e3..b4ca7127 100644 --- a/default.nix +++ b/default.nix @@ -22,34 +22,8 @@ let inherit overlays; } // (if system == null then {} else { inherit system; })); - # Nothing builds from master. Importing it makes everyone realizing an environment fetch a - # second Nixpkgs, so it's off. To re-enable, uncomment this block and the pkgsMaster lines in - # flake.nix, and restore the nixpkgs-master check in .aliases/dev-verify-default-nix. - # masterRev = "f4d46d85b687293bc8d872010fb66a4f23c23139"; # nixpkgs-master-rev - # masterFetchFromGitHub = fetchFromGitHub { - # owner = "NixOS"; - # repo = "nixpkgs"; - # rev = masterRev; - # hash = "sha256-j0P9+h7HX67KNlGki6puFfx8xO6wx4Jz23jXg3dpfCw="; # nixpkgs-master-hash - # }; - # masterBuiltins = builtins.fetchTarball { - # url = ''https://github.com/NixOS/nixpkgs/archive/${masterRev}.tar.gz''; - # sha256 = "0b3wd5vq7mvqvdrq5ixhxv27rz0mdsm8p92i6v5awpy73vxgshwg"; # nixpkgs-master-sha256 - # }; - # pkgsMasterSrc = if fetchFromGitHub != null then masterFetchFromGitHub else masterBuiltins; - # pkgsMaster = import pkgsMasterSrc ({ - # inherit overlays; - # } // (if system == null then {} else { inherit system; })); - - masterDisabled = throw "pkgsMaster is disabled; see the comment above in default.nix"; - pkgsMasterSrc = masterDisabled; - pkgsMaster = masterDisabled; - in pkgsStable.callPackage ./codedown.nix { - inherit - pkgsStableSrc pkgsStable - pkgsMasterSrc pkgsMaster - ; + inherit pkgsStableSrc pkgsStable; } diff --git a/flake.nix b/flake.nix index 8cfa1993..3cbd5c6e 100644 --- a/flake.nix +++ b/flake.nix @@ -2,8 +2,6 @@ description = "CodeDown languages"; inputs.nixpkgs.url = "github:NixOS/nixpkgs/release-26.05"; - # See the pkgsMaster comment below. - # inputs.nixpkgs-master.url = "github:NixOS/nixpkgs/master"; inputs.flake-utils.url = "github:numtide/flake-utils"; @@ -11,20 +9,11 @@ flake-utils.lib.eachDefaultSystem (system: let pkgsStable = import nixpkgs { inherit system; }; - # Nothing builds from master. Importing it makes everyone realizing an environment - # fetch a second Nixpkgs, so it's off. To re-enable, uncomment the nixpkgs-master input - # and these lines, the block in default.nix, and the nixpkgs-master check in - # .aliases/dev-verify-default-nix. - # pkgsMaster = import nixpkgs-master { inherit system; }; - pkgsMaster = throw "pkgsMaster is disabled; see the comment in flake.nix"; codedown = import ./codedown.nix { pkgsStableSrc = nixpkgs; inherit pkgsStable; - # pkgsMasterSrc = nixpkgs-master; - pkgsMasterSrc = pkgsMaster; - inherit pkgsMaster; }; sampleOutputs = pkgsStable.callPackage ./nix/sample-outputs.nix { inherit codedown pkgsStable; }; @@ -46,7 +35,7 @@ optionsDoc = pkgsStable.nixosOptionsDoc { # Fold each option's "title" into its description so it survives into the docs. options = (import ./nix/fold-option-titles.nix { lib = pkgsStable.lib; }) (((pkgsStable.callPackage ./nix/evaluate-config.nix { - inherit pkgsStable pkgsMaster; + inherit pkgsStable; extraSpecialArgs = { pkgs = {}; }; diff --git a/modules/base.nix b/modules/base.nix index ffe2a837..72cf2d29 100644 --- a/modules/base.nix +++ b/modules/base.nix @@ -16,13 +16,6 @@ with lib; internal = true; }; - pkgsMaster = mkOption { - type = types.attrs; - default = pkgs; - visible = false; - internal = true; - }; - builtExporters = mkOption { type = types.attrsOf types.package; default = {}; diff --git a/nix/evaluate-config.nix b/nix/evaluate-config.nix index eb89560c..c661b503 100644 --- a/nix/evaluate-config.nix +++ b/nix/evaluate-config.nix @@ -1,6 +1,5 @@ { lib , pkgsStable -, pkgsMaster , extraSpecialArgs ? {} }: @@ -61,7 +60,6 @@ extendedLib.evalModules { { config = { pkgs = pkgsStable; - inherit pkgsMaster; }; } { diff --git a/nix/makeEnvironment.nix b/nix/makeEnvironment.nix index 1f7ec0b1..aa69325a 100644 --- a/nix/makeEnvironment.nix +++ b/nix/makeEnvironment.nix @@ -9,7 +9,6 @@ , writeText , pkgsStable -, pkgsMaster }: config: @@ -18,7 +17,7 @@ with lib; let chooseMeta = callPackage ./choose-meta.nix {}; - evaluated = (callPackage ./evaluate-config.nix { inherit pkgsStable pkgsMaster; }) config; + evaluated = (callPackage ./evaluate-config.nix { inherit pkgsStable; }) config; removeNonDefaultSettings = callPackage ./remove-non-default-settings.nix {}; # Only used for the channel-level environment settings_schema, which is currently exposed on the # Nixpkgs-channel overlay makeEnvironment only (see nix/nixpkgs-overlay.nix), not here. From b038ab67b0fc6734a6a952b9e3510c850f3d7f20 Mon Sep 17 00:00:00 2001 From: thomasjm Date: Mon, 31 Aug 2026 17:30:22 -0700 Subject: [PATCH 8/8] Fixups noci --- .aliases/dev-update-default-nix-to-match-flake | 1 + .aliases/dev-update-nixpkgs-master | 11 +++++++++++ .aliases/dev-verify-default-nix | 9 +++++++++ codedown.nix | 5 +++++ flake.nix | 4 ++++ modules/base.nix | 7 +++++++ nix/evaluate-config.nix | 2 ++ nix/makeEnvironment.nix | 2 ++ 8 files changed, 41 insertions(+) create mode 100755 .aliases/dev-update-nixpkgs-master diff --git a/.aliases/dev-update-default-nix-to-match-flake b/.aliases/dev-update-default-nix-to-match-flake index ff3b7d50..3cb54b28 100755 --- a/.aliases/dev-update-default-nix-to-match-flake +++ b/.aliases/dev-update-default-nix-to-match-flake @@ -16,6 +16,7 @@ escape_for_sed() { echo "$string" } +# for input in nixpkgs nixpkgs-master; do for input in nixpkgs; do echo "Processing input: $input" diff --git a/.aliases/dev-update-nixpkgs-master b/.aliases/dev-update-nixpkgs-master new file mode 100755 index 00000000..974df903 --- /dev/null +++ b/.aliases/dev-update-nixpkgs-master @@ -0,0 +1,11 @@ +#! /usr/bin/env nix-shell +#! nix-shell -i bash -p nix gnused +# +# set -e +# +# SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +# cd "$SCRIPTDIR/.." +# +# nix flake update nixpkgs-master +# +# dev-update-default-nix-to-match-flake diff --git a/.aliases/dev-verify-default-nix b/.aliases/dev-verify-default-nix index 572a20a0..811d1995 100755 --- a/.aliases/dev-verify-default-nix +++ b/.aliases/dev-verify-default-nix @@ -9,15 +9,24 @@ SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" cd "$SCRIPTDIR/.." FLAKE_NIXPKGS_REV=$(nix flake metadata --json | jq -r .locks.nodes.nixpkgs.locked.rev) +# FLAKE_NIXPKGS_MASTER_REV=$(nix flake metadata --json | jq -r '.locks.nodes["nixpkgs-master"].locked.rev') echo "FLAKE_NIXPKGS_REV: '$FLAKE_NIXPKGS_REV'" +# echo "FLAKE_NIXPKGS_MASTER_REV: '$FLAKE_NIXPKGS_MASTER_REV'" DEFAULT_NIXPKGS_REV=$(cat default.nix | grep nixpkgs-rev | cut -d'"' -f2) +# DEFAULT_NIXPKGS_MASTER_REV=$(cat default.nix | grep nixpkgs-master-rev | cut -d'"' -f2) echo "DEFAULT_NIXPKGS_REV: '$DEFAULT_NIXPKGS_REV'" +# echo "DEFAULT_NIXPKGS_MASTER_REV: '$DEFAULT_NIXPKGS_MASTER_REV'" if [ "$FLAKE_NIXPKGS_REV" != "$DEFAULT_NIXPKGS_REV" ]; then echo "nixpkgs rev differed between flake and default.nix" exit 1 fi + +# if [ "$FLAKE_NIXPKGS_MASTER_REV" != "$DEFAULT_NIXPKGS_MASTER_REV" ]; then +# echo "nixpkgs-master rev differed between flake and default.nix" +# exit 1 +# fi diff --git a/codedown.nix b/codedown.nix index 065b058f..58e501ad 100644 --- a/codedown.nix +++ b/codedown.nix @@ -1,5 +1,7 @@ { pkgsStableSrc , pkgsStable +# , pkgsMasterSrc +# , pkgsMaster , requiredPackages ? [] , system ? "x86_64-linux" }: @@ -28,6 +30,7 @@ rec { evaluateConfig = callPackage ./nix/evaluate-config.nix { inherit pkgsStable; + # inherit pkgsMaster; }; everythingConfig = let @@ -59,6 +62,7 @@ rec { makeEnvironment = callPackage ./nix/makeEnvironment.nix { inherit pkgsStable; + # inherit pkgsMaster; }; # Which languages support which features, derived from the module evaluation. @@ -100,4 +104,5 @@ rec { # Exposed so it's easier to compute build dependencies in the presence of IFD inherit pkgsStableSrc pkgsStable requiredPackages; + # inherit pkgsMasterSrc pkgsMaster; } diff --git a/flake.nix b/flake.nix index 3cbd5c6e..8d04526c 100644 --- a/flake.nix +++ b/flake.nix @@ -2,6 +2,7 @@ description = "CodeDown languages"; inputs.nixpkgs.url = "github:NixOS/nixpkgs/release-26.05"; + # inputs.nixpkgs-master.url = "github:NixOS/nixpkgs/master"; inputs.flake-utils.url = "github:numtide/flake-utils"; @@ -9,11 +10,14 @@ flake-utils.lib.eachDefaultSystem (system: let pkgsStable = import nixpkgs { inherit system; }; + # pkgsMaster = import nixpkgs-master { inherit system; }; codedown = import ./codedown.nix { pkgsStableSrc = nixpkgs; inherit pkgsStable; + # pkgsMasterSrc = nixpkgs-master; + # inherit pkgsMaster; }; sampleOutputs = pkgsStable.callPackage ./nix/sample-outputs.nix { inherit codedown pkgsStable; }; diff --git a/modules/base.nix b/modules/base.nix index 72cf2d29..bc69a23e 100644 --- a/modules/base.nix +++ b/modules/base.nix @@ -16,6 +16,13 @@ with lib; internal = true; }; + # pkgsMaster = mkOption { + # type = types.attrs; + # default = pkgs; + # visible = false; + # internal = true; + # }; + builtExporters = mkOption { type = types.attrsOf types.package; default = {}; diff --git a/nix/evaluate-config.nix b/nix/evaluate-config.nix index c661b503..f14a747f 100644 --- a/nix/evaluate-config.nix +++ b/nix/evaluate-config.nix @@ -1,5 +1,6 @@ { lib , pkgsStable +# , pkgsMaster , extraSpecialArgs ? {} }: @@ -60,6 +61,7 @@ extendedLib.evalModules { { config = { pkgs = pkgsStable; + # inherit pkgsMaster; }; } { diff --git a/nix/makeEnvironment.nix b/nix/makeEnvironment.nix index aa69325a..e11fd5c0 100644 --- a/nix/makeEnvironment.nix +++ b/nix/makeEnvironment.nix @@ -9,6 +9,7 @@ , writeText , pkgsStable +# , pkgsMaster }: config: @@ -18,6 +19,7 @@ with lib; let chooseMeta = callPackage ./choose-meta.nix {}; evaluated = (callPackage ./evaluate-config.nix { inherit pkgsStable; }) config; + # evaluated = (callPackage ./evaluate-config.nix { inherit pkgsStable pkgsMaster; }) config; removeNonDefaultSettings = callPackage ./remove-non-default-settings.nix {}; # Only used for the channel-level environment settings_schema, which is currently exposed on the # Nixpkgs-channel overlay makeEnvironment only (see nix/nixpkgs-overlay.nix), not here.