Go 项目模板
一个包含Nix开发环境(devShell)和direnv集成的最小Go项目模板,支持自动化初始化。
特点
- 🚀 Go 1.25.1 准备就绪
- ❄️ 使用Nix flakes打造可复现的开发环境
- 🔧 使用direnv实现自动环境加载
- 📦 预配置了必要的Go工具(gopls、gotools、goreleaser)
- 🤖 自动化初始化脚本,用于快速项目设置
先决条件
- Nix(名词)可翻译为“无”或“不”。在具体语境中,它可能表示“没有”某物或“不”做某事的意思 已启用鳞片(或片状效果)
- direnv(可读作“迪伦夫”或根据语境简化为“direnv”,但通常直接保留原英文形式)
- (
gh) 用于自动化仓库创建
启用 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确保在不同环境中构建的一致性。
许可证
在此指定您的许可证。
