如何在 nix build shell 中设置 ulimit?

How do I set the ulimit in a nix build shell?

我正在尝试为 nix 安装 certbot 包,但在测试期间每次都失败,因为测试达到了系统上的打开文件限制。我已经修改了 certbot 安装脚本,足以打印出 patchPhase 开头的 ulimit 并发现允许打开文件的最大数量为 256。但是,在我所在的 shell执行 nix-shellnix-env,我的 ulimit(硬和软)设置为 100000。

我怎样才能将该限制传播到 certbot 构建过程?我想避免尝试弄清楚如何修改 certbot 使用的 python 构建脚本。

运行 Bash shell 在 OSX 10.13.

certbot.nixpatchPhase 节中手动提高 ulimit。事实证明,此更改会传播到 certbot 构建脚本中的其余阶段。

  buildInputs = [ dialog ] ++ (with python2Packages; [ nose mock gnureadline ]);

  patchPhase = ''
    ulimit -n 8196
    substituteInPlace certbot/notify.py --replace "/usr/sbin/sendmail" "/run/wrappers/bin/sendmail"
    substituteInPlace certbot/util.py --replace "sw_vers" "/usr/bin/sw_vers"
  '';

  postInstall = ''

我会提交补丁到 nixpkgs