【问题标题】:What is the "active Nix expression"?什么是“活跃的 Nix 表达”?
【发布时间】:2019-11-22 14:21:58
【问题描述】:

我注意到各种 nixos 命令的描述指的是一种叫做“主动 Nix 表达式”的东西。例如,nix-env 的手册页包括:

   --file / -f path
       Specifies the Nix expression (designated below as the active Nix expression) used by the --install, --upgrade, and --query
       --available operations to obtain derivations. The default is ~/.nix-defexpr.

什么是“活跃的 Nix 表达”?它在哪里定义?是简单地写在/etc/nixos/configuration.nix 中的内容还是其他情况下由nix-shell 定义的内容?

【问题讨论】:

  • nixnixos(如标记)肯定是“程序员常用的软件工具”,不是吗? stackoverflow.com/help/on-topic
  • @KenWhite,Nix 一种编程语言(授予 Nix 派生的编写语言)。我不太确定这个具体问题,因为它关注的是命令行工具而不是编程语言——因为这个原因,它比大多数人都更不稳定——但是总的来说,我'd call Nix questions topic here.
  • @mherzl,作为“程序员常用的软件工具”还不够好; 需要“软件开发独有”;在您链接的页面中查看连接项目符号点 3 和 4 的 (不是“或”!)。如果系统管理员或最终用户使用相同的工具——如果它对软件开发来说不是独特——那么它就不太适合 Stack Overflow 的权限。
  • @CharlesDuffy:我一般对 Nix 主题没有意见。我的查询是关于这个与编程相关的特定问题。不过,我已经删除了评论。
  • @KenWhite, ...正如你在上面看到的,我同意你的观点,这个问题并不完全在主题的四个角落内,所以它绝对可以判断/解释在哪里画线。

标签: nix nixos


【解决方案1】:

这个文件是 Nix 表达式的值,在该文件中使用-A 指定的任何属性都会被评估。 (没有-A,该内容预计直接是派生的)。

假设您有一个 mydir/default.nix 文件,它评估为带有键 foobarbaz 的 attrset,每个都映射到作为值的派生。

在这种情况下,运行nix-env -f mydir -iA foo 将加载mydir/default.nix,在该加载代码的上下文中评估foo,运行任何相关的构建步骤,并将该软件添加到您的活动环境中。

【讨论】:

    猜你喜欢
    • 2019-11-22
    • 2020-02-03
    • 2019-12-30
    • 1970-01-01
    • 2021-07-17
    • 2022-07-22
    • 1970-01-01
    • 2014-05-19
    • 1970-01-01
    相关资源
    最近更新 更多