diff --git a/docs/community/contributing.md b/docs/community/contributing.md index 49481d8e24..2b05d967d5 100644 --- a/docs/community/contributing.md +++ b/docs/community/contributing.md @@ -45,6 +45,8 @@ devenv: Language integration happens in stages. We welcome even the most basic support for getting started. +For detailed information about the language module structure, development tools pattern, and guidelines for adding new languages, see [`src/modules/languages/README.md`](https://github.com/cachix/devenv/blob/main/src/modules/languages/README.md). + The most basic language support starts with the `languages.*.enable` flag, which turns on basic tooling. For an example, see `src/modules/languages/elm.nix`. diff --git a/docs/individual-docs/languages/ada.md b/docs/individual-docs/languages/ada.md new file mode 100644 index 0000000000..d3615c80f0 --- /dev/null +++ b/docs/individual-docs/languages/ada.md @@ -0,0 +1,5 @@ + + +[comment]: # (Please add your documentation on top of this line) + +@AUTOGEN_OPTIONS@ diff --git a/docs/individual-docs/languages/assembly.md b/docs/individual-docs/languages/assembly.md new file mode 100644 index 0000000000..d3615c80f0 --- /dev/null +++ b/docs/individual-docs/languages/assembly.md @@ -0,0 +1,5 @@ + + +[comment]: # (Please add your documentation on top of this line) + +@AUTOGEN_OPTIONS@ diff --git a/docs/individual-docs/languages/cobol.md b/docs/individual-docs/languages/cobol.md new file mode 100644 index 0000000000..d3615c80f0 --- /dev/null +++ b/docs/individual-docs/languages/cobol.md @@ -0,0 +1,5 @@ + + +[comment]: # (Please add your documentation on top of this line) + +@AUTOGEN_OPTIONS@ diff --git a/docs/individual-docs/languages/matlab.md b/docs/individual-docs/languages/matlab.md new file mode 100644 index 0000000000..d3615c80f0 --- /dev/null +++ b/docs/individual-docs/languages/matlab.md @@ -0,0 +1,5 @@ + + +[comment]: # (Please add your documentation on top of this line) + +@AUTOGEN_OPTIONS@ diff --git a/docs/individual-docs/languages/sql.md b/docs/individual-docs/languages/sql.md new file mode 100644 index 0000000000..d3615c80f0 --- /dev/null +++ b/docs/individual-docs/languages/sql.md @@ -0,0 +1,5 @@ + + +[comment]: # (Please add your documentation on top of this line) + +@AUTOGEN_OPTIONS@ diff --git a/docs/reference/options.md b/docs/reference/options.md index a2605b98a0..b86f6175a3 100644 --- a/docs/reference/options.md +++ b/docs/reference/options.md @@ -11705,11 +11705,11 @@ attribute set of list of string -## languages.ansible.enable +## languages.ada.enable -Whether to enable tools for Ansible development. +Whether to enable tools for Ada development. @@ -11727,15 +11727,15 @@ boolean ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ansible.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ansible.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix) -## languages.ansible.package +## languages.ada.package -The Ansible package to use. +The GNAT compiler package to use. @@ -11745,18 +11745,18 @@ package *Default:* -` pkgs.ansible ` +` gnat${languages.ada.version} ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ansible.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ansible.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix) -## languages.c.enable +## languages.ada.dev.enable -Whether to enable tools for C development. +Enable Ada development tools. @@ -11766,71 +11766,60 @@ boolean *Default:* -` false ` - - - -*Example:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/c.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/c.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix) -## languages.c.debugger +## languages.ada.dev.aws.enable -An optional debugger package to use with c. -The default is ` gdb `, if supported on the current system. +Enable Ada Web Server (AWS) library. *Type:* -null or package +boolean *Default:* -` pkgs.gdb ` +` false ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/c.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/c.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix) -## languages.clojure.enable +## languages.ada.dev.aws.package -Whether to enable tools for Clojure development. +The AWS package to use (if available). *Type:* -boolean +null or package *Default:* -` false ` - - - -*Example:* -` true ` +` gnat${languages.ada.version}Packages.aws or null ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/clojure.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/clojure.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix) -## languages.cplusplus.enable +## languages.ada.dev.debugger.enable -Whether to enable tools for C++ development. +Enable gdb debugger. @@ -11840,49 +11829,39 @@ boolean *Default:* -` false ` - - - -*Example:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix) -## languages.crystal.enable +## languages.ada.dev.debugger.package -Whether to enable Enable tools for Crystal development… +The GDB package to use. *Type:* -boolean +package *Default:* -` false ` - - - -*Example:* -` true ` +` pkgs.gdb ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/crystal.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/crystal.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix) -## languages.cue.enable +## languages.ada.dev.gnatcoll.enable -Whether to enable tools for Cue development. +Enable gnatcoll-core libraries. @@ -11892,23 +11871,18 @@ boolean *Default:* -` false ` - - - -*Example:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cue.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cue.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix) -## languages.cue.package +## languages.ada.dev.gnatcoll.package -The CUE package to use. +The GNATCOLL core package to use. @@ -11918,18 +11892,18 @@ package *Default:* -` pkgs.cue ` +` gnat${languages.ada.version}Packages.gnatcoll-core ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cue.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cue.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix) -## languages.dart.enable +## languages.ada.dev.gnatcoll-bindings.enable -Whether to enable tools for Dart development. +Enable additional GNATCOLL bindings (database, compression, etc.). @@ -11941,42 +11915,46 @@ boolean *Default:* ` false ` - - -*Example:* -` true ` - *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/dart.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/dart.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix) -## languages.dart.package +## languages.ada.dev.gnatcoll-bindings.packages -The Dart package to use. +Additional GNATCOLL binding packages to include. *Type:* -package +list of package *Default:* -` pkgs.dart ` + +``` +with gnat${languages.ada.version}Packages; [ + gnatcoll-sql gnatcoll-sqlite gnatcoll-postgres + gnatcoll-gmp gnatcoll-zlib gnatcoll-lzma + gnatcoll-readline gnatcoll-iconv gnatcoll-python3 + gnatcoll-syslog gnatcoll-omp +] + +``` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/dart.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/dart.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix) -## languages.deno.enable +## languages.ada.dev.gpr2.enable -Whether to enable tools for Deno development. +Enable GPR2 library (next-generation GPR library). @@ -11988,42 +11966,37 @@ boolean *Default:* ` false ` - - -*Example:* -` true ` - *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/deno.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/deno.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix) -## languages.deno.package +## languages.ada.dev.gpr2.package -Which package of Deno to use. +The GPR2 package to use (if available). *Type:* -package +null or package *Default:* -` pkgs.deno ` +` gnat${languages.ada.version}Packages.gpr2 or null ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/deno.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/deno.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix) -## languages.dotnet.enable +## languages.ada.dev.gprbuild.enable -Whether to enable tools for .NET development. +Enable gprbuild build tool. @@ -12033,23 +12006,18 @@ boolean *Default:* -` false ` - - - -*Example:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/dotnet.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/dotnet.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix) -## languages.dotnet.package +## languages.ada.dev.gprbuild.package -The .NET SDK package to use. +The GPRbuild package to use. @@ -12059,18 +12027,18 @@ package *Default:* -` pkgs.dotnet-sdk ` +` gnat${languages.ada.version}Packages.gprbuild ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/dotnet.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/dotnet.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix) -## languages.elixir.enable +## languages.ada.dev.lsp.enable -Whether to enable tools for Elixir development. +Enable ada-language-server language server. @@ -12082,42 +12050,37 @@ boolean *Default:* ` false ` - - -*Example:* -` true ` - *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/elixir.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/elixir.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix) -## languages.elixir.package +## languages.ada.dev.lsp.package -Which Elixir package to use. +The Ada Language Server package to use (if available). *Type:* -package +null or package *Default:* -` pkgs.elixir ` +` pkgs.ada_language_server or null ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/elixir.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/elixir.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix) -## languages.elm.enable +## languages.ada.dev.spark.enable -Whether to enable tools for Elm development. +Enable SPARK formal verification tools (if available). @@ -12129,141 +12092,124 @@ boolean *Default:* ` false ` - - -*Example:* -` true ` - *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/elm.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/elm.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix) -## languages.erlang.enable +## languages.ada.dev.spark.package -Whether to enable tools for Erlang development. +The SPARK/gnatprove package to use (if available). *Type:* -boolean +null or package *Default:* -` false ` - - - -*Example:* -` true ` +` gnat${languages.ada.version}Packages.gnatprove or null ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/erlang.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/erlang.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix) -## languages.erlang.package +## languages.ada.dev.xmlada.enable -Which package of Erlang to use. +Enable XMLAda XML processing library. *Type:* -package +boolean *Default:* -` pkgs.erlang ` +` false ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/erlang.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/erlang.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix) -## languages.fortran.enable +## languages.ada.dev.xmlada.package -Whether to enable tools for Fortran Development… +The XMLAda package to use (if available). *Type:* -boolean +null or package *Default:* -` false ` - - - -*Example:* -` true ` +` gnat${languages.ada.version}Packages.xmlada or null ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/fortran.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/fortran.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix) -## languages.fortran.package +## languages.ada.extraPackages -The Fortran package to use. +Additional Ada packages to include in the environment. *Type:* -package +list of package *Default:* -` pkgs.gfortran ` +` [ ] ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/fortran.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/fortran.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix) -## languages.gawk.enable +## languages.ada.version -Whether to enable tools for GNU Awk development. +The GNAT compiler version to use. + +GNAT 13 is the latest and recommended version for new projects. +GNAT 12 provides a stable alternative for legacy compatibility. *Type:* -boolean +one of “12”, “13” *Default:* -` false ` - - - -*Example:* -` true ` +` "13" ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/gawk.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/gawk.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ada.nix) -## languages.gleam.enable +## languages.ansible.enable -Whether to enable tools for Gleam development. +Whether to enable tools for Ansible development. @@ -12281,15 +12227,15 @@ boolean ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/gleam.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/gleam.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ansible.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ansible.nix) -## languages.gleam.package +## languages.ansible.package -The Gleam package to use. +The Ansible package to use. @@ -12299,18 +12245,18 @@ package *Default:* -` pkgs.gleam ` +` pkgs.ansible ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/gleam.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/gleam.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ansible.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ansible.nix) -## languages.go.enable +## languages.ansible.dev.enable -Whether to enable tools for Go development. +Enable Ansible development tools. @@ -12320,23 +12266,18 @@ boolean *Default:* -` false ` - - - -*Example:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ansible.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ansible.nix) -## languages.go.enableHardeningWorkaround +## languages.ansible.dev.linter.enable -Enable hardening workaround required for Delve debugger (https://github.com/go-delve/delve/issues/3085) +Enable ansible-lint linter. @@ -12346,18 +12287,18 @@ boolean *Default:* -` false ` +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ansible.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ansible.nix) -## languages.go.package +## languages.ansible.dev.linter.package -The Go package to use. +The ansible-lint package to use. @@ -12367,18 +12308,18 @@ package *Default:* -` pkgs.go ` +` pkgs.ansible-lint ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ansible.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ansible.nix) -## languages.haskell.enable +## languages.ansible.dev.lsp.enable -Whether to enable tools for Haskell development. +Enable ansible-language-server language server. @@ -12388,23 +12329,18 @@ boolean *Default:* -` false ` - - - -*Example:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/haskell.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/haskell.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ansible.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ansible.nix) -## languages.haskell.package +## languages.ansible.dev.lsp.package -Haskell compiler to use. +The ansible-language-server package to use. @@ -12414,112 +12350,118 @@ package *Default:* -` pkgs.ghc ` +` pkgs.ansible-language-server ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/haskell.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/haskell.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ansible.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ansible.nix) -## languages.haskell.languageServer +## languages.assembly.enable -Haskell language server to use. +Whether to enable tools for Assembly development. *Type:* -null or package +boolean *Default:* -` pkgs.haskell-language-server ` +` false ` + + + +*Example:* +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/haskell.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/haskell.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix) -## languages.haskell.stack +## languages.assembly.package -Haskell stack to use. +The primary assembler package to use. *Type:* -null or package +package *Default:* -` pkgs.stack ` +` pkgs.${cfg.assembler} ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/haskell.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/haskell.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix) -## languages.idris.enable +## languages.assembly.additionalAssemblers -Whether to enable tools for Idris development. +Additional assemblers to include in the environment. *Type:* -boolean +list of (one of “nasm”, “yasm”, “fasm”, “gas”) *Default:* -` false ` +` [ ] ` *Example:* -` true ` + +``` +[ + "yasm" + "fasm" +] +``` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/idris.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/idris.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix) -## languages.idris.package +## languages.assembly.assembler -The Idris package to use. +Primary assembler to use. *Type:* -package +one of “nasm”, “yasm”, “fasm”, “gas” *Default:* -` pkgs.idris2 ` - - - -*Example:* -` pkgs.idris ` +` "nasm" ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/idris.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/idris.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix) -## languages.java.enable +## languages.assembly.dev.enable -Whether to enable tools for Java development. +Enable Assembly development tools. @@ -12529,23 +12471,18 @@ boolean *Default:* -` false ` - - - -*Example:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix) -## languages.java.gradle.enable +## languages.assembly.dev.binutils.enable -Whether to enable gradle. +Enable binutils tools. @@ -12555,24 +12492,18 @@ boolean *Default:* -` false ` - - - -*Example:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix) -## languages.java.gradle.package +## languages.assembly.dev.binutils.package -The Gradle package to use. -The Gradle package by default inherits the JDK from ` languages.java.jdk.package `. +The binutils package to use. @@ -12582,93 +12513,81 @@ package *Default:* -` pkgs.gradle.override { java = cfg.jdk.package; } ` +` pkgs.binutils ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix) -## languages.java.jdk.package +## languages.assembly.dev.debugger.enable -The JDK package to use. -This will also become available as ` JAVA_HOME `. +Enable gdb debugger. *Type:* -package +boolean *Default:* -` pkgs.jdk ` - - - -*Example:* -` pkgs.jdk8 ` +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix) -## languages.java.maven.enable +## languages.assembly.dev.debugger.package -Whether to enable maven. +The debugger package to use. *Type:* -boolean +package *Default:* -` false ` - - - -*Example:* -` true ` +` pkgs.gdb ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix) -## languages.java.maven.package +## languages.assembly.dev.disassembler.enable -The Maven package to use. -The Maven package by default inherits the JDK from ` languages.java.jdk.package `. +Enable disassembly tools. *Type:* -package +boolean *Default:* -` pkgs.maven.override { jdk_headless = cfg.jdk.package; } ` +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix) -## languages.javascript.enable +## languages.assembly.dev.disassembler.capstone.enable -Whether to enable tools for JavaScript development. +Enable capstone disassembler. @@ -12678,23 +12597,18 @@ boolean *Default:* -` false ` - - - -*Example:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix) -## languages.javascript.package +## languages.assembly.dev.disassembler.capstone.package -The Node.js package to use. +The capstone package to use. @@ -12704,18 +12618,18 @@ package *Default:* -` pkgs.nodejs-slim ` +` pkgs.capstone ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix) -## languages.javascript.bun.enable +## languages.assembly.dev.disassembler.radare2.enable -Whether to enable install bun. +Enable radare2 disassembler. @@ -12725,23 +12639,18 @@ boolean *Default:* -` false ` - - - -*Example:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix) -## languages.javascript.bun.package +## languages.assembly.dev.disassembler.radare2.package -The bun package to use. +The radare2 package to use. @@ -12751,18 +12660,18 @@ package *Default:* -` pkgs.bun ` +` pkgs.radare2 ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix) -## languages.javascript.bun.install.enable +## languages.assembly.dev.formatter.enable -Whether to enable bun install during devenv initialisation. +Enable assembly formatters. @@ -12772,23 +12681,18 @@ boolean *Default:* -` false ` - - - -*Example:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix) -## languages.javascript.corepack.enable +## languages.assembly.dev.formatter.asmfmt.enable -Whether to enable wrappers for npm, pnpm and Yarn via Node.js Corepack. +Enable asmfmt formatter. @@ -12800,48 +12704,37 @@ boolean *Default:* ` false ` - - -*Example:* -` true ` - *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix) -## languages.javascript.directory +## languages.assembly.dev.formatter.asmfmt.package -The JavaScript project’s root directory. Defaults to the root of the devenv project. -Can be an absolute path or one relative to the root of the devenv project. +The asmfmt package to use. *Type:* -string +package *Default:* -` config.devenv.root ` - - - -*Example:* -` "./directory" ` +` pkgs.asmfmt ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix) -## languages.javascript.npm.enable +## languages.assembly.dev.formatter.nasmfmt.enable -Whether to enable install npm. +Enable nasmfmt formatter. @@ -12851,23 +12744,18 @@ boolean *Default:* -` false ` - - - -*Example:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix) -## languages.javascript.npm.package +## languages.assembly.dev.formatter.nasmfmt.package -The Node.js package to use. +The nasmfmt package to use. @@ -12877,18 +12765,18 @@ package *Default:* -` languages.javascript.package ` +` pkgs.nasmfmt ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix) -## languages.javascript.npm.install.enable +## languages.assembly.dev.hexEditor.enable -Whether to enable npm install during devenv initialisation. +Enable ghex hex editor. @@ -12900,21 +12788,37 @@ boolean *Default:* ` false ` +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix) + + + +## languages.assembly.dev.hexEditor.package + + + +The hex editor package to use. + + + +*Type:* +package -*Example:* -` true ` + +*Default:* +` pkgs.ghex ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix) -## languages.javascript.pnpm.enable +## languages.assembly.dev.lsp.enable -Whether to enable install pnpm. +Enable asm-lsp language server. @@ -12924,23 +12828,18 @@ boolean *Default:* -` false ` - - - -*Example:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix) -## languages.javascript.pnpm.package +## languages.assembly.dev.lsp.package -The pnpm package to use. +The asm-lsp package to use. @@ -12950,18 +12849,18 @@ package *Default:* -` pkgs.nodePackages.pnpm ` +` pkgs.asm-lsp ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/assembly.nix) -## languages.javascript.pnpm.install.enable +## languages.c.enable -Whether to enable pnpm install during devenv initialisation. +Whether to enable tools for C development. @@ -12979,15 +12878,15 @@ boolean ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/c.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/c.nix) -## languages.javascript.yarn.enable +## languages.c.dev.enable -Whether to enable install yarn. +Enable C development tools. @@ -12997,23 +12896,39 @@ boolean *Default:* -` false ` +` true ` +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/c.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/c.nix) -*Example:* + +## languages.c.dev.debugger.enable + + + +Enable gdb debugger. + + + +*Type:* +boolean + + + +*Default:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/c.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/c.nix) -## languages.javascript.yarn.package +## languages.c.dev.debugger.package -The yarn package to use. +The gdb package to use. @@ -13023,18 +12938,18 @@ package *Default:* -` pkgs.yarn ` +` pkgs.gdb ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/c.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/c.nix) -## languages.javascript.yarn.install.enable +## languages.c.dev.lsp.enable -Whether to enable yarn install during devenv initialisation. +Enable ccls language server. @@ -13044,49 +12959,48 @@ boolean *Default:* -` false ` - - - -*Example:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/c.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/c.nix) -## languages.jsonnet.enable +## languages.c.dev.lsp.package -Whether to enable tools for jsonnet development. +The ccls package to use. +Note: clangd (available in pkgs.clang-tools) is the most popular C/C++ LSP, +actively maintained by the LLVM team. You can switch to it by setting: +languages.c.dev.lsp.package = pkgs.clang-tools; +Other LSPs: -*Type:* -boolean + - ccls: Good alternative, currently the default + - cquery: Deprecated/unmaintained, do not use -*Default:* -` false ` +*Type:* +package -*Example:* -` true ` +*Default:* +` pkgs.ccls ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/jsonnet.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/jsonnet.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/c.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/c.nix) -## languages.julia.enable +## languages.c.dev.valgrind.enable -Whether to enable tools for Julia development. +Enable valgrind memory debugger. @@ -13096,23 +13010,18 @@ boolean *Default:* -` false ` - - - -*Example:* -` true ` +` lib.meta.availableOn pkgs.stdenv.hostPlatform pkgs.valgrind && !pkgs.valgrind.meta.broken ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/julia.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/julia.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/c.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/c.nix) -## languages.julia.package +## languages.c.dev.valgrind.package -The Julia package to use. +The valgrind package to use. @@ -13122,18 +13031,18 @@ package *Default:* -` pkgs.julia-bin ` +` pkgs.valgrind ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/julia.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/julia.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/c.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/c.nix) -## languages.kotlin.enable +## languages.clojure.enable -Whether to enable tools for Kotlin development. +Whether to enable tools for Clojure development. @@ -13151,15 +13060,15 @@ boolean ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/kotlin.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/kotlin.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/clojure.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/clojure.nix) -## languages.lean4.enable +## languages.clojure.dev.enable -Whether to enable tools for lean4 development. +Enable Clojure development tools. @@ -13169,70 +13078,81 @@ boolean *Default:* -` false ` - - - -*Example:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/lean4.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/lean4.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/clojure.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/clojure.nix) -## languages.lean4.package +## languages.clojure.dev.formatter.enable -The lean4 package to use. +Enable cljfmt formatter. *Type:* -package +boolean *Default:* -` pkgs.lean4 ` +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/lean4.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/lean4.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/clojure.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/clojure.nix) -## languages.lua.enable +## languages.clojure.dev.formatter.package -Whether to enable tools for Lua development. +The cljfmt package to use. *Type:* -boolean +package *Default:* -` false ` +` pkgs.clojure-lsp ` +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/clojure.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/clojure.nix) -*Example:* + +## languages.clojure.dev.linter.enable + + + +Enable clj-kondo linter. + + + +*Type:* +boolean + + + +*Default:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/lua.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/lua.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/clojure.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/clojure.nix) -## languages.lua.package +## languages.clojure.dev.linter.package -The Lua package to use. +The clj-kondo package to use. @@ -13242,18 +13162,18 @@ package *Default:* -` pkgs.lua ` +` pkgs.clj-kondo ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/lua.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/lua.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/clojure.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/clojure.nix) -## languages.nim.enable +## languages.clojure.dev.lsp.enable -Whether to enable tools for Nim development. +Enable clojure-lsp language server. @@ -13263,23 +13183,18 @@ boolean *Default:* -` false ` - - - -*Example:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/nim.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/nim.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/clojure.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/clojure.nix) -## languages.nim.package +## languages.clojure.dev.lsp.package -The Nim package to use. +The clojure-lsp package to use. @@ -13289,18 +13204,18 @@ package *Default:* -` pkgs.nim ` +` pkgs.clojure-lsp ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/nim.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/nim.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/clojure.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/clojure.nix) -## languages.nix.enable +## languages.cobol.enable -Whether to enable tools for Nix development. +Whether to enable tools for COBOL development. @@ -13318,15 +13233,15 @@ boolean ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/nix.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/nix.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cobol.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cobol.nix) -## languages.nix.lsp.package +## languages.cobol.package -The LSP package to use +The GNU COBOL compiler package to use. @@ -13336,65 +13251,84 @@ package *Default:* -` pkgs.nil ` +` pkgs.gnucobol ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/nix.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/nix.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cobol.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cobol.nix) -## languages.ocaml.enable +## languages.cobol.compilerFlags -Whether to enable tools for OCaml development. +Additional flags to pass to the GNU COBOL compiler. *Type:* -boolean +list of string *Default:* -` false ` +` [ ] ` *Example:* -` true ` + +``` +[ + "-Wall" + "-std=cobol2014" + "-free" +] +``` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cobol.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cobol.nix) -## languages.ocaml.packages +## languages.cobol.copybooks -The package set of OCaml to use +List of directories to search for COBOL copybooks. +These will be added to the COB_COPY_DIR environment variable. *Type:* -attribute set +list of string *Default:* -` pkgs.ocaml-ng.ocamlPackages_4_12 ` +` [ ] ` + + + +*Example:* + +``` +[ + "./copybooks" + "../shared-copybooks" +] +``` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cobol.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cobol.nix) -## languages.odin.enable +## languages.cobol.dev.enable -Whether to enable tools for Odin Language. +Enable COBOL development tools. @@ -13404,50 +13338,44 @@ boolean *Default:* -` false ` - - - -*Example:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/odin.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/odin.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cobol.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cobol.nix) -## languages.odin.package +## languages.cobol.dev.debugger.enable -The odin package to use. +Enable gdb debugger. *Type:* -package +boolean *Default:* -` pkgs.odin ` +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/odin.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/odin.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cobol.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cobol.nix) -## languages.odin.debugger +## languages.cobol.dev.debugger.package -An optional debugger package to use with odin. -The default is ` gdb `, if supported on the current system. +The debugger package to use. *Type:* -null or package +package @@ -13455,15 +13383,15 @@ null or package ` pkgs.gdb ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/odin.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/odin.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cobol.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cobol.nix) -## languages.opentofu.enable +## languages.cobol.dev.documentation.enable -Whether to enable tools for OpenTofu development. +Enable cobol documentation tools. @@ -13475,21 +13403,37 @@ boolean *Default:* ` false ` +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cobol.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cobol.nix) + -*Example:* +## languages.cobol.dev.documentation.robodoc.enable + + + +Enable robodoc documentation tool. + + + +*Type:* +boolean + + + +*Default:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/opentofu.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/opentofu.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cobol.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cobol.nix) -## languages.opentofu.package +## languages.cobol.dev.documentation.robodoc.package -The OpenTofu package to use. +The ROBODoc package to use. @@ -13499,18 +13443,18 @@ package *Default:* -` pkgs.opentofu ` +` pkgs.robodoc ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/opentofu.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/opentofu.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cobol.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cobol.nix) -## languages.pascal.enable +## languages.cobol.dev.editor.enable -Whether to enable tools for Pascal development. +Enable cobol editor support. @@ -13520,23 +13464,18 @@ boolean *Default:* -` false ` - - - -*Example:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/pascal.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/pascal.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cobol.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cobol.nix) -## languages.pascal.lazarus.enable +## languages.cobol.dev.editor.emacsMode.enable -Whether to enable lazarus graphical IDE for the FreePascal language. +Enable cobol-mode for Emacs. @@ -13546,80 +13485,60 @@ boolean *Default:* -` false ` - - - -*Example:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/pascal.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/pascal.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cobol.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cobol.nix) -## languages.perl.enable +## languages.cobol.dev.editor.emacsMode.package -Whether to enable tools for Perl development. +The cobol-mode package to use. *Type:* -boolean +null or package *Default:* -` false ` - - - -*Example:* -` true ` +` pkgs.emacsPackages.cobol-mode or null ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/perl.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/perl.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cobol.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cobol.nix) -## languages.perl.packages +## languages.cobol.dev.linter.enable -Perl packages to include +Enable cobol linter. *Type:* -list of string +boolean *Default:* -` [ ] ` - - - -*Example:* - -``` -[ - "Mojolicious" -] -``` +` false ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/perl.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/perl.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cobol.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cobol.nix) -## languages.php.enable +## languages.cplusplus.enable -Whether to enable tools for PHP development. +Whether to enable tools for C++ development. @@ -13637,17 +13556,15 @@ boolean ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix) -## languages.php.package +## languages.cplusplus.package -Allows you to [override the default used package](https://nixos.org/manual/nixpkgs/stable/\#ssec-php-user-guide) -to adjust the settings or add more extensions. You can find the -extensions using ` devenv search 'php extensions' ` +The C++ compiler package to use. @@ -13657,196 +13574,5899 @@ package *Default:* -` pkgs.php ` - - - -*Example:* - -``` -pkgs.php.buildEnv { - extensions = { all, enabled }: with all; enabled ++ [ xdebug ]; - extraConfig = '' - memory_limit=1G - ''; -}; - -``` +` pkgs.clang ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix) -## languages.php.packages +## languages.cplusplus.dev.enable -Attribute set of packages including composer +Enable C++ development tools. *Type:* -submodule +boolean *Default:* -` pkgs ` +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix) -## languages.php.packages.composer +## languages.cplusplus.dev.debugger.enable -composer package +Enable gdb debugger. *Type:* -null or package +boolean *Default:* -` pkgs.phpPackages.composer ` +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix) -## languages.php.disableExtensions +## languages.cplusplus.dev.debugger.package -PHP extensions to disable. +The debugger package to use. Defaults to gdb if available, otherwise lldb. *Type:* -list of string +package *Default:* -` [ ] ` +` pkgs.gdb or pkgs.lldb ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix) -## languages.php.extensions +## languages.cplusplus.dev.formatter.enable -PHP extensions to enable. +Enable clang-format formatter. *Type:* -list of string +boolean *Default:* -` [ ] ` +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix) -## languages.php.fpm.extraConfig +## languages.cplusplus.dev.formatter.package -Extra configuration that should be put in the global section of -the PHP-FPM configuration file. Do not specify the options -` error_log ` or ` daemonize ` here, since they are generated by -NixOS. +The clang-format package to use. *Type:* -null or strings concatenated with “\\n” +package *Default:* -` null ` +` pkgs.clang-tools ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix) -## languages.php.fpm.phpOptions +## languages.cplusplus.dev.lsp.enable -Options appended to the PHP configuration file ` php.ini `. +Enable ccls language server. *Type:* -strings concatenated with “\\n” +boolean *Default:* -` "" ` - +` true ` +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix) -*Example:* -``` -'' - date.timezone = "CET" -'' -``` -*Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) +## languages.cplusplus.dev.lsp.package -## languages.php.fpm.pools +The ccls package to use. +Note: clangd (available in pkgs.clang-tools) is the most popular C/C++ LSP, +actively maintained by the LLVM team. You can switch to it by setting: +languages.cplusplus.dev.lsp.package = pkgs.clang-tools; +Other LSPs: -PHP-FPM pools. If no pools are defined, the PHP-FPM -service is disabled. + - ccls: Good alternative, currently the default + - cquery: Deprecated/unmaintained, do not use *Type:* -attribute set of (submodule) +package *Default:* -` { } ` +` pkgs.ccls ` +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix) -*Example:* -``` -{ - mypool = { - user = "php"; - group = "php"; - phpPackage = pkgs.php; - settings = { - "pm" = "dynamic"; - "pm.max_children" = 75; +## languages.crystal.enable + + + +Whether to enable Enable tools for Crystal development… + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/crystal.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/crystal.nix) + + + +## languages.crystal.dev.enable + + + +Enable Crystal development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/crystal.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/crystal.nix) + + + +## languages.crystal.dev.formatter.enable + + + +Enable crystal formatter. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/crystal.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/crystal.nix) + + + +## languages.crystal.dev.lsp.enable + + + +Enable crystalline language server. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/crystal.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/crystal.nix) + + + +## languages.crystal.dev.lsp.package + + + +The crystalline package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.crystalline ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/crystal.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/crystal.nix) + + + +## languages.cue.enable + + + +Whether to enable tools for Cue development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cue.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cue.nix) + + + +## languages.cue.package + + + +The CUE package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.cue ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cue.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cue.nix) + + + +## languages.cue.dev.enable + + + +Enable CUE development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cue.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cue.nix) + + + +## languages.cue.dev.lsp.enable + + + +Enable cuelsp language server. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cue.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cue.nix) + + + +## languages.cue.dev.lsp.package + + + +The cuelsp package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.cuelsp ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cue.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cue.nix) + + + +## languages.dart.enable + + + +Whether to enable tools for Dart development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/dart.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/dart.nix) + + + +## languages.dart.package + + + +The Dart package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.dart ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/dart.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/dart.nix) + + + +## languages.dart.dev.enable + + + +Enable Dart development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/dart.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/dart.nix) + + + +## languages.dart.dev.formatter.enable + + + +Enable dart formatter. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/dart.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/dart.nix) + + + +## languages.dart.dev.lsp.enable + + + +Enable dart language server. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/dart.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/dart.nix) + + + +## languages.deno.enable + + + +Whether to enable tools for Deno development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/deno.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/deno.nix) + + + +## languages.deno.package + + + +Which package of Deno to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.deno ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/deno.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/deno.nix) + + + +## languages.deno.dev.enable + + + +Enable Deno development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/deno.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/deno.nix) + + + +## languages.deno.dev.formatter.enable + + + +Enable deno formatter. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/deno.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/deno.nix) + + + +## languages.deno.dev.linter.enable + + + +Enable deno linter. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/deno.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/deno.nix) + + + +## languages.deno.dev.lsp.enable + + + +Enable deno language server. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/deno.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/deno.nix) + + + +## languages.dotnet.enable + + + +Whether to enable tools for .NET development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/dotnet.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/dotnet.nix) + + + +## languages.dotnet.package + + + +The .NET SDK package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.dotnet-sdk ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/dotnet.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/dotnet.nix) + + + +## languages.dotnet.dev.enable + + + +Enable .NET development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/dotnet.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/dotnet.nix) + + + +## languages.dotnet.dev.debugger.enable + + + +Enable netcoredbg debugger. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/dotnet.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/dotnet.nix) + + + +## languages.dotnet.dev.debugger.package + + + +The netcoredbg package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.netcoredbg ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/dotnet.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/dotnet.nix) + + + +## languages.dotnet.dev.formatter.enable + + + +Enable dotnet formatter. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/dotnet.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/dotnet.nix) + + + +## languages.dotnet.dev.formatter.package + + + +The dotnet-format package to use. + + + +*Type:* +null or package + + + +*Default:* +` null ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/dotnet.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/dotnet.nix) + + + +## languages.dotnet.dev.lsp.enable + + + +Enable omnisharp-roslyn language server. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/dotnet.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/dotnet.nix) + + + +## languages.dotnet.dev.lsp.package + + + +The omnisharp-roslyn package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.omnisharp-roslyn ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/dotnet.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/dotnet.nix) + + + +## languages.elixir.enable + + + +Whether to enable tools for Elixir development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/elixir.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/elixir.nix) + + + +## languages.elixir.package + + + +Which Elixir package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.elixir ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/elixir.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/elixir.nix) + + + +## languages.elixir.dev.enable + + + +Enable Elixir development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/elixir.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/elixir.nix) + + + +## languages.elixir.dev.dialyzer.enable + + + +Enable dialyxir static analyzer. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/elixir.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/elixir.nix) + + + +## languages.elixir.dev.dialyzer.package + + + +The dialyxir package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.beamPackages.dialyxir ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/elixir.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/elixir.nix) + + + +## languages.elixir.dev.linter.enable + + + +Enable credo linter. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/elixir.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/elixir.nix) + + + +## languages.elixir.dev.linter.package + + + +The credo package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.beamPackages.credo ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/elixir.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/elixir.nix) + + + +## languages.elixir.dev.lsp.enable + + + +Enable elixir-ls language server. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/elixir.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/elixir.nix) + + + +## languages.elixir.dev.lsp.package + + + +The elixir-ls package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.elixir_ls ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/elixir.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/elixir.nix) + + + +## languages.elm.enable + + + +Whether to enable tools for Elm development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/elm.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/elm.nix) + + + +## languages.elm.package + + + +The Elm compiler package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.elmPackages.elm ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/elm.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/elm.nix) + + + +## languages.elm.dev.enable + + + +Enable Elm development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/elm.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/elm.nix) + + + +## languages.elm.dev.formatter.enable + + + +Enable elm-format formatter. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/elm.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/elm.nix) + + + +## languages.elm.dev.formatter.package + + + +The elm-format package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.elmPackages.elm-format ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/elm.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/elm.nix) + + + +## languages.elm.dev.lsp.enable + + + +Enable elm-language-server language server. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/elm.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/elm.nix) + + + +## languages.elm.dev.lsp.package + + + +The elm-language-server package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.elmPackages.elm-language-server ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/elm.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/elm.nix) + + + +## languages.elm.dev.test.enable + + + +Enable elm-test test runner. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/elm.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/elm.nix) + + + +## languages.elm.dev.test.package + + + +The elm-test package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.elmPackages.elm-test ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/elm.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/elm.nix) + + + +## languages.erlang.enable + + + +Whether to enable tools for Erlang development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/erlang.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/erlang.nix) + + + +## languages.erlang.package + + + +Which package of Erlang to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.erlang ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/erlang.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/erlang.nix) + + + +## languages.erlang.dev.enable + + + +Enable Erlang development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/erlang.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/erlang.nix) + + + +## languages.erlang.dev.lsp.enable + + + +Enable erlang-ls language server. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/erlang.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/erlang.nix) + + + +## languages.erlang.dev.lsp.package + + + +The erlang-ls package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.erlang-ls ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/erlang.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/erlang.nix) + + + +## languages.fortran.enable + + + +Whether to enable tools for Fortran Development… + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/fortran.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/fortran.nix) + + + +## languages.fortran.package + + + +The Fortran package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.gfortran ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/fortran.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/fortran.nix) + + + +## languages.fortran.dev.enable + + + +Enable Fortran development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/fortran.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/fortran.nix) + + + +## languages.fortran.dev.fpm.enable + + + +Enable fortran-fpm package manager. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/fortran.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/fortran.nix) + + + +## languages.fortran.dev.fpm.package + + + +The fortran-fpm package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.fortran-fpm ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/fortran.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/fortran.nix) + + + +## languages.fortran.dev.lsp.enable + + + +Enable fortran-language-server language server. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/fortran.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/fortran.nix) + + + +## languages.fortran.dev.lsp.package + + + +The fortran-language-server package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.fortran-language-server ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/fortran.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/fortran.nix) + + + +## languages.gawk.enable + + + +Whether to enable tools for GNU Awk development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/gawk.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/gawk.nix) + + + +## languages.gawk.dev.enable + + + +Enable GNU Awk development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/gawk.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/gawk.nix) + + + +## languages.gawk.dev.lsp.enable + + + +Enable awk-language-server language server. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/gawk.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/gawk.nix) + + + +## languages.gawk.dev.lsp.package + + + +The awk-language-server package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.awk-language-server ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/gawk.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/gawk.nix) + + + +## languages.gleam.enable + + + +Whether to enable tools for Gleam development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/gleam.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/gleam.nix) + + + +## languages.gleam.package + + + +The Gleam package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.gleam ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/gleam.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/gleam.nix) + + + +## languages.gleam.dev.enable + + + +Enable Gleam development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/gleam.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/gleam.nix) + + + +## languages.gleam.dev.formatter.enable + + + +Enable gleam formatter. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/gleam.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/gleam.nix) + + + +## languages.gleam.dev.lsp.enable + + + +Enable gleam language server. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/gleam.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/gleam.nix) + + + +## languages.go.enable + + + +Whether to enable tools for Go development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix) + + + +## languages.go.enableHardeningWorkaround + + + +Enable hardening workaround required for Delve debugger (https://github.com/go-delve/delve/issues/3085) + + + +*Type:* +boolean + + + +*Default:* +` false ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix) + + + +## languages.go.package + + + +The Go package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.go ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix) + + + +## languages.go.dev.enable + + + +Enable Go development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix) + + + +## languages.go.dev.debugger.enable + + + +Enable delve debugger. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix) + + + +## languages.go.dev.debugger.package + + + +The delve package to use. + + + +*Type:* +package + + + +*Default:* +` buildWithSpecificGo pkgs.delve ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix) + + + +## languages.go.dev.go-tools.enable + + + +Enable go-tools static analysis tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix) + + + +## languages.go.dev.go-tools.package + + + +The go-tools package to use. + + + +*Type:* +package + + + +*Default:* +` buildWithSpecificGo pkgs.go-tools ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix) + + + +## languages.go.dev.gomodifytags.enable + + + +Enable gomodifytags struct tag tool. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix) + + + +## languages.go.dev.gomodifytags.package + + + +The gomodifytags package to use. + + + +*Type:* +package + + + +*Default:* +` buildWithSpecificGo pkgs.gomodifytags ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix) + + + +## languages.go.dev.gotests.enable + + + +Enable gotests test generator. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix) + + + +## languages.go.dev.gotests.package + + + +The gotests package to use. + + + +*Type:* +package + + + +*Default:* +` buildWithSpecificGo pkgs.gotests ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix) + + + +## languages.go.dev.gotools.enable + + + +Enable gotools development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix) + + + +## languages.go.dev.gotools.package + + + +The gotools package to use. + + + +*Type:* +package + + + +*Default:* +` buildWithSpecificGo pkgs.gotools ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix) + + + +## languages.go.dev.iferr.enable + + + +Enable iferr error handling generator. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix) + + + +## languages.go.dev.iferr.package + + + +The iferr package to use. + + + +*Type:* +package + + + +*Default:* +` buildWithSpecificGo pkgs.iferr ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix) + + + +## languages.go.dev.impl.enable + + + +Enable impl interface implementation generator. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix) + + + +## languages.go.dev.impl.package + + + +The impl package to use. + + + +*Type:* +package + + + +*Default:* +` buildWithSpecificGo pkgs.impl ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix) + + + +## languages.go.dev.lsp.enable + + + +Enable gopls language server. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix) + + + +## languages.go.dev.lsp.package + + + +The gopls package to use. + + + +*Type:* +package + + + +*Default:* +` buildWithSpecificGo pkgs.gopls ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/go.nix) + + + +## languages.haskell.enable + + + +Whether to enable tools for Haskell development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/haskell.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/haskell.nix) + + + +## languages.haskell.package + + + +Haskell compiler to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.ghc ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/haskell.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/haskell.nix) + + + +## languages.haskell.dev.enable + + + +Enable Haskell development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/haskell.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/haskell.nix) + + + +## languages.haskell.dev.formatter.enable + + + +Enable ormolu formatter. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/haskell.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/haskell.nix) + + + +## languages.haskell.dev.formatter.package + + + +The ormolu package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.haskellPackages.ormolu ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/haskell.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/haskell.nix) + + + +## languages.haskell.dev.linter.enable + + + +Enable hlint linter. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/haskell.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/haskell.nix) + + + +## languages.haskell.dev.linter.package + + + +The hlint package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.haskellPackages.hlint ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/haskell.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/haskell.nix) + + + +## languages.haskell.dev.lsp.enable + + + +Enable haskell-language-server language server. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/haskell.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/haskell.nix) + + + +## languages.haskell.dev.lsp.package + + + +The haskell-language-server package to use. + + + +*Type:* +package + + + +*Default:* + +``` +pkgs.haskell-language-server.override { + supportedGhcVersions = [ ghcVersion ]; +} + +``` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/haskell.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/haskell.nix) + + + +## languages.haskell.stack + + + +Haskell stack to use. + + + +*Type:* +null or package + + + +*Default:* +` pkgs.stack ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/haskell.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/haskell.nix) + + + +## languages.idris.enable + + + +Whether to enable tools for Idris development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/idris.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/idris.nix) + + + +## languages.idris.package + + + +The Idris package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.idris2 ` + + + +*Example:* +` pkgs.idris ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/idris.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/idris.nix) + + + +## languages.idris.lsp.enable + + + +Whether to enable Idris language server. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/idris.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/idris.nix) + + + +## languages.idris.lsp.package + + + +Idris language server package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.idris2Packages.idris2Lsp ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/idris.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/idris.nix) + + + +## languages.java.enable + + + +Whether to enable tools for Java development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix) + + + +## languages.java.dev.enable + + + +Enable Java development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix) + + + +## languages.java.dev.debugger.enable + + + +Enable java-debug debugger. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix) + + + +## languages.java.dev.debugger.package + + + +The java-debug package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.java-debug ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix) + + + +## languages.java.dev.formatter.enable + + + +Enable google-java-format formatter. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix) + + + +## languages.java.dev.formatter.package + + + +The google-java-format package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.google-java-format ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix) + + + +## languages.java.dev.lsp.enable + + + +Enable jdt-language-server language server. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix) + + + +## languages.java.dev.lsp.package + + + +The jdt-language-server package to use. + +By default, this uses Eclipse JDT Language Server, which is the most popular +and feature-rich Java LSP implementation. + +Alternative LSP servers available in nixpkgs: + + - vscode-extensions.redhat.java (Red Hat’s Java extension which includes JDT LS) + - metals (for Scala/Java projects) + +Note: vscode-javac and Apache NetBeans Java LSP are not currently packaged in nixpkgs. + + + +*Type:* +package + + + +*Default:* +` pkgs.jdt-language-server ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix) + + + +## languages.java.gradle.enable + + + +Whether to enable gradle. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix) + + + +## languages.java.gradle.package + + + +The Gradle package to use. +The Gradle package by default inherits the JDK from ` languages.java.jdk.package `. + + + +*Type:* +package + + + +*Default:* +` pkgs.gradle.override { java = cfg.jdk.package; } ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix) + + + +## languages.java.jdk.package + + + +The JDK package to use. +This will also become available as ` JAVA_HOME `. + + + +*Type:* +package + + + +*Default:* +` pkgs.jdk ` + + + +*Example:* +` pkgs.jdk8 ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix) + + + +## languages.java.maven.enable + + + +Whether to enable maven. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix) + + + +## languages.java.maven.package + + + +The Maven package to use. +The Maven package by default inherits the JDK from ` languages.java.jdk.package `. + + + +*Type:* +package + + + +*Default:* +` pkgs.maven.override { jdk_headless = cfg.jdk.package; } ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/java.nix) + + + +## languages.javascript.enable + + + +Whether to enable tools for JavaScript development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + + + +## languages.javascript.package + + + +The Node.js package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.nodejs-slim ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + + + +## languages.javascript.bun.enable + + + +Whether to enable install bun. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + + + +## languages.javascript.bun.package + + + +The bun package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.bun ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + + + +## languages.javascript.bun.install.enable + + + +Whether to enable bun install during devenv initialisation. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + + + +## languages.javascript.corepack.enable + + + +Whether to enable wrappers for npm, pnpm and Yarn via Node.js Corepack. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + + + +## languages.javascript.dev.enable + + + +Enable JavaScript development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + + + +## languages.javascript.dev.formatter.enable + + + +Enable prettier formatter. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + + + +## languages.javascript.dev.formatter.package + + + +The Prettier package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.nodePackages.prettier ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + + + +## languages.javascript.dev.linter.enable + + + +Enable eslint linter. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + + + +## languages.javascript.dev.linter.package + + + +The ESLint package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.nodePackages.eslint ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + + + +## languages.javascript.dev.lsp.enable + + + +Enable typescript-language-server language server. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + + + +## languages.javascript.dev.lsp.package + + + +The TypeScript language server package to use. This wraps Microsoft’s tsserver and provides LSP support for both JavaScript and TypeScript. + + + +*Type:* +package + + + +*Default:* +` pkgs.nodePackages.typescript-language-server ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + + + +## languages.javascript.directory + + + +The JavaScript project’s root directory. Defaults to the root of the devenv project. +Can be an absolute path or one relative to the root of the devenv project. + + + +*Type:* +string + + + +*Default:* +` config.devenv.root ` + + + +*Example:* +` "./directory" ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + + + +## languages.javascript.npm.enable + + + +Whether to enable install npm. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + + + +## languages.javascript.npm.package + + + +The Node.js package to use. + + + +*Type:* +package + + + +*Default:* +` languages.javascript.package ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + + + +## languages.javascript.npm.install.enable + + + +Whether to enable npm install during devenv initialisation. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + + + +## languages.javascript.pnpm.enable + + + +Whether to enable install pnpm. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + + + +## languages.javascript.pnpm.package + + + +The pnpm package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.nodePackages.pnpm ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + + + +## languages.javascript.pnpm.install.enable + + + +Whether to enable pnpm install during devenv initialisation. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + + + +## languages.javascript.yarn.enable + + + +Whether to enable install yarn. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + + + +## languages.javascript.yarn.package + + + +The yarn package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.yarn ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + + + +## languages.javascript.yarn.install.enable + + + +Whether to enable yarn install during devenv initialisation. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/javascript.nix) + + + +## languages.jsonnet.enable + + + +Whether to enable tools for jsonnet development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/jsonnet.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/jsonnet.nix) + + + +## languages.jsonnet.lsp.enable + + + +Whether to enable Jsonnet language server. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/jsonnet.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/jsonnet.nix) + + + +## languages.jsonnet.lsp.package + + + +Jsonnet language server package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.jsonnet-language-server ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/jsonnet.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/jsonnet.nix) + + + +## languages.julia.enable + + + +Whether to enable tools for Julia development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/julia.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/julia.nix) + + + +## languages.julia.package + + + +The Julia package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.julia-bin ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/julia.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/julia.nix) + + + +## languages.julia.dev.enable + + + +Enable Julia development tools. + +Note: Julia development tools like LanguageServer.jl and JuliaFormatter.jl +are typically installed via Julia’s package manager (Pkg), not through nixpkgs. + +To install these tools, run the following in a Julia REPL: + +```julia +using Pkg +Pkg.add("LanguageServer") +Pkg.add("JuliaFormatter") +``` + +For VS Code users, the Julia extension will automatically install the language server. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/julia.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/julia.nix) + + + +## languages.kotlin.enable + + + +Whether to enable tools for Kotlin development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/kotlin.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/kotlin.nix) + + + +## languages.kotlin.dev.enable + + + +Enable Kotlin development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/kotlin.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/kotlin.nix) + + + +## languages.kotlin.dev.formatter.enable + + + +Enable ktlint formatter. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/kotlin.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/kotlin.nix) + + + +## languages.kotlin.dev.formatter.package + + + +The ktlint package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.ktlint ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/kotlin.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/kotlin.nix) + + + +## languages.kotlin.dev.lsp.enable + + + +Enable Kotlin language server. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/kotlin.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/kotlin.nix) + + + +## languages.kotlin.dev.lsp.package + + + +The kotlin-language-server package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.kotlin-language-server ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/kotlin.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/kotlin.nix) + + + +## languages.lean4.enable + + + +Whether to enable tools for lean4 development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/lean4.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/lean4.nix) + + + +## languages.lean4.package + + + +The lean4 package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.lean4 ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/lean4.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/lean4.nix) + + + +## languages.lean4.lsp.enable + + + +Enable Lean 4 language server support. +The language server is included with the main Lean 4 package. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/lean4.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/lean4.nix) + + + +## languages.lua.enable + + + +Whether to enable tools for Lua development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/lua.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/lua.nix) + + + +## languages.lua.package + + + +The Lua package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.lua ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/lua.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/lua.nix) + + + +## languages.lua.dev.enable + + + +Enable Lua development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/lua.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/lua.nix) + + + +## languages.lua.dev.formatter.enable + + + +Enable Lua formatter (stylua). + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/lua.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/lua.nix) + + + +## languages.lua.dev.formatter.package + + + +The stylua package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.stylua ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/lua.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/lua.nix) + + + +## languages.lua.dev.lsp.enable + + + +Enable Lua language server. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/lua.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/lua.nix) + + + +## languages.lua.dev.lsp.package + + + +The lua-language-server package to use. + +lua-language-server (LuaLS) is the most popular and actively maintained LSP for Lua. + +Alternative LSPs available in nixpkgs: + + - lua-lsp: Earlier implementation by Alloyed + - EmmyLua-LanguageServer: IntelliJ-based LSP (not available in nixpkgs) + + + +*Type:* +package + + + +*Default:* +` pkgs.lua-language-server ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/lua.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/lua.nix) + + + +## languages.matlab.enable + + + +Whether to enable tools for MATLAB development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix) + + + +## languages.matlab.package + + + +The MATLAB-compatible interpreter package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.octave or pkgs.scilab-bin ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix) + + + +## languages.matlab.alternatives.maxima.enable + + + +Include Maxima computer algebra system. + + + +*Type:* +boolean + + + +*Default:* +` false ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix) + + + +## languages.matlab.alternatives.maxima.package + + + +The Maxima package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.maxima ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix) + + + +## languages.matlab.alternatives.sage.enable + + + +Include SageMath as an alternative mathematical computing environment. + + + +*Type:* +boolean + + + +*Default:* +` false ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix) + + + +## languages.matlab.alternatives.sage.package + + + +The SageMath package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.sage ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix) + + + +## languages.matlab.dev.enable + + + +Enable MATLAB development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix) + + + +## languages.matlab.dev.fileFormat.enable + + + +Enable MATLAB file format support tools. + + + +*Type:* +boolean + + + +*Default:* +` false ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix) + + + +## languages.matlab.dev.fileFormat.matio.enable + + + +Enable matio library for reading/writing MATLAB MAT files. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix) + + + +## languages.matlab.dev.fileFormat.matio.package + + + +The matio package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.matio ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix) + + + +## languages.matlab.dev.formatter.enable + + + +Enable matlab formatter. + + + +*Type:* +boolean + + + +*Default:* +` false ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix) + + + +## languages.matlab.dev.ide.enable + + + +Enable IDE support for scientific computing. + + + +*Type:* +boolean + + + +*Default:* +` false ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix) + + + +## languages.matlab.dev.ide.spyder.enable + + + +Enable Spyder IDE (MATLAB-like IDE for Python/scientific computing). + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix) + + + +## languages.matlab.dev.ide.spyder.package + + + +The Spyder IDE package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.spyder ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix) + + + +## languages.matlab.dev.jupyter.enable + + + +Enable Jupyter kernel support for MATLAB/Octave. + + + +*Type:* +boolean + + + +*Default:* +` false ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix) + + + +## languages.matlab.dev.jupyter.octaveKernel.enable + + + +Enable Octave Jupyter kernel when using Octave interpreter. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix) + + + +## languages.matlab.dev.jupyter.octaveKernel.package + + + +The Octave Jupyter kernel package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.octave-kernel ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix) + + + +## languages.matlab.dev.linter.enable + + + +Enable matlab linter. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix) + + + +## languages.matlab.dev.linter.missHit.enable + + + +Enable miss-hit linter. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix) + + + +## languages.matlab.dev.linter.missHit.package + + + +The miss-hit package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.python3Packages.miss-hit ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix) + + + +## languages.matlab.dev.lsp.enable + + + +Enable matlab-language-server language server. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix) + + + +## languages.matlab.dev.lsp.package + + + +The MATLAB language server package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.matlab-language-server ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix) + + + +## languages.matlab.interpreter + + + +MATLAB-compatible interpreter to use. + + + +*Type:* +one of “octave”, “scilab” + + + +*Default:* +` "octave" ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix) + + + +## languages.matlab.octavePackages + + + +List of Octave packages to install when using Octave interpreter. + + + +*Type:* +list of package + + + +*Default:* +` [ ] ` + + + +*Example:* + +``` +with pkgs.octavePackages; [ + statistics + signal + control + symbolic + image +] + +``` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/matlab.nix) + + + +## languages.nim.enable + + + +Whether to enable tools for Nim development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/nim.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/nim.nix) + + + +## languages.nim.package + + + +The Nim package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.nim ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/nim.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/nim.nix) + + + +## languages.nim.dev.enable + + + +Enable Nim development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/nim.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/nim.nix) + + + +## languages.nim.dev.formatter.enable + + + +Enable nimpretty formatter. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/nim.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/nim.nix) + + + +## languages.nim.dev.lsp.enable + + + +Enable Nim language server (nimlangserver). + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/nim.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/nim.nix) + + + +## languages.nim.dev.lsp.package + + + +The nimlangserver package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.nimlangserver ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/nim.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/nim.nix) + + + +## languages.nix.enable + + + +Whether to enable tools for Nix development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/nix.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/nix.nix) + + + +## languages.nix.dev.enable + + + +Enable Nix development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/nix.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/nix.nix) + + + +## languages.nix.dev.formatter.enable + + + +Enable nixpkgs-fmt formatter. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/nix.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/nix.nix) + + + +## languages.nix.dev.formatter.package + + + +The nixpkgs-fmt package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.nixpkgs-fmt ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/nix.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/nix.nix) + + + +## languages.nix.dev.linter.enable + + + +Enable statix linter. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/nix.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/nix.nix) + + + +## languages.nix.dev.linter.package + + + +The statix package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.statix ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/nix.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/nix.nix) + + + +## languages.nix.dev.lsp.enable + + + +Enable Nix language server (nil). + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/nix.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/nix.nix) + + + +## languages.nix.dev.lsp.package + + + +The nil package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.nil ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/nix.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/nix.nix) + + + +## languages.nix.dev.tools.deadnix.enable + + + +Enable deadnix. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/nix.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/nix.nix) + + + +## languages.nix.dev.tools.deadnix.package + + + +The deadnix package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.deadnix ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/nix.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/nix.nix) + + + +## languages.nix.dev.tools.vulnix.enable + + + +Enable vulnix. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/nix.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/nix.nix) + + + +## languages.nix.dev.tools.vulnix.package + + + +The vulnix package to use. + + + +*Type:* +package + + + +*Default:* +` vulnix ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/nix.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/nix.nix) + + + +## languages.ocaml.enable + + + +Whether to enable tools for OCaml development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix) + + + +## languages.ocaml.packages + + + +The package set of OCaml to use + + + +*Type:* +attribute set + + + +*Default:* +` pkgs.ocaml-ng.ocamlPackages_4_12 ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix) + + + +## languages.ocaml.dev.enable + + + +Enable OCaml development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix) + + + +## languages.ocaml.dev.formatter.enable + + + +Enable OCaml formatter (ocamlformat). + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix) + + + +## languages.ocaml.dev.formatter.package + + + +The ocamlformat package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.ocamlformat ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix) + + + +## languages.ocaml.dev.lsp.enable + + + +Enable OCaml language server (ocaml-lsp). + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix) + + + +## languages.ocaml.dev.lsp.package + + + +The ocaml-lsp package to use. + + + +*Type:* +package + + + +*Default:* +` cfg.packages.ocaml-lsp ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix) + + + +## languages.ocaml.dev.tools.merlin.enable + + + +Enable Merlin editor service. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix) + + + +## languages.ocaml.dev.tools.merlin.package + + + +The merlin package to use. + + + +*Type:* +package + + + +*Default:* +` cfg.packages.merlin ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix) + + + +## languages.ocaml.dev.tools.ocp-indent.enable + + + +Enable ocp-indent indenter. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix) + + + +## languages.ocaml.dev.tools.ocp-indent.package + + + +The ocp-indent package to use. + + + +*Type:* +package + + + +*Default:* +` cfg.packages.ocp-indent ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix) + + + +## languages.ocaml.dev.tools.odoc.enable + + + +Enable odoc documentation generator. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix) + + + +## languages.ocaml.dev.tools.odoc.package + + + +The odoc package to use. + + + +*Type:* +package + + + +*Default:* +` cfg.packages.odoc ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix) + + + +## languages.ocaml.dev.tools.utop.enable + + + +Enable UTop REPL. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix) + + + +## languages.ocaml.dev.tools.utop.package + + + +The utop package to use. + + + +*Type:* +package + + + +*Default:* +` cfg.packages.utop ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ocaml.nix) + + + +## languages.odin.enable + + + +Whether to enable tools for Odin Language. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/odin.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/odin.nix) + + + +## languages.odin.package + + + +The odin package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.odin ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/odin.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/odin.nix) + + + +## languages.odin.dev.enable + + + +Enable Odin development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/odin.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/odin.nix) + + + +## languages.odin.dev.debugger.enable + + + +Enable gdb debugger. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/odin.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/odin.nix) + + + +## languages.odin.dev.debugger.package + + + +The gdb package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.gdb ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/odin.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/odin.nix) + + + +## languages.odin.dev.lsp.enable + + + +Enable Odin language server (ols). + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/odin.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/odin.nix) + + + +## languages.odin.dev.lsp.package + + + +The ols package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.ols ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/odin.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/odin.nix) + + + +## languages.opentofu.enable + + + +Whether to enable tools for OpenTofu development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/opentofu.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/opentofu.nix) + + + +## languages.opentofu.package + + + +The OpenTofu package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.opentofu ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/opentofu.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/opentofu.nix) + + + +## languages.opentofu.lsp.enable + + + +Whether to enable Terraform/OpenTofu language server. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/opentofu.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/opentofu.nix) + + + +## languages.opentofu.lsp.package + + + +Terraform/OpenTofu language server package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.terraform-lsp ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/opentofu.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/opentofu.nix) + + + +## languages.pascal.enable + + + +Whether to enable tools for Pascal development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/pascal.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/pascal.nix) + + + +## languages.pascal.dev.enable + + + +Enable Pascal development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/pascal.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/pascal.nix) + + + +## languages.pascal.dev.lsp.enable + + + +Enable Pascal language server. + + + +*Type:* +boolean + + + +*Default:* +` false ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/pascal.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/pascal.nix) + + + +## languages.pascal.lazarus.enable + + + +Whether to enable lazarus graphical IDE for the FreePascal language. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/pascal.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/pascal.nix) + + + +## languages.perl.enable + + + +Whether to enable tools for Perl development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/perl.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/perl.nix) + + + +## languages.perl.packages + + + +Perl packages to include + + + +*Type:* +list of string + + + +*Default:* +` [ ] ` + + + +*Example:* + +``` +[ + "Mojolicious" +] +``` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/perl.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/perl.nix) + + + +## languages.perl.dev.enable + + + +Enable Perl development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/perl.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/perl.nix) + + + +## languages.perl.dev.formatter.enable + + + +Enable Perl formatter (perltidy). + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/perl.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/perl.nix) + + + +## languages.perl.dev.formatter.package + + + +The perltidy package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.perlPackages.PerlTidy ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/perl.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/perl.nix) + + + +## languages.perl.dev.lsp.enable + + + +Enable Perl language server (PerlLanguageServer). + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/perl.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/perl.nix) + + + +## languages.perl.dev.lsp.package + + + +The PerlLanguageServer package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.perlPackages.PerlLanguageServer ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/perl.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/perl.nix) + + + +## languages.php.enable + + + +Whether to enable tools for PHP development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + + + +## languages.php.package + + + +Allows you to [override the default used package](https://nixos.org/manual/nixpkgs/stable/\#ssec-php-user-guide) +to adjust the settings or add more extensions. You can find the +extensions using ` devenv search 'php extensions' ` + + + +*Type:* +package + + + +*Default:* +` pkgs.php ` + + + +*Example:* + +``` +pkgs.php.buildEnv { + extensions = { all, enabled }: with all; enabled ++ [ xdebug ]; + extraConfig = '' + memory_limit=1G + ''; +}; + +``` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + + + +## languages.php.packages + + + +Attribute set of packages including composer + + + +*Type:* +submodule + + + +*Default:* +` pkgs ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + + + +## languages.php.packages.composer + + + +composer package + + + +*Type:* +null or package + + + +*Default:* +` pkgs.phpPackages.composer ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + + + +## languages.php.dev.enable + + + +Enable PHP development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + + + +## languages.php.dev.formatter.enable + + + +Enable PHP formatter (php-cs-fixer). + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + + + +## languages.php.dev.formatter.package + + + +The php-cs-fixer package to use. + + + +*Type:* +package + + + +*Default:* +` cfg.package.packages.php-cs-fixer ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + + + +## languages.php.dev.linter.enable + + + +Enable PHP linter (psalm). + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + + + +## languages.php.dev.linter.package + + + +The psalm package to use. + + + +*Type:* +package + + + +*Default:* +` cfg.package.packages.psalm ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + + + +## languages.php.dev.lsp.enable + + + +Enable PHP language server (phpactor). + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + + + +## languages.php.dev.lsp.package + + + +The PHP language server package to use. + +Available options: + + - pkgs.phpactor: Open source LSP with good refactoring support (default) + - pkgs.php-language-server: Felix Becker’s PHP language server + - pkgs.intelephense: Proprietary but very popular, requires license for full features + +Note: Intelephense is proprietary software but is widely considered the most +feature-complete PHP LSP. It requires a license for advanced features. +Phpactor is a good open-source alternative with strong refactoring capabilities. + + + +*Type:* +package + + + +*Default:* +` pkgs.phpactor ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + + + +## languages.php.disableExtensions + + + +PHP extensions to disable. + + + +*Type:* +list of string + + + +*Default:* +` [ ] ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + + + +## languages.php.extensions + + + +PHP extensions to enable. + + + +*Type:* +list of string + + + +*Default:* +` [ ] ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + + + +## languages.php.fpm.extraConfig + + + +Extra configuration that should be put in the global section of +the PHP-FPM configuration file. Do not specify the options +` error_log ` or ` daemonize ` here, since they are generated by +NixOS. + + + +*Type:* +null or strings concatenated with “\\n” + + + +*Default:* +` null ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + + + +## languages.php.fpm.phpOptions + + + +Options appended to the PHP configuration file ` php.ini `. + + + +*Type:* +strings concatenated with “\\n” + + + +*Default:* +` "" ` + + + +*Example:* + +``` +'' + date.timezone = "CET" +'' +``` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + + + +## languages.php.fpm.pools + + + +PHP-FPM pools. If no pools are defined, the PHP-FPM +service is disabled. + + + +*Type:* +attribute set of (submodule) + + + +*Default:* +` { } ` + + + +*Example:* + +``` +{ + mypool = { + user = "php"; + group = "php"; + phpPackage = pkgs.php; + settings = { + "pm" = "dynamic"; + "pm.max_children" = 75; "pm.start_servers" = 10; "pm.min_spare_servers" = 5; "pm.max_spare_servers" = 20; @@ -13857,258 +19477,2527 @@ attribute set of (submodule) ``` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + + + +## languages.php.fpm.pools.\.extraConfig + + + +Extra lines that go into the pool configuration. +See the documentation on ` php-fpm.conf ` for +details on configuration directives. + + + +*Type:* +null or strings concatenated with “\\n” + + + +*Default:* +` null ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + + + +## languages.php.fpm.pools.\.listen + + + +The address on which to accept FastCGI requests. + + + +*Type:* +string + + + +*Default:* +` "" ` + + + +*Example:* +` "/path/to/unix/socket" ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + + + +## languages.php.fpm.pools.\.phpEnv + + + +Environment variables used for this PHP-FPM pool. + + + +*Type:* +attribute set of string + + + +*Default:* +` { } ` + + + +*Example:* + +``` +{ + HOSTNAME = "$HOSTNAME"; + TMP = "/tmp"; + TMPDIR = "/tmp"; + TEMP = "/tmp"; +} + +``` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + + + +## languages.php.fpm.pools.\.phpOptions + + + +Options appended to the PHP configuration file ` php.ini ` used for this PHP-FPM pool. + + + +*Type:* +strings concatenated with “\\n” + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + + + +## languages.php.fpm.pools.\.phpPackage + + + +The PHP package to use for running this PHP-FPM pool. + + + +*Type:* +package + + + +*Default:* +` phpfpm.phpPackage ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + + + +## languages.php.fpm.pools.\.settings + + + +PHP-FPM pool directives. Refer to the “List of pool directives” section of +[https://www.php.net/manual/en/install.fpm.configuration.php"](https://www.php.net/manual/en/install.fpm.configuration.php%22) +the manual for details. Note that settings names must be +enclosed in quotes (e.g. ` "pm.max_children" ` instead of +` pm.max_children `). + + + +*Type:* +attribute set of (string or signed integer or boolean) + + + +*Default:* +` { } ` + + + +*Example:* + +``` +{ + "pm" = "dynamic"; + "pm.max_children" = 75; + "pm.start_servers" = 10; + "pm.min_spare_servers" = 5; + "pm.max_spare_servers" = 20; + "pm.max_requests" = 500; +} + +``` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + + + +## languages.php.fpm.pools.\.socket + + + +Path to the Unix socket file on which to accept FastCGI requests. + +This option is read-only and managed by NixOS. + + + +*Type:* +string *(read only)* + + + +*Example:* +` config.env.DEVENV_STATE + "/php-fpm/.sock" ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + + + +## languages.php.fpm.settings + + + +PHP-FPM global directives. + +Refer to the “List of global php-fpm.conf directives” section of +[https://www.php.net/manual/en/install.fpm.configuration.php](https://www.php.net/manual/en/install.fpm.configuration.php) +for details. + +Note that settings names must be enclosed in +quotes (e.g. ` "pm.max_children" ` instead of ` pm.max_children `). + +You need not specify the options ` error_log ` or ` daemonize ` here, since +they are already set. + + + +*Type:* +attribute set of (string or signed integer or boolean) + + + +*Default:* + +``` +{ + error_log = config.env.DEVENV_STATE + "/php-fpm/php-fpm.log"; +} + +``` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + + + +## languages.php.ini + + + +PHP.ini directives. Refer to the “List of php.ini directives” of PHP’s + + + +*Type:* +null or strings concatenated with “\\n” + + + +*Default:* +` "" ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + + + +## languages.php.version + + + +The PHP version to use. + + + +*Type:* +string + + + +*Default:* +` "" ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + + + +## languages.purescript.enable + + + +Whether to enable tools for PureScript development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/purescript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/purescript.nix) + + + +## languages.purescript.package + + + +The PureScript package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.purescript ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/purescript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/purescript.nix) + + + +## languages.purescript.dev.enable + + + +Enable PureScript development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/purescript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/purescript.nix) + + + +## languages.purescript.dev.formatter.enable + + + +Enable purs-tidy formatter. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/purescript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/purescript.nix) + + + +## languages.purescript.dev.formatter.package + + + +The purs-tidy package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.nodePackages.purs-tidy ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/purescript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/purescript.nix) + + + +## languages.purescript.dev.lsp.enable + + + +Enable PureScript language server. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/purescript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/purescript.nix) + + + +## languages.purescript.dev.lsp.package + + + +The purescript-language-server package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.nodePackages.purescript-language-server ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/purescript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/purescript.nix) + + + +## languages.purescript.dev.tools.psa.enable + + + +Enable PureScript Assistant (psa). + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/purescript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/purescript.nix) + + + +## languages.purescript.dev.tools.psa.package + + + +The purescript-psa package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.purescript-psa ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/purescript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/purescript.nix) + + + +## languages.python.enable + + + +Whether to enable tools for Python development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.package + + + +The Python package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.python3 ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.dev.enable + + + +Enable Python development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.dev.debugger.enable + + + +Enable debugpy debugger. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.dev.debugger.package + + + +The debugpy package to use. + + + +*Type:* +package + + + +*Default:* +` cfg.package.pkgs.debugpy ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.dev.formatter.enable + + + +Enable black formatter. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.dev.formatter.package + + + +The black package to use. + + + +*Type:* +package + + + +*Default:* +` cfg.package.pkgs.black ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.dev.linter.enable + + + +Enable Ruff linter. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.dev.linter.package + + + +The ruff package to use. + + + +*Type:* +package + + + +*Default:* +` cfg.package.pkgs.ruff ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.dev.lsp.enable + + + +Enable python-lsp-server language server. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.dev.lsp.package + + + +The Python LSP package to use. Can be changed to pyright, jedi-language-server, or other LSP implementations. + + + +*Type:* +package + + + +*Default:* +` cfg.package.pkgs.python-lsp-server ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.dev.testRunner.enable + + + +Enable pytest test runner. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.dev.testRunner.package + + + +The pytest package to use. + + + +*Type:* +package + + + +*Default:* +` cfg.package.pkgs.pytest ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.dev.typeChecker.enable + + + +Enable mypy type checker. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.dev.typeChecker.package + + + +The mypy package to use. + + + +*Type:* +package + + + +*Default:* +` cfg.package.pkgs.mypy ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.directory + + + +The Python project’s root directory. Defaults to the root of the devenv project. +Can be an absolute path or one relative to the root of the devenv project. + + + +*Type:* +string + + + +*Default:* +` config.devenv.root ` + + + +*Example:* +` "./directory" ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.libraries + + + +Additional libraries to make available to the Python interpreter. + +This is useful when you want to use Python wheels that depend on native libraries. + + + +*Type:* +list of absolute path + + + +*Default:* + +``` +[ "${config.devenv.dotfile}/profile" ] + +``` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.manylinux.enable + + + +Whether to install manylinux2014 libraries. + +Enabled by default on linux; + +This is useful when you want to use Python wheels that depend on manylinux2014 libraries. + + + +*Type:* +boolean + + + +*Default:* +` false ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.poetry.enable + + + +Whether to enable poetry. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.poetry.package + + + +The Poetry package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.poetry ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.poetry.activate.enable + + + +Whether to activate the poetry virtual environment automatically. + + + +*Type:* +boolean + + + +*Default:* +` false ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.poetry.install.enable + + + +Whether to enable poetry install during devenv initialisation. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.poetry.install.allExtras + + + +Whether to install all extras. See ` --all-extras `. + + + +*Type:* +boolean + + + +*Default:* +` false ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.poetry.install.compile + + + +Whether ` poetry install ` should compile Python source files to bytecode. + + + +*Type:* +boolean + + + +*Default:* +` false ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.poetry.install.extras + + + +Which extras to install. See ` --extras `. + + + +*Type:* +list of string + + + +*Default:* +` [ ] ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.poetry.install.groups + + + +Which dependency groups to install. See ` --with `. + + + +*Type:* +list of string + + + +*Default:* +` [ ] ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.poetry.install.ignoredGroups + + + +Which dependency groups to ignore. See ` --without `. + + + +*Type:* +list of string + + + +*Default:* +` [ ] ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.poetry.install.installRootPackage + + + +Whether the root package (your project) should be installed. See ` --no-root ` + + + +*Type:* +boolean + + + +*Default:* +` false ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.poetry.install.onlyGroups + + + +Which dependency groups to exclusively install. See ` --only `. + + + +*Type:* +list of string + + + +*Default:* +` [ ] ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.poetry.install.onlyInstallRootPackage + + + +Whether to only install the root package (your project) should be installed, but no dependencies. See ` --only-root ` + + + +*Type:* +boolean + + + +*Default:* +` false ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.poetry.install.quiet + + + +Whether ` poetry install ` should avoid outputting messages during devenv initialisation. + + + +*Type:* +boolean + + + +*Default:* +` false ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.poetry.install.verbosity + + + +What level of verbosity the output of ` poetry install ` should have. + + + +*Type:* +one of “no”, “little”, “more”, “debug” + + + +*Default:* +` "no" ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.uv.enable + + + +Whether to enable uv. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.uv.package + + + +The uv package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.uv ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.uv.sync.enable + + + +Whether to enable uv sync during devenv initialisation. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.uv.sync.allExtras + + + +Whether to install all extras. See ` --all-extras `. + + + +*Type:* +boolean + + + +*Default:* +` false ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.uv.sync.extras + + + +Which extras to install. See ` --extra `. + + + +*Type:* +list of string + + + +*Default:* +` [ ] ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.uv.sync.groups + + + +Which dependency groups to install. See ` --group `. + + + +*Type:* +list of string + + + +*Default:* +` [ ] ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.venv.enable + + + +Whether to enable Python virtual environment. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.venv.quiet + + + +Whether ` pip install ` should avoid outputting messages during devenv initialisation. + + + +*Type:* +boolean + + + +*Default:* +` false ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.venv.requirements + + + +Contents of pip requirements.txt file. +This is passed to ` pip install -r ` during ` devenv shell ` initialisation. + + + +*Type:* +null or strings concatenated with “\\n” or absolute path + + + +*Default:* +` null ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.python.version + + + +The Python version to use. +This automatically sets the ` languages.python.package ` using [nixpkgs-python](https://github.com/cachix/nixpkgs-python). + + + +*Type:* +null or string + + + +*Default:* +` null ` + + + +*Example:* +` "3.11 or 3.11.2" ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + + + +## languages.r.enable + + + +Whether to enable tools for R development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/r.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/r.nix) + + + +## languages.r.package + + + +The R package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.R ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/r.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/r.nix) + + + +## languages.r.dev.enable + + + +Enable R development tools. + +Note: R development tools like languageserver (LSP), styler (formatter), +and lintr (linter) are typically installed via R’s package manager. + +To install these tools, run R and execute: +install.packages(c(“languageserver”, “styler”, “lintr”)) + +For more tools, consider: + + - dev: for package development + - testthat: for unit testing + - roxygen2: for documentation generation + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/r.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/r.nix) + + + +## languages.r.radian.enable + + + +Whether to enable a 21 century R console. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/r.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/r.nix) + + + +## languages.r.radian.package + + + +The radian package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.radianWrapper ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/r.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/r.nix) + + + +## languages.racket.enable + + + +Whether to enable tools for Racket development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/racket.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/racket.nix) + + + +## languages.racket.package + + + +The Racket package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.racket-minimal ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/racket.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/racket.nix) + + + +## languages.racket.dev.enable + + + +Enable Racket development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/racket.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/racket.nix) + + + +## languages.racket.dev.lsp.enable + + + +Enable Racket language server. + + + +*Type:* +boolean + + + +*Default:* +` false ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/racket.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/racket.nix) + + + +## languages.raku.enable + + + +Whether to enable tools for Raku development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/raku.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/raku.nix) + + + +## languages.raku.dev.enable + + + +Enable Raku development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/raku.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/raku.nix) + + + +## languages.raku.dev.lsp.enable + + + +Enable Raku language server. + + + +*Type:* +boolean + + + +*Default:* +` false ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/raku.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/raku.nix) + + + +## languages.robotframework.enable + + + +Whether to enable tools for Robot Framework development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/robotframework.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/robotframework.nix) + + + +## languages.robotframework.dev.enable + + + +Enable Robot Framework development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/robotframework.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/robotframework.nix) + + + +## languages.robotframework.dev.lsp.enable + + + +Enable Robot Framework language server. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/robotframework.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/robotframework.nix) + + + +## languages.robotframework.dev.lsp.package + + + +The robotframework-lsp package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.python3Packages.robotframework-lsp ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/robotframework.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/robotframework.nix) + + + +## languages.robotframework.python + + + +The Python package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.python3 ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/robotframework.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/robotframework.nix) + + + +## languages.ruby.enable + + + +Whether to enable tools for Ruby development. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix) + + + +## languages.ruby.package + + + +The Ruby package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.ruby_3_1 ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix) + + + +## languages.ruby.bundler.enable + + + +Whether to enable bundler. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix) + + + +## languages.ruby.bundler.package + + + +The bundler package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.bundler.override { ruby = cfg.package; } ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix) + + + +## languages.ruby.dev.enable + + + +Enable Ruby development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix) + + + +## languages.ruby.dev.formatter.enable + + + +Enable Ruby formatter (rubocop). + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix) + + + +## languages.ruby.dev.formatter.package + + + +The rubocop package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.rubyPackages.rubocop ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix) + + + +## languages.ruby.dev.linter.enable + + + +Enable Ruby linter (rubocop). + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix) + + + +## languages.ruby.dev.linter.package + + + +The rubocop package to use. + + + +*Type:* +package + + + +*Default:* +` pkgs.rubyPackages.rubocop ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix) + + + +## languages.ruby.dev.lsp.enable + + + +Enable Ruby language server (solargraph). + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix) + + + +## languages.ruby.dev.lsp.package + + + +The Ruby language server package to use. + +Available options: + + - ` pkgs.rubyPackages.solargraph ` (default): Mature, feature-rich LSP by Fred Snyder + - ` pkgs.rubyPackages.ruby-lsp `: Newer LSP by Shopify, actively developed + +To switch to ruby-lsp, use: + +```nix +languages.ruby.dev.lsp.package = pkgs.rubyPackages.ruby-lsp; +``` + + + +*Type:* +package + + + +*Default:* +` pkgs.rubyPackages.solargraph ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix) + + + +## languages.ruby.version + + + +The Ruby version to use. +This automatically sets the ` languages.ruby.package ` using [nixpkgs-ruby](https://github.com/bobvanderlinden/nixpkgs-ruby). + + + +*Type:* +null or string + + + +*Default:* +` null ` + + + +*Example:* +` "3.2.1" ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix) -## languages.php.fpm.pools.\.extraConfig +## languages.ruby.versionFile -Extra lines that go into the pool configuration. -See the documentation on ` php-fpm.conf ` for -details on configuration directives. +The .ruby-version file path to extract the Ruby version from. +This automatically sets the ` languages.ruby.package ` using [nixpkgs-ruby](https://github.com/bobvanderlinden/nixpkgs-ruby). +When the ` .ruby-version ` file exists in the same directory as the devenv configuration, you can use: + +```nix +languages.ruby.versionFile = ./.ruby-version; +``` *Type:* -null or strings concatenated with “\\n” +null or absolute path *Default:* ` null ` + + +*Example:* + +``` +./ruby-version + +``` + *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix) -## languages.php.fpm.pools.\.listen +## languages.rust.enable -The address on which to accept FastCGI requests. +Whether to enable tools for Rust development. *Type:* -string +boolean *Default:* -` "" ` +` false ` *Example:* -` "/path/to/unix/socket" ` +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) + + + +## languages.rust.channel + + + +The rustup toolchain to install. + + + +*Type:* +one of “nixpkgs”, “stable”, “beta”, “nightly” + + + +*Default:* +` "nixpkgs" ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) + + + +## languages.rust.components + + + +List of [Rustup components](https://rust-lang.github.io/rustup/concepts/components.html) +to install. Defaults to core components only. Development tools like clippy, rustfmt, +and rust-analyzer are controlled by the dev options. + + + +*Type:* +list of string + + + +*Default:* +` [ "rustc" "cargo" ] ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) + + + +## languages.rust.dev.enable + + + +Enable Rust development tools. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) + + + +## languages.rust.dev.formatter.enable + + + +Enable rustfmt formatter. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) + + + +## languages.rust.dev.formatter.package + + + +The rustfmt package to use. + + + +*Type:* +package + + + +*Default:* +` cfg.toolchain.rustfmt or pkgs.rustfmt ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) + + + +## languages.rust.dev.linter.enable + + + +Enable clippy linter. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) + + + +## languages.rust.dev.linter.package + + + +The clippy package to use. + + + +*Type:* +package + + + +*Default:* +` cfg.toolchain.clippy or pkgs.clippy ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) + + + +## languages.rust.dev.lsp.enable + + + +Enable rust-analyzer language server. + + + +*Type:* +boolean + + + +*Default:* +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) + + + +## languages.rust.dev.lsp.package + + + +The rust-analyzer package to use. + + + +*Type:* +package + + + +*Default:* +` cfg.toolchain.rust-analyzer or pkgs.rust-analyzer ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) + + + +## languages.rust.mold.enable + + + +Enable mold as the linker. + +Enabled by default on x86_64 Linux machines when no cross-compilation targets are specified. + + + +*Type:* +boolean + + + +*Default:* +` pkgs.stdenv.isLinux && pkgs.stdenv.isx86_64 && languages.rust.targets == [ ] ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) + + + +## languages.rust.rustflags + + + +Extra flags to pass to the Rust compiler. + + + +*Type:* +string + + + +*Default:* +` "" ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) -## languages.php.fpm.pools.\.phpEnv +## languages.rust.targets -Environment variables used for this PHP-FPM pool. +List of extra [targets](https://doc.rust-lang.org/nightly/rustc/platform-support.html) +to install. Defaults to only the native target. *Type:* -attribute set of string +list of string *Default:* -` { } ` - - +` [ ] ` -*Example:* +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) -``` -{ - HOSTNAME = "$HOSTNAME"; - TMP = "/tmp"; - TMPDIR = "/tmp"; - TEMP = "/tmp"; -} -``` -*Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) +## languages.rust.toolchain -## languages.php.fpm.pools.\.phpOptions +Rust component packages. May optionally define additional components, for example ` miri `. -Options appended to the PHP configuration file ` php.ini ` used for this PHP-FPM pool. +*Type:* +attribute set of package -*Type:* -strings concatenated with “\\n” +*Default:* +` nixpkgs ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) -## languages.php.fpm.pools.\.phpPackage +## languages.rust.toolchain.cargo -The PHP package to use for running this PHP-FPM pool. +cargo package *Type:* -package +null or package *Default:* -` phpfpm.phpPackage ` +` pkgs.cargo ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) -## languages.php.fpm.pools.\.settings +## languages.rust.toolchain.clippy -PHP-FPM pool directives. Refer to the “List of pool directives” section of -[https://www.php.net/manual/en/install.fpm.configuration.php"](https://www.php.net/manual/en/install.fpm.configuration.php%22) -the manual for details. Note that settings names must be -enclosed in quotes (e.g. ` "pm.max_children" ` instead of -` pm.max_children `). +clippy package *Type:* -attribute set of (string or signed integer or boolean) +null or package *Default:* -` { } ` - - - -*Example:* - -``` -{ - "pm" = "dynamic"; - "pm.max_children" = 75; - "pm.start_servers" = 10; - "pm.min_spare_servers" = 5; - "pm.max_spare_servers" = 20; - "pm.max_requests" = 500; -} - -``` +` pkgs.clippy ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) - + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) -## languages.php.fpm.pools.\.socket +## languages.rust.toolchain.rust-analyzer -Path to the Unix socket file on which to accept FastCGI requests. -This option is read-only and managed by NixOS. +rust-analyzer package *Type:* -string *(read only)* +null or package -*Example:* -` config.env.DEVENV_STATE + "/php-fpm/.sock" ` +*Default:* +` pkgs.rust-analyzer ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) - - - -## languages.php.fpm.settings + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) -PHP-FPM global directives. +## languages.rust.toolchain.rustc -Refer to the “List of global php-fpm.conf directives” section of -[https://www.php.net/manual/en/install.fpm.configuration.php](https://www.php.net/manual/en/install.fpm.configuration.php) -for details. -Note that settings names must be enclosed in -quotes (e.g. ` "pm.max_children" ` instead of ` pm.max_children `). -You need not specify the options ` error_log ` or ` daemonize ` here, since -they are already set. +rustc package *Type:* -attribute set of (string or signed integer or boolean) +null or package *Default:* - -``` -{ - error_log = config.env.DEVENV_STATE + "/php-fpm/php-fpm.log"; -} - -``` +` pkgs.rustc ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) -## languages.php.ini +## languages.rust.toolchain.rustfmt -PHP.ini directives. Refer to the “List of php.ini directives” of PHP’s +rustfmt package *Type:* -null or strings concatenated with “\\n” +null or package *Default:* -` "" ` +` pkgs.rustfmt ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) -## languages.php.version +## languages.rust.version -The PHP version to use. +Which version of rust to use, this value could be ` latest `,` 1.81.0 `, ` 2021-01-01 `. +Only works when languages.rust.channel is NOT nixpkgs. @@ -14118,18 +22007,18 @@ string *Default:* -` "" ` +` "latest" ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/php.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) -## languages.purescript.enable +## languages.scala.enable -Whether to enable tools for PureScript development. +Whether to enable tools for Scala development. @@ -14147,15 +22036,15 @@ boolean ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/purescript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/purescript.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix) -## languages.purescript.package +## languages.scala.package -The PureScript package to use. +The Scala package to use. @@ -14165,18 +22054,18 @@ package *Default:* -` pkgs.purescript ` +` pkgs.scala_3 ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/purescript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/purescript.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix) -## languages.python.enable +## languages.scala.dev.enable -Whether to enable tools for Python development. +Enable Scala development tools. @@ -14186,123 +22075,102 @@ boolean *Default:* -` false ` - - - -*Example:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix) -## languages.python.package +## languages.scala.dev.formatter.enable -The Python package to use. +Enable scalafmt formatter. *Type:* -package +boolean *Default:* -` pkgs.python3 ` +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix) -## languages.python.directory +## languages.scala.dev.formatter.package -The Python project’s root directory. Defaults to the root of the devenv project. -Can be an absolute path or one relative to the root of the devenv project. +The scalafmt package to use. *Type:* -string +package *Default:* -` config.devenv.root ` - - - -*Example:* -` "./directory" ` +` pkgs.scalafmt.override { jre = java.jdk.package; } ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) - + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix) -## languages.python.libraries +## languages.scala.dev.lsp.enable -Additional libraries to make available to the Python interpreter. -This is useful when you want to use Python wheels that depend on native libraries. +Enable Metals language server (the standard LSP for Scala). *Type:* -list of absolute path +boolean *Default:* - -``` -[ "${config.devenv.dotfile}/profile" ] - -``` +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) - - + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix) -## languages.python.manylinux.enable +## languages.scala.dev.lsp.package -Whether to install manylinux2014 libraries. -Enabled by default on linux; -This is useful when you want to use Python wheels that depend on manylinux2014 libraries. +The Metals package to use. Metals is the standard LSP implementation for Scala by Scalameta. *Type:* -boolean +package *Default:* -` false ` +` pkgs.metals.override { jre = java.jdk.package; } ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix) -## languages.python.poetry.enable +## languages.scala.mill.enable -Whether to enable poetry. +Whether to enable mill, a simplified, fast build tool for Scala. @@ -14320,15 +22188,15 @@ boolean ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix) -## languages.python.poetry.package +## languages.scala.mill.package -The Poetry package to use. +The mill package to use. @@ -14338,18 +22206,18 @@ package *Default:* -` pkgs.poetry ` +` pkgs.mill ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix) -## languages.python.poetry.activate.enable +## languages.scala.sbt.enable -Whether to activate the poetry virtual environment automatically. +Whether to enable sbt, the standard build tool for Scala. @@ -14361,42 +22229,47 @@ boolean *Default:* ` false ` + + +*Example:* +` true ` + *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix) -## languages.python.poetry.install.enable +## languages.scala.sbt.package -Whether to enable poetry install during devenv initialisation. +The sbt package to use. *Type:* -boolean +package *Default:* -` false ` +` pkgs.sbt ` *Example:* -` true ` +` sbt-with-scala-native ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix) -## languages.python.poetry.install.allExtras +## languages.shell.enable -Whether to install all extras. See ` --all-extras `. +Whether to enable tools for shell development. @@ -14408,16 +22281,21 @@ boolean *Default:* ` false ` + + +*Example:* +` true ` + *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/shell.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/shell.nix) -## languages.python.poetry.install.compile +## languages.shell.dev.enable -Whether ` poetry install ` should compile Python source files to bytecode. +Enable Shell development tools. @@ -14427,144 +22305,144 @@ boolean *Default:* -` false ` +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/shell.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/shell.nix) -## languages.python.poetry.install.extras +## languages.shell.dev.formatter.enable -Which extras to install. See ` --extras `. +Enable shfmt formatter. *Type:* -list of string +boolean *Default:* -` [ ] ` +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/shell.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/shell.nix) -## languages.python.poetry.install.groups +## languages.shell.dev.formatter.package -Which dependency groups to install. See ` --with `. +The shfmt package to use. *Type:* -list of string +package *Default:* -` [ ] ` +` pkgs.shfmt ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/shell.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/shell.nix) -## languages.python.poetry.install.ignoredGroups +## languages.shell.dev.linter.enable -Which dependency groups to ignore. See ` --without `. +Enable shellcheck linter. *Type:* -list of string +boolean *Default:* -` [ ] ` +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/shell.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/shell.nix) -## languages.python.poetry.install.installRootPackage +## languages.shell.dev.linter.package -Whether the root package (your project) should be installed. See ` --no-root ` +The shellcheck package to use. *Type:* -boolean +package *Default:* -` false ` +` pkgs.shellcheck ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/shell.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/shell.nix) -## languages.python.poetry.install.onlyGroups +## languages.shell.dev.lsp.enable -Which dependency groups to exclusively install. See ` --only `. +Enable bash language server. *Type:* -list of string +boolean *Default:* -` [ ] ` +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/shell.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/shell.nix) -## languages.python.poetry.install.onlyInstallRootPackage +## languages.shell.dev.lsp.package -Whether to only install the root package (your project) should be installed, but no dependencies. See ` --only-root ` +The bash-language-server package to use. *Type:* -boolean +package *Default:* -` false ` +` pkgs.nodePackages.bash-language-server ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/shell.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/shell.nix) -## languages.python.poetry.install.quiet +## languages.shell.dev.testRunner.enable -Whether ` poetry install ` should avoid outputting messages during devenv initialisation. +Enable bats test runner. @@ -14574,39 +22452,39 @@ boolean *Default:* -` false ` +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/shell.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/shell.nix) -## languages.python.poetry.install.verbosity +## languages.shell.dev.testRunner.package -What level of verbosity the output of ` poetry install ` should have. +The bats package to use. *Type:* -one of “no”, “little”, “more”, “debug” +package *Default:* -` "no" ` +` pkgs.bats.withLibraries (p: [ p.bats-assert p.bats-file p.bats-support ]) ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/shell.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/shell.nix) -## languages.python.uv.enable +## languages.solidity.enable -Whether to enable uv. +Whether to enable tools for Solidity development. @@ -14624,15 +22502,15 @@ boolean ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/solidity.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/solidity.nix) -## languages.python.uv.package +## languages.solidity.package -The uv package to use. +Which compiler of Solidity to use. @@ -14642,18 +22520,18 @@ package *Default:* -` pkgs.uv ` +` pkgs.solc ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/solidity.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/solidity.nix) -## languages.python.uv.sync.enable +## languages.solidity.dev.enable -Whether to enable uv sync during devenv initialisation. +Enable Solidity development tools. @@ -14663,23 +22541,18 @@ boolean *Default:* -` false ` - - - -*Example:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/solidity.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/solidity.nix) -## languages.python.uv.sync.allExtras +## languages.solidity.dev.lsp.enable -Whether to install all extras. See ` --all-extras `. +Enable Solidity language server. Note: No stable Solidity LSP is currently available in nixpkgs. @@ -14692,57 +22565,62 @@ boolean ` false ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/solidity.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/solidity.nix) -## languages.python.uv.sync.extras +## languages.solidity.foundry.enable -Which extras to install. See ` --extra `. +Whether to enable install Foundry. *Type:* -list of string +boolean *Default:* -` [ ] ` +` false ` + + + +*Example:* +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/solidity.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/solidity.nix) -## languages.python.uv.sync.groups +## languages.solidity.foundry.package -Which dependency groups to install. See ` --group `. +Which Foundry package to use. *Type:* -list of string +package *Default:* -` [ ] ` +` foundry.defaultPackage.$${pkgs.stdenv.system} ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/solidity.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/solidity.nix) -## languages.python.venv.enable +## languages.sql.enable -Whether to enable Python virtual environment. +Whether to enable tools for SQL development. @@ -14760,15 +22638,15 @@ boolean ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/sql.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/sql.nix) -## languages.python.venv.quiet +## languages.sql.dev.enable -Whether ` pip install ` should avoid outputting messages during devenv initialisation. +Enable SQL development tools. @@ -14778,67 +22656,60 @@ boolean *Default:* -` false ` +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/sql.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/sql.nix) -## languages.python.venv.requirements +## languages.sql.dev.formatter.enable -Contents of pip requirements.txt file. -This is passed to ` pip install -r ` during ` devenv shell ` initialisation. +Enable sqlfluff formatter. *Type:* -null or strings concatenated with “\\n” or absolute path +boolean *Default:* -` null ` +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/sql.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/sql.nix) -## languages.python.version +## languages.sql.dev.formatter.package -The Python version to use. -This automatically sets the ` languages.python.package ` using [nixpkgs-python](https://github.com/cachix/nixpkgs-python). +The sqlfluff package to use. *Type:* -null or string +package *Default:* -` null ` - - - -*Example:* -` "3.11 or 3.11.2" ` +` pkgs.sqlfluff ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/python.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/sql.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/sql.nix) -## languages.r.enable +## languages.sql.dev.linter.enable -Whether to enable tools for R development. +Enable sqlfluff linter. @@ -14848,23 +22719,18 @@ boolean *Default:* -` false ` - - - -*Example:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/r.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/r.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/sql.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/sql.nix) -## languages.r.package +## languages.sql.dev.linter.package -The R package to use. +The sqlfluff package to use. @@ -14874,18 +22740,18 @@ package *Default:* -` pkgs.R ` +` pkgs.sqlfluff ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/r.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/r.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/sql.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/sql.nix) -## languages.r.radian.enable +## languages.sql.dev.lsp.enable -Whether to enable a 21 century R console. +Enable sqls language server. @@ -14895,23 +22761,18 @@ boolean *Default:* -` false ` - - - -*Example:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/r.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/r.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/sql.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/sql.nix) -## languages.r.radian.package +## languages.sql.dev.lsp.package -The radian package to use. +The sqls package to use. @@ -14921,18 +22782,18 @@ package *Default:* -` pkgs.radianWrapper ` +` pkgs.sqls ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/r.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/r.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/sql.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/sql.nix) -## languages.racket.enable +## languages.standardml.enable -Whether to enable tools for Racket development. +Whether to enable tools for Standard ML development. @@ -14950,15 +22811,15 @@ boolean ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/racket.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/racket.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/standardml.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/standardml.nix) -## languages.racket.package +## languages.standardml.package -The Racket package to use. +The Standard ML package to use. @@ -14968,18 +22829,18 @@ package *Default:* -` pkgs.racket-minimal ` +` pkgs.mlton ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/racket.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/racket.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/standardml.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/standardml.nix) -## languages.raku.enable +## languages.standardml.dev.enable -Whether to enable tools for Raku development. +Enable Standard ML development tools. @@ -14989,49 +22850,81 @@ boolean *Default:* -` false ` +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/standardml.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/standardml.nix) -*Example:* +## languages.standardml.dev.formatter.enable + + + +Enable Standard ML formatter (smlfmt). + + + +*Type:* +boolean + + + +*Default:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/raku.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/raku.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/standardml.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/standardml.nix) -## languages.robotframework.enable +## languages.standardml.dev.formatter.package -Whether to enable tools for Robot Framework development. +The smlfmt package to use. *Type:* -boolean +package *Default:* -` false ` +` pkgs.smlfmt ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/standardml.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/standardml.nix) -*Example:* +## languages.standardml.dev.lsp.enable + + + +Enable Standard ML language server (millet). + + + +*Type:* +boolean + + + +*Default:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/robotframework.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/robotframework.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/standardml.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/standardml.nix) -## languages.robotframework.python +## languages.standardml.dev.lsp.package -The Python package to use. +The millet package to use. @@ -15041,18 +22934,18 @@ package *Default:* -` pkgs.python3 ` +` pkgs.millet ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/robotframework.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/robotframework.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/standardml.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/standardml.nix) -## languages.ruby.enable +## languages.swift.enable -Whether to enable tools for Ruby development. +Whether to enable tools for Swift development. @@ -15070,15 +22963,15 @@ boolean ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/swift.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/swift.nix) -## languages.ruby.package +## languages.swift.package -The Ruby package to use. +The Swift package to use. @@ -15088,18 +22981,18 @@ package *Default:* -` pkgs.ruby_3_1 ` +` pkgs.swift ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/swift.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/swift.nix) -## languages.ruby.bundler.enable +## languages.swift.dev.enable -Whether to enable bundler. +Enable Swift development tools. @@ -15109,107 +23002,81 @@ boolean *Default:* -` false ` - - - -*Example:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/swift.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/swift.nix) -## languages.ruby.bundler.package +## languages.swift.dev.formatter.enable -The bundler package to use. +Enable swift-format formatter. *Type:* -package +boolean *Default:* -` pkgs.bundler.override { ruby = cfg.package; } ` +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/swift.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/swift.nix) -## languages.ruby.version +## languages.swift.dev.formatter.package -The Ruby version to use. -This automatically sets the ` languages.ruby.package ` using [nixpkgs-ruby](https://github.com/bobvanderlinden/nixpkgs-ruby). +The swift-format package to use. *Type:* -null or string +package *Default:* -` null ` - - - -*Example:* -` "3.2.1" ` +` pkgs.swift-format ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix) - + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/swift.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/swift.nix) -## languages.ruby.versionFile +## languages.swift.dev.lsp.enable -The .ruby-version file path to extract the Ruby version from. -This automatically sets the ` languages.ruby.package ` using [nixpkgs-ruby](https://github.com/bobvanderlinden/nixpkgs-ruby). -When the ` .ruby-version ` file exists in the same directory as the devenv configuration, you can use: -```nix -languages.ruby.versionFile = ./.ruby-version; -``` +Enable sourcekit-lsp language server. *Type:* -null or absolute path +boolean *Default:* -` null ` - - - -*Example:* - -``` -./ruby-version - -``` +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/ruby.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/swift.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/swift.nix) -## languages.rust.enable +## languages.terraform.enable -Whether to enable tools for Rust development. +Whether to enable tools for Terraform development. @@ -15227,60 +23094,57 @@ boolean ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/terraform.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/terraform.nix) -## languages.rust.channel +## languages.terraform.package -The rustup toolchain to install. +The Terraform package to use. *Type:* -one of “nixpkgs”, “stable”, “beta”, “nightly” +package *Default:* -` "nixpkgs" ` +` pkgs.terraform ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/terraform.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/terraform.nix) -## languages.rust.components +## languages.terraform.dev.enable -List of [Rustup components](https://rust-lang.github.io/rustup/concepts/components.html) -to install. Defaults to those available in ` nixpkgs `. +Enable Terraform development tools. *Type:* -list of string +boolean *Default:* -` [ "rustc" "cargo" "clippy" "rustfmt" "rust-analyzer" ] ` +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) - + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/terraform.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/terraform.nix) -## languages.rust.mold.enable +## languages.terraform.dev.linter.enable -Enable mold as the linker. -Enabled by default on x86_64 Linux machines when no cross-compilation targets are specified. +Enable tfsec linter. @@ -15290,209 +23154,239 @@ boolean *Default:* -` pkgs.stdenv.isLinux && pkgs.stdenv.isx86_64 && languages.rust.targets == [ ] ` +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/terraform.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/terraform.nix) -## languages.rust.rustflags +## languages.terraform.dev.linter.package -Extra flags to pass to the Rust compiler. +The tfsec package to use. *Type:* -string +package *Default:* -` "" ` +` pkgs.tfsec ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/terraform.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/terraform.nix) -## languages.rust.targets +## languages.terraform.dev.lsp.enable -List of extra [targets](https://doc.rust-lang.org/nightly/rustc/platform-support.html) -to install. Defaults to only the native target. +Enable Terraform language server (terraform-ls). *Type:* -list of string +boolean *Default:* -` [ ] ` +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/terraform.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/terraform.nix) -## languages.rust.toolchain +## languages.terraform.dev.lsp.package -Rust component packages. May optionally define additional components, for example ` miri `. +The terraform-ls package to use. *Type:* -attribute set of package +package *Default:* -` nixpkgs ` +` pkgs.terraform-ls ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/terraform.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/terraform.nix) -## languages.rust.toolchain.cargo +## languages.terraform.version -cargo package +The Terraform version to use. +This automatically sets the ` languages.terraform.package ` using [nixpkgs-terraform](https://github.com/stackbuilders/nixpkgs-terraform). *Type:* -null or package +null or string *Default:* -` pkgs.cargo ` +` null ` + + + +*Example:* +` "1.5.0 or 1.6.2" ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/terraform.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/terraform.nix) -## languages.rust.toolchain.clippy +## languages.texlive.enable -clippy package +Whether to enable TeX Live. *Type:* -null or package +boolean *Default:* -` pkgs.clippy ` +` false ` + + + +*Example:* +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/texlive.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/texlive.nix) -## languages.rust.toolchain.rust-analyzer +## languages.texlive.packages -rust-analyzer package +Extra packages to add to the base TeX Live set *Type:* -null or package +list of string *Default:* -` pkgs.rust-analyzer ` +` [ ] ` + + + +*Example:* + +``` +[ + "algorithms" + "latexmk" +] +``` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/texlive.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/texlive.nix) -## languages.rust.toolchain.rustc +## languages.texlive.base -rustc package +TeX Live package set to use *Type:* -null or package +unspecified value *Default:* -` pkgs.rustc ` +` pkgs.texliveSmall ` + + + +*Example:* +` pkgs.texliveBasic ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/texlive.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/texlive.nix) -## languages.rust.toolchain.rustfmt +## languages.texlive.lsp.enable -rustfmt package +Whether to enable LaTeX language server (texlab). *Type:* -null or package +boolean *Default:* -` pkgs.rustfmt ` +` false ` + + + +*Example:* +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/texlive.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/texlive.nix) -## languages.rust.version +## languages.texlive.lsp.package -Which version of rust to use, this value could be ` latest `,` 1.81.0 `, ` 2021-01-01 `. -Only works when languages.rust.channel is NOT nixpkgs. +LaTeX language server package to use. *Type:* -string +package *Default:* -` "latest" ` +` pkgs.texlab ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/rust.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/texlive.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/texlive.nix) -## languages.scala.enable +## languages.typescript.enable -Whether to enable tools for Scala development. +Whether to enable tools for TypeScript development. @@ -15510,36 +23404,36 @@ boolean ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/typescript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/typescript.nix) -## languages.scala.package +## languages.typescript.dev.enable -The Scala package to use. +Enable TypeScript development tools. *Type:* -package +boolean *Default:* -` pkgs.scala_3 ` +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/typescript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/typescript.nix) -## languages.scala.mill.enable +## languages.typescript.dev.formatter.enable -Whether to enable mill, a simplified, fast build tool for Scala. +Enable prettier formatter. @@ -15549,23 +23443,18 @@ boolean *Default:* -` false ` - - - -*Example:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/typescript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/typescript.nix) -## languages.scala.mill.package +## languages.typescript.dev.formatter.package -The mill package to use. +The prettier package to use. @@ -15575,18 +23464,18 @@ package *Default:* -` pkgs.mill ` +` pkgs.prettier ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/typescript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/typescript.nix) -## languages.scala.sbt.enable +## languages.typescript.dev.linter.enable -Whether to enable sbt, the standard build tool for Scala. +Enable eslint linter. @@ -15596,23 +23485,18 @@ boolean *Default:* -` false ` - - - -*Example:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/typescript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/typescript.nix) -## languages.scala.sbt.package +## languages.typescript.dev.linter.package -The sbt package to use. +The eslint package to use. @@ -15622,23 +23506,18 @@ package *Default:* -` pkgs.sbt ` - - - -*Example:* -` sbt-with-scala-native ` +` pkgs.eslint ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/scala.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/typescript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/typescript.nix) -## languages.shell.enable +## languages.typescript.dev.lsp.enable -Whether to enable tools for shell development. +Enable typescript-language-server language server. @@ -15648,23 +23527,39 @@ boolean *Default:* -` false ` +` true ` +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/typescript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/typescript.nix) + + + +## languages.typescript.dev.lsp.package -*Example:* -` true ` + +The typescript-language-server package to use. This wraps Microsoft’s tsserver and provides LSP support for both JavaScript and TypeScript. + + + +*Type:* +package + + + +*Default:* +` pkgs.nodePackages.typescript-language-server ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/shell.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/shell.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/typescript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/typescript.nix) -## languages.solidity.enable +## languages.typst.enable -Whether to enable tools for Solidity development. +Whether to enable tools for Typst development. @@ -15682,15 +23577,15 @@ boolean ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/solidity.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/solidity.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/typst.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/typst.nix) -## languages.solidity.package +## languages.typst.package -Which compiler of Solidity to use. +Which package of Typst to use. @@ -15700,18 +23595,18 @@ package *Default:* -` pkgs.solc ` +` pkgs.typst ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/solidity.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/solidity.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/typst.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/typst.nix) -## languages.solidity.foundry.enable +## languages.typst.dev.enable -Whether to enable install Foundry. +Enable Typst development tools. @@ -15721,138 +23616,128 @@ boolean *Default:* -` false ` - - - -*Example:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/solidity.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/solidity.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/typst.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/typst.nix) -## languages.solidity.foundry.package +## languages.typst.dev.formatter.enable -Which Foundry package to use. +Enable Typst formatter (typstyle). *Type:* -package +boolean *Default:* -` foundry.defaultPackage.$${pkgs.stdenv.system} ` +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/solidity.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/solidity.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/typst.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/typst.nix) -## languages.standardml.enable +## languages.typst.dev.formatter.package -Whether to enable tools for Standard ML development. +The typstyle package to use. *Type:* -boolean +package *Default:* -` false ` - - - -*Example:* -` true ` +` pkgs.typstyle ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/standardml.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/standardml.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/typst.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/typst.nix) -## languages.standardml.package +## languages.typst.dev.lsp.enable -The Standard ML package to use. +Enable Typst language server (tinymist). *Type:* -package +boolean *Default:* -` pkgs.mlton ` +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/standardml.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/standardml.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/typst.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/typst.nix) -## languages.swift.enable +## languages.typst.dev.lsp.package -Whether to enable tools for Swift development. +The tinymist package to use. *Type:* -boolean +package *Default:* -` false ` - - - -*Example:* -` true ` +` pkgs.tinymist ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/swift.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/swift.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/typst.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/typst.nix) -## languages.swift.package +## languages.typst.fontPaths -The Swift package to use. +Directories to be searched for fonts. *Type:* -package +list of string *Default:* -` pkgs.swift ` +` [] ` + + + +*Example:* +` [ "${pkgs.roboto}/share/fonts/truetype" ] ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/swift.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/swift.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/typst.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/typst.nix) -## languages.terraform.enable +## languages.unison.enable -Whether to enable tools for Terraform development. +Whether to enable tools for Unison development. @@ -15870,15 +23755,15 @@ boolean ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/terraform.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/terraform.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/unison.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/unison.nix) -## languages.terraform.package +## languages.unison.package -The Terraform package to use. +Which package of Unison to use @@ -15888,45 +23773,40 @@ package *Default:* -` pkgs.terraform ` +` pkgs.unison-ucm ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/terraform.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/terraform.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/unison.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/unison.nix) -## languages.terraform.version +## languages.unison.lsp.enable -The Terraform version to use. -This automatically sets the ` languages.terraform.package ` using [nixpkgs-terraform](https://github.com/stackbuilders/nixpkgs-terraform). +Enable Unison language server support. +The language server is included with the main Unison package. *Type:* -null or string +boolean *Default:* -` null ` - - - -*Example:* -` "1.5.0 or 1.6.2" ` +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/terraform.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/terraform.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/unison.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/unison.nix) -## languages.texlive.enable +## languages.v.enable -Whether to enable TeX Live. +Whether to enable tools for V development. @@ -15944,73 +23824,57 @@ boolean ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/texlive.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/texlive.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/v.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/v.nix) -## languages.texlive.packages +## languages.v.package -Extra packages to add to the base TeX Live set +The V package to use. *Type:* -list of string +package *Default:* -` [ ] ` - - - -*Example:* - -``` -[ - "algorithms" - "latexmk" -] -``` +` pkgs.vlang ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/texlive.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/texlive.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/v.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/v.nix) -## languages.texlive.base +## languages.v.dev.enable -TeX Live package set to use +Enable V development tools. *Type:* -unspecified value +boolean *Default:* -` pkgs.texliveSmall ` - - - -*Example:* -` pkgs.texliveBasic ` +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/texlive.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/texlive.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/v.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/v.nix) -## languages.typescript.enable +## languages.v.dev.formatter.enable -Whether to enable tools for TypeScript development. +Enable V formatter (v fmt built into V compiler). @@ -16020,23 +23884,18 @@ boolean *Default:* -` false ` - - - -*Example:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/typescript.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/typescript.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/v.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/v.nix) -## languages.typst.enable +## languages.v.dev.lsp.enable -Whether to enable tools for Typst development. +Enable V language server. @@ -16046,23 +23905,18 @@ boolean *Default:* -` false ` - - - -*Example:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/typst.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/typst.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/v.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/v.nix) -## languages.typst.package +## languages.v.dev.lsp.package -Which package of Typst to use. +The V package to use (includes v-ls language server). @@ -16072,91 +23926,91 @@ package *Default:* -` pkgs.typst ` +` config.languages.v.package ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/typst.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/typst.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/v.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/v.nix) -## languages.typst.fontPaths +## languages.vala.enable -Directories to be searched for fonts. +Whether to enable tools for Vala development. *Type:* -list of string +boolean *Default:* -` [] ` +` false ` *Example:* -` [ "${pkgs.roboto}/share/fonts/truetype" ] ` +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/typst.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/typst.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/vala.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/vala.nix) -## languages.unison.enable +## languages.vala.package -Whether to enable tools for Unison development. +The Vala package to use. *Type:* -boolean +package *Default:* -` false ` +` pkgs.vala ` *Example:* -` true ` +` pkgs.vala_0_54 ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/unison.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/unison.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/vala.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/vala.nix) -## languages.unison.package +## languages.vala.dev.enable -Which package of Unison to use +Enable Vala development tools. *Type:* -package +boolean *Default:* -` pkgs.unison-ucm ` +` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/unison.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/unison.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/vala.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/vala.nix) -## languages.v.enable +## languages.vala.dev.lsp.enable -Whether to enable tools for V development. +Enable Vala language server. @@ -16166,23 +24020,18 @@ boolean *Default:* -` false ` - - - -*Example:* ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/v.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/v.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/vala.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/vala.nix) -## languages.v.package +## languages.vala.dev.lsp.package -The V package to use. +The vala-language-server package to use. @@ -16192,18 +24041,18 @@ package *Default:* -` pkgs.vlang ` +` pkgs.vala-language-server ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/v.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/v.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/vala.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/vala.nix) -## languages.vala.enable +## languages.zig.enable -Whether to enable tools for Vala development. +Whether to enable tools for Zig development. @@ -16221,15 +24070,15 @@ boolean ` true ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/vala.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/vala.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/zig.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/zig.nix) -## languages.vala.package +## languages.zig.package -The Vala package to use. +Which package of Zig to use. @@ -16239,23 +24088,18 @@ package *Default:* -` pkgs.vala ` - - - -*Example:* -` pkgs.vala_0_54 ` +` pkgs.zig ` *Declared by:* - - [https://github.com/cachix/devenv/blob/main/src/modules/languages/vala.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/vala.nix) + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/zig.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/zig.nix) -## languages.zig.enable +## languages.zig.dev.enable -Whether to enable tools for Zig development. +Enable Zig development tools. @@ -16265,11 +24109,27 @@ boolean *Default:* -` false ` +` true ` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/zig.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/zig.nix) -*Example:* +## languages.zig.dev.formatter.enable + + + +Enable zig formatter. + + + +*Type:* +boolean + + + +*Default:* ` true ` *Declared by:* @@ -16277,28 +24137,28 @@ boolean -## languages.zig.package +## languages.zig.dev.lsp.enable -Which package of Zig to use. +Enable Zig language server (zls). *Type:* -package +boolean *Default:* -` pkgs.zig ` +` true ` *Declared by:* - [https://github.com/cachix/devenv/blob/main/src/modules/languages/zig.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/zig.nix) -## languages.zig.zls.package +## languages.zig.dev.lsp.package diff --git a/docs/snippets/languages-all.md b/docs/snippets/languages-all.md index 8854a7517c..255685e20a 100644 --- a/docs/snippets/languages-all.md +++ b/docs/snippets/languages-all.md @@ -1,7 +1,10 @@ ```nix + languages.ada.enable = true; languages.ansible.enable = true; + languages.assembly.enable = true; languages.c.enable = true; languages.clojure.enable = true; + languages.cobol.enable = true; languages.cplusplus.enable = true; languages.crystal.enable = true; languages.cue.enable = true; @@ -24,6 +27,7 @@ languages.kotlin.enable = true; languages.lean4.enable = true; languages.lua.enable = true; + languages.matlab.enable = true; languages.nim.enable = true; languages.nix.enable = true; languages.ocaml.enable = true; @@ -43,6 +47,7 @@ languages.scala.enable = true; languages.shell.enable = true; languages.solidity.enable = true; + languages.sql.enable = true; languages.standardml.enable = true; languages.swift.enable = true; languages.terraform.enable = true; diff --git a/docs/supported-languages/ada.md b/docs/supported-languages/ada.md new file mode 100644 index 0000000000..2251c3186a --- /dev/null +++ b/docs/supported-languages/ada.md @@ -0,0 +1,431 @@ +[comment]: # (Do not edit this file as it is autogenerated. Go to docs/individual-docs if you want to make edits.) + + +[comment]: # (Please add your documentation on top of this line) + +## languages\.ada\.enable + + + +Whether to enable tools for Ada development\. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + + + +## languages\.ada\.package + + + +The GNAT compiler package to use\. + + + +*Type:* +package + + + +*Default:* +` gnat${languages.ada.version} ` + + + +## languages\.ada\.dev\.enable + + + +Enable Ada development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.ada\.dev\.aws\.enable + +Enable Ada Web Server (AWS) library\. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +## languages\.ada\.dev\.aws\.package + + + +The AWS package to use (if available)\. + + + +*Type:* +null or package + + + +*Default:* +` gnat${languages.ada.version}Packages.aws or null ` + + + +## languages\.ada\.dev\.debugger\.enable + + + +Enable gdb debugger\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.ada\.dev\.debugger\.package + + + +The GDB package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.gdb ` + + + +## languages\.ada\.dev\.gnatcoll\.enable + + + +Enable gnatcoll-core libraries\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.ada\.dev\.gnatcoll\.package + + + +The GNATCOLL core package to use\. + + + +*Type:* +package + + + +*Default:* +` gnat${languages.ada.version}Packages.gnatcoll-core ` + + + +## languages\.ada\.dev\.gnatcoll-bindings\.enable + + + +Enable additional GNATCOLL bindings (database, compression, etc\.)\. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +## languages\.ada\.dev\.gnatcoll-bindings\.packages + + + +Additional GNATCOLL binding packages to include\. + + + +*Type:* +list of package + + + +*Default:* + +``` +with gnat${languages.ada.version}Packages; [ + gnatcoll-sql gnatcoll-sqlite gnatcoll-postgres + gnatcoll-gmp gnatcoll-zlib gnatcoll-lzma + gnatcoll-readline gnatcoll-iconv gnatcoll-python3 + gnatcoll-syslog gnatcoll-omp +] + +``` + + + +## languages\.ada\.dev\.gpr2\.enable + + + +Enable GPR2 library (next-generation GPR library)\. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +## languages\.ada\.dev\.gpr2\.package + + + +The GPR2 package to use (if available)\. + + + +*Type:* +null or package + + + +*Default:* +` gnat${languages.ada.version}Packages.gpr2 or null ` + + + +## languages\.ada\.dev\.gprbuild\.enable + + + +Enable gprbuild build tool\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.ada\.dev\.gprbuild\.package + + + +The GPRbuild package to use\. + + + +*Type:* +package + + + +*Default:* +` gnat${languages.ada.version}Packages.gprbuild ` + + + +## languages\.ada\.dev\.lsp\.enable + + + +Enable ada-language-server language server\. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +## languages\.ada\.dev\.lsp\.package + + + +The Ada Language Server package to use (if available)\. + + + +*Type:* +null or package + + + +*Default:* +` pkgs.ada_language_server or null ` + + + +## languages\.ada\.dev\.spark\.enable + + + +Enable SPARK formal verification tools (if available)\. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +## languages\.ada\.dev\.spark\.package + + + +The SPARK/gnatprove package to use (if available)\. + + + +*Type:* +null or package + + + +*Default:* +` gnat${languages.ada.version}Packages.gnatprove or null ` + + + +## languages\.ada\.dev\.xmlada\.enable + + + +Enable XMLAda XML processing library\. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +## languages\.ada\.dev\.xmlada\.package + + + +The XMLAda package to use (if available)\. + + + +*Type:* +null or package + + + +*Default:* +` gnat${languages.ada.version}Packages.xmlada or null ` + + + +## languages\.ada\.extraPackages + + + +Additional Ada packages to include in the environment\. + + + +*Type:* +list of package + + + +*Default:* +` [ ] ` + + + +## languages\.ada\.version + + + +The GNAT compiler version to use\. + +GNAT 13 is the latest and recommended version for new projects\. +GNAT 12 provides a stable alternative for legacy compatibility\. + + + +*Type:* +one of “12”, “13” + + + +*Default:* +` "13" ` diff --git a/docs/supported-languages/ansible.md b/docs/supported-languages/ansible.md index 897616f798..5e39467333 100644 --- a/docs/supported-languages/ansible.md +++ b/docs/supported-languages/ansible.md @@ -5,6 +5,8 @@ ## languages\.ansible\.enable + + Whether to enable tools for Ansible development\. @@ -39,3 +41,91 @@ package *Default:* ` pkgs.ansible ` + + + +## languages\.ansible\.dev\.enable + +Enable Ansible development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.ansible\.dev\.linter\.enable + + + +Enable ansible-lint linter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.ansible\.dev\.linter\.package + + + +The ansible-lint package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.ansible-lint ` + + + +## languages\.ansible\.dev\.lsp\.enable + + + +Enable ansible-language-server language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.ansible\.dev\.lsp\.package + + + +The ansible-language-server package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.ansible-language-server ` diff --git a/docs/supported-languages/assembly.md b/docs/supported-languages/assembly.md new file mode 100644 index 0000000000..1a7798b368 --- /dev/null +++ b/docs/supported-languages/assembly.md @@ -0,0 +1,430 @@ +[comment]: # (Do not edit this file as it is autogenerated. Go to docs/individual-docs if you want to make edits.) + + +[comment]: # (Please add your documentation on top of this line) + +## languages\.assembly\.enable + + + +Whether to enable tools for Assembly development\. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + + + +## languages\.assembly\.package + + + +The primary assembler package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.${cfg.assembler} ` + + + +## languages\.assembly\.additionalAssemblers + +Additional assemblers to include in the environment\. + + + +*Type:* +list of (one of “nasm”, “yasm”, “fasm”, “gas”) + + + +*Default:* +` [ ] ` + + + +*Example:* + +``` +[ + "yasm" + "fasm" +] +``` + + + +## languages\.assembly\.assembler + + + +Primary assembler to use\. + + + +*Type:* +one of “nasm”, “yasm”, “fasm”, “gas” + + + +*Default:* +` "nasm" ` + + + +## languages\.assembly\.dev\.enable + + + +Enable Assembly development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.assembly\.dev\.binutils\.enable + + + +Enable binutils tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.assembly\.dev\.binutils\.package + + + +The binutils package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.binutils ` + + + +## languages\.assembly\.dev\.debugger\.enable + + + +Enable gdb debugger\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.assembly\.dev\.debugger\.package + + + +The debugger package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.gdb ` + + + +## languages\.assembly\.dev\.disassembler\.enable + + + +Enable disassembly tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.assembly\.dev\.disassembler\.capstone\.enable + + + +Enable capstone disassembler\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.assembly\.dev\.disassembler\.capstone\.package + + + +The capstone package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.capstone ` + + + +## languages\.assembly\.dev\.disassembler\.radare2\.enable + + + +Enable radare2 disassembler\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.assembly\.dev\.disassembler\.radare2\.package + + + +The radare2 package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.radare2 ` + + + +## languages\.assembly\.dev\.formatter\.enable + + + +Enable assembly formatters\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.assembly\.dev\.formatter\.asmfmt\.enable + + + +Enable asmfmt formatter\. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +## languages\.assembly\.dev\.formatter\.asmfmt\.package + + + +The asmfmt package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.asmfmt ` + + + +## languages\.assembly\.dev\.formatter\.nasmfmt\.enable + + + +Enable nasmfmt formatter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.assembly\.dev\.formatter\.nasmfmt\.package + + + +The nasmfmt package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.nasmfmt ` + + + +## languages\.assembly\.dev\.hexEditor\.enable + + + +Enable ghex hex editor\. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +## languages\.assembly\.dev\.hexEditor\.package + + + +The hex editor package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.ghex ` + + + +## languages\.assembly\.dev\.lsp\.enable + + + +Enable asm-lsp language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.assembly\.dev\.lsp\.package + + + +The asm-lsp package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.asm-lsp ` diff --git a/docs/supported-languages/c.md b/docs/supported-languages/c.md index 982a0ac5e2..421c4516ed 100644 --- a/docs/supported-languages/c.md +++ b/docs/supported-languages/c.md @@ -26,17 +26,133 @@ boolean -## languages\.c\.debugger +## languages\.c\.dev\.enable -An optional debugger package to use with c\. -The default is ` gdb `, if supported on the current system\. + + +Enable C development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.c\.dev\.debugger\.enable + +Enable gdb debugger\. *Type:* -null or package +boolean + + + +*Default:* +` true ` + + + +## languages\.c\.dev\.debugger\.package + + + +The gdb package to use\. + + + +*Type:* +package *Default:* ` pkgs.gdb ` + + + +## languages\.c\.dev\.lsp\.enable + + + +Enable ccls language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.c\.dev\.lsp\.package + + + +The ccls package to use\. + +Note: clangd (available in pkgs\.clang-tools) is the most popular C/C++ LSP, +actively maintained by the LLVM team\. You can switch to it by setting: +languages\.c\.dev\.lsp\.package = pkgs\.clang-tools; + +Other LSPs: + + - ccls: Good alternative, currently the default + - cquery: Deprecated/unmaintained, do not use + + + +*Type:* +package + + + +*Default:* +` pkgs.ccls ` + + + +## languages\.c\.dev\.valgrind\.enable + + + +Enable valgrind memory debugger\. + + + +*Type:* +boolean + + + +*Default:* +` lib.meta.availableOn pkgs.stdenv.hostPlatform pkgs.valgrind && !pkgs.valgrind.meta.broken ` + + + +## languages\.c\.dev\.valgrind\.package + + + +The valgrind package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.valgrind ` diff --git a/docs/supported-languages/clojure.md b/docs/supported-languages/clojure.md index 583f8e324c..c6f802f0a0 100644 --- a/docs/supported-languages/clojure.md +++ b/docs/supported-languages/clojure.md @@ -5,6 +5,8 @@ ## languages\.clojure\.enable + + Whether to enable tools for Clojure development\. @@ -21,3 +23,127 @@ boolean *Example:* ` true ` + + + +## languages\.clojure\.dev\.enable + +Enable Clojure development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.clojure\.dev\.formatter\.enable + + + +Enable cljfmt formatter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.clojure\.dev\.formatter\.package + + + +The cljfmt package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.clojure-lsp ` + + + +## languages\.clojure\.dev\.linter\.enable + + + +Enable clj-kondo linter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.clojure\.dev\.linter\.package + + + +The clj-kondo package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.clj-kondo ` + + + +## languages\.clojure\.dev\.lsp\.enable + + + +Enable clojure-lsp language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.clojure\.dev\.lsp\.package + + + +The clojure-lsp package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.clojure-lsp ` diff --git a/docs/supported-languages/cobol.md b/docs/supported-languages/cobol.md new file mode 100644 index 0000000000..a7a487c1b6 --- /dev/null +++ b/docs/supported-languages/cobol.md @@ -0,0 +1,281 @@ +[comment]: # (Do not edit this file as it is autogenerated. Go to docs/individual-docs if you want to make edits.) + + +[comment]: # (Please add your documentation on top of this line) + +## languages\.cobol\.enable + + + +Whether to enable tools for COBOL development\. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + + + +## languages\.cobol\.package + + + +The GNU COBOL compiler package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.gnucobol ` + + + +## languages\.cobol\.compilerFlags + +Additional flags to pass to the GNU COBOL compiler\. + + + +*Type:* +list of string + + + +*Default:* +` [ ] ` + + + +*Example:* + +``` +[ + "-Wall" + "-std=cobol2014" + "-free" +] +``` + + + +## languages\.cobol\.copybooks + + + +List of directories to search for COBOL copybooks\. +These will be added to the COB_COPY_DIR environment variable\. + + + +*Type:* +list of string + + + +*Default:* +` [ ] ` + + + +*Example:* + +``` +[ + "./copybooks" + "../shared-copybooks" +] +``` + + + +## languages\.cobol\.dev\.enable + + + +Enable COBOL development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.cobol\.dev\.debugger\.enable + + + +Enable gdb debugger\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.cobol\.dev\.debugger\.package + + + +The debugger package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.gdb ` + + + +## languages\.cobol\.dev\.documentation\.enable + + + +Enable cobol documentation tools\. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +## languages\.cobol\.dev\.documentation\.robodoc\.enable + + + +Enable robodoc documentation tool\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.cobol\.dev\.documentation\.robodoc\.package + + + +The ROBODoc package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.robodoc ` + + + +## languages\.cobol\.dev\.editor\.enable + + + +Enable cobol editor support\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.cobol\.dev\.editor\.emacsMode\.enable + + + +Enable cobol-mode for Emacs\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.cobol\.dev\.editor\.emacsMode\.package + + + +The cobol-mode package to use\. + + + +*Type:* +null or package + + + +*Default:* +` pkgs.emacsPackages.cobol-mode or null ` + + + +## languages\.cobol\.dev\.linter\.enable + + + +Enable cobol linter\. + + + +*Type:* +boolean + + + +*Default:* +` false ` diff --git a/docs/supported-languages/cplusplus.md b/docs/supported-languages/cplusplus.md index 3b88dcccb3..b5b5ee121a 100644 --- a/docs/supported-languages/cplusplus.md +++ b/docs/supported-languages/cplusplus.md @@ -5,6 +5,8 @@ ## languages\.cplusplus\.enable + + Whether to enable tools for C++ development\. @@ -21,3 +23,154 @@ boolean *Example:* ` true ` + + + +## languages\.cplusplus\.package + + + +The C++ compiler package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.clang ` + + + +## languages\.cplusplus\.dev\.enable + + + +Enable C++ development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.cplusplus\.dev\.debugger\.enable + +Enable gdb debugger\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.cplusplus\.dev\.debugger\.package + + + +The debugger package to use\. Defaults to gdb if available, otherwise lldb\. + + + +*Type:* +package + + + +*Default:* +` pkgs.gdb or pkgs.lldb ` + + + +## languages\.cplusplus\.dev\.formatter\.enable + + + +Enable clang-format formatter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.cplusplus\.dev\.formatter\.package + + + +The clang-format package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.clang-tools ` + + + +## languages\.cplusplus\.dev\.lsp\.enable + + + +Enable ccls language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.cplusplus\.dev\.lsp\.package + + + +The ccls package to use\. + +Note: clangd (available in pkgs\.clang-tools) is the most popular C/C++ LSP, +actively maintained by the LLVM team\. You can switch to it by setting: +languages\.cplusplus\.dev\.lsp\.package = pkgs\.clang-tools; + +Other LSPs: + + - ccls: Good alternative, currently the default + - cquery: Deprecated/unmaintained, do not use + + + +*Type:* +package + + + +*Default:* +` pkgs.ccls ` diff --git a/docs/supported-languages/crystal.md b/docs/supported-languages/crystal.md index 9fec32bd35..c8e1fb52a6 100644 --- a/docs/supported-languages/crystal.md +++ b/docs/supported-languages/crystal.md @@ -5,6 +5,8 @@ ## languages\.crystal\.enable + + Whether to enable Enable tools for Crystal development… @@ -21,3 +23,73 @@ boolean *Example:* ` true ` + + + +## languages\.crystal\.dev\.enable + +Enable Crystal development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.crystal\.dev\.formatter\.enable + + + +Enable crystal formatter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.crystal\.dev\.lsp\.enable + + + +Enable crystalline language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.crystal\.dev\.lsp\.package + + + +The crystalline package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.crystalline ` diff --git a/docs/supported-languages/cue.md b/docs/supported-languages/cue.md index 9b9edb0f77..52f4c81de6 100644 --- a/docs/supported-languages/cue.md +++ b/docs/supported-languages/cue.md @@ -5,6 +5,8 @@ ## languages\.cue\.enable + + Whether to enable tools for Cue development\. @@ -39,3 +41,55 @@ package *Default:* ` pkgs.cue ` + + + +## languages\.cue\.dev\.enable + +Enable CUE development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.cue\.dev\.lsp\.enable + + + +Enable cuelsp language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.cue\.dev\.lsp\.package + + + +The cuelsp package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.cuelsp ` diff --git a/docs/supported-languages/dart.md b/docs/supported-languages/dart.md index 6a07ad9428..3890b7bf94 100644 --- a/docs/supported-languages/dart.md +++ b/docs/supported-languages/dart.md @@ -5,6 +5,8 @@ ## languages\.dart\.enable + + Whether to enable tools for Dart development\. @@ -39,3 +41,55 @@ package *Default:* ` pkgs.dart ` + + + +## languages\.dart\.dev\.enable + +Enable Dart development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.dart\.dev\.formatter\.enable + + + +Enable dart formatter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.dart\.dev\.lsp\.enable + + + +Enable dart language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` diff --git a/docs/supported-languages/deno.md b/docs/supported-languages/deno.md index 36536cfd78..c0d0995c0c 100644 --- a/docs/supported-languages/deno.md +++ b/docs/supported-languages/deno.md @@ -5,6 +5,8 @@ ## languages\.deno\.enable + + Whether to enable tools for Deno development\. @@ -39,3 +41,73 @@ package *Default:* ` pkgs.deno ` + + + +## languages\.deno\.dev\.enable + +Enable Deno development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.deno\.dev\.formatter\.enable + + + +Enable deno formatter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.deno\.dev\.linter\.enable + + + +Enable deno linter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.deno\.dev\.lsp\.enable + + + +Enable deno language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` diff --git a/docs/supported-languages/dotnet.md b/docs/supported-languages/dotnet.md index 6fbf653d2d..ecfc28894e 100644 --- a/docs/supported-languages/dotnet.md +++ b/docs/supported-languages/dotnet.md @@ -5,6 +5,8 @@ ## languages\.dotnet\.enable + + Whether to enable tools for \.NET development\. @@ -39,3 +41,127 @@ package *Default:* ` pkgs.dotnet-sdk ` + + + +## languages\.dotnet\.dev\.enable + + + +Enable \.NET development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.dotnet\.dev\.debugger\.enable + +Enable netcoredbg debugger\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.dotnet\.dev\.debugger\.package + + + +The netcoredbg package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.netcoredbg ` + + + +## languages\.dotnet\.dev\.formatter\.enable + + + +Enable dotnet formatter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.dotnet\.dev\.formatter\.package + + + +The dotnet-format package to use\. + + + +*Type:* +null or package + + + +*Default:* +` null ` + + + +## languages\.dotnet\.dev\.lsp\.enable + + + +Enable omnisharp-roslyn language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.dotnet\.dev\.lsp\.package + + + +The omnisharp-roslyn package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.omnisharp-roslyn ` diff --git a/docs/supported-languages/elixir.md b/docs/supported-languages/elixir.md index 5b5ae55f7b..a858b4c1ee 100644 --- a/docs/supported-languages/elixir.md +++ b/docs/supported-languages/elixir.md @@ -5,6 +5,8 @@ ## languages\.elixir\.enable + + Whether to enable tools for Elixir development\. @@ -39,3 +41,127 @@ package *Default:* ` pkgs.elixir ` + + + +## languages\.elixir\.dev\.enable + + + +Enable Elixir development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.elixir\.dev\.dialyzer\.enable + +Enable dialyxir static analyzer\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.elixir\.dev\.dialyzer\.package + + + +The dialyxir package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.beamPackages.dialyxir ` + + + +## languages\.elixir\.dev\.linter\.enable + + + +Enable credo linter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.elixir\.dev\.linter\.package + + + +The credo package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.beamPackages.credo ` + + + +## languages\.elixir\.dev\.lsp\.enable + + + +Enable elixir-ls language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.elixir\.dev\.lsp\.package + + + +The elixir-ls package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.elixir_ls ` diff --git a/docs/supported-languages/elm.md b/docs/supported-languages/elm.md index 8a92fd6407..b188516f3f 100644 --- a/docs/supported-languages/elm.md +++ b/docs/supported-languages/elm.md @@ -5,6 +5,8 @@ ## languages\.elm\.enable + + Whether to enable tools for Elm development\. @@ -21,3 +23,145 @@ boolean *Example:* ` true ` + + + +## languages\.elm\.package + + + +The Elm compiler package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.elmPackages.elm ` + + + +## languages\.elm\.dev\.enable + +Enable Elm development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.elm\.dev\.formatter\.enable + + + +Enable elm-format formatter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.elm\.dev\.formatter\.package + + + +The elm-format package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.elmPackages.elm-format ` + + + +## languages\.elm\.dev\.lsp\.enable + + + +Enable elm-language-server language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.elm\.dev\.lsp\.package + + + +The elm-language-server package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.elmPackages.elm-language-server ` + + + +## languages\.elm\.dev\.test\.enable + + + +Enable elm-test test runner\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.elm\.dev\.test\.package + + + +The elm-test package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.elmPackages.elm-test ` diff --git a/docs/supported-languages/erlang.md b/docs/supported-languages/erlang.md index 769ad9a30e..0310750a87 100644 --- a/docs/supported-languages/erlang.md +++ b/docs/supported-languages/erlang.md @@ -5,6 +5,8 @@ ## languages\.erlang\.enable + + Whether to enable tools for Erlang development\. @@ -39,3 +41,55 @@ package *Default:* ` pkgs.erlang ` + + + +## languages\.erlang\.dev\.enable + +Enable Erlang development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.erlang\.dev\.lsp\.enable + + + +Enable erlang-ls language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.erlang\.dev\.lsp\.package + + + +The erlang-ls package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.erlang-ls ` diff --git a/docs/supported-languages/fortran.md b/docs/supported-languages/fortran.md index 50d779ed71..a967446871 100644 --- a/docs/supported-languages/fortran.md +++ b/docs/supported-languages/fortran.md @@ -5,6 +5,8 @@ ## languages\.fortran\.enable + + Whether to enable tools for Fortran Development… @@ -39,3 +41,91 @@ package *Default:* ` pkgs.gfortran ` + + + +## languages\.fortran\.dev\.enable + +Enable Fortran development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.fortran\.dev\.fpm\.enable + + + +Enable fortran-fpm package manager\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.fortran\.dev\.fpm\.package + + + +The fortran-fpm package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.fortran-fpm ` + + + +## languages\.fortran\.dev\.lsp\.enable + + + +Enable fortran-language-server language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.fortran\.dev\.lsp\.package + + + +The fortran-language-server package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.fortran-language-server ` diff --git a/docs/supported-languages/gawk.md b/docs/supported-languages/gawk.md index 2e46c2b9d0..ed53ec57dd 100644 --- a/docs/supported-languages/gawk.md +++ b/docs/supported-languages/gawk.md @@ -5,6 +5,8 @@ ## languages\.gawk\.enable + + Whether to enable tools for GNU Awk development\. @@ -21,3 +23,55 @@ boolean *Example:* ` true ` + + + +## languages\.gawk\.dev\.enable + +Enable GNU Awk development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.gawk\.dev\.lsp\.enable + + + +Enable awk-language-server language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.gawk\.dev\.lsp\.package + + + +The awk-language-server package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.awk-language-server ` diff --git a/docs/supported-languages/gleam.md b/docs/supported-languages/gleam.md index 9845e6b9ac..20640f430b 100644 --- a/docs/supported-languages/gleam.md +++ b/docs/supported-languages/gleam.md @@ -5,6 +5,8 @@ ## languages\.gleam\.enable + + Whether to enable tools for Gleam development\. @@ -39,3 +41,55 @@ package *Default:* ` pkgs.gleam ` + + + +## languages\.gleam\.dev\.enable + +Enable Gleam development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.gleam\.dev\.formatter\.enable + + + +Enable gleam formatter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.gleam\.dev\.lsp\.enable + + + +Enable gleam language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` diff --git a/docs/supported-languages/go.md b/docs/supported-languages/go.md index 90f6c4b7d6..1ffb7bd1f8 100644 --- a/docs/supported-languages/go.md +++ b/docs/supported-languages/go.md @@ -5,6 +5,8 @@ ## languages\.go\.enable + + Whether to enable tools for Go development\. @@ -57,3 +59,307 @@ package *Default:* ` pkgs.go ` + + + +## languages\.go\.dev\.enable + + + +Enable Go development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.go\.dev\.debugger\.enable + +Enable delve debugger\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.go\.dev\.debugger\.package + + + +The delve package to use\. + + + +*Type:* +package + + + +*Default:* +` buildWithSpecificGo pkgs.delve ` + + + +## languages\.go\.dev\.go-tools\.enable + + + +Enable go-tools static analysis tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.go\.dev\.go-tools\.package + + + +The go-tools package to use\. + + + +*Type:* +package + + + +*Default:* +` buildWithSpecificGo pkgs.go-tools ` + + + +## languages\.go\.dev\.gomodifytags\.enable + + + +Enable gomodifytags struct tag tool\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.go\.dev\.gomodifytags\.package + + + +The gomodifytags package to use\. + + + +*Type:* +package + + + +*Default:* +` buildWithSpecificGo pkgs.gomodifytags ` + + + +## languages\.go\.dev\.gotests\.enable + + + +Enable gotests test generator\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.go\.dev\.gotests\.package + + + +The gotests package to use\. + + + +*Type:* +package + + + +*Default:* +` buildWithSpecificGo pkgs.gotests ` + + + +## languages\.go\.dev\.gotools\.enable + + + +Enable gotools development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.go\.dev\.gotools\.package + + + +The gotools package to use\. + + + +*Type:* +package + + + +*Default:* +` buildWithSpecificGo pkgs.gotools ` + + + +## languages\.go\.dev\.iferr\.enable + + + +Enable iferr error handling generator\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.go\.dev\.iferr\.package + + + +The iferr package to use\. + + + +*Type:* +package + + + +*Default:* +` buildWithSpecificGo pkgs.iferr ` + + + +## languages\.go\.dev\.impl\.enable + + + +Enable impl interface implementation generator\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.go\.dev\.impl\.package + + + +The impl package to use\. + + + +*Type:* +package + + + +*Default:* +` buildWithSpecificGo pkgs.impl ` + + + +## languages\.go\.dev\.lsp\.enable + + + +Enable gopls language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.go\.dev\.lsp\.package + + + +The gopls package to use\. + + + +*Type:* +package + + + +*Default:* +` buildWithSpecificGo pkgs.gopls ` diff --git a/docs/supported-languages/haskell.md b/docs/supported-languages/haskell.md index 61e0bded38..9d1c1f6b6d 100644 --- a/docs/supported-languages/haskell.md +++ b/docs/supported-languages/haskell.md @@ -5,6 +5,8 @@ ## languages\.haskell\.enable + + Whether to enable tools for Haskell development\. @@ -42,21 +44,133 @@ package -## languages\.haskell\.languageServer +## languages\.haskell\.dev\.enable + +Enable Haskell development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` -Haskell language server to use\. +## languages\.haskell\.dev\.formatter\.enable + + + +Enable ormolu formatter\. *Type:* -null or package +boolean + + + +*Default:* +` true ` + + + +## languages\.haskell\.dev\.formatter\.package + + + +The ormolu package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.haskellPackages.ormolu ` + + + +## languages\.haskell\.dev\.linter\.enable + + + +Enable hlint linter\. + + + +*Type:* +boolean *Default:* -` pkgs.haskell-language-server ` +` true ` + + + +## languages\.haskell\.dev\.linter\.package + + + +The hlint package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.haskellPackages.hlint ` + + + +## languages\.haskell\.dev\.lsp\.enable + + + +Enable haskell-language-server language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.haskell\.dev\.lsp\.package + + + +The haskell-language-server package to use\. + + + +*Type:* +package + + + +*Default:* + +``` +pkgs.haskell-language-server.override { + supportedGhcVersions = [ ghcVersion ]; +} + +``` diff --git a/docs/supported-languages/idris.md b/docs/supported-languages/idris.md index 4b4161c3d8..116b3d31aa 100644 --- a/docs/supported-languages/idris.md +++ b/docs/supported-languages/idris.md @@ -44,3 +44,44 @@ package *Example:* ` pkgs.idris ` + + + +## languages\.idris\.lsp\.enable + + + +Whether to enable Idris language server\. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + + + +## languages\.idris\.lsp\.package + + + +Idris language server package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.idris2Packages.idris2Lsp ` diff --git a/docs/supported-languages/java.md b/docs/supported-languages/java.md index 802b503a87..6f5a07cccb 100644 --- a/docs/supported-languages/java.md +++ b/docs/supported-languages/java.md @@ -5,6 +5,8 @@ ## languages\.java\.enable + + Whether to enable tools for Java development\. @@ -24,6 +26,140 @@ boolean +## languages\.java\.dev\.enable + + + +Enable Java development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.java\.dev\.debugger\.enable + +Enable java-debug debugger\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.java\.dev\.debugger\.package + + + +The java-debug package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.java-debug ` + + + +## languages\.java\.dev\.formatter\.enable + + + +Enable google-java-format formatter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.java\.dev\.formatter\.package + + + +The google-java-format package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.google-java-format ` + + + +## languages\.java\.dev\.lsp\.enable + + + +Enable jdt-language-server language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.java\.dev\.lsp\.package + + + +The jdt-language-server package to use\. + +By default, this uses Eclipse JDT Language Server, which is the most popular +and feature-rich Java LSP implementation\. + +Alternative LSP servers available in nixpkgs: + + - vscode-extensions\.redhat\.java (Red Hat’s Java extension which includes JDT LS) + - metals (for Scala/Java projects) + +Note: vscode-javac and Apache NetBeans Java LSP are not currently packaged in nixpkgs\. + + + +*Type:* +package + + + +*Default:* +` pkgs.jdt-language-server ` + + + ## languages\.java\.gradle\.enable diff --git a/docs/supported-languages/javascript.md b/docs/supported-languages/javascript.md index c2c218d0f4..8aa4b66740 100644 --- a/docs/supported-languages/javascript.md +++ b/docs/supported-languages/javascript.md @@ -129,6 +129,132 @@ boolean +## languages\.javascript\.dev\.enable + + + +Enable JavaScript development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.javascript\.dev\.formatter\.enable + + + +Enable prettier formatter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.javascript\.dev\.formatter\.package + + + +The Prettier package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.nodePackages.prettier ` + + + +## languages\.javascript\.dev\.linter\.enable + + + +Enable eslint linter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.javascript\.dev\.linter\.package + + + +The ESLint package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.nodePackages.eslint ` + + + +## languages\.javascript\.dev\.lsp\.enable + + + +Enable typescript-language-server language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.javascript\.dev\.lsp\.package + + + +The TypeScript language server package to use\. This wraps Microsoft’s tsserver and provides LSP support for both JavaScript and TypeScript\. + + + +*Type:* +package + + + +*Default:* +` pkgs.nodePackages.typescript-language-server ` + + + ## languages\.javascript\.directory diff --git a/docs/supported-languages/jsonnet.md b/docs/supported-languages/jsonnet.md index 0e0c830050..a351ac96c2 100644 --- a/docs/supported-languages/jsonnet.md +++ b/docs/supported-languages/jsonnet.md @@ -21,3 +21,44 @@ boolean *Example:* ` true ` + + + +## languages\.jsonnet\.lsp\.enable + + + +Whether to enable Jsonnet language server\. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + + + +## languages\.jsonnet\.lsp\.package + + + +Jsonnet language server package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.jsonnet-language-server ` diff --git a/docs/supported-languages/julia.md b/docs/supported-languages/julia.md index 24bf616113..924c6b3ce0 100644 --- a/docs/supported-languages/julia.md +++ b/docs/supported-languages/julia.md @@ -5,6 +5,8 @@ ## languages\.julia\.enable + + Whether to enable tools for Julia development\. @@ -39,3 +41,32 @@ package *Default:* ` pkgs.julia-bin ` + + + +## languages\.julia\.dev\.enable + +Enable Julia development tools\. + +Note: Julia development tools like LanguageServer\.jl and JuliaFormatter\.jl +are typically installed via Julia’s package manager (Pkg), not through nixpkgs\. + +To install these tools, run the following in a Julia REPL: + +```julia +using Pkg +Pkg.add("LanguageServer") +Pkg.add("JuliaFormatter") +``` + +For VS Code users, the Julia extension will automatically install the language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` diff --git a/docs/supported-languages/kotlin.md b/docs/supported-languages/kotlin.md index 4a55da0430..963df1b051 100644 --- a/docs/supported-languages/kotlin.md +++ b/docs/supported-languages/kotlin.md @@ -5,6 +5,8 @@ ## languages\.kotlin\.enable + + Whether to enable tools for Kotlin development\. @@ -21,3 +23,91 @@ boolean *Example:* ` true ` + + + +## languages\.kotlin\.dev\.enable + +Enable Kotlin development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.kotlin\.dev\.formatter\.enable + + + +Enable ktlint formatter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.kotlin\.dev\.formatter\.package + + + +The ktlint package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.ktlint ` + + + +## languages\.kotlin\.dev\.lsp\.enable + + + +Enable Kotlin language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.kotlin\.dev\.lsp\.package + + + +The kotlin-language-server package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.kotlin-language-server ` diff --git a/docs/supported-languages/lean4.md b/docs/supported-languages/lean4.md index 88dd599d20..65c9101361 100644 --- a/docs/supported-languages/lean4.md +++ b/docs/supported-languages/lean4.md @@ -39,3 +39,22 @@ package *Default:* ` pkgs.lean4 ` + + + +## languages\.lean4\.lsp\.enable + + + +Enable Lean 4 language server support\. +The language server is included with the main Lean 4 package\. + + + +*Type:* +boolean + + + +*Default:* +` true ` diff --git a/docs/supported-languages/lua.md b/docs/supported-languages/lua.md index 366a705c0c..79e292ffa7 100644 --- a/docs/supported-languages/lua.md +++ b/docs/supported-languages/lua.md @@ -5,6 +5,8 @@ ## languages\.lua\.enable + + Whether to enable tools for Lua development\. @@ -39,3 +41,98 @@ package *Default:* ` pkgs.lua ` + + + +## languages\.lua\.dev\.enable + +Enable Lua development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.lua\.dev\.formatter\.enable + + + +Enable Lua formatter (stylua)\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.lua\.dev\.formatter\.package + + + +The stylua package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.stylua ` + + + +## languages\.lua\.dev\.lsp\.enable + + + +Enable Lua language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.lua\.dev\.lsp\.package + + + +The lua-language-server package to use\. + +lua-language-server (LuaLS) is the most popular and actively maintained LSP for Lua\. + +Alternative LSPs available in nixpkgs: + + - lua-lsp: Earlier implementation by Alloyed + - EmmyLua-LanguageServer: IntelliJ-based LSP (not available in nixpkgs) + + + +*Type:* +package + + + +*Default:* +` pkgs.lua-language-server ` diff --git a/docs/supported-languages/matlab.md b/docs/supported-languages/matlab.md new file mode 100644 index 0000000000..2e0551aa77 --- /dev/null +++ b/docs/supported-languages/matlab.md @@ -0,0 +1,452 @@ +[comment]: # (Do not edit this file as it is autogenerated. Go to docs/individual-docs if you want to make edits.) + + +[comment]: # (Please add your documentation on top of this line) + +## languages\.matlab\.enable + + + +Whether to enable tools for MATLAB development\. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + + + +## languages\.matlab\.package + + + +The MATLAB-compatible interpreter package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.octave or pkgs.scilab-bin ` + + + +## languages\.matlab\.alternatives\.maxima\.enable + +Include Maxima computer algebra system\. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +## languages\.matlab\.alternatives\.maxima\.package + + + +The Maxima package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.maxima ` + + + +## languages\.matlab\.alternatives\.sage\.enable + + + +Include SageMath as an alternative mathematical computing environment\. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +## languages\.matlab\.alternatives\.sage\.package + + + +The SageMath package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.sage ` + + + +## languages\.matlab\.dev\.enable + + + +Enable MATLAB development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.matlab\.dev\.fileFormat\.enable + + + +Enable MATLAB file format support tools\. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +## languages\.matlab\.dev\.fileFormat\.matio\.enable + + + +Enable matio library for reading/writing MATLAB MAT files\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.matlab\.dev\.fileFormat\.matio\.package + + + +The matio package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.matio ` + + + +## languages\.matlab\.dev\.formatter\.enable + + + +Enable matlab formatter\. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +## languages\.matlab\.dev\.ide\.enable + + + +Enable IDE support for scientific computing\. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +## languages\.matlab\.dev\.ide\.spyder\.enable + + + +Enable Spyder IDE (MATLAB-like IDE for Python/scientific computing)\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.matlab\.dev\.ide\.spyder\.package + + + +The Spyder IDE package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.spyder ` + + + +## languages\.matlab\.dev\.jupyter\.enable + + + +Enable Jupyter kernel support for MATLAB/Octave\. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +## languages\.matlab\.dev\.jupyter\.octaveKernel\.enable + + + +Enable Octave Jupyter kernel when using Octave interpreter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.matlab\.dev\.jupyter\.octaveKernel\.package + + + +The Octave Jupyter kernel package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.octave-kernel ` + + + +## languages\.matlab\.dev\.linter\.enable + + + +Enable matlab linter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.matlab\.dev\.linter\.missHit\.enable + + + +Enable miss-hit linter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.matlab\.dev\.linter\.missHit\.package + + + +The miss-hit package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.python3Packages.miss-hit ` + + + +## languages\.matlab\.dev\.lsp\.enable + + + +Enable matlab-language-server language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.matlab\.dev\.lsp\.package + + + +The MATLAB language server package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.matlab-language-server ` + + + +## languages\.matlab\.interpreter + + + +MATLAB-compatible interpreter to use\. + + + +*Type:* +one of “octave”, “scilab” + + + +*Default:* +` "octave" ` + + + +## languages\.matlab\.octavePackages + + + +List of Octave packages to install when using Octave interpreter\. + + + +*Type:* +list of package + + + +*Default:* +` [ ] ` + + + +*Example:* + +``` +with pkgs.octavePackages; [ + statistics + signal + control + symbolic + image +] + +``` diff --git a/docs/supported-languages/nim.md b/docs/supported-languages/nim.md index 6e07c2d284..64cf5a7d46 100644 --- a/docs/supported-languages/nim.md +++ b/docs/supported-languages/nim.md @@ -5,6 +5,8 @@ ## languages\.nim\.enable + + Whether to enable tools for Nim development\. @@ -39,3 +41,73 @@ package *Default:* ` pkgs.nim ` + + + +## languages\.nim\.dev\.enable + +Enable Nim development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.nim\.dev\.formatter\.enable + + + +Enable nimpretty formatter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.nim\.dev\.lsp\.enable + + + +Enable Nim language server (nimlangserver)\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.nim\.dev\.lsp\.package + + + +The nimlangserver package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.nimlangserver ` diff --git a/docs/supported-languages/nix.md b/docs/supported-languages/nix.md index c00c421e4f..336eb8c6d1 100644 --- a/docs/supported-languages/nix.md +++ b/docs/supported-languages/nix.md @@ -5,6 +5,8 @@ ## languages\.nix\.enable + + Whether to enable tools for Nix development\. @@ -24,11 +26,117 @@ boolean -## languages\.nix\.lsp\.package +## languages\.nix\.dev\.enable + +Enable Nix development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.nix\.dev\.formatter\.enable + + + +Enable nixpkgs-fmt formatter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.nix\.dev\.formatter\.package + + + +The nixpkgs-fmt package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.nixpkgs-fmt ` + + + +## languages\.nix\.dev\.linter\.enable + + + +Enable statix linter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.nix\.dev\.linter\.package + + + +The statix package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.statix ` + + + +## languages\.nix\.dev\.lsp\.enable + + + +Enable Nix language server (nil)\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.nix\.dev\.lsp\.package -The LSP package to use +The nil package to use\. @@ -39,3 +147,75 @@ package *Default:* ` pkgs.nil ` + + + +## languages\.nix\.dev\.tools\.deadnix\.enable + + + +Enable deadnix\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.nix\.dev\.tools\.deadnix\.package + + + +The deadnix package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.deadnix ` + + + +## languages\.nix\.dev\.tools\.vulnix\.enable + + + +Enable vulnix\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.nix\.dev\.tools\.vulnix\.package + + + +The vulnix package to use\. + + + +*Type:* +package + + + +*Default:* +` vulnix ` diff --git a/docs/supported-languages/ocaml.md b/docs/supported-languages/ocaml.md index 2d97dafaa0..e9124360ab 100644 --- a/docs/supported-languages/ocaml.md +++ b/docs/supported-languages/ocaml.md @@ -5,6 +5,8 @@ ## languages\.ocaml\.enable + + Whether to enable tools for OCaml development\. @@ -39,3 +41,235 @@ attribute set *Default:* ` pkgs.ocaml-ng.ocamlPackages_4_12 ` + + + +## languages\.ocaml\.dev\.enable + +Enable OCaml development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.ocaml\.dev\.formatter\.enable + + + +Enable OCaml formatter (ocamlformat)\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.ocaml\.dev\.formatter\.package + + + +The ocamlformat package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.ocamlformat ` + + + +## languages\.ocaml\.dev\.lsp\.enable + + + +Enable OCaml language server (ocaml-lsp)\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.ocaml\.dev\.lsp\.package + + + +The ocaml-lsp package to use\. + + + +*Type:* +package + + + +*Default:* +` cfg.packages.ocaml-lsp ` + + + +## languages\.ocaml\.dev\.tools\.merlin\.enable + + + +Enable Merlin editor service\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.ocaml\.dev\.tools\.merlin\.package + + + +The merlin package to use\. + + + +*Type:* +package + + + +*Default:* +` cfg.packages.merlin ` + + + +## languages\.ocaml\.dev\.tools\.ocp-indent\.enable + + + +Enable ocp-indent indenter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.ocaml\.dev\.tools\.ocp-indent\.package + + + +The ocp-indent package to use\. + + + +*Type:* +package + + + +*Default:* +` cfg.packages.ocp-indent ` + + + +## languages\.ocaml\.dev\.tools\.odoc\.enable + + + +Enable odoc documentation generator\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.ocaml\.dev\.tools\.odoc\.package + + + +The odoc package to use\. + + + +*Type:* +package + + + +*Default:* +` cfg.packages.odoc ` + + + +## languages\.ocaml\.dev\.tools\.utop\.enable + + + +Enable UTop REPL\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.ocaml\.dev\.tools\.utop\.package + + + +The utop package to use\. + + + +*Type:* +package + + + +*Default:* +` cfg.packages.utop ` diff --git a/docs/supported-languages/odin.md b/docs/supported-languages/odin.md index 78933280e0..24ba2c080d 100644 --- a/docs/supported-languages/odin.md +++ b/docs/supported-languages/odin.md @@ -44,17 +44,88 @@ package -## languages\.odin\.debugger +## languages\.odin\.dev\.enable -An optional debugger package to use with odin\. -The default is ` gdb `, if supported on the current system\. + + +Enable Odin development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.odin\.dev\.debugger\.enable + +Enable gdb debugger\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.odin\.dev\.debugger\.package + + + +The gdb package to use\. *Type:* -null or package +package *Default:* ` pkgs.gdb ` + + + +## languages\.odin\.dev\.lsp\.enable + + + +Enable Odin language server (ols)\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.odin\.dev\.lsp\.package + + + +The ols package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.ols ` diff --git a/docs/supported-languages/opentofu.md b/docs/supported-languages/opentofu.md index 2207ff561f..ac28cd2f22 100644 --- a/docs/supported-languages/opentofu.md +++ b/docs/supported-languages/opentofu.md @@ -39,3 +39,44 @@ package *Default:* ` pkgs.opentofu ` + + + +## languages\.opentofu\.lsp\.enable + + + +Whether to enable Terraform/OpenTofu language server\. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + + + +## languages\.opentofu\.lsp\.package + + + +Terraform/OpenTofu language server package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.terraform-lsp ` diff --git a/docs/supported-languages/pascal.md b/docs/supported-languages/pascal.md index 441198fb2c..66cd02eaa6 100644 --- a/docs/supported-languages/pascal.md +++ b/docs/supported-languages/pascal.md @@ -5,6 +5,8 @@ ## languages\.pascal\.enable + + Whether to enable tools for Pascal development\. @@ -24,6 +26,40 @@ boolean +## languages\.pascal\.dev\.enable + +Enable Pascal development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.pascal\.dev\.lsp\.enable + + + +Enable Pascal language server\. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + ## languages\.pascal\.lazarus\.enable diff --git a/docs/supported-languages/perl.md b/docs/supported-languages/perl.md index 93e17535a9..289370ab50 100644 --- a/docs/supported-languages/perl.md +++ b/docs/supported-languages/perl.md @@ -5,6 +5,8 @@ ## languages\.perl\.enable + + Whether to enable tools for Perl development\. @@ -49,3 +51,91 @@ list of string "Mojolicious" ] ``` + + + +## languages\.perl\.dev\.enable + +Enable Perl development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.perl\.dev\.formatter\.enable + + + +Enable Perl formatter (perltidy)\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.perl\.dev\.formatter\.package + + + +The perltidy package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.perlPackages.PerlTidy ` + + + +## languages\.perl\.dev\.lsp\.enable + + + +Enable Perl language server (PerlLanguageServer)\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.perl\.dev\.lsp\.package + + + +The PerlLanguageServer package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.perlPackages.PerlLanguageServer ` diff --git a/docs/supported-languages/php.md b/docs/supported-languages/php.md index 793258b050..1b68ed42de 100644 --- a/docs/supported-languages/php.md +++ b/docs/supported-languages/php.md @@ -96,8 +96,144 @@ null or package +## languages\.php\.dev\.enable + +Enable PHP development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.php\.dev\.formatter\.enable + + + +Enable PHP formatter (php-cs-fixer)\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.php\.dev\.formatter\.package + + + +The php-cs-fixer package to use\. + + + +*Type:* +package + + + +*Default:* +` cfg.package.packages.php-cs-fixer ` + + + +## languages\.php\.dev\.linter\.enable + + + +Enable PHP linter (psalm)\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.php\.dev\.linter\.package + + + +The psalm package to use\. + + + +*Type:* +package + + + +*Default:* +` cfg.package.packages.psalm ` + + + +## languages\.php\.dev\.lsp\.enable + + + +Enable PHP language server (phpactor)\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.php\.dev\.lsp\.package + + + +The PHP language server package to use\. + +Available options: + + - pkgs\.phpactor: Open source LSP with good refactoring support (default) + - pkgs\.php-language-server: Felix Becker’s PHP language server + - pkgs\.intelephense: Proprietary but very popular, requires license for full features + +Note: Intelephense is proprietary software but is widely considered the most +feature-complete PHP LSP\. It requires a license for advanced features\. +Phpactor is a good open-source alternative with strong refactoring capabilities\. + + + +*Type:* +package + + + +*Default:* +` pkgs.phpactor ` + + + ## languages\.php\.disableExtensions + + PHP extensions to disable\. diff --git a/docs/supported-languages/purescript.md b/docs/supported-languages/purescript.md index f730543c30..d1eb58a431 100644 --- a/docs/supported-languages/purescript.md +++ b/docs/supported-languages/purescript.md @@ -5,6 +5,8 @@ ## languages\.purescript\.enable + + Whether to enable tools for PureScript development\. @@ -39,3 +41,127 @@ package *Default:* ` pkgs.purescript ` + + + +## languages\.purescript\.dev\.enable + +Enable PureScript development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.purescript\.dev\.formatter\.enable + + + +Enable purs-tidy formatter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.purescript\.dev\.formatter\.package + + + +The purs-tidy package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.nodePackages.purs-tidy ` + + + +## languages\.purescript\.dev\.lsp\.enable + + + +Enable PureScript language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.purescript\.dev\.lsp\.package + + + +The purescript-language-server package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.nodePackages.purescript-language-server ` + + + +## languages\.purescript\.dev\.tools\.psa\.enable + + + +Enable PureScript Assistant (psa)\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.purescript\.dev\.tools\.psa\.package + + + +The purescript-psa package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.purescript-psa ` diff --git a/docs/supported-languages/python.md b/docs/supported-languages/python.md index f144153658..d275dfc314 100644 --- a/docs/supported-languages/python.md +++ b/docs/supported-languages/python.md @@ -44,8 +44,242 @@ package +## languages\.python\.dev\.enable + + + +Enable Python development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.python\.dev\.debugger\.enable + +Enable debugpy debugger\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.python\.dev\.debugger\.package + + + +The debugpy package to use\. + + + +*Type:* +package + + + +*Default:* +` cfg.package.pkgs.debugpy ` + + + +## languages\.python\.dev\.formatter\.enable + + + +Enable black formatter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.python\.dev\.formatter\.package + + + +The black package to use\. + + + +*Type:* +package + + + +*Default:* +` cfg.package.pkgs.black ` + + + +## languages\.python\.dev\.linter\.enable + + + +Enable Ruff linter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.python\.dev\.linter\.package + + + +The ruff package to use\. + + + +*Type:* +package + + + +*Default:* +` cfg.package.pkgs.ruff ` + + + +## languages\.python\.dev\.lsp\.enable + + + +Enable python-lsp-server language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.python\.dev\.lsp\.package + + + +The Python LSP package to use\. Can be changed to pyright, jedi-language-server, or other LSP implementations\. + + + +*Type:* +package + + + +*Default:* +` cfg.package.pkgs.python-lsp-server ` + + + +## languages\.python\.dev\.testRunner\.enable + + + +Enable pytest test runner\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.python\.dev\.testRunner\.package + + + +The pytest package to use\. + + + +*Type:* +package + + + +*Default:* +` cfg.package.pkgs.pytest ` + + + +## languages\.python\.dev\.typeChecker\.enable + + + +Enable mypy type checker\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.python\.dev\.typeChecker\.package + + + +The mypy package to use\. + + + +*Type:* +package + + + +*Default:* +` cfg.package.pkgs.mypy ` + + + ## languages\.python\.directory + + The Python project’s root directory\. Defaults to the root of the devenv project\. Can be an absolute path or one relative to the root of the devenv project\. diff --git a/docs/supported-languages/r.md b/docs/supported-languages/r.md index f3b5bf7957..e5cf445f71 100644 --- a/docs/supported-languages/r.md +++ b/docs/supported-languages/r.md @@ -5,6 +5,8 @@ ## languages\.r\.enable + + Whether to enable tools for R development\. @@ -42,6 +44,34 @@ package +## languages\.r\.dev\.enable + +Enable R development tools\. + +Note: R development tools like languageserver (LSP), styler (formatter), +and lintr (linter) are typically installed via R’s package manager\. + +To install these tools, run R and execute: +install\.packages(c(“languageserver”, “styler”, “lintr”)) + +For more tools, consider: + + - dev: for package development + - testthat: for unit testing + - roxygen2: for documentation generation + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + ## languages\.r\.radian\.enable diff --git a/docs/supported-languages/racket.md b/docs/supported-languages/racket.md index 903f7b35d7..b7cee54a0e 100644 --- a/docs/supported-languages/racket.md +++ b/docs/supported-languages/racket.md @@ -5,6 +5,8 @@ ## languages\.racket\.enable + + Whether to enable tools for Racket development\. @@ -39,3 +41,37 @@ package *Default:* ` pkgs.racket-minimal ` + + + +## languages\.racket\.dev\.enable + +Enable Racket development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.racket\.dev\.lsp\.enable + + + +Enable Racket language server\. + + + +*Type:* +boolean + + + +*Default:* +` false ` diff --git a/docs/supported-languages/raku.md b/docs/supported-languages/raku.md index e053719d1e..a695f75651 100644 --- a/docs/supported-languages/raku.md +++ b/docs/supported-languages/raku.md @@ -5,6 +5,8 @@ ## languages\.raku\.enable + + Whether to enable tools for Raku development\. @@ -21,3 +23,37 @@ boolean *Example:* ` true ` + + + +## languages\.raku\.dev\.enable + +Enable Raku development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.raku\.dev\.lsp\.enable + + + +Enable Raku language server\. + + + +*Type:* +boolean + + + +*Default:* +` false ` diff --git a/docs/supported-languages/robotframework.md b/docs/supported-languages/robotframework.md index 51aea2d801..edeb765bcc 100644 --- a/docs/supported-languages/robotframework.md +++ b/docs/supported-languages/robotframework.md @@ -5,6 +5,8 @@ ## languages\.robotframework\.enable + + Whether to enable tools for Robot Framework development\. @@ -24,6 +26,58 @@ boolean +## languages\.robotframework\.dev\.enable + +Enable Robot Framework development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.robotframework\.dev\.lsp\.enable + + + +Enable Robot Framework language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.robotframework\.dev\.lsp\.package + + + +The robotframework-lsp package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.python3Packages.robotframework-lsp ` + + + ## languages\.robotframework\.python diff --git a/docs/supported-languages/ruby.md b/docs/supported-languages/ruby.md index 6d97dbd047..e28f7bd5cb 100644 --- a/docs/supported-languages/ruby.md +++ b/docs/supported-languages/ruby.md @@ -83,6 +83,143 @@ package +## languages\.ruby\.dev\.enable + + + +Enable Ruby development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.ruby\.dev\.formatter\.enable + + + +Enable Ruby formatter (rubocop)\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.ruby\.dev\.formatter\.package + + + +The rubocop package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.rubyPackages.rubocop ` + + + +## languages\.ruby\.dev\.linter\.enable + + + +Enable Ruby linter (rubocop)\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.ruby\.dev\.linter\.package + + + +The rubocop package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.rubyPackages.rubocop ` + + + +## languages\.ruby\.dev\.lsp\.enable + + + +Enable Ruby language server (solargraph)\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.ruby\.dev\.lsp\.package + + + +The Ruby language server package to use\. + +Available options: + + - ` pkgs.rubyPackages.solargraph ` (default): Mature, feature-rich LSP by Fred Snyder + - ` pkgs.rubyPackages.ruby-lsp `: Newer LSP by Shopify, actively developed + +To switch to ruby-lsp, use: + +```nix +languages.ruby.dev.lsp.package = pkgs.rubyPackages.ruby-lsp; +``` + + + +*Type:* +package + + + +*Default:* +` pkgs.rubyPackages.solargraph ` + + + ## languages\.ruby\.version diff --git a/docs/supported-languages/rust.md b/docs/supported-languages/rust.md index bc489054ef..90de02a0e3 100644 --- a/docs/supported-languages/rust.md +++ b/docs/supported-languages/rust.md @@ -47,7 +47,8 @@ one of “nixpkgs”, “stable”, “beta”, “nightly” List of [Rustup components](https://rust-lang\.github\.io/rustup/concepts/components\.html) -to install\. Defaults to those available in ` nixpkgs `\. +to install\. Defaults to core components only\. Development tools like clippy, rustfmt, +and rust-analyzer are controlled by the dev options\. @@ -57,7 +58,133 @@ list of string *Default:* -` [ "rustc" "cargo" "clippy" "rustfmt" "rust-analyzer" ] ` +` [ "rustc" "cargo" ] ` + + + +## languages\.rust\.dev\.enable + + + +Enable Rust development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.rust\.dev\.formatter\.enable + + + +Enable rustfmt formatter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.rust\.dev\.formatter\.package + + + +The rustfmt package to use\. + + + +*Type:* +package + + + +*Default:* +` cfg.toolchain.rustfmt or pkgs.rustfmt ` + + + +## languages\.rust\.dev\.linter\.enable + + + +Enable clippy linter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.rust\.dev\.linter\.package + + + +The clippy package to use\. + + + +*Type:* +package + + + +*Default:* +` cfg.toolchain.clippy or pkgs.clippy ` + + + +## languages\.rust\.dev\.lsp\.enable + + + +Enable rust-analyzer language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.rust\.dev\.lsp\.package + + + +The rust-analyzer package to use\. + + + +*Type:* +package + + + +*Default:* +` cfg.toolchain.rust-analyzer or pkgs.rust-analyzer ` diff --git a/docs/supported-languages/scala.md b/docs/supported-languages/scala.md index e883e32bb6..ddd3dc4eb2 100644 --- a/docs/supported-languages/scala.md +++ b/docs/supported-languages/scala.md @@ -5,6 +5,8 @@ ## languages\.scala\.enable + + Whether to enable tools for Scala development\. @@ -42,6 +44,94 @@ package +## languages\.scala\.dev\.enable + +Enable Scala development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.scala\.dev\.formatter\.enable + + + +Enable scalafmt formatter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.scala\.dev\.formatter\.package + + + +The scalafmt package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.scalafmt.override { jre = java.jdk.package; } ` + + + +## languages\.scala\.dev\.lsp\.enable + + + +Enable Metals language server (the standard LSP for Scala)\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.scala\.dev\.lsp\.package + + + +The Metals package to use\. Metals is the standard LSP implementation for Scala by Scalameta\. + + + +*Type:* +package + + + +*Default:* +` pkgs.metals.override { jre = java.jdk.package; } ` + + + ## languages\.scala\.mill\.enable diff --git a/docs/supported-languages/shell.md b/docs/supported-languages/shell.md index 4d5416fe7a..a5997359b2 100644 --- a/docs/supported-languages/shell.md +++ b/docs/supported-languages/shell.md @@ -5,6 +5,8 @@ ## languages\.shell\.enable + + Whether to enable tools for shell development\. @@ -21,3 +23,163 @@ boolean *Example:* ` true ` + + + +## languages\.shell\.dev\.enable + +Enable Shell development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.shell\.dev\.formatter\.enable + + + +Enable shfmt formatter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.shell\.dev\.formatter\.package + + + +The shfmt package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.shfmt ` + + + +## languages\.shell\.dev\.linter\.enable + + + +Enable shellcheck linter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.shell\.dev\.linter\.package + + + +The shellcheck package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.shellcheck ` + + + +## languages\.shell\.dev\.lsp\.enable + + + +Enable bash language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.shell\.dev\.lsp\.package + + + +The bash-language-server package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.nodePackages.bash-language-server ` + + + +## languages\.shell\.dev\.testRunner\.enable + + + +Enable bats test runner\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.shell\.dev\.testRunner\.package + + + +The bats package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.bats.withLibraries (p: [ p.bats-assert p.bats-file p.bats-support ]) ` diff --git a/docs/supported-languages/solidity.md b/docs/supported-languages/solidity.md index 0523ebe752..d4a3935244 100644 --- a/docs/supported-languages/solidity.md +++ b/docs/supported-languages/solidity.md @@ -5,6 +5,8 @@ ## languages\.solidity\.enable + + Whether to enable tools for Solidity development\. @@ -42,6 +44,40 @@ package +## languages\.solidity\.dev\.enable + +Enable Solidity development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.solidity\.dev\.lsp\.enable + + + +Enable Solidity language server\. Note: No stable Solidity LSP is currently available in nixpkgs\. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + ## languages\.solidity\.foundry\.enable diff --git a/docs/supported-languages/sql.md b/docs/supported-languages/sql.md new file mode 100644 index 0000000000..49d64e4938 --- /dev/null +++ b/docs/supported-languages/sql.md @@ -0,0 +1,149 @@ +[comment]: # (Do not edit this file as it is autogenerated. Go to docs/individual-docs if you want to make edits.) + + +[comment]: # (Please add your documentation on top of this line) + +## languages\.sql\.enable + + + +Whether to enable tools for SQL development\. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + + + +## languages\.sql\.dev\.enable + +Enable SQL development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.sql\.dev\.formatter\.enable + + + +Enable sqlfluff formatter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.sql\.dev\.formatter\.package + + + +The sqlfluff package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.sqlfluff ` + + + +## languages\.sql\.dev\.linter\.enable + + + +Enable sqlfluff linter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.sql\.dev\.linter\.package + + + +The sqlfluff package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.sqlfluff ` + + + +## languages\.sql\.dev\.lsp\.enable + + + +Enable sqls language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.sql\.dev\.lsp\.package + + + +The sqls package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.sqls ` diff --git a/docs/supported-languages/standardml.md b/docs/supported-languages/standardml.md index ba91d4aad4..3b5f2e6a1f 100644 --- a/docs/supported-languages/standardml.md +++ b/docs/supported-languages/standardml.md @@ -5,6 +5,8 @@ ## languages\.standardml\.enable + + Whether to enable tools for Standard ML development\. @@ -39,3 +41,91 @@ package *Default:* ` pkgs.mlton ` + + + +## languages\.standardml\.dev\.enable + +Enable Standard ML development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.standardml\.dev\.formatter\.enable + + + +Enable Standard ML formatter (smlfmt)\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.standardml\.dev\.formatter\.package + + + +The smlfmt package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.smlfmt ` + + + +## languages\.standardml\.dev\.lsp\.enable + + + +Enable Standard ML language server (millet)\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.standardml\.dev\.lsp\.package + + + +The millet package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.millet ` diff --git a/docs/supported-languages/swift.md b/docs/supported-languages/swift.md index cdccc15640..c33b38baba 100644 --- a/docs/supported-languages/swift.md +++ b/docs/supported-languages/swift.md @@ -5,6 +5,8 @@ ## languages\.swift\.enable + + Whether to enable tools for Swift development\. @@ -39,3 +41,73 @@ package *Default:* ` pkgs.swift ` + + + +## languages\.swift\.dev\.enable + +Enable Swift development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.swift\.dev\.formatter\.enable + + + +Enable swift-format formatter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.swift\.dev\.formatter\.package + + + +The swift-format package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.swift-format ` + + + +## languages\.swift\.dev\.lsp\.enable + + + +Enable sourcekit-lsp language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` diff --git a/docs/supported-languages/terraform.md b/docs/supported-languages/terraform.md index 3aa1b8f0c3..c367708599 100644 --- a/docs/supported-languages/terraform.md +++ b/docs/supported-languages/terraform.md @@ -5,6 +5,8 @@ ## languages\.terraform\.enable + + Whether to enable tools for Terraform development\. @@ -42,6 +44,94 @@ package +## languages\.terraform\.dev\.enable + +Enable Terraform development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.terraform\.dev\.linter\.enable + + + +Enable tfsec linter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.terraform\.dev\.linter\.package + + + +The tfsec package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.tfsec ` + + + +## languages\.terraform\.dev\.lsp\.enable + + + +Enable Terraform language server (terraform-ls)\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.terraform\.dev\.lsp\.package + + + +The terraform-ls package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.terraform-ls ` + + + ## languages\.terraform\.version diff --git a/docs/supported-languages/texlive.md b/docs/supported-languages/texlive.md index 141b36253f..e5aded1f44 100644 --- a/docs/supported-languages/texlive.md +++ b/docs/supported-languages/texlive.md @@ -73,3 +73,44 @@ unspecified value *Example:* ` pkgs.texliveBasic ` + + + +## languages\.texlive\.lsp\.enable + + + +Whether to enable LaTeX language server (texlab)\. + + + +*Type:* +boolean + + + +*Default:* +` false ` + + + +*Example:* +` true ` + + + +## languages\.texlive\.lsp\.package + + + +LaTeX language server package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.texlab ` diff --git a/docs/supported-languages/typescript.md b/docs/supported-languages/typescript.md index 0d5e00f1bc..1949726aac 100644 --- a/docs/supported-languages/typescript.md +++ b/docs/supported-languages/typescript.md @@ -5,6 +5,8 @@ ## languages\.typescript\.enable + + Whether to enable tools for TypeScript development\. @@ -21,3 +23,127 @@ boolean *Example:* ` true ` + + + +## languages\.typescript\.dev\.enable + +Enable TypeScript development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.typescript\.dev\.formatter\.enable + + + +Enable prettier formatter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.typescript\.dev\.formatter\.package + + + +The prettier package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.prettier ` + + + +## languages\.typescript\.dev\.linter\.enable + + + +Enable eslint linter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.typescript\.dev\.linter\.package + + + +The eslint package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.eslint ` + + + +## languages\.typescript\.dev\.lsp\.enable + + + +Enable typescript-language-server language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.typescript\.dev\.lsp\.package + + + +The typescript-language-server package to use\. This wraps Microsoft’s tsserver and provides LSP support for both JavaScript and TypeScript\. + + + +*Type:* +package + + + +*Default:* +` pkgs.nodePackages.typescript-language-server ` diff --git a/docs/supported-languages/typst.md b/docs/supported-languages/typst.md index 620997fb65..dcdd6fccf5 100644 --- a/docs/supported-languages/typst.md +++ b/docs/supported-languages/typst.md @@ -5,6 +5,8 @@ ## languages\.typst\.enable + + Whether to enable tools for Typst development\. @@ -42,6 +44,94 @@ package +## languages\.typst\.dev\.enable + +Enable Typst development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.typst\.dev\.formatter\.enable + + + +Enable Typst formatter (typstyle)\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.typst\.dev\.formatter\.package + + + +The typstyle package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.typstyle ` + + + +## languages\.typst\.dev\.lsp\.enable + + + +Enable Typst language server (tinymist)\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.typst\.dev\.lsp\.package + + + +The tinymist package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.tinymist ` + + + ## languages\.typst\.fontPaths diff --git a/docs/supported-languages/unison.md b/docs/supported-languages/unison.md index 148c82fa03..ce1f3fc748 100644 --- a/docs/supported-languages/unison.md +++ b/docs/supported-languages/unison.md @@ -39,3 +39,22 @@ package *Default:* ` pkgs.unison-ucm ` + + + +## languages\.unison\.lsp\.enable + + + +Enable Unison language server support\. +The language server is included with the main Unison package\. + + + +*Type:* +boolean + + + +*Default:* +` true ` diff --git a/docs/supported-languages/v.md b/docs/supported-languages/v.md index b9ace01922..aa57ebe5ad 100644 --- a/docs/supported-languages/v.md +++ b/docs/supported-languages/v.md @@ -5,6 +5,8 @@ ## languages\.v\.enable + + Whether to enable tools for V development\. @@ -39,3 +41,73 @@ package *Default:* ` pkgs.vlang ` + + + +## languages\.v\.dev\.enable + +Enable V development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.v\.dev\.formatter\.enable + + + +Enable V formatter (v fmt built into V compiler)\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.v\.dev\.lsp\.enable + + + +Enable V language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.v\.dev\.lsp\.package + + + +The V package to use (includes v-ls language server)\. + + + +*Type:* +package + + + +*Default:* +` config.languages.v.package ` diff --git a/docs/supported-languages/vala.md b/docs/supported-languages/vala.md index 904926cd31..88ce1c1e61 100644 --- a/docs/supported-languages/vala.md +++ b/docs/supported-languages/vala.md @@ -5,6 +5,8 @@ ## languages\.vala\.enable + + Whether to enable tools for Vala development\. @@ -44,3 +46,55 @@ package *Example:* ` pkgs.vala_0_54 ` + + + +## languages\.vala\.dev\.enable + +Enable Vala development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.vala\.dev\.lsp\.enable + + + +Enable Vala language server\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.vala\.dev\.lsp\.package + + + +The vala-language-server package to use\. + + + +*Type:* +package + + + +*Default:* +` pkgs.vala-language-server ` diff --git a/docs/supported-languages/zig.md b/docs/supported-languages/zig.md index 8c756b1607..2a2f9127a6 100644 --- a/docs/supported-languages/zig.md +++ b/docs/supported-languages/zig.md @@ -5,6 +5,8 @@ ## languages\.zig\.enable + + Whether to enable tools for Zig development\. @@ -42,7 +44,59 @@ package -## languages\.zig\.zls\.package +## languages\.zig\.dev\.enable + +Enable Zig development tools\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.zig\.dev\.formatter\.enable + + + +Enable zig formatter\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.zig\.dev\.lsp\.enable + + + +Enable Zig language server (zls)\. + + + +*Type:* +boolean + + + +*Default:* +` true ` + + + +## languages\.zig\.dev\.lsp\.package diff --git a/examples/supported-languages/devenv.nix b/examples/supported-languages/devenv.nix index e230d4d6b3..7d93ae4165 100644 --- a/examples/supported-languages/devenv.nix +++ b/examples/supported-languages/devenv.nix @@ -3,9 +3,12 @@ { pkgs, ... }: { # Enable all languages tooling! + languages.ada.enable = true; languages.ansible.enable = true; + languages.assembly.enable = true; languages.c.enable = true; languages.clojure.enable = true; + languages.cobol.enable = true; languages.cplusplus.enable = true; languages.crystal.enable = true; languages.cue.enable = true; @@ -28,6 +31,7 @@ languages.kotlin.enable = true; languages.lean4.enable = true; languages.lua.enable = true; + languages.matlab.enable = true; languages.nim.enable = true; languages.nix.enable = true; languages.ocaml.enable = true; @@ -47,6 +51,7 @@ languages.scala.enable = true; languages.shell.enable = true; languages.solidity.enable = true; + languages.sql.enable = true; languages.standardml.enable = true; languages.swift.enable = true; languages.terraform.enable = true; diff --git a/src/modules/languages/ada.nix b/src/modules/languages/ada.nix new file mode 100644 index 0000000000..febbec2c7b --- /dev/null +++ b/src/modules/languages/ada.nix @@ -0,0 +1,269 @@ +{ pkgs, config, lib, ... }: + +let + cfg = config.languages.ada; + + # Available GNAT versions in nixpkgs + gnatVersions = { + "12" = pkgs.gnat12; + "13" = pkgs.gnat13; + }; + + # Get the GNAT package based on version + gnatPackage = gnatVersions.${cfg.version} or (throw "GNAT version ${cfg.version} is not available. Available versions: ${lib.concatStringsSep ", " (builtins.attrNames gnatVersions)}"); + + # Build function that ensures Ada packages are built with the selected GNAT version + buildWithGnat = gnatPkg: adaPkg: adaPkg.override { gnat = gnatPkg; }; + + # Get GNAT packages ecosystem for the selected version + gnatPackages = pkgs."gnat${cfg.version}Packages" or (throw "GNAT ${cfg.version} packages not available"); +in +{ + options.languages.ada = { + enable = lib.mkEnableOption "tools for Ada development"; + + version = lib.mkOption { + type = lib.types.enum [ "12" "13" ]; + default = "13"; + description = '' + The GNAT compiler version to use. + + GNAT 13 is the latest and recommended version for new projects. + GNAT 12 provides a stable alternative for legacy compatibility. + ''; + }; + + package = lib.mkOption { + type = lib.types.package; + default = gnatPackage; + defaultText = lib.literalExpression "gnat\${languages.ada.version}"; + description = "The GNAT compiler package to use."; + }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Ada development tools."; + }; + + gprbuild = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable gprbuild build tool."; + }; + package = lib.mkOption { + type = lib.types.package; + default = gnatPackages.gprbuild; + defaultText = lib.literalExpression "gnat\${languages.ada.version}Packages.gprbuild"; + description = "The GPRbuild package to use."; + }; + }; + + gnatcoll = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable gnatcoll-core libraries."; + }; + package = lib.mkOption { + type = lib.types.package; + default = gnatPackages.gnatcoll-core; + defaultText = lib.literalExpression "gnat\${languages.ada.version}Packages.gnatcoll-core"; + description = "The GNATCOLL core package to use."; + }; + }; + + gnatcoll-bindings = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Enable additional GNATCOLL bindings (database, compression, etc.)."; + }; + packages = lib.mkOption { + type = lib.types.listOf lib.types.package; + default = with gnatPackages; [ + gnatcoll-sql + gnatcoll-sqlite + gnatcoll-postgres + gnatcoll-gmp + gnatcoll-zlib + gnatcoll-lzma + gnatcoll-readline + gnatcoll-iconv + gnatcoll-python3 + gnatcoll-syslog + gnatcoll-omp + ]; + defaultText = lib.literalExpression '' + with gnat''${languages.ada.version}Packages; [ + gnatcoll-sql gnatcoll-sqlite gnatcoll-postgres + gnatcoll-gmp gnatcoll-zlib gnatcoll-lzma + gnatcoll-readline gnatcoll-iconv gnatcoll-python3 + gnatcoll-syslog gnatcoll-omp + ] + ''; + description = "Additional GNATCOLL binding packages to include."; + }; + }; + + spark = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Enable SPARK formal verification tools (if available)."; + }; + package = lib.mkOption { + type = lib.types.nullOr lib.types.package; + default = if (builtins.hasAttr "gnatprove" gnatPackages) then gnatPackages.gnatprove else null; + defaultText = lib.literalExpression "gnat\${languages.ada.version}Packages.gnatprove or null"; + description = "The SPARK/gnatprove package to use (if available)."; + }; + }; + + gpr2 = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Enable GPR2 library (next-generation GPR library)."; + }; + package = lib.mkOption { + type = lib.types.nullOr lib.types.package; + default = if (builtins.hasAttr "gpr2" gnatPackages) then gnatPackages.gpr2 else null; + defaultText = lib.literalExpression "gnat\${languages.ada.version}Packages.gpr2 or null"; + description = "The GPR2 package to use (if available)."; + }; + }; + + xmlada = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Enable XMLAda XML processing library."; + }; + package = lib.mkOption { + type = lib.types.nullOr lib.types.package; + default = if (builtins.hasAttr "xmlada" gnatPackages) then gnatPackages.xmlada else null; + defaultText = lib.literalExpression "gnat\${languages.ada.version}Packages.xmlada or null"; + description = "The XMLAda package to use (if available)."; + }; + }; + + aws = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Enable Ada Web Server (AWS) library."; + }; + package = lib.mkOption { + type = lib.types.nullOr lib.types.package; + default = if (builtins.hasAttr "aws" gnatPackages) then gnatPackages.aws else null; + defaultText = lib.literalExpression "gnat\${languages.ada.version}Packages.aws or null"; + description = "The AWS package to use (if available)."; + }; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; + description = '' + Enable ada-language-server language server. + ''; + }; + package = lib.mkOption { + type = lib.types.nullOr lib.types.package; + default = if (builtins.hasAttr "ada_language_server" pkgs) then pkgs.ada_language_server else null; + defaultText = lib.literalExpression "pkgs.ada_language_server or null"; + description = "The Ada Language Server package to use (if available)."; + }; + }; + + debugger = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable gdb debugger."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.gdb; + defaultText = lib.literalExpression "pkgs.gdb"; + description = "The GDB package to use."; + }; + }; + }; + + extraPackages = lib.mkOption { + type = lib.types.listOf lib.types.package; + default = [ ]; + description = "Additional Ada packages to include in the environment."; + }; + }; + + config = lib.mkIf cfg.enable { + packages = [ + cfg.package + ] ++ lib.optionals cfg.dev.enable ( + lib.optional (cfg.dev.gprbuild.enable) cfg.dev.gprbuild.package ++ + lib.optional (cfg.dev.gnatcoll.enable) cfg.dev.gnatcoll.package ++ + lib.optionals (cfg.dev.gnatcoll-bindings.enable) cfg.dev.gnatcoll-bindings.packages ++ + lib.optional (cfg.dev.spark.enable && cfg.dev.spark.package != null) cfg.dev.spark.package ++ + lib.optional (cfg.dev.gpr2.enable && cfg.dev.gpr2.package != null) cfg.dev.gpr2.package ++ + lib.optional (cfg.dev.xmlada.enable && cfg.dev.xmlada.package != null) cfg.dev.xmlada.package ++ + lib.optional (cfg.dev.aws.enable && cfg.dev.aws.package != null) cfg.dev.aws.package ++ + lib.optional (cfg.dev.lsp.enable && cfg.dev.lsp.package != null) cfg.dev.lsp.package ++ + lib.optional (cfg.dev.debugger.enable && lib.meta.availableOn pkgs.stdenv.hostPlatform pkgs.gdb) cfg.dev.debugger.package + ) ++ cfg.extraPackages; + + # Set environment variables for Ada development + env = { + # Set ADA_PROJECT_PATH to help GPR tools find project files + ADA_PROJECT_PATH = lib.concatStringsSep ":" ( + lib.flatten [ + # GNATCOLL project files + (lib.optional cfg.dev.gnatcoll.enable "${cfg.dev.gnatcoll.package}/share/gpr") + # Additional GNATCOLL bindings project files + (lib.optionals cfg.dev.gnatcoll-bindings.enable + (map (pkg: "${pkg}/share/gpr") cfg.dev.gnatcoll-bindings.packages)) + # GPR2 project files + (lib.optional (cfg.dev.gpr2.enable && cfg.dev.gpr2.package != null) + "${cfg.dev.gpr2.package}/share/gpr") + # XMLAda project files + (lib.optional (cfg.dev.xmlada.enable && cfg.dev.xmlada.package != null) + "${cfg.dev.xmlada.package}/lib/gnat") + # AWS project files + (lib.optional (cfg.dev.aws.enable && cfg.dev.aws.package != null) + "${cfg.dev.aws.package}/lib/gnat") + # Extra packages project files + (map (pkg: "${pkg}/share/gpr") cfg.extraPackages) + ] + ); + + # Set GPR_PROJECT_PATH as an alias (some tools prefer this) + GPR_PROJECT_PATH = config.env.ADA_PROJECT_PATH; + }; + + # Enable C toolchain as Ada typically needs it for linking + languages.c.enable = lib.mkDefault true; + + enterShell = '' + echo "Ada development environment activated!" + echo "GNAT version: ${cfg.version}" + echo "Compiler: $(command -v gnat 2>/dev/null && gnat --version | head -1 || echo 'gnat command not found')" + ${lib.optionalString cfg.dev.gprbuild.enable '' + echo "GPRbuild: $(command -v gprbuild 2>/dev/null && gprbuild --version | head -1 || echo 'gprbuild not found')" + ''} + ${lib.optionalString (cfg.dev.spark.enable && cfg.dev.spark.package != null) '' + echo "SPARK: $(command -v gnatprove 2>/dev/null && gnatprove --version | head -1 || echo 'gnatprove not found')" + ''} + ${lib.optionalString (cfg.dev.lsp.enable && cfg.dev.lsp.package != null) '' + echo "Ada Language Server: $(command -v ada_language_server 2>/dev/null && echo 'available' || echo 'not found')" + ''} + ${lib.optionalString (config.env.ADA_PROJECT_PATH != "") '' + echo "ADA_PROJECT_PATH configured with ${toString (lib.length (lib.splitString ":" config.env.ADA_PROJECT_PATH))} entries" + ''} + ''; + }; +} diff --git a/src/modules/languages/ansible.nix b/src/modules/languages/ansible.nix index 3b2bbbcae9..96e19011c6 100644 --- a/src/modules/languages/ansible.nix +++ b/src/modules/languages/ansible.nix @@ -13,13 +13,51 @@ in defaultText = lib.literalExpression "pkgs.ansible"; description = "The Ansible package to use."; }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Ansible development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable ansible-language-server language server."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.ansible-language-server; + defaultText = lib.literalExpression "pkgs.ansible-language-server"; + description = "The ansible-language-server package to use."; + }; + }; + + linter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable ansible-lint linter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.ansible-lint; + defaultText = lib.literalExpression "pkgs.ansible-lint"; + description = "The ansible-lint package to use."; + }; + }; + }; }; config = lib.mkIf cfg.enable { - packages = with pkgs; [ - ansible-lint + packages = [ cfg.package - ]; + ] ++ lib.optionals cfg.dev.enable ( + lib.optional (cfg.dev.lsp.enable) cfg.dev.lsp.package ++ + lib.optional (cfg.dev.linter.enable) cfg.dev.linter.package + ); }; } diff --git a/src/modules/languages/assembly.nix b/src/modules/languages/assembly.nix new file mode 100644 index 0000000000..7a592582a8 --- /dev/null +++ b/src/modules/languages/assembly.nix @@ -0,0 +1,205 @@ +{ pkgs, config, lib, ... }: + +let + cfg = config.languages.assembly; +in +{ + options.languages.assembly = { + enable = lib.mkEnableOption "tools for Assembly development"; + + assembler = lib.mkOption { + type = lib.types.enum [ "nasm" "yasm" "fasm" "gas" ]; + default = "nasm"; + description = "Primary assembler to use."; + }; + + package = lib.mkOption { + type = lib.types.package; + default = pkgs.${cfg.assembler}; + defaultText = lib.literalExpression "pkgs.\${cfg.assembler}"; + description = "The primary assembler package to use."; + }; + + additionalAssemblers = lib.mkOption { + type = lib.types.listOf (lib.types.enum [ "nasm" "yasm" "fasm" "gas" ]); + default = [ ]; + description = "Additional assemblers to include in the environment."; + example = [ "yasm" "fasm" ]; + }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Assembly development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable asm-lsp language server."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.asm-lsp; + defaultText = lib.literalExpression "pkgs.asm-lsp"; + description = "The asm-lsp package to use."; + }; + }; + + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable assembly formatters."; + }; + nasmfmt = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable nasmfmt formatter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.nasmfmt; + defaultText = lib.literalExpression "pkgs.nasmfmt"; + description = "The nasmfmt package to use."; + }; + }; + asmfmt = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Enable asmfmt formatter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.asmfmt; + defaultText = lib.literalExpression "pkgs.asmfmt"; + description = "The asmfmt package to use."; + }; + }; + }; + + disassembler = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable disassembly tools."; + }; + radare2 = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable radare2 disassembler."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.radare2; + defaultText = lib.literalExpression "pkgs.radare2"; + description = "The radare2 package to use."; + }; + }; + capstone = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable capstone disassembler."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.capstone; + defaultText = lib.literalExpression "pkgs.capstone"; + description = "The capstone package to use."; + }; + }; + }; + + debugger = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable gdb debugger."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.gdb; + defaultText = lib.literalExpression "pkgs.gdb"; + description = "The debugger package to use."; + }; + }; + + binutils = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable binutils tools."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.binutils; + defaultText = lib.literalExpression "pkgs.binutils"; + description = "The binutils package to use."; + }; + }; + + hexEditor = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Enable ghex hex editor."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.ghex; + defaultText = lib.literalExpression "pkgs.ghex"; + description = "The hex editor package to use."; + }; + }; + }; + }; + + config = lib.mkIf cfg.enable { + packages = [ + cfg.package + ] ++ (map (asm: pkgs.${asm}) cfg.additionalAssemblers) + ++ lib.optionals cfg.dev.enable ( + lib.optional cfg.dev.lsp.enable cfg.dev.lsp.package ++ + lib.optionals cfg.dev.formatter.enable ( + lib.optional cfg.dev.formatter.nasmfmt.enable cfg.dev.formatter.nasmfmt.package ++ + lib.optional cfg.dev.formatter.asmfmt.enable cfg.dev.formatter.asmfmt.package + ) ++ + lib.optionals cfg.dev.disassembler.enable ( + lib.optional cfg.dev.disassembler.radare2.enable cfg.dev.disassembler.radare2.package ++ + lib.optional cfg.dev.disassembler.capstone.enable cfg.dev.disassembler.capstone.package + ) ++ + lib.optional cfg.dev.debugger.enable cfg.dev.debugger.package ++ + lib.optional cfg.dev.binutils.enable cfg.dev.binutils.package ++ + lib.optional cfg.dev.hexEditor.enable cfg.dev.hexEditor.package + ); + + enterShell = '' + echo "Assembly development environment:" + echo " Primary assembler: ${cfg.assembler}" + ${lib.optionalString (cfg.additionalAssemblers != []) '' + echo " Additional assemblers: ${lib.concatStringsSep ", " cfg.additionalAssemblers}" + ''} + ${lib.optionalString cfg.dev.enable '' + echo " Development tools enabled:" + ${lib.optionalString cfg.dev.lsp.enable ''echo " - LSP: asm-lsp"''} + ${lib.optionalString cfg.dev.formatter.enable '' + ${lib.optionalString cfg.dev.formatter.nasmfmt.enable ''echo " - NASM formatter: nasmfmt"''} + ${lib.optionalString cfg.dev.formatter.asmfmt.enable ''echo " - Go ASM formatter: asmfmt"''} + ''} + ${lib.optionalString cfg.dev.disassembler.enable '' + ${lib.optionalString cfg.dev.disassembler.radare2.enable ''echo " - Reverse engineering: radare2"''} + ${lib.optionalString cfg.dev.disassembler.capstone.enable ''echo " - Disassembler library: capstone"''} + ''} + ${lib.optionalString cfg.dev.debugger.enable ''echo " - Debugger: gdb"''} + ${lib.optionalString cfg.dev.binutils.enable ''echo " - Binary utilities: binutils"''} + ${lib.optionalString cfg.dev.hexEditor.enable ''echo " - Hex editor: ghex"''} + ''} + ''; + }; +} diff --git a/src/modules/languages/c.nix b/src/modules/languages/c.nix index 42a8562a56..b230a004c6 100644 --- a/src/modules/languages/c.nix +++ b/src/modules/languages/c.nix @@ -4,30 +4,83 @@ let cfg = config.languages.c; in { + imports = [ + (lib.mkRenamedOptionModule [ "languages" "c" "debugger" ] [ "languages" "c" "dev" "debugger" "package" ]) + ]; + options.languages.c = { enable = lib.mkEnableOption "tools for C development"; - debugger = lib.mkOption { - type = lib.types.nullOr lib.types.package; - default = - if !(pkgs.stdenv.isAarch64 && pkgs.stdenv.isLinux) && lib.meta.availableOn pkgs.stdenv.hostPlatform pkgs.gdb - then pkgs.gdb - else null; - defaultText = lib.literalExpression "pkgs.gdb"; - description = '' - An optional debugger package to use with c. - The default is `gdb`, if supported on the current system. - ''; + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable C development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable ccls language server."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.ccls; + defaultText = lib.literalExpression "pkgs.ccls"; + description = '' + The ccls package to use. + + Note: clangd (available in pkgs.clang-tools) is the most popular C/C++ LSP, + actively maintained by the LLVM team. You can switch to it by setting: + languages.c.dev.lsp.package = pkgs.clang-tools; + + Other LSPs: + - ccls: Good alternative, currently the default + - cquery: Deprecated/unmaintained, do not use + ''; + }; + }; + + debugger = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable gdb debugger."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.gdb; + defaultText = lib.literalExpression "pkgs.gdb"; + description = "The gdb package to use."; + }; + }; + + valgrind = { + enable = lib.mkOption { + type = lib.types.bool; + default = lib.meta.availableOn pkgs.stdenv.hostPlatform pkgs.valgrind && !pkgs.valgrind.meta.broken; + defaultText = lib.literalExpression "lib.meta.availableOn pkgs.stdenv.hostPlatform pkgs.valgrind && !pkgs.valgrind.meta.broken"; + description = "Enable valgrind memory debugger."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.valgrind; + defaultText = lib.literalExpression "pkgs.valgrind"; + description = "The valgrind package to use."; + }; + }; }; }; config = lib.mkIf cfg.enable { - packages = with pkgs; [ - stdenv - gnumake - ccls - pkg-config - ] ++ lib.optional (cfg.debugger != null) cfg.debugger - ++ lib.optional (lib.meta.availableOn pkgs.stdenv.hostPlatform pkgs.valgrind && !pkgs.valgrind.meta.broken) pkgs.valgrind; + packages = [ + pkgs.stdenv + pkgs.gnumake + ] ++ lib.optionals cfg.dev.enable ( + lib.optional (cfg.dev.lsp.enable) cfg.dev.lsp.package ++ + lib.optional (cfg.dev.debugger.enable && !(pkgs.stdenv.isAarch64 && pkgs.stdenv.isLinux) && lib.meta.availableOn pkgs.stdenv.hostPlatform pkgs.gdb) cfg.dev.debugger.package ++ + lib.optional (cfg.dev.valgrind.enable) cfg.dev.valgrind.package + ); }; } diff --git a/src/modules/languages/clojure.nix b/src/modules/languages/clojure.nix index 2e8ba4dcf3..79f3996679 100644 --- a/src/modules/languages/clojure.nix +++ b/src/modules/languages/clojure.nix @@ -6,15 +6,68 @@ in { options.languages.clojure = { enable = lib.mkEnableOption "tools for Clojure development"; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Clojure development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable clojure-lsp language server."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.clojure-lsp; + defaultText = lib.literalExpression "pkgs.clojure-lsp"; + description = "The clojure-lsp package to use."; + }; + }; + + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable cljfmt formatter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.clojure-lsp; + defaultText = lib.literalExpression "pkgs.clojure-lsp"; + description = "The cljfmt package to use."; + }; + }; + + linter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable clj-kondo linter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.clj-kondo; + defaultText = lib.literalExpression "pkgs.clj-kondo"; + description = "The clj-kondo package to use."; + }; + }; + }; }; config = lib.mkIf cfg.enable { - packages = with pkgs; [ - (clojure.override { + packages = [ + (pkgs.clojure.override { jdk = config.languages.java.jdk.package; }) - clojure-lsp - ]; + ] ++ lib.optionals cfg.dev.enable ( + lib.optional (cfg.dev.lsp.enable) cfg.dev.lsp.package ++ + lib.optional (cfg.dev.formatter.enable) cfg.dev.formatter.package ++ + lib.optional (cfg.dev.linter.enable) cfg.dev.linter.package + ); languages.java.enable = true; }; } diff --git a/src/modules/languages/cobol.nix b/src/modules/languages/cobol.nix new file mode 100644 index 0000000000..ef7bdde8cd --- /dev/null +++ b/src/modules/languages/cobol.nix @@ -0,0 +1,173 @@ +{ pkgs, config, lib, ... }: + +let + cfg = config.languages.cobol; +in +{ + options.languages.cobol = { + enable = lib.mkEnableOption "tools for COBOL development"; + + package = lib.mkOption { + type = lib.types.package; + default = pkgs.gnucobol; + defaultText = lib.literalExpression "pkgs.gnucobol"; + description = "The GNU COBOL compiler package to use."; + }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable COBOL development tools."; + }; + + editor = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable cobol editor support."; + }; + emacsMode = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable cobol-mode for Emacs."; + }; + package = lib.mkOption { + type = lib.types.nullOr lib.types.package; + default = if (builtins.hasAttr "cobol-mode" pkgs.emacsPackages) then pkgs.emacsPackages.cobol-mode else null; + defaultText = lib.literalExpression "pkgs.emacsPackages.cobol-mode or null"; + description = "The cobol-mode package to use."; + }; + }; + }; + + documentation = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Enable cobol documentation tools."; + }; + robodoc = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable robodoc documentation tool."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.robodoc; + defaultText = lib.literalExpression "pkgs.robodoc"; + description = "The ROBODoc package to use."; + }; + }; + }; + + debugger = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable gdb debugger."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.gdb; + defaultText = lib.literalExpression "pkgs.gdb"; + description = "The debugger package to use."; + }; + }; + + linter = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; + description = '' + Enable cobol linter. + ''; + }; + }; + }; + + copybooks = lib.mkOption { + type = lib.types.listOf lib.types.str; + default = [ ]; + description = '' + List of directories to search for COBOL copybooks. + These will be added to the COB_COPY_DIR environment variable. + ''; + example = [ "./copybooks" "../shared-copybooks" ]; + }; + + compilerFlags = lib.mkOption { + type = lib.types.listOf lib.types.str; + default = [ ]; + description = "Additional flags to pass to the GNU COBOL compiler."; + example = [ "-Wall" "-std=cobol2014" "-free" ]; + }; + }; + + config = lib.mkIf cfg.enable { + packages = [ + cfg.package + ] ++ lib.optionals cfg.dev.enable ( + lib.optionals cfg.dev.editor.enable + ( + lib.optional (cfg.dev.editor.emacsMode.enable && cfg.dev.editor.emacsMode.package != null) cfg.dev.editor.emacsMode.package + ) ++ + lib.optionals cfg.dev.documentation.enable ( + lib.optional cfg.dev.documentation.robodoc.enable cfg.dev.documentation.robodoc.package + ) ++ + lib.optional (cfg.dev.debugger.enable && lib.meta.availableOn pkgs.stdenv.hostPlatform pkgs.gdb) cfg.dev.debugger.package + ); + + # Enable C toolchain since GNU COBOL compiles to C + languages.c.enable = lib.mkDefault true; + + env = { + # Set copybook search directories + COB_COPY_DIR = lib.optionalString (cfg.copybooks != [ ]) + (lib.concatStringsSep ":" cfg.copybooks); + + # Set compiler flags if specified + COB_CFLAGS = lib.optionalString (cfg.compilerFlags != [ ]) + (lib.concatStringsSep " " cfg.compilerFlags); + + # Set library path for GNU COBOL runtime + COB_LIBRARY_PATH = "${cfg.package}/lib"; + + # Configuration directory for GNU COBOL + COB_CONFIG_DIR = "${cfg.package}/share/gnucobol/config"; + }; + + enterShell = '' + echo "COBOL development environment activated!" + echo "GNU COBOL compiler: $(command -v cobc 2>/dev/null && cobc --version | head -1 || echo 'cobc not found')" + ${lib.optionalString (cfg.copybooks != [ ]) '' + echo "Copybook directories: ${lib.concatStringsSep ", " cfg.copybooks}" + ''} + ${lib.optionalString (cfg.compilerFlags != [ ]) '' + echo "Compiler flags: ${lib.concatStringsSep " " cfg.compilerFlags}" + ''} + ${lib.optionalString cfg.dev.enable '' + echo "Development tools:" + ${lib.optionalString (cfg.dev.editor.emacsMode.enable && cfg.dev.editor.emacsMode.package != null) '' + echo " - Emacs COBOL mode available" + ''} + ${lib.optionalString (cfg.dev.documentation.enable && cfg.dev.documentation.robodoc.enable) '' + echo " - Documentation: $(command -v robodoc 2>/dev/null && echo 'robodoc available' || echo 'robodoc not found')" + ''} + ${lib.optionalString cfg.dev.debugger.enable '' + echo " - Debugger: $(command -v gdb 2>/dev/null && gdb --version | head -1 || echo 'gdb not found')" + ''} + ''} + echo "" + echo "Quick start:" + echo " Create a COBOL program: example.cob" + echo " Compile: cobc -x -o example example.cob" + echo " Run: ./example" + ${lib.optionalString (cfg.dev.documentation.enable && cfg.dev.documentation.robodoc.enable) '' + echo " Generate docs: robodoc --src ./ --doc ./docs --multidoc --html" + ''} + ''; + }; +} diff --git a/src/modules/languages/cplusplus.nix b/src/modules/languages/cplusplus.nix index 3443852461..8b7facd19e 100644 --- a/src/modules/languages/cplusplus.nix +++ b/src/modules/languages/cplusplus.nix @@ -2,17 +2,94 @@ let cfg = config.languages.cplusplus; + cCfg = config.languages.c; in { options.languages.cplusplus = { enable = lib.mkEnableOption "tools for C++ development"; + + package = lib.mkOption { + type = lib.types.package; + default = pkgs.clang; + defaultText = lib.literalExpression "pkgs.clang"; + description = "The C++ compiler package to use."; + }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable C++ development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable ccls language server."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.ccls; + defaultText = lib.literalExpression "pkgs.ccls"; + description = '' + The ccls package to use. + + Note: clangd (available in pkgs.clang-tools) is the most popular C/C++ LSP, + actively maintained by the LLVM team. You can switch to it by setting: + languages.cplusplus.dev.lsp.package = pkgs.clang-tools; + + Other LSPs: + - ccls: Good alternative, currently the default + - cquery: Deprecated/unmaintained, do not use + ''; + }; + }; + + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable clang-format formatter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.clang-tools; + defaultText = lib.literalExpression "pkgs.clang-tools"; + description = "The clang-format package to use."; + }; + }; + + debugger = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable gdb debugger."; + }; + package = lib.mkOption { + type = lib.types.package; + default = + if !(pkgs.stdenv.isAarch64 && pkgs.stdenv.isLinux) && lib.meta.availableOn pkgs.stdenv.hostPlatform pkgs.gdb + then pkgs.gdb + else pkgs.lldb; + defaultText = lib.literalExpression "pkgs.gdb or pkgs.lldb"; + description = "The debugger package to use. Defaults to gdb if available, otherwise lldb."; + }; + }; + }; }; config = lib.mkIf cfg.enable { - packages = with pkgs; [ - cmake - clang - ccls - ]; + packages = [ + # Core compiler and build tools - always available + cfg.package + pkgs.cmake + ] ++ lib.optionals cfg.dev.enable ( + # Share LSP with C module if both are enabled + lib.optional (cfg.dev.lsp.enable && !cCfg.enable) cfg.dev.lsp.package ++ + lib.optional (cfg.dev.formatter.enable) cfg.dev.formatter.package ++ + # Share debugger with C module if both are enabled + lib.optional (cfg.dev.debugger.enable && !cCfg.enable) cfg.dev.debugger.package + ); }; } diff --git a/src/modules/languages/crystal.nix b/src/modules/languages/crystal.nix index 29ba6971ab..7b4a266b33 100644 --- a/src/modules/languages/crystal.nix +++ b/src/modules/languages/crystal.nix @@ -6,6 +6,36 @@ in { options.languages.crystal = { enable = lib.mkEnableOption "Enable tools for Crystal development."; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Crystal development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable crystalline language server."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.crystalline; + defaultText = lib.literalExpression "pkgs.crystalline"; + description = "The crystalline package to use."; + }; + }; + + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable crystal formatter."; + }; + }; + }; }; config = lib.mkIf cfg.enable { @@ -15,6 +45,8 @@ in packages = [ pkgs.crystal pkgs.shards - ]; + ] ++ lib.optionals cfg.dev.enable ( + lib.optional cfg.dev.lsp.enable cfg.dev.lsp.package + ); }; } diff --git a/src/modules/languages/cue.nix b/src/modules/languages/cue.nix index 7575442e87..88365f8664 100644 --- a/src/modules/languages/cue.nix +++ b/src/modules/languages/cue.nix @@ -13,11 +13,35 @@ in defaultText = lib.literalExpression "pkgs.cue"; description = "The CUE package to use."; }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable CUE development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable cuelsp language server."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.cuelsp; + defaultText = lib.literalExpression "pkgs.cuelsp"; + description = "The cuelsp package to use."; + }; + }; + }; }; config = lib.mkIf cfg.enable { packages = [ cfg.package - ]; + ] ++ lib.optionals cfg.dev.enable ( + lib.optional cfg.dev.lsp.enable cfg.dev.lsp.package + ); }; } diff --git a/src/modules/languages/dart.nix b/src/modules/languages/dart.nix index f0bd706f96..9c16e89135 100644 --- a/src/modules/languages/dart.nix +++ b/src/modules/languages/dart.nix @@ -13,6 +13,30 @@ in defaultText = lib.literalExpression "pkgs.dart"; description = "The Dart package to use."; }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Dart development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable dart language server."; + }; + }; + + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable dart formatter."; + }; + }; + }; }; config = lib.mkIf cfg.enable { diff --git a/src/modules/languages/deno.nix b/src/modules/languages/deno.nix index aef0e65253..578fa2fd8f 100644 --- a/src/modules/languages/deno.nix +++ b/src/modules/languages/deno.nix @@ -12,6 +12,38 @@ in default = pkgs.deno; defaultText = lib.literalExpression "pkgs.deno"; }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Deno development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable deno language server."; + }; + }; + + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable deno formatter."; + }; + }; + + linter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable deno linter."; + }; + }; + }; }; config = lib.mkIf cfg.enable { diff --git a/src/modules/languages/dotnet.nix b/src/modules/languages/dotnet.nix index b22def069a..f582b63a6a 100644 --- a/src/modules/languages/dotnet.nix +++ b/src/modules/languages/dotnet.nix @@ -13,12 +13,64 @@ in defaultText = lib.literalExpression "pkgs.dotnet-sdk"; description = "The .NET SDK package to use."; }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable .NET development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable omnisharp-roslyn language server."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.omnisharp-roslyn; + defaultText = lib.literalExpression "pkgs.omnisharp-roslyn"; + description = "The omnisharp-roslyn package to use."; + }; + }; + + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable dotnet formatter."; + }; + package = lib.mkOption { + type = lib.types.nullOr lib.types.package; + default = null; + description = "The dotnet-format package to use."; + }; + }; + + debugger = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable netcoredbg debugger."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.netcoredbg; + defaultText = lib.literalExpression "pkgs.netcoredbg"; + description = "The netcoredbg package to use."; + }; + }; + }; }; config = lib.mkIf cfg.enable { packages = [ cfg.package - ]; + ] ++ lib.optionals cfg.dev.enable ( + lib.optional (cfg.dev.lsp.enable) cfg.dev.lsp.package ++ + lib.optional (cfg.dev.debugger.enable) cfg.dev.debugger.package + ); env.DOTNET_ROOT = "${ if lib.hasAttr "unwrapped" cfg.package diff --git a/src/modules/languages/elixir.nix b/src/modules/languages/elixir.nix index 6f7cb3dcd2..c3c2cbfed7 100644 --- a/src/modules/languages/elixir.nix +++ b/src/modules/languages/elixir.nix @@ -13,6 +13,56 @@ in default = pkgs.elixir; defaultText = lib.literalExpression "pkgs.elixir"; }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Elixir development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable elixir-ls language server."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.elixir_ls; + defaultText = lib.literalExpression "pkgs.elixir_ls"; + description = "The elixir-ls package to use."; + }; + }; + + linter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable credo linter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.beamPackages.credo; + defaultText = lib.literalExpression "pkgs.beamPackages.credo"; + description = "The credo package to use."; + }; + }; + + dialyzer = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable dialyxir static analyzer."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.beamPackages.dialyxir; + defaultText = lib.literalExpression "pkgs.beamPackages.dialyxir"; + description = "The dialyxir package to use."; + }; + }; + }; }; config = lib.mkIf cfg.enable @@ -24,9 +74,12 @@ in mix-test.package = cfg.package; }; - packages = with pkgs; [ + packages = [ cfg.package - elixir_ls - ]; + ] ++ lib.optionals cfg.dev.enable ( + lib.optional (cfg.dev.lsp.enable) cfg.dev.lsp.package ++ + lib.optional (cfg.dev.linter.enable) cfg.dev.linter.package ++ + lib.optional (cfg.dev.dialyzer.enable) cfg.dev.dialyzer.package + ); }; } diff --git a/src/modules/languages/elm.nix b/src/modules/languages/elm.nix index efa5209850..7a6f71c4df 100644 --- a/src/modules/languages/elm.nix +++ b/src/modules/languages/elm.nix @@ -6,15 +6,73 @@ in { options.languages.elm = { enable = lib.mkEnableOption "tools for Elm development"; + + package = lib.mkOption { + type = lib.types.package; + default = pkgs.elmPackages.elm; + defaultText = lib.literalExpression "pkgs.elmPackages.elm"; + description = "The Elm compiler package to use."; + }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Elm development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable elm-language-server language server."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.elmPackages.elm-language-server; + defaultText = lib.literalExpression "pkgs.elmPackages.elm-language-server"; + description = "The elm-language-server package to use."; + }; + }; + + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable elm-format formatter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.elmPackages.elm-format; + defaultText = lib.literalExpression "pkgs.elmPackages.elm-format"; + description = "The elm-format package to use."; + }; + }; + + test = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable elm-test test runner."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.elmPackages.elm-test; + defaultText = lib.literalExpression "pkgs.elmPackages.elm-test"; + description = "The elm-test package to use."; + }; + }; + }; }; config = lib.mkIf cfg.enable { - packages = with pkgs; [ - elmPackages.elm - elmPackages.elm-format - elmPackages.elm-test - elmPackages.elm-language-server - elm2nix - ]; + packages = [ + cfg.package + pkgs.elm2nix + ] ++ lib.optionals cfg.dev.enable ( + lib.optional cfg.dev.lsp.enable cfg.dev.lsp.package ++ + lib.optional cfg.dev.formatter.enable cfg.dev.formatter.package ++ + lib.optional cfg.dev.test.enable cfg.dev.test.package + ); }; } diff --git a/src/modules/languages/erlang.nix b/src/modules/languages/erlang.nix index cce6fce7a3..08d4e5fb2f 100644 --- a/src/modules/languages/erlang.nix +++ b/src/modules/languages/erlang.nix @@ -16,14 +16,37 @@ in default = pkgs.erlang_27; defaultText = lib.literalExpression "pkgs.erlang"; }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Erlang development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable erlang-ls language server."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.erlang-ls; + defaultText = lib.literalExpression "pkgs.erlang-ls"; + description = "The erlang-ls package to use."; + }; + }; + }; }; config = lib.mkIf cfg.enable { packages = [ cfg.package - pkgs.erlang-ls rebar3 - ]; + ] ++ lib.optionals cfg.dev.enable ( + lib.optional (cfg.dev.lsp.enable) cfg.dev.lsp.package + ); }; } diff --git a/src/modules/languages/fortran.nix b/src/modules/languages/fortran.nix index 312ddb3cf2..618b7f0f6a 100644 --- a/src/modules/languages/fortran.nix +++ b/src/modules/languages/fortran.nix @@ -13,12 +13,50 @@ in defaultText = lib.literalExpression "pkgs.gfortran"; description = "The Fortran package to use."; }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Fortran development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable fortran-language-server language server."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.fortran-language-server; + defaultText = lib.literalExpression "pkgs.fortran-language-server"; + description = "The fortran-language-server package to use."; + }; + }; + + fpm = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable fortran-fpm package manager."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.fortran-fpm; + defaultText = lib.literalExpression "pkgs.fortran-fpm"; + description = "The fortran-fpm package to use."; + }; + }; + }; }; config = lib.mkIf cfg.enable { - packages = with pkgs; [ - fortran-fpm - fortran-language-server - ]; + packages = [ + cfg.package + ] ++ lib.optionals cfg.dev.enable ( + lib.optional (cfg.dev.lsp.enable) cfg.dev.lsp.package ++ + lib.optional (cfg.dev.fpm.enable) cfg.dev.fpm.package + ); }; } diff --git a/src/modules/languages/gawk.nix b/src/modules/languages/gawk.nix index 5a0b732616..7dfacb6ab1 100644 --- a/src/modules/languages/gawk.nix +++ b/src/modules/languages/gawk.nix @@ -6,12 +6,36 @@ in { options.languages.gawk = { enable = lib.mkEnableOption "tools for GNU Awk development"; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable GNU Awk development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable awk-language-server language server."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.awk-language-server; + defaultText = lib.literalExpression "pkgs.awk-language-server"; + description = "The awk-language-server package to use."; + }; + }; + }; }; config = lib.mkIf cfg.enable { packages = with pkgs; [ gawk gawkextlib.gawkextlib - ]; + ] ++ lib.optionals cfg.dev.enable ( + lib.optional cfg.dev.lsp.enable cfg.dev.lsp.package + ); }; } diff --git a/src/modules/languages/gleam.nix b/src/modules/languages/gleam.nix index 2b2b96652e..b338cea845 100644 --- a/src/modules/languages/gleam.nix +++ b/src/modules/languages/gleam.nix @@ -13,6 +13,30 @@ in description = "The Gleam package to use."; defaultText = lib.literalExpression "pkgs.gleam"; }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Gleam development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable gleam language server."; + }; + }; + + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable gleam formatter."; + }; + }; + }; }; config = lib.mkIf cfg.enable { diff --git a/src/modules/languages/go.nix b/src/modules/languages/go.nix index d8dbe457f8..aaf34f358a 100644 --- a/src/modules/languages/go.nix +++ b/src/modules/languages/go.nix @@ -2,56 +2,173 @@ let cfg = config.languages.go; - - # Override the buildGoModule function to use the specified Go package. - buildGoModule = pkgs.buildGoModule.override { go = cfg.package; }; - buildWithSpecificGo = pkg: - let - overrideArgs = lib.functionArgs pkg.override; - in - if builtins.hasAttr "buildGoModule" overrideArgs then - pkg.override { inherit buildGoModule; } - else if builtins.hasAttr "buildGoLatestModule" overrideArgs then - pkg.override { buildGoLatestModule = buildGoModule; } - else - throw "Package ${pkg.pname or "unknown"} does not accept buildGoModule or buildGoLatestModule arguments"; in { - options.languages.go = { - enable = lib.mkEnableOption "tools for Go development"; - - package = lib.mkOption { - type = lib.types.package; - default = pkgs.go; - defaultText = lib.literalExpression "pkgs.go"; - description = "The Go package to use."; - }; + options.languages.go = + let + # Override the buildGoModule function to use the specified Go package. + buildGoModule = pkgs.buildGoModule.override { go = cfg.package; }; + buildWithSpecificGo = pkg: + let + overrideArgs = lib.functionArgs pkg.override; + in + if builtins.hasAttr "buildGoModule" overrideArgs then + pkg.override { inherit buildGoModule; } + else if builtins.hasAttr "buildGoLatestModule" overrideArgs then + pkg.override { buildGoLatestModule = buildGoModule; } + else + throw "Package ${pkg.pname or "unknown"} does not accept buildGoModule or buildGoLatestModule arguments"; + in + { + enable = lib.mkEnableOption "tools for Go development"; + + package = lib.mkOption { + type = lib.types.package; + default = pkgs.go; + defaultText = lib.literalExpression "pkgs.go"; + description = "The Go package to use."; + }; + + enableHardeningWorkaround = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Enable hardening workaround required for Delve debugger (https://github.com/go-delve/delve/issues/3085)"; + }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Go development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable gopls language server."; + }; + package = lib.mkOption { + type = lib.types.package; + default = buildWithSpecificGo pkgs.gopls; + defaultText = lib.literalExpression "buildWithSpecificGo pkgs.gopls"; + description = "The gopls package to use."; + }; + }; - enableHardeningWorkaround = lib.mkOption { - type = lib.types.bool; - default = false; - description = "Enable hardening workaround required for Delve debugger (https://github.com/go-delve/delve/issues/3085)"; + debugger = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable delve debugger."; + }; + package = lib.mkOption { + type = lib.types.package; + default = buildWithSpecificGo pkgs.delve; + defaultText = lib.literalExpression "buildWithSpecificGo pkgs.delve"; + description = "The delve package to use."; + }; + }; + + gotools = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable gotools development tools."; + }; + package = lib.mkOption { + type = lib.types.package; + default = buildWithSpecificGo pkgs.gotools; + defaultText = lib.literalExpression "buildWithSpecificGo pkgs.gotools"; + description = "The gotools package to use."; + }; + }; + + gomodifytags = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable gomodifytags struct tag tool."; + }; + package = lib.mkOption { + type = lib.types.package; + default = buildWithSpecificGo pkgs.gomodifytags; + defaultText = lib.literalExpression "buildWithSpecificGo pkgs.gomodifytags"; + description = "The gomodifytags package to use."; + }; + }; + + impl = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable impl interface implementation generator."; + }; + package = lib.mkOption { + type = lib.types.package; + default = buildWithSpecificGo pkgs.impl; + defaultText = lib.literalExpression "buildWithSpecificGo pkgs.impl"; + description = "The impl package to use."; + }; + }; + + go-tools = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable go-tools static analysis tools."; + }; + package = lib.mkOption { + type = lib.types.package; + default = buildWithSpecificGo pkgs.go-tools; + defaultText = lib.literalExpression "buildWithSpecificGo pkgs.go-tools"; + description = "The go-tools package to use."; + }; + }; + + gotests = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable gotests test generator."; + }; + package = lib.mkOption { + type = lib.types.package; + default = buildWithSpecificGo pkgs.gotests; + defaultText = lib.literalExpression "buildWithSpecificGo pkgs.gotests"; + description = "The gotests package to use."; + }; + }; + + iferr = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable iferr error handling generator."; + }; + package = lib.mkOption { + type = lib.types.package; + default = buildWithSpecificGo pkgs.iferr; + defaultText = lib.literalExpression "buildWithSpecificGo pkgs.iferr"; + description = "The iferr package to use."; + }; + }; + }; }; - }; config = lib.mkIf cfg.enable { packages = [ cfg.package - - # Required by vscode-go - (buildWithSpecificGo pkgs.delve) - - # vscode-go expects all tool compiled with the same used go version, see: https://github.com/golang/vscode-go/blob/72249dc940e5b6ec97b08e6690a5f042644e2bb5/src/goInstallTools.ts#L721 - (buildWithSpecificGo pkgs.gotools) - (buildWithSpecificGo pkgs.gomodifytags) - (buildWithSpecificGo pkgs.impl) - (buildWithSpecificGo pkgs.go-tools) - (buildWithSpecificGo pkgs.gopls) - (buildWithSpecificGo pkgs.gotests) - - # Required by vim-go - (buildWithSpecificGo pkgs.iferr) - ]; + ] ++ lib.optionals cfg.dev.enable ( + lib.optional (cfg.dev.lsp.enable) cfg.dev.lsp.package ++ + lib.optional (cfg.dev.debugger.enable) cfg.dev.debugger.package ++ + lib.optional (cfg.dev.gotools.enable) cfg.dev.gotools.package ++ + lib.optional (cfg.dev.gomodifytags.enable) cfg.dev.gomodifytags.package ++ + lib.optional (cfg.dev.impl.enable) cfg.dev.impl.package ++ + lib.optional (cfg.dev.go-tools.enable) cfg.dev.go-tools.package ++ + lib.optional (cfg.dev.gotests.enable) cfg.dev.gotests.package ++ + lib.optional (cfg.dev.iferr.enable) cfg.dev.iferr.package + ); hardeningDisable = lib.optional (cfg.enableHardeningWorkaround) "fortify"; diff --git a/src/modules/languages/haskell.nix b/src/modules/languages/haskell.nix index a1bd106b04..87eef92ee9 100644 --- a/src/modules/languages/haskell.nix +++ b/src/modules/languages/haskell.nix @@ -18,18 +18,6 @@ in ''; }; - languageServer = lib.mkOption { - type = lib.types.nullOr lib.types.package; - default = pkgs.haskell-language-server.override - { - supportedGhcVersions = [ ghcVersion ]; - }; - defaultText = lib.literalExpression "pkgs.haskell-language-server"; - description = '' - Haskell language server to use. - ''; - }; - stack = lib.mkOption { type = lib.types.nullOr lib.types.package; default = pkgs.stack; @@ -38,6 +26,65 @@ in Haskell stack to use. ''; }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Haskell development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable haskell-language-server language server."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.haskell-language-server.override + { + supportedGhcVersions = [ ghcVersion ]; + }; + defaultText = lib.literalExpression '' + pkgs.haskell-language-server.override { + supportedGhcVersions = [ ghcVersion ]; + } + ''; + description = '' + The haskell-language-server package to use. + ''; + }; + }; + + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable ormolu formatter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.haskellPackages.ormolu; + defaultText = lib.literalExpression "pkgs.haskellPackages.ormolu"; + description = "The ormolu package to use."; + }; + }; + + linter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable hlint linter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.haskellPackages.hlint; + defaultText = lib.literalExpression "pkgs.haskellPackages.hlint"; + description = "The hlint package to use."; + }; + }; + }; }; config = lib.mkIf cfg.enable { @@ -47,7 +94,11 @@ in zlib hpack ] - ++ (lib.optional (cfg.languageServer != null) cfg.languageServer) - ++ (lib.optional (cfg.stack != null) cfg.stack); + ++ (lib.optional (cfg.stack != null) cfg.stack) + ++ lib.optionals cfg.dev.enable ( + lib.optional cfg.dev.lsp.enable cfg.dev.lsp.package ++ + lib.optional cfg.dev.formatter.enable cfg.dev.formatter.package ++ + lib.optional cfg.dev.linter.enable cfg.dev.linter.package + ); }; } diff --git a/src/modules/languages/idris.nix b/src/modules/languages/idris.nix index 40671427be..c40531f529 100644 --- a/src/modules/languages/idris.nix +++ b/src/modules/languages/idris.nix @@ -14,11 +14,22 @@ in { ''; example = lib.literalExpression "pkgs.idris"; }; + + lsp = { + enable = lib.mkEnableOption "Idris language server"; + + package = lib.mkOption { + type = lib.types.package; + default = pkgs.idris2Packages.idris2Lsp; + defaultText = lib.literalExpression "pkgs.idris2Packages.idris2Lsp"; + description = "Idris language server package to use."; + }; + }; }; config = lib.mkIf cfg.enable { packages = [ cfg.package - ]; + ] ++ lib.optional cfg.lsp.enable cfg.lsp.package; }; } diff --git a/src/modules/languages/java.nix b/src/modules/languages/java.nix index 19f6f60c3a..4f986e0c9a 100644 --- a/src/modules/languages/java.nix +++ b/src/modules/languages/java.nix @@ -9,7 +9,7 @@ let pkgs.maven.override { jdk = cfg.jdk.package; } else pkgs.maven.override { jdk_headless = cfg.jdk.package; }; - inherit (lib) types mkEnableOption mkOption mkDefault mkIf optional literalExpression; + inherit (lib) types mkEnableOption mkOption mkDefault mkIf optional optionals literalExpression; in { options.languages.java = { @@ -46,14 +46,81 @@ in ''; }; }; + + dev = { + enable = mkOption { + type = types.bool; + default = true; + description = "Enable Java development tools."; + }; + + lsp = { + enable = mkOption { + type = types.bool; + default = true; + description = "Enable jdt-language-server language server."; + }; + package = mkOption { + type = types.package; + default = pkgs.jdt-language-server; + defaultText = literalExpression "pkgs.jdt-language-server"; + description = '' + The jdt-language-server package to use. + + By default, this uses Eclipse JDT Language Server, which is the most popular + and feature-rich Java LSP implementation. + + Alternative LSP servers available in nixpkgs: + - vscode-extensions.redhat.java (Red Hat's Java extension which includes JDT LS) + - metals (for Scala/Java projects) + + Note: vscode-javac and Apache NetBeans Java LSP are not currently packaged in nixpkgs. + ''; + }; + }; + + formatter = { + enable = mkOption { + type = types.bool; + default = true; + description = "Enable google-java-format formatter."; + }; + package = mkOption { + type = types.package; + default = pkgs.google-java-format; + defaultText = literalExpression "pkgs.google-java-format"; + description = "The google-java-format package to use."; + }; + }; + + debugger = { + enable = mkOption { + type = types.bool; + default = true; + description = "Enable java-debug debugger."; + }; + package = mkOption { + type = types.package; + default = pkgs.java-debug or null; + defaultText = literalExpression "pkgs.java-debug"; + description = "The java-debug package to use."; + }; + }; + }; }; config = mkIf cfg.enable { languages.java.maven.package = mkDefault mavenPackage; languages.java.gradle.package = mkDefault (pkgs.gradle.override { java = cfg.jdk.package; }); - packages = (optional cfg.enable cfg.jdk.package) - ++ (optional cfg.maven.enable cfg.maven.package) - ++ (optional cfg.gradle.enable cfg.gradle.package); + packages = [ + cfg.jdk.package + ] ++ optional cfg.maven.enable cfg.maven.package + ++ optional cfg.gradle.enable cfg.gradle.package + ++ optionals cfg.dev.enable ( + optional cfg.dev.lsp.enable cfg.dev.lsp.package ++ + optional cfg.dev.formatter.enable cfg.dev.formatter.package ++ + optional (cfg.dev.debugger.enable && cfg.dev.debugger.package != null) cfg.dev.debugger.package + ); env.JAVA_HOME = cfg.jdk.package.home; }; diff --git a/src/modules/languages/javascript.nix b/src/modules/languages/javascript.nix index 32e3a52632..ba07e4eaa7 100644 --- a/src/modules/languages/javascript.nix +++ b/src/modules/languages/javascript.nix @@ -216,6 +216,56 @@ in }; install.enable = lib.mkEnableOption "bun install during devenv initialisation"; }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable JavaScript development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable typescript-language-server language server."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.nodePackages.typescript-language-server; + defaultText = lib.literalExpression "pkgs.nodePackages.typescript-language-server"; + description = "The TypeScript language server package to use. This wraps Microsoft's tsserver and provides LSP support for both JavaScript and TypeScript."; + }; + }; + + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable prettier formatter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.nodePackages.prettier; + defaultText = lib.literalExpression "pkgs.nodePackages.prettier"; + description = "The Prettier package to use."; + }; + }; + + linter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable eslint linter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.nodePackages.eslint; + defaultText = lib.literalExpression "pkgs.nodePackages.eslint"; + description = "The ESLint package to use."; + }; + }; + }; }; config = lib.mkIf cfg.enable { @@ -229,7 +279,12 @@ in ++ lib.optional cfg.corepack.enable (pkgs.runCommand "corepack-enable" { } '' mkdir -p $out/bin ${cfg.package}/bin/corepack enable --install-directory $out/bin - ''); + '') + ++ lib.optionals cfg.dev.enable ( + lib.optional cfg.dev.lsp.enable cfg.dev.lsp.package ++ + lib.optional cfg.dev.formatter.enable cfg.dev.formatter.package ++ + lib.optional cfg.dev.linter.enable cfg.dev.linter.package + ); enterShell = lib.concatStringsSep "\n" ( (lib.optional cfg.npm.install.enable '' diff --git a/src/modules/languages/jsonnet.nix b/src/modules/languages/jsonnet.nix index 945a1a884c..796bebde00 100644 --- a/src/modules/languages/jsonnet.nix +++ b/src/modules/languages/jsonnet.nix @@ -6,11 +6,22 @@ in { options.languages.jsonnet = { enable = lib.mkEnableOption "tools for jsonnet development"; + + lsp = { + enable = lib.mkEnableOption "Jsonnet language server"; + + package = lib.mkOption { + type = lib.types.package; + default = pkgs.jsonnet-language-server; + defaultText = lib.literalExpression "pkgs.jsonnet-language-server"; + description = "Jsonnet language server package to use."; + }; + }; }; config = lib.mkIf cfg.enable { packages = with pkgs; [ go-jsonnet - ]; + ] ++ lib.optional cfg.lsp.enable cfg.lsp.package; }; } diff --git a/src/modules/languages/julia.nix b/src/modules/languages/julia.nix index 665413130d..739021e1a8 100644 --- a/src/modules/languages/julia.nix +++ b/src/modules/languages/julia.nix @@ -13,6 +13,28 @@ in defaultText = lib.literalExpression "pkgs.julia-bin"; description = "The Julia package to use."; }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = '' + Enable Julia development tools. + + Note: Julia development tools like LanguageServer.jl and JuliaFormatter.jl + are typically installed via Julia's package manager (Pkg), not through nixpkgs. + + To install these tools, run the following in a Julia REPL: + ```julia + using Pkg + Pkg.add("LanguageServer") + Pkg.add("JuliaFormatter") + ``` + + For VS Code users, the Julia extension will automatically install the language server. + ''; + }; + }; }; config = lib.mkIf cfg.enable { diff --git a/src/modules/languages/kotlin.nix b/src/modules/languages/kotlin.nix index b8e75a5a88..f28f45f7d3 100644 --- a/src/modules/languages/kotlin.nix +++ b/src/modules/languages/kotlin.nix @@ -6,12 +6,51 @@ in { options.languages.kotlin = { enable = lib.mkEnableOption "tools for Kotlin development"; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Kotlin development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Kotlin language server."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.kotlin-language-server; + defaultText = lib.literalExpression "pkgs.kotlin-language-server"; + description = "The kotlin-language-server package to use."; + }; + }; + + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable ktlint formatter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.ktlint; + defaultText = lib.literalExpression "pkgs.ktlint"; + description = "The ktlint package to use."; + }; + }; + }; }; config = lib.mkIf cfg.enable { packages = with pkgs; [ kotlin gradle - ]; + ] ++ lib.optionals cfg.dev.enable ( + lib.optional cfg.dev.lsp.enable cfg.dev.lsp.package ++ + lib.optional cfg.dev.formatter.enable cfg.dev.formatter.package + ); }; } diff --git a/src/modules/languages/lean4.nix b/src/modules/languages/lean4.nix index 0049714758..8db00aa50f 100644 --- a/src/modules/languages/lean4.nix +++ b/src/modules/languages/lean4.nix @@ -13,6 +13,17 @@ in { The lean4 package to use. ''; }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = '' + Enable Lean 4 language server support. + The language server is included with the main Lean 4 package. + ''; + }; + }; }; config = lib.mkIf cfg.enable { diff --git a/src/modules/languages/lua.nix b/src/modules/languages/lua.nix index a18b8a1854..05aab77502 100644 --- a/src/modules/languages/lua.nix +++ b/src/modules/languages/lua.nix @@ -13,12 +13,58 @@ in defaultText = lib.literalExpression "pkgs.lua"; description = "The Lua package to use."; }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Lua development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Lua language server."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.lua-language-server; + defaultText = lib.literalExpression "pkgs.lua-language-server"; + description = '' + The lua-language-server package to use. + + lua-language-server (LuaLS) is the most popular and actively maintained LSP for Lua. + + Alternative LSPs available in nixpkgs: + - lua-lsp: Earlier implementation by Alloyed + - EmmyLua-LanguageServer: IntelliJ-based LSP (not available in nixpkgs) + ''; + }; + }; + + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Lua formatter (stylua)."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.stylua; + defaultText = lib.literalExpression "pkgs.stylua"; + description = "The stylua package to use."; + }; + }; + }; }; config = lib.mkIf cfg.enable { packages = [ cfg.package - pkgs.lua-language-server - ]; + ] ++ lib.optionals cfg.dev.enable ( + lib.optional (cfg.dev.lsp.enable) cfg.dev.lsp.package ++ + lib.optional (cfg.dev.formatter.enable) cfg.dev.formatter.package + ); }; } diff --git a/src/modules/languages/matlab.nix b/src/modules/languages/matlab.nix new file mode 100644 index 0000000000..7cc3ee4861 --- /dev/null +++ b/src/modules/languages/matlab.nix @@ -0,0 +1,276 @@ +{ pkgs, config, lib, ... }: + +let + cfg = config.languages.matlab; +in +{ + options.languages.matlab = { + enable = lib.mkEnableOption "tools for MATLAB development"; + + interpreter = lib.mkOption { + type = lib.types.enum [ "octave" "scilab" ]; + default = "octave"; + description = "MATLAB-compatible interpreter to use."; + }; + + package = lib.mkOption { + type = lib.types.package; + default = if cfg.interpreter == "octave" then pkgs.octave else pkgs.scilab-bin; + defaultText = lib.literalExpression "pkgs.octave or pkgs.scilab-bin"; + description = "The MATLAB-compatible interpreter package to use."; + }; + + octavePackages = lib.mkOption { + type = lib.types.listOf lib.types.package; + default = [ ]; + description = "List of Octave packages to install when using Octave interpreter."; + example = lib.literalExpression '' + with pkgs.octavePackages; [ + statistics + signal + control + symbolic + image + ] + ''; + }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable MATLAB development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable matlab-language-server language server."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.matlab-language-server; + defaultText = lib.literalExpression "pkgs.matlab-language-server"; + description = "The MATLAB language server package to use."; + }; + }; + + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; + description = '' + Enable matlab formatter. + ''; + }; + }; + + linter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable matlab linter."; + }; + missHit = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable miss-hit linter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.python3Packages.miss-hit; + defaultText = lib.literalExpression "pkgs.python3Packages.miss-hit"; + description = "The miss-hit package to use."; + }; + }; + }; + + jupyter = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Enable Jupyter kernel support for MATLAB/Octave."; + }; + octaveKernel = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Octave Jupyter kernel when using Octave interpreter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.octave-kernel; + defaultText = lib.literalExpression "pkgs.octave-kernel"; + description = "The Octave Jupyter kernel package to use."; + }; + }; + }; + + fileFormat = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Enable MATLAB file format support tools."; + }; + matio = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable matio library for reading/writing MATLAB MAT files."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.matio; + defaultText = lib.literalExpression "pkgs.matio"; + description = "The matio package to use."; + }; + }; + }; + + ide = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Enable IDE support for scientific computing."; + }; + spyder = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Spyder IDE (MATLAB-like IDE for Python/scientific computing)."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.spyder; + defaultText = lib.literalExpression "pkgs.spyder"; + description = "The Spyder IDE package to use."; + }; + }; + }; + }; + + alternatives = { + sage = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Include SageMath as an alternative mathematical computing environment."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.sage; + defaultText = lib.literalExpression "pkgs.sage"; + description = "The SageMath package to use."; + }; + }; + + maxima = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Include Maxima computer algebra system."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.maxima; + defaultText = lib.literalExpression "pkgs.maxima"; + description = "The Maxima package to use."; + }; + }; + }; + }; + + config = lib.mkIf cfg.enable { + packages = [ + cfg.package + ] ++ (lib.optionals (cfg.interpreter == "octave") cfg.octavePackages) + ++ lib.optionals cfg.dev.enable ( + lib.optional cfg.dev.lsp.enable cfg.dev.lsp.package ++ + lib.optionals cfg.dev.linter.enable ( + lib.optional cfg.dev.linter.missHit.enable cfg.dev.linter.missHit.package + ) ++ + lib.optionals cfg.dev.jupyter.enable ( + lib.optional (cfg.interpreter == "octave" && cfg.dev.jupyter.octaveKernel.enable) cfg.dev.jupyter.octaveKernel.package + ) ++ + lib.optionals cfg.dev.fileFormat.enable ( + lib.optional cfg.dev.fileFormat.matio.enable cfg.dev.fileFormat.matio.package + ) ++ + lib.optionals cfg.dev.ide.enable ( + lib.optional cfg.dev.ide.spyder.enable cfg.dev.ide.spyder.package + ) + ) ++ lib.optionals cfg.alternatives.sage.enable [ cfg.alternatives.sage.package ] + ++ lib.optionals cfg.alternatives.maxima.enable [ cfg.alternatives.maxima.package ]; + + env = { + # Set MATLAB-compatible environment variables for Octave + OCTAVE_HISTFILE = lib.optionalString (cfg.interpreter == "octave") + "\${DEVENV_STATE}/octave_hist"; + + # Set library path for matio if enabled + MATIO_LIBRARY_PATH = lib.optionalString (cfg.dev.fileFormat.enable && cfg.dev.fileFormat.matio.enable) + "${cfg.dev.fileFormat.matio.package}/lib"; + }; + + enterShell = '' + echo "MATLAB-compatible development environment activated!" + echo "Primary interpreter: ${cfg.interpreter}" + ${if cfg.interpreter == "octave" then '' + echo "Octave: $(command -v octave 2>/dev/null && octave --version | head -1 || echo 'octave not found')" + ${lib.optionalString (cfg.octavePackages != [ ]) '' + echo "Octave packages: ${toString (lib.length cfg.octavePackages)} packages installed" + ''} + '' else '' + echo "Scilab: $(command -v scilab 2>/dev/null && echo 'scilab available' || echo 'scilab not found')" + ''} + + ${lib.optionalString cfg.dev.enable '' + echo "Development tools:" + ${lib.optionalString cfg.dev.lsp.enable '' + echo " - MATLAB Language Server: $(command -v matlab-language-server 2>/dev/null && echo 'available' || echo 'not found')" + ''} + ${lib.optionalString (cfg.dev.linter.enable && cfg.dev.linter.missHit.enable) '' + echo " - MISS_HIT analyzer: $(command -v mh_style 2>/dev/null && echo 'available' || echo 'not found')" + ''} + ${lib.optionalString (cfg.dev.jupyter.enable && cfg.interpreter == "octave" && cfg.dev.jupyter.octaveKernel.enable) '' + echo " - Octave Jupyter kernel: $(command -v octave_kernel 2>/dev/null && echo 'available' || echo 'check jupyter kernelspec list')" + ''} + ${lib.optionalString (cfg.dev.fileFormat.enable && cfg.dev.fileFormat.matio.enable) '' + echo " - MATLAB file I/O: matio library available" + ''} + ${lib.optionalString (cfg.dev.ide.enable && cfg.dev.ide.spyder.enable) '' + echo " - Spyder IDE: $(command -v spyder 2>/dev/null && echo 'available' || echo 'not found')" + ''} + ''} + + ${lib.optionalString (cfg.alternatives.sage.enable || cfg.alternatives.maxima.enable) '' + echo "Alternative mathematical tools:" + ${lib.optionalString cfg.alternatives.sage.enable '' + echo " - SageMath: $(command -v sage 2>/dev/null && echo 'available' || echo 'not found')" + ''} + ${lib.optionalString cfg.alternatives.maxima.enable '' + echo " - Maxima: $(command -v maxima 2>/dev/null && echo 'available' || echo 'not found')" + ''} + ''} + + echo "" + echo "Quick start:" + ${if cfg.interpreter == "octave" then '' + echo " Start Octave: octave" + echo " Run script: octave script.m" + echo " Interactive: octave --no-gui" + '' else '' + echo " Start Scilab: scilab" + echo " Run script: scilab -f script.sce" + ''} + ${lib.optionalString (cfg.dev.linter.enable && cfg.dev.linter.missHit.enable) '' + echo " Check style: mh_style *.m" + echo " Check bugs: mh_bug *.m" + ''} + ${lib.optionalString (cfg.dev.jupyter.enable && cfg.interpreter == "octave") '' + echo " Jupyter: jupyter notebook (Octave kernel available)" + ''} + ''; + }; +} diff --git a/src/modules/languages/nim.nix b/src/modules/languages/nim.nix index edd32e5c43..9f2e0a016f 100644 --- a/src/modules/languages/nim.nix +++ b/src/modules/languages/nim.nix @@ -13,12 +13,43 @@ in defaultText = lib.literalExpression "pkgs.nim"; description = "The Nim package to use."; }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Nim development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Nim language server (nimlangserver)."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.nimlangserver; + defaultText = lib.literalExpression "pkgs.nimlangserver"; + description = "The nimlangserver package to use."; + }; + }; + + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable nimpretty formatter."; + }; + }; + }; }; config = lib.mkIf cfg.enable { packages = [ cfg.package - pkgs.nimlangserver - ]; + ] ++ lib.optionals cfg.dev.enable ( + lib.optional cfg.dev.lsp.enable cfg.dev.lsp.package + ); }; } diff --git a/src/modules/languages/nix.nix b/src/modules/languages/nix.nix index 2049041972..5137e4a395 100644 --- a/src/modules/languages/nix.nix +++ b/src/modules/languages/nix.nix @@ -12,22 +12,102 @@ let }; in { + imports = [ + (lib.mkRenamedOptionModule [ "languages" "nix" "lsp" "package" ] [ "languages" "nix" "dev" "lsp" "package" ]) + ]; + options.languages.nix = { enable = lib.mkEnableOption "tools for Nix development"; - lsp.package = lib.mkOption { - type = lib.types.package; - default = pkgs.nil; - defaultText = lib.literalExpression "pkgs.nil"; - description = "The LSP package to use"; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Nix development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Nix language server (nil)."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.nil; + defaultText = lib.literalExpression "pkgs.nil"; + description = "The nil package to use."; + }; + }; + + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable nixpkgs-fmt formatter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.nixpkgs-fmt; + defaultText = lib.literalExpression "pkgs.nixpkgs-fmt"; + description = "The nixpkgs-fmt package to use."; + }; + }; + + linter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable statix linter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.statix; + defaultText = lib.literalExpression "pkgs.statix"; + description = "The statix package to use."; + }; + }; + + tools = { + deadnix = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable deadnix."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.deadnix; + defaultText = lib.literalExpression "pkgs.deadnix"; + description = "The deadnix package to use."; + }; + }; + + vulnix = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable vulnix."; + }; + package = lib.mkOption { + type = lib.types.package; + default = vulnix; + defaultText = lib.literalExpression "vulnix"; + description = "The vulnix package to use."; + }; + }; + }; }; }; config = lib.mkIf cfg.enable { - packages = with pkgs; [ - statix - deadnix - cfg.lsp.package - vulnix - ] ++ (lib.optional config.cachix.enable cachix); + packages = lib.optionals cfg.dev.enable + ( + lib.optional cfg.dev.lsp.enable cfg.dev.lsp.package ++ + lib.optional cfg.dev.formatter.enable cfg.dev.formatter.package ++ + lib.optional cfg.dev.linter.enable cfg.dev.linter.package ++ + lib.optional cfg.dev.tools.deadnix.enable cfg.dev.tools.deadnix.package ++ + lib.optional cfg.dev.tools.vulnix.enable cfg.dev.tools.vulnix.package + ) ++ (lib.optional config.cachix.enable cachix); }; } diff --git a/src/modules/languages/ocaml.nix b/src/modules/languages/ocaml.nix index 2a6e03f2a5..f69387d542 100644 --- a/src/modules/languages/ocaml.nix +++ b/src/modules/languages/ocaml.nix @@ -14,19 +14,115 @@ in default = pkgs.ocaml-ng.ocamlPackages; defaultText = lib.literalExpression "pkgs.ocaml-ng.ocamlPackages_4_12"; }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable OCaml development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable OCaml language server (ocaml-lsp)."; + }; + package = lib.mkOption { + type = lib.types.package; + default = cfg.packages.ocaml-lsp; + defaultText = lib.literalExpression "cfg.packages.ocaml-lsp"; + description = "The ocaml-lsp package to use."; + }; + }; + + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable OCaml formatter (ocamlformat)."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.ocamlformat; + defaultText = lib.literalExpression "pkgs.ocamlformat"; + description = "The ocamlformat package to use."; + }; + }; + + tools = { + merlin = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Merlin editor service."; + }; + package = lib.mkOption { + type = lib.types.package; + default = cfg.packages.merlin; + defaultText = lib.literalExpression "cfg.packages.merlin"; + description = "The merlin package to use."; + }; + }; + + utop = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable UTop REPL."; + }; + package = lib.mkOption { + type = lib.types.package; + default = cfg.packages.utop; + defaultText = lib.literalExpression "cfg.packages.utop"; + description = "The utop package to use."; + }; + }; + + ocp-indent = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable ocp-indent indenter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = cfg.packages.ocp-indent; + defaultText = lib.literalExpression "cfg.packages.ocp-indent"; + description = "The ocp-indent package to use."; + }; + }; + + odoc = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable odoc documentation generator."; + }; + package = lib.mkOption { + type = lib.types.package; + default = cfg.packages.odoc; + defaultText = lib.literalExpression "cfg.packages.odoc"; + description = "The odoc package to use."; + }; + }; + }; + }; }; config = lib.mkIf cfg.enable { packages = [ + # Core tools cfg.packages.ocaml cfg.packages.dune_3 - cfg.packages.ocaml-lsp - cfg.packages.merlin - cfg.packages.utop - cfg.packages.odoc - cfg.packages.ocp-indent cfg.packages.findlib - pkgs.ocamlformat - ]; + ] ++ lib.optionals cfg.dev.enable ( + lib.optional cfg.dev.lsp.enable cfg.dev.lsp.package ++ + lib.optional cfg.dev.formatter.enable cfg.dev.formatter.package ++ + lib.optional cfg.dev.tools.merlin.enable cfg.dev.tools.merlin.package ++ + lib.optional cfg.dev.tools.utop.enable cfg.dev.tools.utop.package ++ + lib.optional cfg.dev.tools.ocp-indent.enable cfg.dev.tools.ocp-indent.package ++ + lib.optional cfg.dev.tools.odoc.enable cfg.dev.tools.odoc.package + ); }; } diff --git a/src/modules/languages/odin.nix b/src/modules/languages/odin.nix index d0e9f21eab..dadad90355 100644 --- a/src/modules/languages/odin.nix +++ b/src/modules/languages/odin.nix @@ -14,17 +14,40 @@ in description = "The odin package to use."; }; - debugger = lib.mkOption { - type = lib.types.nullOr lib.types.package; - default = - if lib.meta.availableOn pkgs.stdenv.hostPlatform pkgs.gdb - then pkgs.gdb - else null; - defaultText = lib.literalExpression "pkgs.gdb"; - description = '' - An optional debugger package to use with odin. - The default is `gdb`, if supported on the current system. - ''; + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Odin development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Odin language server (ols)."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.ols; + defaultText = lib.literalExpression "pkgs.ols"; + description = "The ols package to use."; + }; + }; + + debugger = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable gdb debugger."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.gdb; + defaultText = lib.literalExpression "pkgs.gdb"; + description = "The gdb package to use."; + }; + }; }; }; @@ -34,7 +57,9 @@ in clang gnumake cfg.package - ] ++ lib.optional (cfg.debugger != null) cfg.debugger - ++ lib.optional (lib.meta.availableOn pkgs.stdenv.hostPlatform pkgs.ols) pkgs.ols; + ] ++ lib.optionals cfg.dev.enable ( + lib.optional (cfg.dev.lsp.enable && lib.meta.availableOn pkgs.stdenv.hostPlatform cfg.dev.lsp.package) cfg.dev.lsp.package ++ + lib.optional (cfg.dev.debugger.enable && lib.meta.availableOn pkgs.stdenv.hostPlatform cfg.dev.debugger.package) cfg.dev.debugger.package + ); }; } diff --git a/src/modules/languages/opentofu.nix b/src/modules/languages/opentofu.nix index a61478f1ef..426daa0722 100644 --- a/src/modules/languages/opentofu.nix +++ b/src/modules/languages/opentofu.nix @@ -13,11 +13,22 @@ in defaultText = lib.literalExpression "pkgs.opentofu"; description = "The OpenTofu package to use."; }; + + lsp = { + enable = lib.mkEnableOption "Terraform/OpenTofu language server"; + + package = lib.mkOption { + type = lib.types.package; + default = pkgs.terraform-lsp; + defaultText = lib.literalExpression "pkgs.terraform-lsp"; + description = "Terraform/OpenTofu language server package to use."; + }; + }; }; config = lib.mkIf cfg.enable { packages = with pkgs; [ cfg.package - ]; + ] ++ lib.optional cfg.lsp.enable cfg.lsp.package; }; } diff --git a/src/modules/languages/pascal.nix b/src/modules/languages/pascal.nix index 7d5b3f2bd9..2f84079596 100644 --- a/src/modules/languages/pascal.nix +++ b/src/modules/languages/pascal.nix @@ -10,6 +10,29 @@ in lazarus = { enable = lib.mkEnableOption "lazarus graphical IDE for the FreePascal language"; }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Pascal development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; # Disabled by default as no LSP is available in nixpkgs + description = "Enable Pascal language server."; + }; + # Pascal LSP servers exist but are not yet available in nixpkgs + # Available external options include: + # - pascal-language-server (genericptr/pascal-language-server) - Uses CodeTools from Lazarus + # - pascal-language-server (arjanadriaanse/pascal-language-server) - Incomplete, only supports code completion + # - pascal-language-server-isopod (Axiomworks/pascal-language-server-isopod) + # These require Free Pascal Compiler 3.2.0+ and Lazarus for compilation + # Once available in nixpkgs, add package option here + }; + }; }; config = lib.mkIf cfg.enable { diff --git a/src/modules/languages/perl.nix b/src/modules/languages/perl.nix index 6cee3b4972..68eff5d55d 100644 --- a/src/modules/languages/perl.nix +++ b/src/modules/languages/perl.nix @@ -13,6 +13,42 @@ in default = [ ]; example = [ "Mojolicious" ]; }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Perl development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Perl language server (PerlLanguageServer)."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.perlPackages.PerlLanguageServer; + defaultText = lib.literalExpression "pkgs.perlPackages.PerlLanguageServer"; + description = "The PerlLanguageServer package to use."; + }; + }; + + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Perl formatter (perltidy)."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.perlPackages.PerlTidy; + defaultText = lib.literalExpression "pkgs.perlPackages.PerlTidy"; + description = "The perltidy package to use."; + }; + }; + }; }; config = lib.mkIf cfg.enable { @@ -20,6 +56,9 @@ in (perl.withPackages (p: (with builtins; map (pkg: p.${ replaceStrings [ "::" ] [ "" ] pkg }) cfg.packages))) - ]; + ] ++ lib.optionals cfg.dev.enable ( + lib.optional cfg.dev.lsp.enable cfg.dev.lsp.package ++ + lib.optional cfg.dev.formatter.enable cfg.dev.formatter.package + ); }; } diff --git a/src/modules/languages/php.nix b/src/modules/languages/php.nix index 57a4dc2023..85136d54ad 100644 --- a/src/modules/languages/php.nix +++ b/src/modules/languages/php.nix @@ -230,6 +230,67 @@ in ''; }; + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable PHP development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable PHP language server (phpactor)."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.phpactor; + defaultText = lib.literalExpression "pkgs.phpactor"; + description = '' + The PHP language server package to use. + + Available options: + - pkgs.phpactor: Open source LSP with good refactoring support (default) + - pkgs.php-language-server: Felix Becker's PHP language server + - pkgs.intelephense: Proprietary but very popular, requires license for full features + + Note: Intelephense is proprietary software but is widely considered the most + feature-complete PHP LSP. It requires a license for advanced features. + Phpactor is a good open-source alternative with strong refactoring capabilities. + ''; + }; + }; + + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable PHP formatter (php-cs-fixer)."; + }; + package = lib.mkOption { + type = lib.types.package; + default = cfg.package.packages.php-cs-fixer; + defaultText = lib.literalExpression "cfg.package.packages.php-cs-fixer"; + description = "The php-cs-fixer package to use."; + }; + }; + + linter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable PHP linter (psalm)."; + }; + package = lib.mkOption { + type = lib.types.package; + default = cfg.package.packages.psalm; + defaultText = lib.literalExpression "cfg.package.packages.psalm"; + description = "The psalm package to use."; + }; + }; + }; + fpm = { settings = mkOption { type = with types; attrsOf (oneOf [ str int bool ]); @@ -332,7 +393,12 @@ in packages = with pkgs; [ cfg.package - ] ++ lib.optional (cfg.packages.composer != null) cfg.packages.composer; + ] ++ lib.optional (cfg.packages.composer != null) cfg.packages.composer + ++ lib.optionals cfg.dev.enable ( + lib.optional cfg.dev.lsp.enable cfg.dev.lsp.package ++ + lib.optional cfg.dev.formatter.enable cfg.dev.formatter.package ++ + lib.optional cfg.dev.linter.enable cfg.dev.linter.package + ); env.PHPFPMDIR = runtimeDir; diff --git a/src/modules/languages/purescript.nix b/src/modules/languages/purescript.nix index 4de8447f65..f7296e5c95 100644 --- a/src/modules/languages/purescript.nix +++ b/src/modules/languages/purescript.nix @@ -20,15 +20,69 @@ in description = "The PureScript package to use."; }; + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable PureScript development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable PureScript language server."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.nodePackages.purescript-language-server; + defaultText = lib.literalExpression "pkgs.nodePackages.purescript-language-server"; + description = "The purescript-language-server package to use."; + }; + }; + + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable purs-tidy formatter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.nodePackages.purs-tidy; + defaultText = lib.literalExpression "pkgs.nodePackages.purs-tidy"; + description = "The purs-tidy package to use."; + }; + }; + + tools = { + psa = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable PureScript Assistant (psa)."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.purescript-psa; + defaultText = lib.literalExpression "pkgs.purescript-psa"; + description = "The purescript-psa package to use."; + }; + }; + }; + }; + }; config = lib.mkIf cfg.enable { packages = [ cfg.package - pkgs.nodePackages.purescript-language-server - pkgs.nodePackages.purs-tidy - pkgs.purescript-psa + pkgs.spago (supportAarch64Darwin pkgs.psc-package) - ]; + ] ++ lib.optionals cfg.dev.enable ( + lib.optional cfg.dev.lsp.enable cfg.dev.lsp.package ++ + lib.optional cfg.dev.formatter.enable cfg.dev.formatter.package ++ + lib.optional cfg.dev.tools.psa.enable cfg.dev.tools.psa.package + ); }; } diff --git a/src/modules/languages/python.nix b/src/modules/languages/python.nix index 352328835b..cce6f13e91 100644 --- a/src/modules/languages/python.nix +++ b/src/modules/languages/python.nix @@ -419,6 +419,109 @@ in description = "The Poetry package to use."; }; }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Python development tools."; + }; + + # Python Language Server Protocol (LSP) options + # Alternative LSP servers available: + # - pyright: Microsoft's Python LSP, very popular with excellent type checking + # To use: languages.python.dev.lsp.package = pkgs.pyright; + # - python-lsp-server: Community-maintained LSP (default), extensible with plugins + # - jedi-language-server: Lightweight LSP based on Jedi + # To use: languages.python.dev.lsp.package = cfg.package.pkgs.jedi-language-server; + # - basedpyright: Community fork of pyright with additional features + # To use: languages.python.dev.lsp.package = pkgs.basedpyright; + # - pylsp-mypy: Plugin for python-lsp-server that adds mypy type checking + # Already included when using python-lsp-server + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable python-lsp-server language server."; + }; + package = lib.mkOption { + type = lib.types.package; + default = cfg.package.pkgs.python-lsp-server; + defaultText = lib.literalExpression "cfg.package.pkgs.python-lsp-server"; + description = "The Python LSP package to use. Can be changed to pyright, jedi-language-server, or other LSP implementations."; + }; + }; + + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable black formatter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = cfg.package.pkgs.black; + defaultText = lib.literalExpression "cfg.package.pkgs.black"; + description = "The black package to use."; + }; + }; + + linter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Ruff linter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = cfg.package.pkgs.ruff; + defaultText = lib.literalExpression "cfg.package.pkgs.ruff"; + description = "The ruff package to use."; + }; + }; + + typeChecker = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable mypy type checker."; + }; + package = lib.mkOption { + type = lib.types.package; + default = cfg.package.pkgs.mypy; + defaultText = lib.literalExpression "cfg.package.pkgs.mypy"; + description = "The mypy package to use."; + }; + }; + + testRunner = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable pytest test runner."; + }; + package = lib.mkOption { + type = lib.types.package; + default = cfg.package.pkgs.pytest; + defaultText = lib.literalExpression "cfg.package.pkgs.pytest"; + description = "The pytest package to use."; + }; + }; + + debugger = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable debugpy debugger."; + }; + package = lib.mkOption { + type = lib.types.package; + default = cfg.package.pkgs.debugpy; + defaultText = lib.literalExpression "cfg.package.pkgs.debugpy"; + description = "The debugpy package to use."; + }; + }; + }; }; config = lib.mkIf cfg.enable { @@ -448,7 +551,15 @@ in packages = [ package ] ++ (lib.optional cfg.poetry.enable cfg.poetry.package) - ++ (lib.optional cfg.uv.enable cfg.uv.package); + ++ (lib.optional cfg.uv.enable cfg.uv.package) + ++ lib.optionals cfg.dev.enable ( + lib.optional cfg.dev.lsp.enable cfg.dev.lsp.package ++ + lib.optional cfg.dev.formatter.enable cfg.dev.formatter.package ++ + lib.optional cfg.dev.linter.enable cfg.dev.linter.package ++ + lib.optional cfg.dev.typeChecker.enable cfg.dev.typeChecker.package ++ + lib.optional cfg.dev.testRunner.enable cfg.dev.testRunner.package ++ + lib.optional cfg.dev.debugger.enable cfg.dev.debugger.package + ); env = (lib.optionalAttrs cfg.uv.enable { # ummmmm how does this work? Can I even know the path to the devenv/state at this point? diff --git a/src/modules/languages/r.nix b/src/modules/languages/r.nix index 6e331be218..5e3014dac7 100644 --- a/src/modules/languages/r.nix +++ b/src/modules/languages/r.nix @@ -21,6 +21,26 @@ in description = "The radian package to use."; }; }; + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = '' + Enable R development tools. + + Note: R development tools like languageserver (LSP), styler (formatter), + and lintr (linter) are typically installed via R's package manager. + + To install these tools, run R and execute: + install.packages(c("languageserver", "styler", "lintr")) + + For more tools, consider: + - dev: for package development + - testthat: for unit testing + - roxygen2: for documentation generation + ''; + }; + }; }; config = lib.mkIf cfg.enable { diff --git a/src/modules/languages/racket.nix b/src/modules/languages/racket.nix index 46bab6c152..4aa316a14f 100644 --- a/src/modules/languages/racket.nix +++ b/src/modules/languages/racket.nix @@ -13,6 +13,29 @@ in defaultText = lib.literalExpression "pkgs.racket-minimal"; description = "The Racket package to use."; }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Racket development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; # Disabled by default as no LSP is available in nixpkgs + description = "Enable Racket language server."; + }; + # racket-langserver exists but is not yet available in nixpkgs + # There is an open package request: https://github.com/NixOS/nixpkgs/issues/333113 + # Available external options include: + # - racket-langserver (jeapostrophe/racket-langserver) - Uses DrRacket's APIs + # - racket-language-server (theia-ide/racket-language-server) - Alternative implementation + # Can be installed via Racket's package system: raco pkg install racket-langserver + # Once available in nixpkgs, add package option here + }; + }; }; config = lib.mkIf cfg.enable { diff --git a/src/modules/languages/raku.nix b/src/modules/languages/raku.nix index b37cd839f3..c6dd6f17f4 100644 --- a/src/modules/languages/raku.nix +++ b/src/modules/languages/raku.nix @@ -6,6 +6,29 @@ in { options.languages.raku = { enable = lib.mkEnableOption "tools for Raku development"; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Raku development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; # Disabled by default as no LSP is available in nixpkgs + description = "Enable Raku language server."; + }; + # Raku LSP implementations exist but are not yet available in nixpkgs + # Available external options include: + # - RakuNavigator (bscan/RakuNavigator) - Most mature, designed for VS Code but can work with other editors + # - raku-lsp (arunvickram/raku-lsp) - Alternative implementation + # RakuNavigator requires Node.js and manual installation + # Community continues to work on better LSP implementations + # Once available in nixpkgs, add package option here + }; + }; }; config = lib.mkIf cfg.enable { diff --git a/src/modules/languages/robotframework.nix b/src/modules/languages/robotframework.nix index 2dd5ec6888..c399589f31 100644 --- a/src/modules/languages/robotframework.nix +++ b/src/modules/languages/robotframework.nix @@ -14,6 +14,28 @@ in description = "The Python package to use."; }; + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Robot Framework development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Robot Framework language server."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.python3Packages.robotframework-lsp; + defaultText = lib.literalExpression "pkgs.python3Packages.robotframework-lsp"; + description = "The robotframework-lsp package to use."; + }; + }; + }; + }; config = lib.mkIf cfg.enable { @@ -21,6 +43,8 @@ in (cfg.python.withPackages (ps: [ ps.robotframework ])) - ]; + ] ++ lib.optionals cfg.dev.enable ( + lib.optional cfg.dev.lsp.enable cfg.dev.lsp.package + ); }; } diff --git a/src/modules/languages/ruby.nix b/src/modules/languages/ruby.nix index 9425e3f994..7606ced91c 100644 --- a/src/modules/languages/ruby.nix +++ b/src/modules/languages/ruby.nix @@ -57,6 +57,67 @@ in description = "The bundler package to use."; }; }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Ruby development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Ruby language server (solargraph)."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.rubyPackages.solargraph; + defaultText = lib.literalExpression "pkgs.rubyPackages.solargraph"; + description = '' + The Ruby language server package to use. + + Available options: + - `pkgs.rubyPackages.solargraph` (default): Mature, feature-rich LSP by Fred Snyder + - `pkgs.rubyPackages.ruby-lsp`: Newer LSP by Shopify, actively developed + + To switch to ruby-lsp, use: + ```nix + languages.ruby.dev.lsp.package = pkgs.rubyPackages.ruby-lsp; + ``` + ''; + }; + }; + + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Ruby formatter (rubocop)."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.rubyPackages.rubocop; + defaultText = lib.literalExpression "pkgs.rubyPackages.rubocop"; + description = "The rubocop package to use."; + }; + }; + + linter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Ruby linter (rubocop)."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.rubyPackages.rubocop; + defaultText = lib.literalExpression "pkgs.rubyPackages.rubocop"; + description = "The rubocop package to use."; + }; + }; + }; }; config = lib.mkIf cfg.enable { @@ -92,9 +153,14 @@ in packageFromVersionFile ]; - packages = lib.optional cfg.bundler.enable cfg.bundler.package ++ [ + packages = [ cfg.package - ]; + ] ++ lib.optional cfg.bundler.enable cfg.bundler.package + ++ lib.optionals cfg.dev.enable ( + lib.optional cfg.dev.lsp.enable cfg.dev.lsp.package ++ + lib.optional cfg.dev.formatter.enable cfg.dev.formatter.package ++ + lib.optional cfg.dev.linter.enable cfg.dev.linter.package + ); env.BUNDLE_PATH = config.env.DEVENV_STATE + "/.bundle"; diff --git a/src/modules/languages/rust.nix b/src/modules/languages/rust.nix index 22182dae1b..cf16f8b877 100644 --- a/src/modules/languages/rust.nix +++ b/src/modules/languages/rust.nix @@ -49,11 +49,12 @@ in components = lib.mkOption { type = lib.types.listOf lib.types.str; - default = [ "rustc" "cargo" "clippy" "rustfmt" "rust-analyzer" ]; - defaultText = lib.literalExpression ''[ "rustc" "cargo" "clippy" "rustfmt" "rust-analyzer" ]''; + default = [ "rustc" "cargo" ]; + defaultText = lib.literalExpression ''[ "rustc" "cargo" ]''; description = '' List of [Rustup components](https://rust-lang.github.io/rustup/concepts/components.html) - to install. Defaults to those available in `nixpkgs`. + to install. Defaults to core components only. Development tools like clippy, rustfmt, + and rust-analyzer are controlled by the dev options. ''; }; @@ -122,6 +123,56 @@ in defaultText = lib.literalExpression "nixpkgs"; description = "Rust component packages. May optionally define additional components, for example `miri`."; }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Rust development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable rust-analyzer language server."; + }; + package = lib.mkOption { + type = lib.types.package; + default = cfg.toolchain.rust-analyzer or pkgs.rust-analyzer; + defaultText = lib.literalExpression "cfg.toolchain.rust-analyzer or pkgs.rust-analyzer"; + description = "The rust-analyzer package to use."; + }; + }; + + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable rustfmt formatter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = cfg.toolchain.rustfmt or pkgs.rustfmt; + defaultText = lib.literalExpression "cfg.toolchain.rustfmt or pkgs.rustfmt"; + description = "The rustfmt package to use."; + }; + }; + + linter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable clippy linter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = cfg.toolchain.clippy or pkgs.clippy; + defaultText = lib.literalExpression "cfg.toolchain.clippy or pkgs.clippy"; + description = "The clippy package to use."; + }; + }; + }; }; config = lib.mkIf cfg.enable (lib.mkMerge [ @@ -192,13 +243,19 @@ in }; git-hooks.tools.cargo = mkOverrideTools cfg.toolchain.cargo or null; - git-hooks.tools.rustfmt = mkOverrideTools cfg.toolchain.rustfmt or null; - git-hooks.tools.clippy = mkOverrideTools cfg.toolchain.clippy or null; + git-hooks.tools.rustfmt = mkOverrideTools (if cfg.dev.enable && cfg.dev.formatter.enable then cfg.dev.formatter.package else null); + git-hooks.tools.clippy = mkOverrideTools (if cfg.dev.enable && cfg.dev.linter.enable then cfg.dev.linter.package else null); } ) (lib.mkIf (cfg.channel == "nixpkgs") { - packages = builtins.map (c: cfg.toolchain.${c} or (throw "toolchain.${c}")) cfg.components; + packages = + (builtins.map (c: cfg.toolchain.${c} or (throw "toolchain.${c}")) cfg.components) + ++ lib.optionals cfg.dev.enable ( + lib.optional (cfg.dev.lsp.enable) cfg.dev.lsp.package ++ + lib.optional (cfg.dev.formatter.enable) cfg.dev.formatter.package ++ + lib.optional (cfg.dev.linter.enable) cfg.dev.linter.package + ); }) (lib.mkIf (cfg.channel != "nixpkgs") ( @@ -212,7 +269,14 @@ in packages = [ (combine "rust-mixed" ( - (map (c: cfg.toolchain.${c}) (cfg.components ++ [ "rust-std" ])) ++ + (map (c: cfg.toolchain.${c}) ( + cfg.components ++ [ "rust-std" ] ++ + lib.optionals cfg.dev.enable ( + lib.optional (cfg.dev.lsp.enable) "rust-analyzer" ++ + lib.optional (cfg.dev.formatter.enable) "rustfmt" ++ + lib.optional (cfg.dev.linter.enable) "clippy" + ) + )) ++ (map (t: toolchain._components.${t}.rust-std) cfg.targets) )) ]; diff --git a/src/modules/languages/scala.nix b/src/modules/languages/scala.nix index b0b21fbdb5..71cb748f98 100644 --- a/src/modules/languages/scala.nix +++ b/src/modules/languages/scala.nix @@ -36,6 +36,42 @@ in default = "mill"; }; }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Scala development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Metals language server (the standard LSP for Scala)."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.metals.override { jre = java.jdk.package; }; + defaultText = lib.literalExpression "pkgs.metals.override { jre = java.jdk.package; }"; + description = "The Metals package to use. Metals is the standard LSP implementation for Scala by Scalameta."; + }; + }; + + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable scalafmt formatter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.scalafmt.override { jre = java.jdk.package; }; + defaultText = lib.literalExpression "pkgs.scalafmt.override { jre = java.jdk.package; }"; + description = "The scalafmt package to use."; + }; + }; + }; }; config = lib.mkIf cfg.enable { @@ -43,9 +79,7 @@ in with pkgs; [ (cfg.package.override { jre = java.jdk.package; }) - (metals.override { jre = java.jdk.package; }) (coursier.override { jre = java.jdk.package; }) - (scalafmt.override { jre = java.jdk.package; }) ] ++ lib.optionals cfg.sbt.enable [ (sbt.override ( @@ -63,7 +97,11 @@ in ] ++ lib.optionals (lib.versionAtLeast java.jdk.package.version "17") [ (scala-cli.override { jre = java.jdk.package; }) - ]; + ] + ++ lib.optionals cfg.dev.enable ( + lib.optional cfg.dev.lsp.enable cfg.dev.lsp.package ++ + lib.optional cfg.dev.formatter.enable cfg.dev.formatter.package + ); languages.java.enable = true; }; diff --git a/src/modules/languages/shell.nix b/src/modules/languages/shell.nix index f6d8341c42..37d97f5071 100644 --- a/src/modules/languages/shell.nix +++ b/src/modules/languages/shell.nix @@ -6,14 +6,78 @@ in { options.languages.shell = { enable = lib.mkEnableOption "tools for shell development"; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Shell development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable bash language server."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.nodePackages.bash-language-server; + defaultText = lib.literalExpression "pkgs.nodePackages.bash-language-server"; + description = "The bash-language-server package to use."; + }; + }; + + linter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable shellcheck linter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.shellcheck; + defaultText = lib.literalExpression "pkgs.shellcheck"; + description = "The shellcheck package to use."; + }; + }; + + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable shfmt formatter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.shfmt; + defaultText = lib.literalExpression "pkgs.shfmt"; + description = "The shfmt package to use."; + }; + }; + + testRunner = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable bats test runner."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.bats.withLibraries (p: [ p.bats-assert p.bats-file p.bats-support ]); + defaultText = lib.literalExpression "pkgs.bats.withLibraries (p: [ p.bats-assert p.bats-file p.bats-support ])"; + description = "The bats package to use."; + }; + }; + }; }; config = lib.mkIf cfg.enable { - packages = with pkgs; [ - (pkgs.bats.withLibraries (p: [ p.bats-assert p.bats-file p.bats-support ])) - nodePackages.bash-language-server - shellcheck - shfmt - ]; + packages = lib.optionals cfg.dev.enable ( + lib.optional cfg.dev.lsp.enable cfg.dev.lsp.package ++ + lib.optional cfg.dev.linter.enable cfg.dev.linter.package ++ + lib.optional cfg.dev.formatter.enable cfg.dev.formatter.package ++ + lib.optional cfg.dev.testRunner.enable cfg.dev.testRunner.package + ); }; } diff --git a/src/modules/languages/solidity.nix b/src/modules/languages/solidity.nix index ac08beacc1..43ebe52596 100644 --- a/src/modules/languages/solidity.nix +++ b/src/modules/languages/solidity.nix @@ -31,6 +31,27 @@ in defaultText = lib.literalExpression "foundry.defaultPackage.$${pkgs.stdenv.system}"; }; }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Solidity development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Enable Solidity language server. Note: No stable Solidity LSP is currently available in nixpkgs."; + }; + # Solidity LSP servers exist but are not yet stable or available in nixpkgs: + # - solidity-language-server (juanfranblanco/vscode-solidity) - VS Code extension with LSP + # - solc-language-server (protofire/solc-language-server) - Alternative implementation + # - hardhat-solidity (NomicFoundation/hardhat-vscode) - Hardhat-based LSP + # Once a stable LSP becomes available in nixpkgs, add package option here + }; + }; }; config = lib.mkIf cfg.enable { diff --git a/src/modules/languages/sql.nix b/src/modules/languages/sql.nix new file mode 100644 index 0000000000..f50c0bb1ca --- /dev/null +++ b/src/modules/languages/sql.nix @@ -0,0 +1,75 @@ +{ pkgs, config, lib, ... }: + +let + cfg = config.languages.sql; +in +{ + options.languages.sql = { + enable = lib.mkEnableOption "tools for SQL development"; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable SQL development tools."; + }; + + # SQL Language Server Protocol (LSP) options + # sqls is a SQL language server that provides completion, hover, and diagnostics + # for various SQL dialects including PostgreSQL, MySQL, SQLite, and more + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable sqls language server."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.sqls; + defaultText = lib.literalExpression "pkgs.sqls"; + description = "The sqls package to use."; + }; + }; + + # SQL formatters + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable sqlfluff formatter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.sqlfluff; + defaultText = lib.literalExpression "pkgs.sqlfluff"; + description = "The sqlfluff package to use."; + }; + }; + + # SQL linter + linter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable sqlfluff linter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.sqlfluff; + defaultText = lib.literalExpression "pkgs.sqlfluff"; + description = "The sqlfluff package to use."; + }; + }; + }; + }; + + config = lib.mkIf cfg.enable { + packages = + # Development tools + lib.optionals cfg.dev.enable ( + lib.optional cfg.dev.lsp.enable cfg.dev.lsp.package ++ + lib.optional cfg.dev.formatter.enable cfg.dev.formatter.package ++ + lib.optional cfg.dev.linter.enable cfg.dev.linter.package + ); + }; +} diff --git a/src/modules/languages/standardml.nix b/src/modules/languages/standardml.nix index 060b2f2bac..a624f16625 100644 --- a/src/modules/languages/standardml.nix +++ b/src/modules/languages/standardml.nix @@ -15,13 +15,50 @@ in The Standard ML package to use. ''; }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Standard ML development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Standard ML language server (millet)."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.millet; + defaultText = lib.literalExpression "pkgs.millet"; + description = "The millet package to use."; + }; + }; + + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Standard ML formatter (smlfmt)."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.smlfmt; + defaultText = lib.literalExpression "pkgs.smlfmt"; + description = "The smlfmt package to use."; + }; + }; + }; }; config = lib.mkIf cfg.enable { packages = [ cfg.package - pkgs.millet - pkgs.smlfmt - ]; + ] ++ lib.optionals cfg.dev.enable ( + lib.optional cfg.dev.lsp.enable cfg.dev.lsp.package ++ + lib.optional cfg.dev.formatter.enable cfg.dev.formatter.package + ); }; } diff --git a/src/modules/languages/swift.nix b/src/modules/languages/swift.nix index 352d32c0cf..4d2211c885 100644 --- a/src/modules/languages/swift.nix +++ b/src/modules/languages/swift.nix @@ -15,13 +15,45 @@ in The Swift package to use. ''; }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Swift development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable sourcekit-lsp language server."; + }; + }; + + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable swift-format formatter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.swift-format; + defaultText = lib.literalExpression "pkgs.swift-format"; + description = "The swift-format package to use."; + }; + }; + }; }; config = lib.mkIf cfg.enable { packages = [ cfg.package pkgs.clang - ]; + ] ++ lib.optionals cfg.dev.enable ( + lib.optional cfg.dev.formatter.enable cfg.dev.formatter.package + ); env.CC = "${pkgs.clang}/bin/clang"; }; diff --git a/src/modules/languages/terraform.nix b/src/modules/languages/terraform.nix index 3abce8e8ae..55452267b8 100644 --- a/src/modules/languages/terraform.nix +++ b/src/modules/languages/terraform.nix @@ -29,6 +29,42 @@ in ''; example = "1.5.0 or 1.6.2"; }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Terraform development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Terraform language server (terraform-ls)."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.terraform-ls; + defaultText = lib.literalExpression "pkgs.terraform-ls"; + description = "The terraform-ls package to use."; + }; + }; + + linter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable tfsec linter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.tfsec; + defaultText = lib.literalExpression "pkgs.tfsec"; + description = "The tfsec package to use."; + }; + }; + }; }; config = lib.mkIf cfg.enable { @@ -36,10 +72,11 @@ in (lib.mkIf (cfg.version != null) (nixpkgs-terraform.packages.${pkgs.stdenv.system}.${cfg.version} or (throw "Unsupported Terraform version, update the nixpkgs-terraform input or go to https://github.com/stackbuilders/nixpkgs-terraform/blob/main/versions.json for the full list of supported versions."))) ]; - packages = with pkgs; [ + packages = [ cfg.package - terraform-ls - tfsec - ]; + ] ++ lib.optionals cfg.dev.enable ( + lib.optional (cfg.dev.lsp.enable) cfg.dev.lsp.package ++ + lib.optional (cfg.dev.linter.enable) cfg.dev.linter.package + ); }; } diff --git a/src/modules/languages/texlive.nix b/src/modules/languages/texlive.nix index dc0d569d14..38acfeb33d 100644 --- a/src/modules/languages/texlive.nix +++ b/src/modules/languages/texlive.nix @@ -20,8 +20,19 @@ in example = [ "algorithms" "latexmk" ]; description = "Extra packages to add to the base TeX Live set"; }; + + lsp = { + enable = lib.mkEnableOption "LaTeX language server (texlab)"; + + package = lib.mkOption { + type = lib.types.package; + default = pkgs.texlab; + defaultText = lib.literalExpression "pkgs.texlab"; + description = "LaTeX language server package to use."; + }; + }; }; config = lib.mkIf cfg.enable { - packages = [ package ]; + packages = [ package ] ++ lib.optional cfg.lsp.enable cfg.lsp.package; }; } diff --git a/src/modules/languages/typescript.nix b/src/modules/languages/typescript.nix index 5714e6119f..72d5a54641 100644 --- a/src/modules/languages/typescript.nix +++ b/src/modules/languages/typescript.nix @@ -6,12 +6,65 @@ in { options.languages.typescript = { enable = lib.mkEnableOption "tools for TypeScript development"; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable TypeScript development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable typescript-language-server language server."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.nodePackages.typescript-language-server; + defaultText = lib.literalExpression "pkgs.nodePackages.typescript-language-server"; + description = "The typescript-language-server package to use. This wraps Microsoft's tsserver and provides LSP support for both JavaScript and TypeScript."; + }; + }; + + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable prettier formatter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.prettier; + defaultText = lib.literalExpression "pkgs.prettier"; + description = "The prettier package to use."; + }; + }; + + linter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable eslint linter."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.eslint; + defaultText = lib.literalExpression "pkgs.eslint"; + description = "The eslint package to use."; + }; + }; + }; }; config = lib.mkIf cfg.enable { - packages = with pkgs; [ - typescript - nodePackages.typescript-language-server - ]; + packages = [ + pkgs.typescript + ] ++ lib.optionals cfg.dev.enable ( + lib.optional cfg.dev.lsp.enable cfg.dev.lsp.package ++ + lib.optional cfg.dev.formatter.enable cfg.dev.formatter.package ++ + lib.optional cfg.dev.linter.enable cfg.dev.linter.package + ); }; } diff --git a/src/modules/languages/typst.nix b/src/modules/languages/typst.nix index ff7d09a120..3d958dd1be 100644 --- a/src/modules/languages/typst.nix +++ b/src/modules/languages/typst.nix @@ -25,14 +25,51 @@ in defaultText = lib.literalExpression "[]"; example = lib.literalExpression ''[ "''${pkgs.roboto}/share/fonts/truetype" ]''; }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Typst development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Typst language server (tinymist)."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.tinymist; + defaultText = lib.literalExpression "pkgs.tinymist"; + description = "The tinymist package to use."; + }; + }; + + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Typst formatter (typstyle)."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.typstyle; + defaultText = lib.literalExpression "pkgs.typstyle"; + description = "The typstyle package to use."; + }; + }; + }; }; config = lib.mkIf cfg.enable { packages = [ cfg.package - pkgs.tinymist # lsp - pkgs.typstyle # formatter - ]; + ] ++ lib.optionals cfg.dev.enable ( + lib.optional cfg.dev.lsp.enable cfg.dev.lsp.package ++ + lib.optional cfg.dev.formatter.enable cfg.dev.formatter.package + ); env.TYPST_FONT_PATHS = if cfg.fontPaths != [ ] then (lib.concatStringsSep ":" cfg.fontPaths) else null; }; diff --git a/src/modules/languages/unison.nix b/src/modules/languages/unison.nix index fbe83a8d90..c8a380611e 100644 --- a/src/modules/languages/unison.nix +++ b/src/modules/languages/unison.nix @@ -13,6 +13,17 @@ in default = pkgs.unison-ucm; defaultText = lib.literalExpression "pkgs.unison-ucm"; }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = '' + Enable Unison language server support. + The language server is included with the main Unison package. + ''; + }; + }; }; config = lib.mkIf cfg.enable { diff --git a/src/modules/languages/v.nix b/src/modules/languages/v.nix index 3cd0226e69..07857cecb0 100644 --- a/src/modules/languages/v.nix +++ b/src/modules/languages/v.nix @@ -13,11 +13,46 @@ in defaultText = lib.literalExpression "pkgs.vlang"; description = "The V package to use."; }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable V development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable V language server."; + }; + # v-analyzer is available in V installation itself + # V includes its own language server called v-ls + package = lib.mkOption { + type = lib.types.package; + default = cfg.package; + defaultText = lib.literalExpression "config.languages.v.package"; + description = "The V package to use (includes v-ls language server)."; + }; + }; + + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable V formatter (v fmt built into V compiler)."; + }; + # v fmt is built into the V compiler, so no separate package needed + }; + }; }; config = lib.mkIf cfg.enable { packages = [ cfg.package - ]; + ] ++ lib.optionals cfg.dev.enable ( + lib.optional cfg.dev.lsp.enable cfg.dev.lsp.package + ); }; } diff --git a/src/modules/languages/vala.nix b/src/modules/languages/vala.nix index 17e32d9362..9f69a81273 100644 --- a/src/modules/languages/vala.nix +++ b/src/modules/languages/vala.nix @@ -14,11 +14,35 @@ in description = "The Vala package to use."; example = lib.literalExpression "pkgs.vala_0_54"; }; + + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Vala development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Vala language server."; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.vala-language-server; + defaultText = lib.literalExpression "pkgs.vala-language-server"; + description = "The vala-language-server package to use."; + }; + }; + }; }; config = lib.mkIf cfg.enable { packages = [ cfg.package - ]; + ] ++ lib.optionals cfg.dev.enable ( + lib.optional cfg.dev.lsp.enable cfg.dev.lsp.package + ); }; } diff --git a/src/modules/languages/zig.nix b/src/modules/languages/zig.nix index 9c12e4cfdf..05babf3bf0 100644 --- a/src/modules/languages/zig.nix +++ b/src/modules/languages/zig.nix @@ -18,18 +18,42 @@ in defaultText = lib.literalExpression "pkgs.zig"; }; - zls.package = lib.mkOption { - type = lib.types.package; - description = "Which package of zls to use."; - default = pkgs.zls; - defaultText = lib.literalExpression "pkgs.zls"; + dev = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Zig development tools."; + }; + + lsp = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable Zig language server (zls)."; + }; + package = lib.mkOption { + type = lib.types.package; + description = "Which package of zls to use."; + default = pkgs.zls; + defaultText = lib.literalExpression "pkgs.zls"; + }; + }; + + formatter = { + enable = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Enable zig formatter."; + }; + }; }; }; config = lib.mkIf cfg.enable { packages = [ cfg.package - cfg.zls.package - ]; + ] ++ lib.optionals cfg.dev.enable ( + lib.optional (cfg.dev.lsp.enable) cfg.dev.lsp.package + ); }; }