在 nix repl 中从存储路径转到派生
Go from store path to derivation in nix repl
我试图调试的其中一个包隐藏在几个派生链接中。我在其中一个路径中找到了一个引用,但那是一个我无法拉入 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
问题。
我试图调试的其中一个包隐藏在几个派生链接中。我在其中一个路径中找到了一个引用,但那是一个我无法拉入 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
问题。