主要观点:作者在 NixOS Matrix 频道帮助他人解决推导连续重建问题时,发现一个关于目录字符串插值导致的问题。
关键信息:
- 在 Nix 代码中,
scriptBinDir
使用writeShellApplication
,但这不是导致问题的原因。 - 问题的根本在于目录的字符串插值
"${dirPath}/${name}"
,会导致相同文件有不同的存储路径。 - 即使文件内容不变,仅目录变化也会导致推导重建。
- 许多推导使用
src
属性设置为整个目录,这种方式容易导致问题。
重要细节: - 给出了具体的 Nix 代码示例,如
let scriptDir =... in...
和{pkgs? import <nixpkgs> {}}: let a =...; b =... in...
,展示了问题的表现。 - 展示了添加新文件后存储路径的变化,如
/nix/store/f8m4h9wbpr05g4dja91xshh9l48a6ac0
和/nix/store/0m5j5lphpi2jsd6xi2fjwn1zqfmxy2hj
。 - 提到可以通过Improve this page @ 3ff1206改进页面,且内容遵循CC-BY-SA。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。