SuperAPI AI 工具集

nix-devshell-init

部署与运维

查看项目

更新于 10-16 08:08

技能介绍

用途:为项目搭建可复现的 Nix devShell,自动生成 flake.nix 与 .envrc,根据项目所用语言挑选合适的开发工具包。

主要能力:扫描工作目录中的标识文件识别语言并选择对应包。go.mod→Go(go、gopls、gotools);package.json→Node.js(nodejs、npm);pyproject.toml 或 requirements.txt→Python(python3、uv);Cargo.toml→Rust(rustc、cargo、rust-analyzer);仅有 Makefile→通用(gnumake)。多个匹配会生成多语言合并 devShell。无标识文件时询问用户选择语言。尽量从项目元数据推断版本,如 go.mod 的 go 指令、package.json 的 engines.node、pyproject.toml 的 requires-python;Rust 若存在 rust-toolchain.toml 会注明 channel,但使用 nixpkgs 的 Rust,pin nightly 需 overlay,建议 oxalica/rust-overlay。nixpkgs 无对应版本时回退到最新稳定版并加注释。生成 flake.nix 使用 forAllSystems 支持 x86_64/aarch64 的 Linux 与 Darwin;创建 .envrc 内容为 use flake(已存在则仅在缺失时追加);向 .gitignore 添加 .direnv/ 与 result,但不添加 flake.lock(需提交以保证可复现);生成后用 nix flake check --no-build 验证,必要时可用 nix search nixpkgs <name> 排查,若 direnv 已安装可运行 direnv allow。

限制与处理:已有 flake.nix 时会先读取并说明其内容,询问替换、扩展或保留,未经确认不覆盖;仅有 flake.lock 无 flake.nix 时提示孤立锁文件后继续生成。Nix 未安装或未启用 flakes 时停止并建议相关安装技能。flake check 失败必须修复或移除,不能留下损坏的 flake。若既无标识文件也无用户输入,则创建包含 gnumake、curl、jq 的最小通用 shell 并告知用户。更细的按语言包列表、shellHook、LSP、格式化与 linter 见 references/language-templates.md,flake 结构说明见 references/flake-anatomy.md。