【问题标题】:How can I reference command line arguments with nix build?如何使用 nix build 引用命令行参数?
【发布时间】:2020-08-29 08:24:37
【问题描述】:

在我的 nix 表达式中,我有这样一行:

myHaskellPackages.callCabal2nix "HaskellNixCabalStarter" (./.) {} 

我想以某种方式在运行nix build 时传递命令行参数,在这种情况下,该行应该是:

(myHaskellPackages.callCabal2nixWithOptions "HaskellNixCabalStarter" (./.) "--enable-profiling" {})

如何引用命令行参数?

【问题讨论】:

    标签: nix


    【解决方案1】:

    您可以使用--arg name expr command line option 传递布尔值或其他表达式。

    这样你就有了

    { profiling ? false }:
    
    # let myHaskellPackages = ... etc etc, whatever you already have
    let profilingArg = if profiling then "--enable-profiling" else "";
    
    in myHaskellPackages.callCabal2nixWithOptions "HaskellNixCabalStarter" (./.) profilingArg {}
    

    然后

    $ nix-build --arg profiling true
    

    或者,您可以公开整个 cabal 选项字符串,例如 --argstr cabalOptions '--enable-profiling -O2'。请注意argstr,因此您不必将字符串作为 Nix 字符串文字转义。

    【讨论】:

      猜你喜欢
      • 2011-04-04
      • 1970-01-01
      • 1970-01-01
      • 2016-03-17
      • 2023-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-11
      相关资源
      最近更新 更多