如何从nix-shell -p创建的Nix环境导出default.nix文件?
如何获取可复用的default.nix以重建Nix环境
你的理解是正确的,nix-shell -p git确实等价于运行你提供的那种default.nix配置的nix-shell命令——两者都是基于Nixpkgs构建一个包含Git的临时环境,核心逻辑一致(用buildEnv打包指定依赖)。以下是几种获取可复用default.nix的方法:
方法1:提取Nix临时生成的配置
当你执行nix-shell -p git进入环境后,Nix会在临时目录生成对应的配置文件,你可以这样获取:
- 在shell环境内执行
echo $NIX_BUILD_TOP,得到临时构建目录的路径 - 进入该目录,找到
default.nix文件,将其复制到你需要的目录即可
方法2:手动编写简化版配置
Nix提供了mkShell函数专门用于构建shell环境,比你写的stdenv.mkDerivation更简洁,功能完全一致,适合直接复用:
{ pkgs ? import <nixpkgs> {} }: pkgs.mkShell { buildInputs = [ pkgs.git ]; }
方法3:一键导出配置
直接运行以下命令,会自动将nix-shell -p git对应的配置导出到当前目录的default.nix:
nix-shell -p git --run 'cp $NIX_BUILD_TOP/default.nix .'
内容的提问来源于stack exchange,提问作者Pierre-olivier Gendraud
相关产品推荐
相关产品推荐

