{ config, pkgs, lib, ... }: { home.packages = with pkgs; [ gofumpt gopls gotools golines delve gomodifytags golangci-lint (golangci-lint-langserver.overrideAttrs (old: { version = "0.0.11-unstable-20250719"; src = pkgs.fetchFromGitHub { owner = "nametake"; repo = "golangci-lint-langserver"; rev = "5725c355362522eabc923ef100072fc1f3e23313"; hash = "sha256-1Ka34ohImM+sdVtYkvrZ+xzHFOmJyz8S18liS9/kdsg="; }; vendorHash = "${old.vendorHash}"; })) ]; programs.go = { enable = true; env = { GOTOOLCHAIN = "local"; # use installed go tools GOPATH = "${config.home.homeDirectory}/projects/go"; }; }; home.sessionPath = [ (config.programs.go.env.GOPATH + "/bin") ]; home.shellAliases = { gom = "go mod"; gomt = "go mod tidy"; gomd = "go mod download"; gog = "go get"; gogu = "go get -u"; }; programs.emacs.extraPackages = epkgs: (with epkgs; [ go-eldoc go-tag templ-ts-mode (treesit-grammars.with-grammars ( grammars: with grammars; [ tree-sitter-go tree-sitter-gowork tree-sitter-gomod tree-sitter-templ ] )) ]); programs.nixvim.plugins.lsp.servers = { gopls.enable = true; golangci_lint_ls.enable = true; }; programs.zed-editor.extensions = [ "live-template" "golangci-lint" "gosum" ]; }