如何在Nix中使用experimental命令?实操报错求助
解决Nix
show-derivation 命令的实验特性与Flake错误问题 1. 永久启用nix-command实验特性
反复手动添加--extra-experimental-features参数效率低下,直接配置Nix默认启用该特性:
- 创建或编辑
~/.config/nix/nix.conf文件,写入以下内容:
(若仅需experimental-features = nix-command flakesnix-command,可只保留该项;添加flakes是为兼容更多Nix命令场景) - 配置生效后,后续执行
nix系列命令无需再手动指定实验特性参数。
2. 修复"找不到flake"的错误
该错误源于启用nix-command后,nix show-derivation默认会递归查找当前目录的Flake配置(如flake.nix),但查看单个derivation文件无需Flake上下文,可用以下两种方法解决:
方法一:直接传递drv路径作为参数
替代管道方式,直接指定目标drv文件:
# 手动指定drv路径示例 nix show-derivation /nix/store/xxxxxx-xxxxxx.drv # 自动选取第一个drv文件 nix show-derivation $(ls /nix/store/*.drv | head -n 1)
方法二:禁用Flake查找逻辑
在命令中添加--no-write-lock-file参数,跳过Flake配置查找:
ls /nix/store/*.drv | head -n 1 | xargs nix show-derivation --no-write-lock-file
验证
执行上述任一方案后,即可正常查看目标derivation的JSON结构内容。
内容的提问来源于stack exchange,提问作者Pierre-olivier Gendraud
相关产品推荐
相关产品推荐

