all repos — nixfiles @ 90ca485ef06d428e4c65fb2815570b2d64e2117c

System and user configuration, managed by nix and home-manager

user/settings/development/golang.nix (view raw)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
{
  config,
  pkgs,
  ...
}:
{
  home.packages = with pkgs; [
    gofumpt
    (lib.lowPrio 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.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"
  ];
}