diff --git a/.github/workflows/cachix.yml b/.github/workflows/cachix.yml index b6eb0d41..43d79f15 100644 --- a/.github/workflows/cachix.yml +++ b/.github/workflows/cachix.yml @@ -25,7 +25,7 @@ jobs: name: Checkout - name: Install Nix - uses: cachix/install-nix-action@v31.9.1 + uses: cachix/install-nix-action@v31.10.1 with: nix_path: nixpkgs=channel:nixos-unstable extra_nix_config: | diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index bf1163df..944386eb 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -18,7 +18,7 @@ jobs: steps: - name: Checkout uses: actions/checkout@v6 - - uses: cachix/install-nix-action@v31.9.1 + - uses: cachix/install-nix-action@v31.10.1 with: nix_path: nixpkgs=channel:nixos-unstable extra_nix_config: | @@ -37,7 +37,7 @@ jobs: uses: actions/checkout@v6 - name: Install Nix - uses: cachix/install-nix-action@v31.9.1 + uses: cachix/install-nix-action@v31.10.1 with: nix_path: nixpkgs=channel:nixos-unstable extra_nix_config: | @@ -93,7 +93,7 @@ jobs: steps: - name: Checkout uses: actions/checkout@v6 - - uses: cachix/install-nix-action@v31.9.1 + - uses: cachix/install-nix-action@v31.10.1 with: nix_path: nixpkgs=channel:nixos-unstable extra_nix_config: | @@ -131,7 +131,7 @@ jobs: steps: - name: Checkout uses: actions/checkout@v6 - - uses: cachix/install-nix-action@v31.9.1 + - uses: cachix/install-nix-action@v31.10.1 with: nix_path: nixpkgs=channel:nixos-unstable extra_nix_config: | @@ -169,7 +169,7 @@ jobs: cat "$HOME/changed_files" - name: Install Nix - uses: cachix/install-nix-action@v31.9.1 + uses: cachix/install-nix-action@v31.10.1 with: nix_path: nixpkgs=channel:nixos-unstable extra_nix_config: | diff --git a/.github/workflows/docs-preview.yml b/.github/workflows/docs-preview.yml index 43c29afa..1418e2cb 100644 --- a/.github/workflows/docs-preview.yml +++ b/.github/workflows/docs-preview.yml @@ -25,7 +25,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - - uses: cachix/install-nix-action@v31.9.1 + - uses: cachix/install-nix-action@v31.10.1 with: nix_path: nixpkgs=channel:nixos-unstable extra_nix_config: | diff --git a/.github/workflows/manual.yml b/.github/workflows/manual.yml index 6134f764..d6e117a6 100644 --- a/.github/workflows/manual.yml +++ b/.github/workflows/manual.yml @@ -44,7 +44,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - - uses: cachix/install-nix-action@v31.9.1 + - uses: cachix/install-nix-action@v31.10.1 with: nix_path: nixpkgs=channel:nixos-unstable extra_nix_config: | diff --git a/.github/workflows/update.yml b/.github/workflows/update.yml index 2cc2fadf..e60997d6 100644 --- a/.github/workflows/update.yml +++ b/.github/workflows/update.yml @@ -12,7 +12,7 @@ jobs: uses: actions/checkout@v6 - name: "Install Nix" - uses: cachix/install-nix-action@v31.9.1 + uses: cachix/install-nix-action@v31.10.1 - name: Set up Git run: | diff --git a/configuration.nix b/configuration.nix index 9cce777a..d0594674 100644 --- a/configuration.nix +++ b/configuration.nix @@ -101,6 +101,8 @@ isMaximal: { tailwind.enable = false; svelte.enable = false; tera.enable = false; + twig.enable = false; + fluent.enable = false; # Nim LSP is broken on Darwin and therefore # should be disabled by default. Users may still enable diff --git a/docs/manual/release-notes/rl-0.9.md b/docs/manual/release-notes/rl-0.9.md index ff701506..a219f902 100644 --- a/docs/manual/release-notes/rl-0.9.md +++ b/docs/manual/release-notes/rl-0.9.md @@ -6,6 +6,7 @@ `vimPlugins.nvim-treesitter`. Namely, it changes from the frozen `master` branch to the new main branch. This change removes incremental selections, so it is no longer available. + - [obsidian.nvim] now uses a maintained fork which has removed the `dir` setting. Use `workspaces` instead: @@ -51,6 +52,8 @@ Some other settings and commands are now deprecated but are still supported. - Added [taplo](https://taplo.tamasfe.dev/) as the default formatter and lsp for `languages.toml` so we don't default to AI-Slop. +- Added `json5` into `languages.json`. Some options where renamed. + ## Changelog {#sec-release-0-9-changelog} [taylrfnt](https://github.com/taylrfnt) @@ -79,6 +82,8 @@ Some other settings and commands are now deprecated but are still supported. [NotAShelf](https://github.com/notashelf): - Lazyload noice.nvim and nvim-web-devicons on `DeferredUIEnter` +- Allow nulling treesitter packages for various language modules, filter `null` + values in `vim.treesitter.grammars`. [jfeo](https://github.com/jfeo): @@ -219,6 +224,9 @@ Some other settings and commands are now deprecated but are still supported. - Added [`golangci-lint`](https://golangci-lint.run/) for more diagnostics. +- Added [`gopher.nvim`](https://github.com/olexsmir/gopher.nvim) for extra + actions in `languages.go`. + - updated default filetypes for [harper-ls](https://github.com/Automattic/harper) to match what they are supposed to be. @@ -228,11 +236,19 @@ Some other settings and commands are now deprecated but are still supported. - Fix `languages.hcl` init, depending on `comment-nvim` by checking if it is enabled. Fixes a crash (#1350). +- Add `languages.fluent` using the official plugin. This only provides + highlighting. + - Added Debugging support to `languages.php`. - Added Formatting support to `languages.php` via [PHP-CS-Fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer). +- Added minimal `languages.twig`. Currently using [djlint](https://djlint.com/) + for most options, as better alternatives like + [twig-cs-fixer](https://github.com/VincentLanglet/Twig-CS-Fixer) aren't + packaged for nix. + - Didn't Add [`syntax-gaslighting`](https://github.com/NotAShelf/syntax-gaslighting.nvim), you're crazy. @@ -282,4 +298,18 @@ https://github.com/gorbit99/codewindow.nvim - [img-clip.nvim]'s configuration now has it's own DAG entry, separate from image-nvim. +[phanirithvij](https://github.com/phanirithvij): + +[elm-language-server]: https://github.com/elm-tooling/elm-language-server + +- Add Elm support with [elm-language-server] + +[alv-around](https://github.com/alv-around): + +- Fix `vim.assistant.codecompanion-nvim` lazy loading with [blink-cmp] + +[foobar14](https://github.com/foobar14): + +- Fix `vim.formatter.conform-nvim.setupOpts.formatters` type for correct merging + diff --git a/flake/pkgs/by-name/json2go/package.nix b/flake/pkgs/by-name/json2go/package.nix new file mode 100644 index 00000000..0c7eff1a --- /dev/null +++ b/flake/pkgs/by-name/json2go/package.nix @@ -0,0 +1,26 @@ +{ + lib, + buildGoModule, + fetchFromGitHub, +}: +buildGoModule (finalAttrs: { + pname = "json2go"; + version = "0.1.3"; + + src = fetchFromGitHub { + owner = "olexsmir"; + repo = "json2go"; + tag = "v${finalAttrs.version}"; + hash = "sha256-2QGvPLQ7CADRNURTdnHgTCK2vyRHgtdR6YFPuTL9Ymo="; + }; + + vendorHash = null; + + meta = { + description = "convert json to go type annotations"; + mainProgram = "json2go"; + homepage = "https://github.com/olexsmir/json2go"; + license = lib.licenses.unlicense; + changelog = "${finalAttrs.meta.homepage}/releases/tag/${finalAttrs.version}"; + }; +}) diff --git a/lib/types/languages.nix b/lib/types/languages.nix index 45515f55..23a08890 100644 --- a/lib/types/languages.nix +++ b/lib/types/languages.nix @@ -31,6 +31,7 @@ mkGrammarOption = pkgs: grammar: mkPackageOption pkgs ["${grammar} treesitter"] { default = ["vimPlugins" "nvim-treesitter" "grammarPlugins" grammar]; + nullable = true; }; in { inherit diagnostics diagnosticSubmodule mkGrammarOption; diff --git a/modules/plugins/assistant/codecompanion/config.nix b/modules/plugins/assistant/codecompanion/config.nix index fa863b74..6fbb60fb 100644 --- a/modules/plugins/assistant/codecompanion/config.nix +++ b/modules/plugins/assistant/codecompanion/config.nix @@ -18,6 +18,18 @@ in { package = "codecompanion-nvim"; setupModule = "codecompanion"; inherit (cfg) setupOpts; + + # Register commands with lz.n so Neovim recognizes them immediately + cmd = [ + "CodeCompanion" + "CodeCompanionChat" + "CodeCompanionActions" + "CodeCompanionCmd" + ]; + + # Ensure the plugin loads when entering Insert/Cmdline mode + # so the module is ready when blink.cmp requests it + event = ["InsertEnter" "CmdlineEnter"]; }; }; @@ -33,9 +45,20 @@ in { ]; }; - autocomplete.nvim-cmp = { - sources = {codecompanion-nvim = "[codecompanion]";}; - sourcePlugins = ["codecompanion-nvim"]; + autocomplete = { + nvim-cmp = { + sources = {codecompanion-nvim = "[codecompanion]";}; + sourcePlugins = ["codecompanion-nvim"]; + }; + blink-cmp = { + setupOpts.sources = { + default = ["codecompanion"]; + providers.codecompanion = { + name = "CodeCompanion"; + module = "codecompanion.providers.completion.blink"; + }; + }; + }; }; }; }; diff --git a/modules/plugins/formatter/conform-nvim/conform-nvim.nix b/modules/plugins/formatter/conform-nvim/conform-nvim.nix index 4e27f9f0..8a0fd417 100644 --- a/modules/plugins/formatter/conform-nvim/conform-nvim.nix +++ b/modules/plugins/formatter/conform-nvim/conform-nvim.nix @@ -1,7 +1,7 @@ {lib, ...}: let inherit (lib.generators) mkLuaInline; inherit (lib.options) mkOption mkEnableOption literalMD; - inherit (lib.types) attrs either nullOr listOf submodule str; + inherit (lib.types) attrs attrsOf either nullOr listOf submodule str; inherit (lib.nvim.lua) toLuaObject; inherit (lib.nvim.types) luaInline mkPluginSetupOption; @@ -49,7 +49,7 @@ in { enable = mkEnableOption "lightweight yet powerful formatter plugin for Neovim [conform-nvim]"; setupOpts = mkPluginSetupOption "conform.nvim" { formatters = mkOption { - type = formattersType; + type = attrsOf formattersType; default = {}; description = "Custom formatters and overrides for built-in formatters."; }; diff --git a/modules/plugins/languages/arduino.nix b/modules/plugins/languages/arduino.nix index b22c6d9d..89f9e051 100644 --- a/modules/plugins/languages/arduino.nix +++ b/modules/plugins/languages/arduino.nix @@ -8,7 +8,7 @@ inherit (lib.generators) mkLuaInline; inherit (lib.meta) getExe getExe'; inherit (lib.modules) mkIf mkMerge; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.types) enum listOf str; inherit (lib.nvim.attrsets) mapListToAttrs; inherit (lib.nvim.types) mkGrammarOption; @@ -57,12 +57,22 @@ in { enable = mkEnableOption "Arduino support"; treesitter = { - enable = mkEnableOption "Arduino treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Arduino treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "arduino"; }; lsp = { - enable = mkEnableOption "Arduino LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Arduino LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = listOf (enum (attrNames servers)); default = defaultServers; diff --git a/modules/plugins/languages/asm.nix b/modules/plugins/languages/asm.nix index 4fb36f4c..eccc91e7 100644 --- a/modules/plugins/languages/asm.nix +++ b/modules/plugins/languages/asm.nix @@ -5,7 +5,7 @@ ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.modules) mkIf mkMerge; inherit (lib.types) enum; inherit (lib.nvim.types) mkGrammarOption deprecatedSingleOrListOf; @@ -27,12 +27,22 @@ in { enable = mkEnableOption "Assembly support"; treesitter = { - enable = mkEnableOption "Assembly treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Assembly treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "asm"; }; lsp = { - enable = mkEnableOption "Assembly LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Assembly LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.asm.lsp.servers" (enum (attrNames servers)); default = defaultServers; diff --git a/modules/plugins/languages/astro.nix b/modules/plugins/languages/astro.nix index 4dbbaa71..af647ad0 100644 --- a/modules/plugins/languages/astro.nix +++ b/modules/plugins/languages/astro.nix @@ -6,7 +6,7 @@ ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.modules) mkIf mkMerge; inherit (lib.meta) getExe; inherit (lib.types) enum coercedTo; @@ -89,13 +89,23 @@ in { enable = mkEnableOption "Astro language support"; treesitter = { - enable = mkEnableOption "Astro treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Astro treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; astroPackage = mkGrammarOption pkgs "astro"; }; lsp = { - enable = mkEnableOption "Astro LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Astro LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.astro.lsp.servers" (enum (attrNames servers)); default = defaultServers; @@ -104,7 +114,12 @@ in { }; format = { - enable = mkEnableOption "Astro formatting" // {default = config.vim.languages.enableFormat;}; + enable = + mkEnableOption "Astro formatting" + // { + default = config.vim.languages.enableFormat; + defaultText = literalExpression "config.vim.languages.enableFormat"; + }; type = mkOption { type = formatType; @@ -114,7 +129,12 @@ in { }; extraDiagnostics = { - enable = mkEnableOption "extra Astro diagnostics" // {default = config.vim.languages.enableExtraDiagnostics;}; + enable = + mkEnableOption "extra Astro diagnostics" + // { + default = config.vim.languages.enableExtraDiagnostics; + defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics"; + }; types = diagnostics { langDesc = "Astro"; diff --git a/modules/plugins/languages/bash.nix b/modules/plugins/languages/bash.nix index 467f3f63..d9d78b2b 100644 --- a/modules/plugins/languages/bash.nix +++ b/modules/plugins/languages/bash.nix @@ -5,7 +5,7 @@ ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkOption mkEnableOption; + inherit (lib.options) mkOption mkEnableOption literalExpression; inherit (lib.meta) getExe; inherit (lib.modules) mkIf mkMerge; inherit (lib.types) enum bool; @@ -48,12 +48,22 @@ in { enable = mkEnableOption "Bash language support"; treesitter = { - enable = mkEnableOption "Bash treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Bash treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "bash"; }; lsp = { - enable = mkEnableOption "Bash LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Bash LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.bash.lsp.servers" (enum (attrNames servers)); default = defaultServers; @@ -65,6 +75,7 @@ in { enable = mkOption { type = bool; default = config.vim.languages.enableFormat; + defaultText = literalExpression "config.vim.languages.enableFormat"; description = "Enable Bash formatting"; }; type = mkOption { @@ -75,7 +86,12 @@ in { }; extraDiagnostics = { - enable = mkEnableOption "extra Bash diagnostics" // {default = config.vim.languages.enableExtraDiagnostics;}; + enable = + mkEnableOption "extra Bash diagnostics" + // { + default = config.vim.languages.enableExtraDiagnostics; + defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics"; + }; types = diagnostics { langDesc = "Bash"; inherit diagnosticsProviders; diff --git a/modules/plugins/languages/clang.nix b/modules/plugins/languages/clang.nix index 6948ff50..5115ed2a 100644 --- a/modules/plugins/languages/clang.nix +++ b/modules/plugins/languages/clang.nix @@ -5,7 +5,7 @@ ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.types) bool enum package; inherit (lib.meta) getExe; inherit (lib.modules) mkIf mkMerge; @@ -184,13 +184,23 @@ in { }; treesitter = { - enable = mkEnableOption "C/C++ treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "C/C++ treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; cPackage = mkGrammarOption pkgs "c"; cppPackage = mkGrammarOption pkgs "cpp"; }; lsp = { - enable = mkEnableOption "clang LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "clang LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { description = "The clang LSP server to use"; @@ -204,6 +214,7 @@ in { description = "Enable clang Debug Adapter"; type = bool; default = config.vim.languages.enableDAP; + defaultText = literalExpression "config.vim.languages.enableDAP"; }; debugger = mkOption { description = "clang debugger to use"; diff --git a/modules/plugins/languages/clojure.nix b/modules/plugins/languages/clojure.nix index 53c7fbbe..decaf926 100644 --- a/modules/plugins/languages/clojure.nix +++ b/modules/plugins/languages/clojure.nix @@ -5,7 +5,7 @@ ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.modules) mkIf mkMerge; inherit (lib.meta) getExe; inherit (lib.types) enum listOf; @@ -28,12 +28,22 @@ in { enable = mkEnableOption "Clojure language support"; treesitter = { - enable = mkEnableOption "Clojure treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Clojure treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "clojure"; }; lsp = { - enable = mkEnableOption "Clojure LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Clojure LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = listOf (enum (attrNames servers)); default = defaultServers; diff --git a/modules/plugins/languages/cmake.nix b/modules/plugins/languages/cmake.nix index 6c6fa287..a0610d46 100644 --- a/modules/plugins/languages/cmake.nix +++ b/modules/plugins/languages/cmake.nix @@ -5,7 +5,7 @@ ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.modules) mkIf mkMerge; inherit (lib.meta) getExe; inherit (lib.types) enum listOf package; @@ -18,7 +18,7 @@ servers = { neocmakelsp = { enable = true; - cmd = [(getExe pkgs.neocmakelsp) "--stdio"]; + cmd = [(getExe pkgs.neocmakelsp) "stdio"]; filetypes = ["cmake"]; root_markers = [".gersemirc" ".git" "build" "cmake"]; capabilities = { @@ -38,12 +38,22 @@ in { enable = mkEnableOption "CMake language support"; treesitter = { - enable = mkEnableOption "CMake treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "CMake treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "cmake"; }; lsp = { - enable = mkEnableOption "CMake LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "CMake LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = listOf (enum (attrNames servers)); default = defaultServers; @@ -52,7 +62,12 @@ in { }; format = { - enable = mkEnableOption "CMake formatting" // {default = config.vim.languages.enableFormat;}; + enable = + mkEnableOption "CMake formatting" + // { + default = config.vim.languages.enableFormat; + defaultText = literalExpression "config.vim.languages.enableFormat"; + }; type = mkOption { description = "CMake formatter to use"; diff --git a/modules/plugins/languages/csharp.nix b/modules/plugins/languages/csharp.nix index ef973301..b6942d0a 100644 --- a/modules/plugins/languages/csharp.nix +++ b/modules/plugins/languages/csharp.nix @@ -6,7 +6,7 @@ ... }: let inherit (builtins) attrNames concatMap; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.types) enum; inherit (lib.modules) mkIf mkMerge; inherit (lib.meta) getExe; @@ -177,12 +177,22 @@ in { enable = mkEnableOption "C# language support"; treesitter = { - enable = mkEnableOption "C# treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "C# treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "c_sharp"; }; lsp = { - enable = mkEnableOption "C# LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "C# LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { description = "C# LSP server to use"; type = deprecatedSingleOrListOf "vim.language.csharp.lsp.servers" (enum (attrNames servers)); diff --git a/modules/plugins/languages/css.nix b/modules/plugins/languages/css.nix index 28e94151..27516400 100644 --- a/modules/plugins/languages/css.nix +++ b/modules/plugins/languages/css.nix @@ -5,7 +5,7 @@ ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.meta) getExe; inherit (lib.modules) mkIf mkMerge; inherit (lib.types) enum; @@ -49,13 +49,23 @@ in { enable = mkEnableOption "CSS language support"; treesitter = { - enable = mkEnableOption "CSS treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "CSS treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "css"; }; lsp = { - enable = mkEnableOption "CSS LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "CSS LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.css.lsp.servers" (enum (attrNames servers)); diff --git a/modules/plugins/languages/cue.nix b/modules/plugins/languages/cue.nix index a22ff91c..b4294ecd 100644 --- a/modules/plugins/languages/cue.nix +++ b/modules/plugins/languages/cue.nix @@ -4,7 +4,7 @@ lib, ... }: let - inherit (lib.options) mkEnableOption; + inherit (lib.options) mkEnableOption literalExpression; inherit (lib.meta) getExe; inherit (lib.modules) mkIf mkMerge; inherit (lib.nvim.types) mkGrammarOption; @@ -21,13 +21,23 @@ in { enable = mkEnableOption "CUE language support"; treesitter = { - enable = mkEnableOption "CUE treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "CUE treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "cue"; }; lsp = { - enable = mkEnableOption "CUE LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "CUE LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; }; }; diff --git a/modules/plugins/languages/dart.nix b/modules/plugins/languages/dart.nix index 291999c2..b585da76 100644 --- a/modules/plugins/languages/dart.nix +++ b/modules/plugins/languages/dart.nix @@ -8,7 +8,7 @@ inherit (lib.modules) mkIf mkMerge; inherit (lib.meta) getExe; inherit (lib.trivial) boolToString; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.types) enum package nullOr str bool; inherit (lib.strings) optionalString; inherit (lib.nvim.types) mkGrammarOption deprecatedSingleOrListOf; @@ -45,12 +45,22 @@ in { enable = mkEnableOption "Dart language support"; treesitter = { - enable = mkEnableOption "Dart treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Dart treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "dart"; }; lsp = { - enable = mkEnableOption "Dart LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Dart LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.dart.lsp.servers" (enum (attrNames servers)); default = defaultServers; @@ -63,6 +73,7 @@ in { description = "Enable Dart DAP support via flutter-tools"; type = bool; default = config.vim.languages.enableDAP; + defaultText = literalExpression "config.vim.languages.enableDAP"; }; }; @@ -70,6 +81,7 @@ in { enable = mkOption { type = bool; default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; description = "Enable flutter-tools for flutter support"; }; diff --git a/modules/plugins/languages/default.nix b/modules/plugins/languages/default.nix index 1cdead76..ee652d2d 100644 --- a/modules/plugins/languages/default.nix +++ b/modules/plugins/languages/default.nix @@ -14,6 +14,7 @@ in { ./cmake.nix ./css.nix ./elixir.nix + ./elm.nix ./fsharp.nix ./gleam.nix ./glsl.nix @@ -23,6 +24,7 @@ in { ./kotlin.nix ./html.nix ./tera.nix + ./twig.nix ./haskell.nix ./java.nix ./jinja.nix @@ -57,6 +59,7 @@ in { ./just.nix ./make.nix ./xml.nix + ./fluent.nix # This is now a hard deprecation. (mkRenamedOptionModule ["vim" "languages" "enableLSP"] ["vim" "lsp" "enable"]) diff --git a/modules/plugins/languages/elixir.nix b/modules/plugins/languages/elixir.nix index 0aa32453..f8191f77 100644 --- a/modules/plugins/languages/elixir.nix +++ b/modules/plugins/languages/elixir.nix @@ -5,7 +5,7 @@ ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.modules) mkIf mkMerge; inherit (lib.meta) getExe; inherit (lib.types) enum; @@ -51,14 +51,24 @@ in { enable = mkEnableOption "Elixir language support"; treesitter = { - enable = mkEnableOption "Elixir treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Elixir treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "elixir"; heexPackage = mkGrammarOption pkgs "heex"; eexPackage = mkGrammarOption pkgs "eex"; }; lsp = { - enable = mkEnableOption "Elixir LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Elixir LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.elixir.lsp.servers" (enum (attrNames servers)); default = defaultServers; diff --git a/modules/plugins/languages/elm.nix b/modules/plugins/languages/elm.nix new file mode 100644 index 00000000..9a7c4a17 --- /dev/null +++ b/modules/plugins/languages/elm.nix @@ -0,0 +1,76 @@ +{ + config, + pkgs, + lib, + ... +}: let + inherit (builtins) attrNames; + inherit (lib.options) mkEnableOption mkOption literalExpression; + inherit (lib.modules) mkIf mkMerge; + inherit (lib.types) enum; + inherit (lib.nvim.types) mkGrammarOption deprecatedSingleOrListOf; + inherit (lib.meta) getExe; + inherit (lib.nvim.attrsets) mapListToAttrs; + + cfg = config.vim.languages.elm; + + defaultServers = ["elm-language-server"]; + servers = { + elm-language-server = { + enable = true; + cmd = [(getExe pkgs.elmPackages.elm-language-server)]; + filetypes = ["elm"]; + root_markers = ["elm.json"]; + workspace_required = false; + }; + }; +in { + options.vim.languages.elm = { + enable = mkEnableOption "Elm language support"; + + treesitter = { + enable = + mkEnableOption "Elm treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; + package = mkGrammarOption pkgs "elm"; + }; + + lsp = { + enable = + mkEnableOption "Elm LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; + + servers = mkOption { + type = deprecatedSingleOrListOf "vim.language.elm.lsp.servers" (enum (attrNames servers)); + default = defaultServers; + description = "Elm LSP servers to use"; + }; + }; + }; + + config = mkIf cfg.enable (mkMerge [ + (mkIf cfg.treesitter.enable { + vim.treesitter = { + enable = true; + grammars = [cfg.treesitter.package]; + }; + }) + + (mkIf cfg.lsp.enable { + vim = { + lsp.servers = + mapListToAttrs (n: { + name = n; + value = servers.${n}; + }) + cfg.lsp.servers; + }; + }) + ]); +} diff --git a/modules/plugins/languages/fluent.nix b/modules/plugins/languages/fluent.nix new file mode 100644 index 00000000..631ba590 --- /dev/null +++ b/modules/plugins/languages/fluent.nix @@ -0,0 +1,34 @@ +{ + config, + lib, + ... +}: let + inherit (lib.options) mkEnableOption; + inherit (lib.modules) mkIf; + + cfg = config.vim.languages.fluent; +in { + options.vim.languages.fluent = { + enable = mkEnableOption "Fluent language support"; + }; + + config = mkIf cfg.enable { + vim = { + lazy.plugins.fluent-nvim = { + package = "fluent-nvim"; + ft = ["fluent"]; + }; + autocmds = [ + { + event = [ + "BufRead" + "BufNewFile" + ]; + pattern = ["*.ftl"]; + desc = "Set fluent filetype"; + command = "set filetype=fluent"; + } + ]; + }; + }; +} diff --git a/modules/plugins/languages/fsharp.nix b/modules/plugins/languages/fsharp.nix index 19703022..e57eb66d 100644 --- a/modules/plugins/languages/fsharp.nix +++ b/modules/plugins/languages/fsharp.nix @@ -5,7 +5,7 @@ ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.types) enum; inherit (lib.meta) getExe; inherit (lib.modules) mkIf mkMerge; @@ -65,12 +65,22 @@ in { enable = mkEnableOption "F# language support"; treesitter = { - enable = mkEnableOption "F# treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "F# treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "fsharp"; }; lsp = { - enable = mkEnableOption "F# LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "F# LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.fsharp.lsp.servers" (enum (attrNames servers)); default = defaultServer; diff --git a/modules/plugins/languages/gleam.nix b/modules/plugins/languages/gleam.nix index 349d9ac1..8007c8bc 100644 --- a/modules/plugins/languages/gleam.nix +++ b/modules/plugins/languages/gleam.nix @@ -5,7 +5,7 @@ ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.modules) mkIf mkMerge; inherit (lib.meta) getExe; inherit (lib.types) enum; @@ -28,12 +28,22 @@ in { enable = mkEnableOption "Gleam language support"; treesitter = { - enable = mkEnableOption "Gleam treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Gleam treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "gleam"; }; lsp = { - enable = mkEnableOption "Gleam LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Gleam LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.gleam.lsp.servers" (enum (attrNames servers)); default = defaultServers; diff --git a/modules/plugins/languages/glsl.nix b/modules/plugins/languages/glsl.nix index b555b008..c4df32e3 100644 --- a/modules/plugins/languages/glsl.nix +++ b/modules/plugins/languages/glsl.nix @@ -7,7 +7,7 @@ inherit (builtins) attrNames; inherit (lib.modules) mkIf mkMerge; inherit (lib.nvim.types) mkGrammarOption; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.types) enum listOf; inherit (lib.meta) getExe; inherit (lib.nvim.attrsets) mapListToAttrs; @@ -28,12 +28,22 @@ in { enable = mkEnableOption "GLSL language support"; treesitter = { - enable = mkEnableOption "GLSL treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "GLSL treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "glsl"; }; lsp = { - enable = mkEnableOption "GLSL LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "GLSL LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = listOf (enum (attrNames servers)); diff --git a/modules/plugins/languages/go.nix b/modules/plugins/languages/go.nix index da3700a7..7c83ebf2 100644 --- a/modules/plugins/languages/go.nix +++ b/modules/plugins/languages/go.nix @@ -1,16 +1,17 @@ { + inputs, config, pkgs, lib, ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkEnableOption mkOption literalMD; + inherit (lib.options) mkEnableOption mkOption literalMD literalExpression; inherit (lib.modules) mkIf mkMerge; inherit (lib.meta) getExe; inherit (lib.generators) mkLuaInline; - inherit (lib.types) bool enum package; - inherit (lib.nvim.types) mkGrammarOption diagnostics deprecatedSingleOrListOf; + inherit (lib.types) bool enum package str; + inherit (lib.nvim.types) mkGrammarOption diagnostics deprecatedSingleOrListOf mkPluginSetupOption; inherit (lib.nvim.dag) entryAfter; inherit (lib.nvim.attrsets) mapListToAttrs; @@ -64,9 +65,11 @@ gofmt = { command = "${pkgs.go}/bin/gofmt"; }; + gofumpt = { command = getExe pkgs.gofumpt; }; + golines = { command = "${pkgs.golines}/bin/golines"; }; @@ -168,7 +171,12 @@ in { enable = mkEnableOption "Go language support"; treesitter = { - enable = mkEnableOption "Go treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Go treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; goPackage = mkGrammarOption pkgs "go"; gomodPackage = mkGrammarOption pkgs "gomod"; @@ -178,7 +186,12 @@ in { }; lsp = { - enable = mkEnableOption "Go LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Go LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.go.lsp.servers" (enum (attrNames servers)); @@ -198,51 +211,111 @@ in { }; type = mkOption { - description = "Go formatter to use"; type = deprecatedSingleOrListOf "vim.language.go.format.type" (enum (attrNames formats)); default = defaultFormat; + description = "Go formatter to use"; }; }; dap = { - enable = mkOption { - description = "Enable Go Debug Adapter via nvim-dap-go plugin"; - type = bool; - default = config.vim.languages.enableDAP; - }; + enable = + mkEnableOption "Go Debug Adapter (DAP) via `nvim-dap-go" + // { + default = config.vim.languages.enableDAP; + defaultText = literalExpression "config.vim.languages.enableDAP"; + }; debugger = mkOption { - description = "Go debugger to use"; type = enum (attrNames debuggers); default = defaultDebugger; + description = "Go debugger to use"; }; package = mkOption { - description = "Go debugger package."; type = package; default = debuggers.${cfg.dap.debugger}.package; + description = "Go debugger package."; }; }; + extraDiagnostics = { - enable = mkEnableOption "extra Go diagnostics" // {default = config.vim.languages.enableExtraDiagnostics;}; + enable = + mkEnableOption "extra Go diagnostics" + // { + default = config.vim.languages.enableExtraDiagnostics; + defaultText = literalExpression "config.vim.languages.enableExtraDiagnostic"; + }; + types = diagnostics { langDesc = "Go"; inherit diagnosticsProviders; inherit defaultDiagnosticsProvider; }; }; + + extensions = { + gopher-nvim = { + enable = mkEnableOption "Minimalistic plugin for Go development"; + setupOpts = mkPluginSetupOption "gopher-nvim" { + commands = { + go = mkOption { + type = str; + default = "go"; + description = "Go binary to use"; + }; + + gomodifytags = mkOption { + type = str; + default = getExe pkgs.gomodifytags; + defaultText = literalExpression "getExe pkgs.gomodifytags"; + description = "gomodifytags binary to use"; + }; + + gotests = mkOption { + type = str; + default = getExe pkgs.gotests; + defaultText = literalExpression "getExe pkgs.gotests"; + description = "gotests binary to use"; + }; + + impl = mkOption { + type = str; + default = getExe pkgs.impl; + defaultText = literalExpression "getExe pkgs.impl"; + description = "impl binary to use"; + }; + + iferr = mkOption { + type = str; + default = getExe pkgs.iferr; + defaultText = literalExpression "getExe pkgs.iferr"; + description = "iferr binary to use"; + }; + + json2go = mkOption { + type = str; + default = getExe inputs.self.packages.${pkgs.stdenv.hostPlatform.system}.json2go; + defaultText = literalExpression "getExe inputs.self.packages.$${pkgs.stdenv.hostPlatform.system}.json2go"; + description = "json2go binary to use"; + }; + }; + }; + }; + }; }; config = mkIf cfg.enable (mkMerge [ (mkIf cfg.treesitter.enable { - vim.treesitter.enable = true; - vim.treesitter.grammars = [ - cfg.treesitter.goPackage - cfg.treesitter.gomodPackage - cfg.treesitter.gosumPackage - cfg.treesitter.goworkPackage - cfg.treesitter.gotmplPackage - ]; + vim.treesitter = { + enable = true; + grammars = [ + cfg.treesitter.goPackage + cfg.treesitter.gomodPackage + cfg.treesitter.gosumPackage + cfg.treesitter.goworkPackage + cfg.treesitter.gotmplPackage + ]; + }; }) (mkIf cfg.lsp.enable { @@ -292,5 +365,14 @@ in { cfg.extraDiagnostics.types); }; }) + + (mkIf cfg.extensions.gopher-nvim.enable { + vim.lazy.plugins.gopher-nvim = { + package = "gopher-nvim"; + setupModule = "gopher"; + inherit (cfg.extensions.gopher-nvim) setupOpts; + ft = ["go"]; + }; + }) ]); } diff --git a/modules/plugins/languages/haskell.nix b/modules/plugins/languages/haskell.nix index ac18fe55..32f45151 100644 --- a/modules/plugins/languages/haskell.nix +++ b/modules/plugins/languages/haskell.nix @@ -6,7 +6,7 @@ }: let inherit (builtins) isList attrNames; inherit (lib.types) either package enum listOf str; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.strings) optionalString; inherit (lib.modules) mkIf mkMerge; inherit (lib.nvim.types) mkGrammarOption; @@ -57,7 +57,7 @@ settings = { haskell = { formattingProvider = "ormolu"; - cabalFormattingProvider = "cabalfmt"; + cabalFormattingProvider = "cabal-fmt"; }; }; }; @@ -67,12 +67,22 @@ in { enable = mkEnableOption "Haskell support"; treesitter = { - enable = mkEnableOption "Treesitter support for Haskell" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Treesitter support for Haskell" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "haskell"; }; lsp = { - enable = mkEnableOption "Haskell LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Haskell LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = listOf (enum (attrNames servers)); default = defaultServers; @@ -81,7 +91,12 @@ in { }; dap = { - enable = mkEnableOption "DAP support for Haskell" // {default = config.vim.languages.enableDAP;}; + enable = + mkEnableOption "DAP support for Haskell" + // { + default = config.vim.languages.enableDAP; + defaultText = literalExpression "config.vim.languages.enableDAP"; + }; package = mkOption { default = haskellPackages.haskell-debug-adapter; type = either package (listOf str); diff --git a/modules/plugins/languages/hcl.nix b/modules/plugins/languages/hcl.nix index 5f8a4f0b..9fde3d8a 100644 --- a/modules/plugins/languages/hcl.nix +++ b/modules/plugins/languages/hcl.nix @@ -5,7 +5,7 @@ ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.meta) getExe; inherit (lib.modules) mkIf mkMerge; inherit (lib.types) enum listOf; @@ -47,12 +47,22 @@ in { enable = mkEnableOption "HCL support"; treesitter = { - enable = mkEnableOption "HCL treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "HCL treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "hcl"; }; lsp = { - enable = mkEnableOption "HCL LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "HCL LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = listOf (enum (attrNames servers)); default = defaultServers; @@ -61,7 +71,12 @@ in { }; format = { - enable = mkEnableOption "Enable HCL formatting" // {default = config.vim.languages.enableFormat;}; + enable = + mkEnableOption "HCL formatting" + // { + default = config.vim.languages.enableFormat; + defaultText = literalExpression "config.vim.languages.enableFormat"; + }; type = mkOption { type = deprecatedSingleOrListOf "vim.language.hcl.format.type" (enum (attrNames formats)); default = defaultFormat; diff --git a/modules/plugins/languages/helm.nix b/modules/plugins/languages/helm.nix index 18b09722..c2152b54 100644 --- a/modules/plugins/languages/helm.nix +++ b/modules/plugins/languages/helm.nix @@ -5,7 +5,7 @@ ... }: let inherit (builtins) attrNames head; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) literalExpression mkEnableOption mkOption; inherit (lib.modules) mkDefault mkIf mkMerge; inherit (lib.meta) getExe; inherit (lib.types) enum; @@ -44,12 +44,22 @@ in { enable = mkEnableOption "Helm language support"; treesitter = { - enable = mkEnableOption "Helm treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Helm treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "helm"; }; lsp = { - enable = mkEnableOption "Helm LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Helm LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.helm.lsp.servers" (enum (attrNames servers)); default = defaultServers; diff --git a/modules/plugins/languages/html.nix b/modules/plugins/languages/html.nix index 85918ad2..cba4da6d 100644 --- a/modules/plugins/languages/html.nix +++ b/modules/plugins/languages/html.nix @@ -6,7 +6,7 @@ }: let inherit (builtins) attrNames; inherit (lib.meta) getExe; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) literalExpression mkEnableOption mkOption; inherit (lib.modules) mkIf mkMerge; inherit (lib.types) bool enum; inherit (lib.lists) optional; @@ -48,7 +48,12 @@ in { options.vim.languages.html = { enable = mkEnableOption "HTML language support"; treesitter = { - enable = mkEnableOption "HTML treesitter support" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "HTML treesitter support" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "html"; autotagHtml = mkOption { type = bool; @@ -58,7 +63,12 @@ in { }; lsp = { - enable = mkEnableOption "HTML LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "HTML LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.html.lsp.servers" (enum (attrNames servers)); default = defaultServers; @@ -67,7 +77,12 @@ in { }; format = { - enable = mkEnableOption "HTML formatting" // {default = config.vim.languages.enableFormat;}; + enable = + mkEnableOption "HTML formatting" + // { + default = config.vim.languages.enableFormat; + defaultText = literalExpression "config.vim.languages.enableFormat"; + }; type = mkOption { type = deprecatedSingleOrListOf "vim.language.html.format.type" (enum (attrNames formats)); @@ -77,7 +92,12 @@ in { }; extraDiagnostics = { - enable = mkEnableOption "extra HTML diagnostics" // {default = config.vim.languages.enableExtraDiagnostics;}; + enable = + mkEnableOption "extra HTML diagnostics" + // { + default = config.vim.languages.enableExtraDiagnostics; + defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics"; + }; types = diagnostics { langDesc = "HTML"; diff --git a/modules/plugins/languages/java.nix b/modules/plugins/languages/java.nix index 82fae184..d843e2a8 100644 --- a/modules/plugins/languages/java.nix +++ b/modules/plugins/languages/java.nix @@ -4,7 +4,7 @@ lib, ... }: let - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) literalExpression mkEnableOption mkOption; inherit (lib.modules) mkIf mkMerge; inherit (lib.meta) getExe; inherit (builtins) attrNames; @@ -65,12 +65,22 @@ in { enable = mkEnableOption "Java language support"; treesitter = { - enable = mkEnableOption "Java treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Java treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "java"; }; lsp = { - enable = mkEnableOption "Java LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Java LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = listOf (enum (attrNames servers)); default = defaultServers; diff --git a/modules/plugins/languages/jinja.nix b/modules/plugins/languages/jinja.nix index a4635f58..ce141eb9 100644 --- a/modules/plugins/languages/jinja.nix +++ b/modules/plugins/languages/jinja.nix @@ -7,7 +7,7 @@ inherit (builtins) attrNames; inherit (lib.meta) getExe; inherit (lib.modules) mkIf mkMerge; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) literalExpression mkEnableOption mkOption; inherit (lib.types) enum listOf; inherit (lib.nvim.types) mkGrammarOption; inherit (lib.nvim.attrsets) mapListToAttrs; @@ -29,13 +29,23 @@ in { enable = mkEnableOption "Jinja template language support"; treesitter = { - enable = mkEnableOption "Jinja treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Jinja treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "jinja"; inlinePackage = mkGrammarOption pkgs "jinja_inline"; }; lsp = { - enable = mkEnableOption "Jinja LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Jinja LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { description = "Jinja LSP server to use"; type = listOf (enum (attrNames servers)); diff --git a/modules/plugins/languages/json.nix b/modules/plugins/languages/json.nix index c928d3c5..5e85371a 100644 --- a/modules/plugins/languages/json.nix +++ b/modules/plugins/languages/json.nix @@ -5,7 +5,7 @@ ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkOption mkEnableOption; + inherit (lib.options) mkOption mkEnableOption literalExpression; inherit (lib.meta) getExe' getExe; inherit (lib.modules) mkIf mkMerge; inherit (lib.types) enum; @@ -18,7 +18,7 @@ servers = { jsonls = { cmd = [(getExe' pkgs.vscode-langservers-extracted "vscode-json-language-server") "--stdio"]; - filetypes = ["json" "jsonc"]; + filetypes = ["json" "jsonc" "json5"]; init_options = {provideFormatter = true;}; root_markers = [".git"]; }; @@ -37,13 +37,24 @@ in { enable = mkEnableOption "JSON language support"; treesitter = { - enable = mkEnableOption "JSON treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "JSON treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; - package = mkGrammarOption pkgs "json"; + jsonPackage = mkGrammarOption pkgs "json"; + json5Package = mkGrammarOption pkgs "json5"; }; lsp = { - enable = mkEnableOption "JSON LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "JSON LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.json.lsp.servers" (enum (attrNames servers)); @@ -53,7 +64,12 @@ in { }; format = { - enable = mkEnableOption "JSON formatting" // {default = config.vim.languages.enableFormat;}; + enable = + mkEnableOption "JSON formatting" + // { + default = config.vim.languages.enableFormat; + defaultText = literalExpression "config.vim.languages.enableFormat"; + }; type = mkOption { description = "JSON formatter to use"; @@ -66,7 +82,10 @@ in { config = mkIf cfg.enable (mkMerge [ (mkIf cfg.treesitter.enable { vim.treesitter.enable = true; - vim.treesitter.grammars = [cfg.treesitter.package]; + vim.treesitter.grammars = [ + cfg.treesitter.jsonPackage + cfg.treesitter.json5Package + ]; }) (mkIf cfg.lsp.enable { @@ -83,6 +102,7 @@ in { enable = true; setupOpts = { formatters_by_ft.json = cfg.format.type; + formatters_by_ft.json5 = cfg.format.type; formatters = mapListToAttrs (name: { inherit name; diff --git a/modules/plugins/languages/julia.nix b/modules/plugins/languages/julia.nix index 971e9f03..7d5785c9 100644 --- a/modules/plugins/languages/julia.nix +++ b/modules/plugins/languages/julia.nix @@ -5,7 +5,7 @@ ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) literalExpression mkEnableOption mkOption; inherit (lib.types) enum; inherit (lib.modules) mkIf mkMerge; inherit (lib.meta) getExe; @@ -90,12 +90,22 @@ in { enable = mkEnableOption "Julia language support"; treesitter = { - enable = mkEnableOption "Julia treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Julia treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "julia"; }; lsp = { - enable = mkEnableOption "Julia LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Julia LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.julia.lsp.servers" (enum (attrNames servers)); default = defaultServers; diff --git a/modules/plugins/languages/just.nix b/modules/plugins/languages/just.nix index 7645f255..210941bd 100644 --- a/modules/plugins/languages/just.nix +++ b/modules/plugins/languages/just.nix @@ -5,7 +5,7 @@ ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) literalExpression mkEnableOption mkOption; inherit (lib.modules) mkIf mkMerge; inherit (lib.meta) getExe; inherit (lib.types) enum listOf; @@ -29,13 +29,21 @@ in { treesitter = { enable = - mkEnableOption "Just treesitter" // {default = config.vim.languages.enableTreesitter;}; + mkEnableOption "Just treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "just"; }; lsp = { enable = - mkEnableOption "Just LSP support" // {default = config.vim.lsp.enable;}; + mkEnableOption "Just LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = listOf (enum (attrNames servers)); default = defaultServers; diff --git a/modules/plugins/languages/kotlin.nix b/modules/plugins/languages/kotlin.nix index f316c4cb..63cbe428 100644 --- a/modules/plugins/languages/kotlin.nix +++ b/modules/plugins/languages/kotlin.nix @@ -4,7 +4,7 @@ lib, ... }: let - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) literalExpression mkEnableOption mkOption; inherit (lib.modules) mkIf mkMerge; inherit (lib.meta) getExe' getExe; inherit (builtins) attrNames; @@ -56,12 +56,22 @@ in { enable = mkEnableOption "Kotlin/HCL support"; treesitter = { - enable = mkEnableOption "Kotlin treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Kotlin treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "kotlin"; }; lsp = { - enable = mkEnableOption "Kotlin LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Kotlin LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = listOf (enum (attrNames servers)); default = defaultServers; @@ -70,7 +80,12 @@ in { }; extraDiagnostics = { - enable = mkEnableOption "extra Kotlin diagnostics" // {default = config.vim.languages.enableExtraDiagnostics;}; + enable = + mkEnableOption "extra Kotlin diagnostics" + // { + default = config.vim.languages.enableExtraDiagnostics; + defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics"; + }; types = diagnostics { langDesc = "Kotlin"; diff --git a/modules/plugins/languages/lua.nix b/modules/plugins/languages/lua.nix index 564fcece..52d32d6f 100644 --- a/modules/plugins/languages/lua.nix +++ b/modules/plugins/languages/lua.nix @@ -5,7 +5,7 @@ ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) literalExpression mkEnableOption mkOption; inherit (lib.modules) mkIf mkMerge; inherit (lib.meta) getExe; inherit (lib.types) bool enum listOf; @@ -60,12 +60,22 @@ in { options.vim.languages.lua = { enable = mkEnableOption "Lua language support"; treesitter = { - enable = mkEnableOption "Lua Treesitter support" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Lua Treesitter support" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "lua"; }; lsp = { - enable = mkEnableOption "Lua LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Lua LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = listOf (enum (attrNames servers)); default = defaultServers; @@ -79,6 +89,7 @@ in { enable = mkOption { type = bool; default = config.vim.languages.enableFormat; + defaultText = literalExpression "config.vim.languages.enableFormat"; description = "Enable Lua formatting"; }; type = mkOption { @@ -89,7 +100,12 @@ in { }; extraDiagnostics = { - enable = mkEnableOption "extra Lua diagnostics" // {default = config.vim.languages.enableExtraDiagnostics;}; + enable = + mkEnableOption "extra Lua diagnostics" + // { + default = config.vim.languages.enableExtraDiagnostics; + defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics"; + }; types = diagnostics { langDesc = "Lua"; inherit diagnosticsProviders; diff --git a/modules/plugins/languages/make.nix b/modules/plugins/languages/make.nix index f7780cd9..25cbb885 100644 --- a/modules/plugins/languages/make.nix +++ b/modules/plugins/languages/make.nix @@ -5,7 +5,7 @@ ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) literalExpression mkEnableOption mkOption; inherit (lib.meta) getExe; inherit (lib.types) listOf enum; inherit (lib.modules) mkIf mkMerge; @@ -34,12 +34,22 @@ in { enable = mkEnableOption "Make support"; treesitter = { - enable = mkEnableOption "Make treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Make treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "make"; }; format = { - enable = mkEnableOption "Make formatting" // {default = config.vim.languages.enableFormat;}; + enable = + mkEnableOption "Make formatting" + // { + default = config.vim.languages.enableFormat; + defaultText = literalExpression "config.vim.languages.enableFormat"; + }; type = mkOption { description = "make formatter to use"; type = listOf (enum (attrNames formats)); @@ -48,7 +58,12 @@ in { }; extraDiagnostics = { - enable = mkEnableOption "extra Make diagnostics" // {default = config.vim.languages.enableExtraDiagnostics;}; + enable = + mkEnableOption "extra Make diagnostics" + // { + default = config.vim.languages.enableExtraDiagnostics; + defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics"; + }; types = diagnostics { langDesc = "Make"; inherit diagnosticsProviders; diff --git a/modules/plugins/languages/markdown.nix b/modules/plugins/languages/markdown.nix index 76b1e92f..c8a4c222 100644 --- a/modules/plugins/languages/markdown.nix +++ b/modules/plugins/languages/markdown.nix @@ -7,7 +7,7 @@ inherit (builtins) attrNames; inherit (lib.meta) getExe getExe'; inherit (lib.modules) mkIf mkMerge; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) literalExpression mkEnableOption mkOption; inherit (lib.types) bool enum listOf str nullOr; inherit (lib.nvim.lua) toLuaObject; inherit (lib.nvim.types) diagnostics mkGrammarOption mkPluginSetupOption deprecatedSingleOrListOf; @@ -82,6 +82,7 @@ in { enable = mkOption { type = bool; default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; description = "Enable Markdown treesitter"; }; mdPackage = mkGrammarOption pkgs "markdown"; @@ -89,7 +90,12 @@ in { }; lsp = { - enable = mkEnableOption "Markdown LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Markdown LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { description = "Markdown LSP server to use"; @@ -99,7 +105,12 @@ in { }; format = { - enable = mkEnableOption "Markdown formatting" // {default = config.vim.languages.enableFormat;}; + enable = + mkEnableOption "Markdown formatting" + // { + default = config.vim.languages.enableFormat; + defaultText = literalExpression "config.vim.languages.enableFormat"; + }; type = mkOption { type = deprecatedSingleOrListOf "vim.language.markdown.format.type" (enum (attrNames formats)); @@ -154,7 +165,12 @@ in { }; extraDiagnostics = { - enable = mkEnableOption "extra Markdown diagnostics" // {default = config.vim.languages.enableExtraDiagnostics;}; + enable = + mkEnableOption "extra Markdown diagnostics" + // { + default = config.vim.languages.enableExtraDiagnostics; + defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics"; + }; types = diagnostics { langDesc = "Markdown"; inherit diagnosticsProviders; diff --git a/modules/plugins/languages/nim.nix b/modules/plugins/languages/nim.nix index faf71baa..97bcdd9d 100644 --- a/modules/plugins/languages/nim.nix +++ b/modules/plugins/languages/nim.nix @@ -5,7 +5,7 @@ ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.meta) getExe'; inherit (lib.modules) mkIf mkMerge; inherit (lib.types) enum; @@ -48,12 +48,22 @@ in { enable = mkEnableOption "Nim language support"; treesitter = { - enable = mkEnableOption "Nim treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Nim treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "nim"; }; lsp = { - enable = mkEnableOption "Nim LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Nim LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.nim.lsp.servers" (enum (attrNames servers)); @@ -63,7 +73,12 @@ in { }; format = { - enable = mkEnableOption "Nim formatting" // {default = config.vim.languages.enableFormat;}; + enable = + mkEnableOption "Nim formatting" + // { + default = config.vim.languages.enableFormat; + defaultText = literalExpression "config.vim.languages.enableFormat"; + }; type = mkOption { type = deprecatedSingleOrListOf "vim.language.nim.format.type" (enum (attrNames formats)); default = defaultFormat; diff --git a/modules/plugins/languages/nix.nix b/modules/plugins/languages/nix.nix index 0dc5b357..29185b12 100644 --- a/modules/plugins/languages/nix.nix +++ b/modules/plugins/languages/nix.nix @@ -7,7 +7,7 @@ inherit (builtins) attrNames; inherit (lib) concatStringsSep; inherit (lib.meta) getExe; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.modules) mkIf mkMerge; inherit (lib.types) enum; inherit (lib.nvim.types) mkGrammarOption diagnostics deprecatedSingleOrListOf; @@ -74,12 +74,22 @@ in { enable = mkEnableOption "Nix language support"; treesitter = { - enable = mkEnableOption "Nix treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Nix treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "nix"; }; lsp = { - enable = mkEnableOption "Nix LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Nix LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.nix.lsp.servers" (enum (attrNames servers)); default = defaultServers; @@ -88,7 +98,12 @@ in { }; format = { - enable = mkEnableOption "Nix formatting" // {default = config.vim.languages.enableFormat;}; + enable = + mkEnableOption "Nix formatting" + // { + default = config.vim.languages.enableFormat; + defaultText = literalExpression "config.vim.languages.enableFormat"; + }; type = mkOption { description = "Nix formatter to use"; @@ -98,7 +113,12 @@ in { }; extraDiagnostics = { - enable = mkEnableOption "extra Nix diagnostics" // {default = config.vim.languages.enableExtraDiagnostics;}; + enable = + mkEnableOption "extra Nix diagnostics" + // { + default = config.vim.languages.enableExtraDiagnostics; + defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics"; + }; types = diagnostics { langDesc = "Nix"; diff --git a/modules/plugins/languages/nu.nix b/modules/plugins/languages/nu.nix index 7bbe1d78..a36e1255 100644 --- a/modules/plugins/languages/nu.nix +++ b/modules/plugins/languages/nu.nix @@ -4,7 +4,7 @@ config, ... }: let - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.types) enum; inherit (lib.modules) mkIf mkMerge; inherit (lib.nvim.types) mkGrammarOption deprecatedSingleOrListOf; @@ -38,12 +38,22 @@ in { enable = mkEnableOption "Nu language support"; treesitter = { - enable = mkEnableOption "Nu treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Nu treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "nu"; }; lsp = { - enable = mkEnableOption "Nu LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Nu LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.nu.lsp.servers" (enum (attrNames servers)); diff --git a/modules/plugins/languages/ocaml.nix b/modules/plugins/languages/ocaml.nix index 2ff5bfce..6395fda5 100644 --- a/modules/plugins/languages/ocaml.nix +++ b/modules/plugins/languages/ocaml.nix @@ -5,7 +5,7 @@ ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.modules) mkIf mkMerge; inherit (lib.meta) getExe; inherit (lib.types) enum; @@ -66,12 +66,22 @@ in { enable = mkEnableOption "OCaml language support"; treesitter = { - enable = mkEnableOption "OCaml treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "OCaml treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "ocaml"; }; lsp = { - enable = mkEnableOption "OCaml LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "OCaml LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.ocaml.lsp.servers" (enum (attrNames servers)); diff --git a/modules/plugins/languages/odin.nix b/modules/plugins/languages/odin.nix index cee9b330..d2bd3c85 100644 --- a/modules/plugins/languages/odin.nix +++ b/modules/plugins/languages/odin.nix @@ -5,7 +5,7 @@ ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.modules) mkIf mkMerge; inherit (lib.types) enum package; inherit (lib.nvim.dag) entryAfter; @@ -53,12 +53,22 @@ in { enable = mkEnableOption "Odin language support"; treesitter = { - enable = mkEnableOption "Odin treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Odin treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "odin"; }; lsp = { - enable = mkEnableOption "Odin LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Odin LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.odin.lsp.servers" (enum (attrNames servers)); @@ -68,7 +78,12 @@ in { }; dap = { - enable = mkEnableOption "Enable Odin Debug Adapter" // {default = config.vim.languages.enableDAP;}; + enable = + mkEnableOption "Enable Odin Debug Adapter" + // { + default = config.vim.languages.enableDAP; + defaultText = literalExpression "config.vim.languages.enableDAP"; + }; debugger = mkOption { description = "Odin debugger to use"; diff --git a/modules/plugins/languages/php.nix b/modules/plugins/languages/php.nix index 8d2af124..02e430a2 100644 --- a/modules/plugins/languages/php.nix +++ b/modules/plugins/languages/php.nix @@ -5,7 +5,7 @@ ... }: let inherit (builtins) attrNames toString; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.meta) getExe; inherit (lib.modules) mkIf mkMerge; inherit (lib.types) enum int attrs listOf; @@ -85,12 +85,22 @@ in { enable = mkEnableOption "PHP language support"; treesitter = { - enable = mkEnableOption "PHP treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "PHP treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "php"; }; lsp = { - enable = mkEnableOption "PHP LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "PHP LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.php.lsp.servers" (enum (attrNames servers)); @@ -100,7 +110,12 @@ in { }; format = { - enable = mkEnableOption "PHP formatting" // {default = config.vim.languages.enableFormat;}; + enable = + mkEnableOption "PHP formatting" + // { + default = config.vim.languages.enableFormat; + defaultText = literalExpression "config.vim.languages.enableFormat"; + }; type = mkOption { description = "PHP formatter to use"; @@ -110,7 +125,12 @@ in { }; dap = { - enable = mkEnableOption "Enable PHP Debug Adapter" // {default = config.vim.languages.enableDAP;}; + enable = + mkEnableOption "Enable PHP Debug Adapter" + // { + default = config.vim.languages.enableDAP; + defaultText = literalExpression "config.vim.languages.enableDAP"; + }; xdebug = { adapter = mkOption { type = attrs; diff --git a/modules/plugins/languages/python.nix b/modules/plugins/languages/python.nix index 4c777e3e..b6858fd1 100644 --- a/modules/plugins/languages/python.nix +++ b/modules/plugins/languages/python.nix @@ -291,7 +291,12 @@ in { enable = mkEnableOption "Python language support"; treesitter = { - enable = mkEnableOption "Python treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Python treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkOption { description = "Python treesitter grammar to use"; type = package; @@ -300,7 +305,12 @@ in { }; lsp = { - enable = mkEnableOption "Python LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Python LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.python.lsp.servers" (enum (attrNames servers)); @@ -310,7 +320,12 @@ in { }; format = { - enable = mkEnableOption "Python formatting" // {default = config.vim.languages.enableFormat;}; + enable = + mkEnableOption "Python formatting" + // { + default = config.vim.languages.enableFormat; + defaultText = literalExpression "config.vim.languages.enableFormat"; + }; type = mkOption { type = deprecatedSingleOrListOf "vim.language.python.format.type" (enum (attrNames formats)); @@ -324,6 +339,7 @@ in { enable = mkOption { type = bool; default = config.vim.languages.enableDAP; + defaultText = literalExpression "config.vim.languages.enableDAP"; description = "Enable Python Debug Adapter"; }; @@ -345,7 +361,12 @@ in { }; extraDiagnostics = { - enable = mkEnableOption "extra Python diagnostics" // {default = config.vim.languages.enableExtraDiagnostics;}; + enable = + mkEnableOption "extra Python diagnostics" + // { + default = config.vim.languages.enableExtraDiagnostics; + defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics"; + }; types = diagnostics { langDesc = "Python"; inherit diagnosticsProviders; diff --git a/modules/plugins/languages/qml.nix b/modules/plugins/languages/qml.nix index e8f40654..73d40575 100644 --- a/modules/plugins/languages/qml.nix +++ b/modules/plugins/languages/qml.nix @@ -6,7 +6,7 @@ }: let inherit (builtins) attrNames; inherit (lib.meta) getExe'; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.modules) mkIf mkMerge; inherit (lib.types) enum; inherit (lib.nvim.types) mkGrammarOption deprecatedSingleOrListOf; @@ -37,12 +37,22 @@ in { options.vim.languages.qml = { enable = mkEnableOption "QML language support"; treesitter = { - enable = mkEnableOption "QML treesitter support" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "QML treesitter support" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "qmljs"; }; lsp = { - enable = mkEnableOption "QML LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "QML LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.qml.lsp.servers" (enum (attrNames servers)); default = defaultServers; @@ -51,7 +61,12 @@ in { }; format = { - enable = mkEnableOption "QML formatting" // {default = config.vim.languages.enableFormat;}; + enable = + mkEnableOption "QML formatting" + // { + default = config.vim.languages.enableFormat; + defaultText = literalExpression "config.vim.languages.enableFormat"; + }; type = mkOption { type = deprecatedSingleOrListOf "vim.language.qml.format.type" (enum (attrNames formats)); diff --git a/modules/plugins/languages/r.nix b/modules/plugins/languages/r.nix index d9f6e9f0..764e0eba 100644 --- a/modules/plugins/languages/r.nix +++ b/modules/plugins/languages/r.nix @@ -5,7 +5,7 @@ ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.modules) mkIf mkMerge; inherit (lib.types) enum; inherit (lib.meta) getExe; @@ -65,12 +65,22 @@ in { enable = mkEnableOption "R language support"; treesitter = { - enable = mkEnableOption "R treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "R treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "r"; }; lsp = { - enable = mkEnableOption "R LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "R LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.r.lsp.servers" (enum (attrNames servers)); @@ -80,7 +90,12 @@ in { }; format = { - enable = mkEnableOption "R formatting" // {default = config.vim.languages.enableFormat;}; + enable = + mkEnableOption "R formatting" + // { + default = config.vim.languages.enableFormat; + defaultText = literalExpression "config.vim.languages.enableFormat"; + }; type = mkOption { type = deprecatedSingleOrListOf "vim.language.r.format.type" (enum (attrNames formats)); diff --git a/modules/plugins/languages/ruby.nix b/modules/plugins/languages/ruby.nix index 14896f01..5ebcdea5 100644 --- a/modules/plugins/languages/ruby.nix +++ b/modules/plugins/languages/ruby.nix @@ -5,7 +5,7 @@ ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.meta) getExe; inherit (lib.modules) mkIf mkMerge; inherit (lib.nvim.types) mkGrammarOption diagnostics deprecatedSingleOrListOf; @@ -67,12 +67,22 @@ in { enable = mkEnableOption "Ruby language support"; treesitter = { - enable = mkEnableOption "Ruby treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Ruby treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "ruby"; }; lsp = { - enable = mkEnableOption "Ruby LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Ruby LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.ruby.lsp.servers" (enum (attrNames servers)); diff --git a/modules/plugins/languages/rust.nix b/modules/plugins/languages/rust.nix index ec5a3d81..3a3e4d1f 100644 --- a/modules/plugins/languages/rust.nix +++ b/modules/plugins/languages/rust.nix @@ -6,7 +6,7 @@ }: let inherit (lib.meta) getExe; inherit (lib.modules) mkIf mkMerge; - inherit (lib.options) mkOption mkEnableOption literalMD; + inherit (lib.options) mkOption mkEnableOption literalMD literalExpression; inherit (lib.strings) optionalString; inherit (lib.lists) isList; inherit (lib.attrsets) attrNames; @@ -29,12 +29,22 @@ in { enable = mkEnableOption "Rust language support"; treesitter = { - enable = mkEnableOption "Rust treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Rust treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "rust"; }; lsp = { - enable = mkEnableOption "Rust LSP support (rust-analyzer with extra tools)" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Rust LSP support (rust-analyzer with extra tools)" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; package = mkOption { description = "rust-analyzer package, or the command to run as a list of strings"; example = ''[lib.getExe pkgs.jdt-language-server "-data" "~/.cache/jdtls/workspace"]''; @@ -80,6 +90,7 @@ in { description = "Rust Debug Adapter support"; type = bool; default = config.vim.languages.enableDAP; + defaultText = literalExpression "config.vim.languages.enableDAP"; }; package = mkOption { @@ -108,14 +119,39 @@ in { setupOpts = mkPluginSetupOption "crates-nvim" { lsp = { - enabled = mkEnableOption "crates.nvim's in-process language server" // {default = cfg.extensions.crates-nvim.enable;}; - actions = mkEnableOption "actions for crates-nvim's in-process language server" // {default = cfg.extensions.crates-nvim.enable;}; - completion = mkEnableOption "completion for crates-nvim's in-process language server" // {default = cfg.extensions.crates-nvim.enable;}; - hover = mkEnableOption "hover actions for crates-nvim's in-process language server" // {default = cfg.extensions.crates-nvim.enable;}; + enabled = + mkEnableOption "crates.nvim's in-process language server" + // { + default = cfg.extensions.crates-nvim.enable; + defaultText = literalExpression "config.vim.languages.rust.extensions.crates-nvim.enable"; + }; + actions = + mkEnableOption "actions for crates-nvim's in-process language server" + // { + default = cfg.extensions.crates-nvim.enable; + defaultText = literalExpression "config.vim.languages.rust.extensions.crates-nvim.enable"; + }; + completion = + mkEnableOption "completion for crates-nvim's in-process language server" + // { + default = cfg.extensions.crates-nvim.enable; + defaultText = literalExpression "config.vim.languages.rust.extensions.crates-nvim.enable"; + }; + hover = + mkEnableOption "hover actions for crates-nvim's in-process language server" + // { + default = cfg.extensions.crates-nvim.enable; + defaultText = literalExpression "config.vim.languages.rust.extensions.crates-nvim.enable"; + }; }; completion = { crates = { - enabled = mkEnableOption "completion for crates-nvim's in-process language server" // {default = cfg.extensions.crates-nvim.enable;}; + enabled = + mkEnableOption "completion for crates-nvim's in-process language server" + // { + default = cfg.extensions.crates-nvim.enable; + defaultText = literalExpression "config.vim.languages.rust.extensions.crates-nvim.enable"; + }; max_results = mkOption { description = "The maximum number of search results to display"; type = int; diff --git a/modules/plugins/languages/scala.nix b/modules/plugins/languages/scala.nix index b5382415..bcbe43fe 100644 --- a/modules/plugins/languages/scala.nix +++ b/modules/plugins/languages/scala.nix @@ -10,7 +10,7 @@ inherit (lib.nvim.dag) entryAfter; inherit (lib.nvim.lua) toLuaObject; inherit (lib.nvim.types) mkGrammarOption luaInline; - inherit (lib.options) mkOption mkEnableOption mkPackageOption; + inherit (lib.options) mkOption mkEnableOption mkPackageOption literalExpression; inherit (lib.strings) optionalString; inherit (lib.types) attrsOf anything bool; @@ -28,12 +28,22 @@ in { enable = mkEnableOption "Scala language support"; treesitter = { - enable = mkEnableOption "Scala treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Scala treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "scala"; }; lsp = { - enable = mkEnableOption "Scala LSP support (metals)" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Scala LSP support (metals)" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; package = mkPackageOption pkgs "metals" { default = ["metals"]; }; diff --git a/modules/plugins/languages/sql.nix b/modules/plugins/languages/sql.nix index b65bba8b..9aff0029 100644 --- a/modules/plugins/languages/sql.nix +++ b/modules/plugins/languages/sql.nix @@ -5,7 +5,7 @@ ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.meta) getExe; inherit (lib.modules) mkIf mkMerge; inherit (lib.types) enum package str; @@ -74,7 +74,12 @@ in { }; treesitter = { - enable = mkEnableOption "SQL treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "SQL treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkOption { type = package; @@ -84,7 +89,12 @@ in { }; lsp = { - enable = mkEnableOption "SQL LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "SQL LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.sql.lsp.servers" (enum (attrNames servers)); @@ -94,7 +104,12 @@ in { }; format = { - enable = mkEnableOption "SQL formatting" // {default = config.vim.languages.enableFormat;}; + enable = + mkEnableOption "SQL formatting" + // { + default = config.vim.languages.enableFormat; + defaultText = literalExpression "config.vim.languages.enableFormat"; + }; type = mkOption { type = deprecatedSingleOrListOf "vim.language.sql.format.type" (enum (attrNames formats)); @@ -104,7 +119,12 @@ in { }; extraDiagnostics = { - enable = mkEnableOption "extra SQL diagnostics" // {default = config.vim.languages.enableExtraDiagnostics;}; + enable = + mkEnableOption "extra SQL diagnostics" + // { + default = config.vim.languages.enableExtraDiagnostics; + defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics"; + }; types = diagnostics { langDesc = "SQL"; diff --git a/modules/plugins/languages/svelte.nix b/modules/plugins/languages/svelte.nix index a34d5212..3756e55c 100644 --- a/modules/plugins/languages/svelte.nix +++ b/modules/plugins/languages/svelte.nix @@ -6,7 +6,7 @@ ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.modules) mkIf mkMerge; inherit (lib.meta) getExe; inherit (lib.types) enum package coercedTo; @@ -104,13 +104,23 @@ in { enable = mkEnableOption "Svelte language support"; treesitter = { - enable = mkEnableOption "Svelte treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Svelte treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; sveltePackage = mkGrammarOption pkgs "svelte"; }; lsp = { - enable = mkEnableOption "Svelte LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Svelte LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.svelte.lsp.servers" (enum (attrNames servers)); diff --git a/modules/plugins/languages/tailwind.nix b/modules/plugins/languages/tailwind.nix index 35449237..da2a514e 100644 --- a/modules/plugins/languages/tailwind.nix +++ b/modules/plugins/languages/tailwind.nix @@ -5,7 +5,7 @@ ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.modules) mkIf mkMerge; inherit (lib.meta) getExe; inherit (lib.types) enum; @@ -151,7 +151,12 @@ in { enable = mkEnableOption "Tailwindcss language support"; lsp = { - enable = mkEnableOption "Tailwindcss LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Tailwindcss LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.tailwind.lsp.servers" (enum (attrNames servers)); diff --git a/modules/plugins/languages/tera.nix b/modules/plugins/languages/tera.nix index 7e1d5573..9650da92 100644 --- a/modules/plugins/languages/tera.nix +++ b/modules/plugins/languages/tera.nix @@ -4,7 +4,7 @@ lib, ... }: let - inherit (lib.options) mkEnableOption; + inherit (lib.options) mkEnableOption literalExpression; inherit (lib.modules) mkIf mkMerge; inherit (lib.nvim.types) mkGrammarOption; @@ -14,7 +14,12 @@ in { enable = mkEnableOption "Tera templating language support"; treesitter = { - enable = mkEnableOption "Tera treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Tera treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "tera"; }; }; diff --git a/modules/plugins/languages/terraform.nix b/modules/plugins/languages/terraform.nix index 0056456a..4910fdbd 100644 --- a/modules/plugins/languages/terraform.nix +++ b/modules/plugins/languages/terraform.nix @@ -5,7 +5,7 @@ ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.modules) mkIf mkMerge; inherit (lib.meta) getExe; inherit (lib.types) enum listOf; @@ -48,12 +48,23 @@ in { enable = mkEnableOption "Terraform support"; treesitter = { - enable = mkEnableOption "Terraform treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Terraform treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "terraform"; }; lsp = { - enable = mkEnableOption "Terraform LSP support (terraform-ls)" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Terraform LSP support (terraform-ls)" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; + servers = mkOption { type = listOf (enum (attrNames servers)); default = defaultServers; diff --git a/modules/plugins/languages/toml.nix b/modules/plugins/languages/toml.nix index 9a5ec948..1ead6c7c 100644 --- a/modules/plugins/languages/toml.nix +++ b/modules/plugins/languages/toml.nix @@ -7,7 +7,7 @@ inherit (builtins) attrNames; inherit (lib.meta) getExe; inherit (lib.modules) mkIf mkMerge; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.types) enum; inherit (lib.nvim.types) diagnostics mkGrammarOption deprecatedSingleOrListOf; inherit (lib.nvim.attrsets) mapListToAttrs; @@ -78,6 +78,7 @@ in { mkEnableOption "TOML treesitter" // { default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; }; package = mkGrammarOption pkgs "toml"; }; @@ -87,6 +88,7 @@ in { mkEnableOption "TOML LSP support" // { default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; }; servers = mkOption { @@ -101,6 +103,7 @@ in { mkEnableOption "TOML formatting" // { default = config.vim.languages.enableFormat; + defaultText = literalExpression "config.vim.languages.enableFormat"; }; type = mkOption { @@ -115,6 +118,7 @@ in { mkEnableOption "extra TOML diagnostics" // { default = config.vim.languages.enableExtraDiagnostics; + defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics"; }; types = diagnostics { langDesc = "TOML"; diff --git a/modules/plugins/languages/ts.nix b/modules/plugins/languages/ts.nix index e5dc8d13..b7aaac73 100644 --- a/modules/plugins/languages/ts.nix +++ b/modules/plugins/languages/ts.nix @@ -5,7 +5,7 @@ ... }: let inherit (builtins) attrNames elem; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.modules) mkIf mkMerge; inherit (lib.meta) getExe; inherit (lib.types) enum package bool; @@ -215,14 +215,24 @@ in { enable = mkEnableOption "Typescript/Javascript language support"; treesitter = { - enable = mkEnableOption "Typescript/Javascript treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Typescript/Javascript treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; tsPackage = mkGrammarOption pkgs "typescript"; tsxPackage = mkGrammarOption pkgs "tsx"; jsPackage = mkGrammarOption pkgs "javascript"; }; lsp = { - enable = mkEnableOption "Typescript/Javascript LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Typescript/Javascript LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.ts.lsp.servers" (enum (attrNames servers)); @@ -232,7 +242,12 @@ in { }; format = { - enable = mkEnableOption "Typescript/Javascript formatting" // {default = config.vim.languages.enableFormat;}; + enable = + mkEnableOption "Typescript/Javascript formatting" + // { + default = config.vim.languages.enableFormat; + defaultText = literalExpression "config.vim.languages.enableFormat"; + }; type = mkOption { description = "Typescript/Javascript formatter to use"; diff --git a/modules/plugins/languages/twig.nix b/modules/plugins/languages/twig.nix new file mode 100644 index 00000000..36e64838 --- /dev/null +++ b/modules/plugins/languages/twig.nix @@ -0,0 +1,140 @@ +{ + config, + pkgs, + lib, + ... +}: let + inherit (builtins) attrNames; + inherit (lib.options) mkEnableOption mkOption literalExpression; + inherit (lib.modules) mkIf mkMerge; + inherit (lib.meta) getExe; + inherit (lib.types) listOf enum; + inherit (lib.nvim.types) mkGrammarOption diagnostics; + inherit (lib.nvim.attrsets) mapListToAttrs; + + cfg = config.vim.languages.twig; + + defaultServers = ["twig-language-server"]; + servers = { + twig-language-server = { + enable = true; + cmd = [(getExe pkgs.twig-language-server) "--stdio"]; + filetypes = ["twig"]; + root_markers = [".git"]; + }; + }; + + defaultFormat = ["djlint"]; + formats = { + djlint = { + command = getExe pkgs.djlint; + }; + # TODO: if twig-cs-fixer gets packaged for nix, add it and default to it. + }; + defaultDiagnosticsProvider = ["djlint"]; + diagnosticsProviders = { + djlint = { + config = { + cmd = getExe pkgs.djlint; + }; + }; + # TODO: if curlylint gets packaged for nix, add it. + }; +in { + options.vim.languages.twig = { + enable = mkEnableOption "Twig templating language support"; + + treesitter = { + enable = + mkEnableOption "Twig treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; + package = mkGrammarOption pkgs "twig"; + }; + + lsp = { + enable = + mkEnableOption "Twig LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; + servers = mkOption { + type = listOf (enum (attrNames servers)); + default = defaultServers; + description = "Twig LSP server to use"; + }; + }; + + format = { + enable = + mkEnableOption "PHP formatting" + // { + default = config.vim.languages.enableFormat; + defaultText = literalExpression "config.vim.languages.enableFormat"; + }; + type = mkOption { + description = "Twig formatter to use"; + type = listOf (enum (attrNames formats)); + default = defaultFormat; + }; + }; + + extraDiagnostics = { + enable = + mkEnableOption "extra Twig diagnostics" + // { + default = config.vim.languages.enableExtraDiagnostics; + defaultText = literalExpression "config.vim.languages.enableExtraDiagnostics"; + }; + types = diagnostics { + langDesc = "Twig"; + inherit diagnosticsProviders; + inherit defaultDiagnosticsProvider; + }; + }; + }; + + config = mkIf cfg.enable (mkMerge [ + (mkIf cfg.treesitter.enable { + vim.treesitter.enable = true; + vim.treesitter.grammars = [cfg.treesitter.package]; + }) + + (mkIf cfg.lsp.enable { + vim.lsp.servers = + mapListToAttrs (n: { + name = n; + value = servers.${n}; + }) + cfg.lsp.servers; + }) + + (mkIf cfg.format.enable { + vim.formatter.conform-nvim = { + enable = true; + setupOpts = { + formatters_by_ft.twig = cfg.format.type; + formatters = + mapListToAttrs (name: { + inherit name; + value = formats.${name}; + }) + cfg.format.type; + }; + }; + }) + + (mkIf cfg.extraDiagnostics.enable { + vim.diagnostics.nvim-lint = { + enable = true; + linters_by_ft.twig = cfg.extraDiagnostics.types; + linters = + mkMerge (map (name: {${name} = diagnosticsProviders.${name}.config;}) + cfg.extraDiagnostics.types); + }; + }) + ]); +} diff --git a/modules/plugins/languages/typst.nix b/modules/plugins/languages/typst.nix index 10783b61..2e29f22b 100644 --- a/modules/plugins/languages/typst.nix +++ b/modules/plugins/languages/typst.nix @@ -4,7 +4,7 @@ lib, ... }: let - inherit (lib.options) mkOption mkEnableOption; + inherit (lib.options) mkOption mkEnableOption literalExpression; inherit (lib.modules) mkIf mkMerge; inherit (lib.types) nullOr enum attrsOf listOf package str bool int; inherit (lib.attrsets) attrNames; @@ -104,12 +104,22 @@ in { enable = mkEnableOption "Typst language support"; treesitter = { - enable = mkEnableOption "Typst treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Typst treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "typst"; }; lsp = { - enable = mkEnableOption "Typst LSP support (typst-lsp)" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Typst LSP support (typst-lsp)" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.typst.lsp.servers" (enum (attrNames servers)); @@ -119,7 +129,12 @@ in { }; format = { - enable = mkEnableOption "Typst document formatting" // {default = config.vim.languages.enableFormat;}; + enable = + mkEnableOption "Typst document formatting" + // { + default = config.vim.languages.enableFormat; + defaultText = literalExpression "config.vim.languages.enableFormat"; + }; type = mkOption { type = deprecatedSingleOrListOf "vim.language.typst.format.type" (enum (attrNames formats)); diff --git a/modules/plugins/languages/vala.nix b/modules/plugins/languages/vala.nix index af58758d..b3376daf 100644 --- a/modules/plugins/languages/vala.nix +++ b/modules/plugins/languages/vala.nix @@ -5,7 +5,7 @@ ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.modules) mkIf mkMerge; inherit (lib.meta) getExe; inherit (lib.types) enum; @@ -67,12 +67,22 @@ in { enable = mkEnableOption "Vala language support"; treesitter = { - enable = mkEnableOption "Vala treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Vala treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "vala"; }; lsp = { - enable = mkEnableOption "Vala LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Vala LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.vala.lsp.servers" (enum (attrNames servers)); default = defaultServers; diff --git a/modules/plugins/languages/wgsl.nix b/modules/plugins/languages/wgsl.nix index f38cb124..016f6c4a 100644 --- a/modules/plugins/languages/wgsl.nix +++ b/modules/plugins/languages/wgsl.nix @@ -7,7 +7,7 @@ inherit (builtins) attrNames; inherit (lib.modules) mkIf mkMerge; inherit (lib.nvim.types) mkGrammarOption deprecatedSingleOrListOf; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.types) enum; inherit (lib.meta) getExe; inherit (lib.nvim.attrsets) mapListToAttrs; @@ -29,12 +29,22 @@ in { enable = mkEnableOption "WGSL language support"; treesitter = { - enable = mkEnableOption "WGSL treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "WGSL treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "wgsl"; }; lsp = { - enable = mkEnableOption "WGSL LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "WGSL LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.wgsl.lsp.servers" (enum (attrNames servers)); diff --git a/modules/plugins/languages/xml.nix b/modules/plugins/languages/xml.nix index 351232a9..7eae0026 100644 --- a/modules/plugins/languages/xml.nix +++ b/modules/plugins/languages/xml.nix @@ -5,7 +5,7 @@ ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkOption mkEnableOption; + inherit (lib.options) mkOption mkEnableOption literalExpression; inherit (lib.meta) getExe; inherit (lib.modules) mkIf mkMerge; inherit (lib.types) enum listOf; @@ -30,12 +30,22 @@ in { enable = mkEnableOption "XML language support"; treesitter = { - enable = mkEnableOption "XML treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "XML treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "xml"; }; lsp = { - enable = mkEnableOption "XML LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "XML LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = listOf (enum (attrNames servers)); default = defaultServers; diff --git a/modules/plugins/languages/yaml.nix b/modules/plugins/languages/yaml.nix index 2e57d8be..097b98c5 100644 --- a/modules/plugins/languages/yaml.nix +++ b/modules/plugins/languages/yaml.nix @@ -6,7 +6,7 @@ }: let inherit (builtins) attrNames; inherit (lib.generators) mkLuaInline; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.modules) mkIf mkMerge; inherit (lib.meta) getExe; inherit (lib.types) enum; @@ -51,13 +51,23 @@ in { enable = mkEnableOption "YAML language support"; treesitter = { - enable = mkEnableOption "YAML treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "YAML treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "yaml"; }; lsp = { - enable = mkEnableOption "Yaml LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Yaml LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.yaml.lsp.servers" (enum (attrNames servers)); default = defaultServers; diff --git a/modules/plugins/languages/zig.nix b/modules/plugins/languages/zig.nix index 57ce961e..5e1db977 100644 --- a/modules/plugins/languages/zig.nix +++ b/modules/plugins/languages/zig.nix @@ -5,7 +5,7 @@ ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.modules) mkIf mkMerge mkDefault; inherit (lib.types) bool package enum; inherit (lib.nvim.types) mkGrammarOption deprecatedSingleOrListOf; @@ -59,12 +59,22 @@ in { enable = mkEnableOption "Zig language support"; treesitter = { - enable = mkEnableOption "Zig treesitter" // {default = config.vim.languages.enableTreesitter;}; + enable = + mkEnableOption "Zig treesitter" + // { + default = config.vim.languages.enableTreesitter; + defaultText = literalExpression "config.vim.languages.enableTreesitter"; + }; package = mkGrammarOption pkgs "zig"; }; lsp = { - enable = mkEnableOption "Zig LSP support" // {default = config.vim.lsp.enable;}; + enable = + mkEnableOption "Zig LSP support" + // { + default = config.vim.lsp.enable; + defaultText = literalExpression "config.vim.lsp.enable"; + }; servers = mkOption { type = deprecatedSingleOrListOf "vim.language.zig.lsp.servers" (enum (attrNames servers)); @@ -77,6 +87,7 @@ in { enable = mkOption { type = bool; default = config.vim.languages.enableDAP; + defaultText = literalExpression "config.vim.languages.enableDAP"; description = "Enable Zig Debug Adapter"; }; diff --git a/modules/wrapper/build/config.nix b/modules/wrapper/build/config.nix index dc4bebe5..ba25552c 100644 --- a/modules/wrapper/build/config.nix +++ b/modules/wrapper/build/config.nix @@ -24,7 +24,10 @@ ); # Build a given Treesitter grammar. - buildTreesitterPlug = grammars: vimPlugins.nvim-treesitter.withPlugins (_: grammars); + buildTreesitterPlug = grammars: + vimPlugins.nvim-treesitter.withPlugins ( + _: builtins.filter (g: g != null) grammars + ); pluginBuilders = { nvim-treesitter = buildTreesitterPlug config.vim.treesitter.grammars; diff --git a/npins/sources.json b/npins/sources.json index 05b662ff..9d9cc978 100644 --- a/npins/sources.json +++ b/npins/sources.json @@ -539,6 +539,19 @@ "url": "https://github.com/folke/flash.nvim/archive/b68bda044d68e4026c4e1ec6df3c5afd7eb8e341.tar.gz", "hash": "sha256-7isgZdploAGK5l8TxVxL277CH6kPbcBnMwfZeqPHjq4=" }, + "fluent-nvim": { + "type": "Git", + "repository": { + "type": "GitHub", + "owner": "projectfluent", + "repo": "fluent.vim" + }, + "branch": "master", + "submodules": false, + "revision": "94c1ef622187032778f546d2f8ad821661475172", + "url": "https://github.com/projectfluent/fluent.vim/archive/94c1ef622187032778f546d2f8ad821661475172.tar.gz", + "hash": "sha256-tOYxOUKa6Zn2Yq5peqGDEdCkpl+b+VKkSmZx7+kHZJ0=" + }, "flutter-tools-nvim": { "type": "Git", "repository": { @@ -656,6 +669,22 @@ "url": "https://github.com/ellisonleao/glow.nvim/archive/5d5954b2f22e109d4a6eba8b2618c5b96e4ee7a2.tar.gz", "hash": "sha256-CvBcmVWBgI+m+PS7p7PmsiPtTEfqx2kpIzz4mImONIc=" }, + "gopher-nvim": { + "type": "GitRelease", + "repository": { + "type": "GitHub", + "owner": "olexsmir", + "repo": "gopher.nvim" + }, + "pre_releases": false, + "version_upper_bound": null, + "release_prefix": null, + "submodules": false, + "version": "v0.6.0", + "revision": "95fdeb571d837af9efae27fea1c0131fa756ab43", + "url": "https://api.github.com/repos/olexsmir/gopher.nvim/tarball/refs/tags/v0.6.0", + "hash": "sha256-7aDjMFMCiqub/zCDJIWUIX9Zc6+vyPQOczuOFdc/6S0=" + }, "grug-far-nvim": { "type": "Git", "repository": { @@ -863,15 +892,16 @@ "leap-nvim": { "type": "Git", "repository": { - "type": "GitHub", - "owner": "ggandor", + "type": "Forgejo", + "server": "https://codeberg.org/", + "owner": "andyg", "repo": "leap.nvim" }, "branch": "main", "submodules": false, - "revision": "07304103f6bd923004fdef9262d9a4d7925fb70a", - "url": "https://github.com/ggandor/leap.nvim/archive/07304103f6bd923004fdef9262d9a4d7925fb70a.tar.gz", - "hash": "sha256-AImK8kLWBdA1IFeTt52UF8+j+BBmQmz00VW4EWCVQdg=" + "revision": "774c452da3521d4434f912b6ca6dd97318aca4b0", + "url": "https://codeberg.org/andyg/leap.nvim/archive/774c452da3521d4434f912b6ca6dd97318aca4b0.tar.gz", + "hash": "sha256-HkLmYb0+Vu65JalaE2JuMJM74/fWAS3QJRQb4BW5esw=" }, "leetcode-nvim": { "type": "Git",