Go项目模板

一个集成了Nix devShell和direnv的最小化Go项目模板,提供自动化初始化功能。

  • by yyovil
  • Nix
  • 本地部署
  • 5 星标
  • 更新于
在 GitHub 查看 yyovil/tandem-mcp

使用说明

Go 项目模板

一个包含Nix开发环境(devShell)和direnv集成的最小Go项目模板,支持自动化初始化。

特点

  • 🚀 Go 1.25.1 准备就绪
  • ❄️ 使用Nix flakes打造可复现的开发环境
  • 🔧 使用direnv实现自动环境加载
  • 📦 预配置了必要的Go工具(gopls、gotools、goreleaser)
  • 🤖 自动化初始化脚本,用于快速项目设置

先决条件

启用 Nix Flakes

添加到 ~/.config/nix/nix.conf (或者 /etc/nix/nix.conf):

experimental-features = nix-command flakes

入门指南/开始使用

1. 使用此模板

在GitHub上点击“使用此模板”按钮或克隆此仓库:

git clone {yourRepoUrl}
cd {yourProjectName}
bash scripts/init.sh {yourModuleName}

2. 验证设置

go list

项目结构

.
├── .envrc              # direnv configuration
├── .gitignore          # Git ignore rules
├── flake.nix           # Nix flake for development environment
├── flake.lock          # Locked dependencies
├── go.mod              # Go module file
├── go.sum              # Go dependencies checksums
├── main.go             # Main application file
└── pkgs/               # Additional packages directory

发展

可用工具

Nix 开发 shell 包括:

  • go - Go 编译器和工具链
  • gopls - Go 语言服务器
  • gotools - 附加的Go工具
  • goreleaser - 发布自动化工具

建筑

go build -o bin/app .

跑步

go run main.go

测试

go test ./...

环境变量

开发环境设置:

  • GOROOT - 指向由 Nix 管理的 Go 安装
  • GOPATH - 设置为 .go 在项目目录中
  • GOBIN - 设置为 .go/bin 对于已安装的二进制文件
  • PATH - 已更新以包含 $GOPATH/bin

定制化

修改Nix环境

编辑 flake.nix 在(系统/环境中)添加或移除软件包 buildInputs 部分/章节:

buildInputs = with pkgs; [ 
  go 
  gopls 
  gotools 
  goreleaser
  # Add more packages here
];

持续集成/持续交付(CI/CD)

这个模板已准备好用于GitHub Actions或其他CI/CD流水线。Nix flake确保在不同环境中构建的一致性。

许可证

在此指定您的许可证。