从存储路径转到nix repl中的派生

问题描述 投票:0回答:1

我要调试的软件包之一隐藏在一些派生链接中。我在其中一个路径中找到了一个引用,但这是我无法拉入nix repl的字符串。是否有办法从nix存储路径(尚不存在,因为那是失败的派生路径)转到nix派生对象?

nix-repl> de.dev.packages.hie-bios.pkgs  
"[{\"paths\":[\"/nix/store/f04qyvqaj6s6y5f5a7svpfppsq5wx2p6-haskell-ide-engine-ghc864-7541d1ec71\"],\"priority\":-864}]"
nix
1个回答
0
投票

似乎不太可能。 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问题。

© www.soinside.com 2019 - 2024. All rights reserved.