From 2c33389056a156d55701d0254ac91d7f2fa1c52c Mon Sep 17 00:00:00 2001 From: Snoweuph Date: Sat, 28 Feb 2026 16:30:17 +0100 Subject: [PATCH] language/go: add gopher-nvim extension --- docs/manual/release-notes/rl-0.9.md | 3 ++ modules/plugins/languages/go.nix | 55 +++++++++++++++++++++++++++-- npins/sources.json | 16 +++++++++ 3 files changed, 71 insertions(+), 3 deletions(-) diff --git a/docs/manual/release-notes/rl-0.9.md b/docs/manual/release-notes/rl-0.9.md index 4a322868..e339147f 100644 --- a/docs/manual/release-notes/rl-0.9.md +++ b/docs/manual/release-notes/rl-0.9.md @@ -208,6 +208,9 @@ - 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. diff --git a/modules/plugins/languages/go.nix b/modules/plugins/languages/go.nix index da3700a7..a240bb98 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; @@ -231,6 +232,45 @@ in { 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; + description = "gomodifytags binary to use"; + }; + gotests = mkOption { + type = str; + default = getExe pkgs.gotests; + description = "gotests binary to use"; + }; + impl = mkOption { + type = str; + default = getExe pkgs.impl; + description = "impl binary to use"; + }; + iferr = mkOption { + type = str; + default = getExe pkgs.iferr; + description = "iferr binary to use"; + }; + json2go = mkOption { + type = str; + default = literalExpression "getExe inputs.self.packages.$${pkgs.stdenv.hostPlatform.system}.json2go"; + description = "json2go binary to use"; + }; + }; + }; + }; + }; }; config = mkIf cfg.enable (mkMerge [ @@ -292,5 +332,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/npins/sources.json b/npins/sources.json index 05b662ff..2fe8b904 100644 --- a/npins/sources.json +++ b/npins/sources.json @@ -656,6 +656,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": {