一个带有 Nix 开发环境和 direnv 集成的极简 Go 项目模板,具有自动初始化功能。
gh) 用于自动化仓库创建在 ~/.config/nix/nix.conf 或 /etc/nix/nix.conf 中添加:
experimental-features = nix-command flakes
点击 GitHub 上的“使用此模板”按钮或克隆此仓库:
git clone {yourRepoUrl}
cd {yourProjectName}
bash scripts/init.sh {yourModuleName}
go list
.
├── .envrc # direnv 配置
├── .gitignore # Git 忽略规则
├── flake.nix # 用于开发环境的 Nix flake
├── flake.lock # 锁定依赖项
├── go.mod # Go 模块文件
├── go.sum # Go 依赖项校验和
├── main.go # 主应用程序文件
└── pkgs/ # 额外的包目录
Nix 开发环境包括:
go - Go 编译器和工具链gopls - Go 语言服务器gotools - 额外的 Go 工具goreleaser - 发布自动化工具go build -o bin/app .
go run main.go
go test ./...
开发环境设置了:
GOROOT - 指向由 Nix 管理的 Go 安装GOPATH - 设置为项目目录中的 .goGOBIN - 设置为 .go/bin 以安装二进制文件PATH - 更新为包含 $GOPATH/bin编辑 flake.nix 在 buildInputs 部分添加或移除包:
buildInputs = with pkgs; [
go
gopls
gotools
goreleaser
# 在此处添加更多包
];
此模板已准备好用于 GitHub Actions 或其他 CI/CD 管道。Nix flake 确保在不同环境中构建的一致性。
在此处指定您的许可证。 </中文翻译>