我要调试的软件包之一隐藏在一些派生链接中。我在其中一个路径中找到了一个引用,但这是我无法拉入nix repl
的字符串。是否有办法从nix存储路径(尚不存在,因为那是失败的派生路径)转到nix派生对象?
nix-repl> de.dev.packages.hie-bios.pkgs
"[{\"paths\":[\"/nix/store/f04qyvqaj6s6y5f5a7svpfppsq5wx2p6-haskell-ide-engine-ghc864-7541d1ec71\"],\"priority\":-864}]"
似乎不太可能。 Nix语言确实允许您访问字符串上下文,但是字符串上下文并不旨在重现派生词,更不用说派生词的原始表达式了。
nix-repl> :p builtins.getContext "example string ${(import <nixpkgs> {}).hello.outPath}"
{ "/nix/store/m2capxzda4ams4fi3awmriz7hfkdxyp9-hello-2.10.drv" = { outputs = [ "out" ]; }; }
从技术上讲,您可以读取派生内容并解析ATerm等内部内容,但实际上不支持。它不处理字符串上下文,可能不会让您构建任何东西并杀死您的狗。即使那样,您也不会得到原始的表达式。
nix-repl> :p builtins.readFile (builtins.head (builtins.attrNames (builtins.getContext "example string ${(import <nixpkgs> {}).hello.outPath}")))
"Derive([(\"out\",\"/nix/[...]
最好直接解决您的hie-bios
问题。