Nix 可组合派生选项

2022-08-30 14:39:25

我正在尝试通过搜索nixpkgs源代码树的子文件夹,挑选出模块的定义来了解哪些选项可用于我的特定程序。但是,我遇到了一个麻烦的PHP案例 - 它是一种特殊的派生,一种可组合的派生。我无法看到PHP可以使用哪些选项 - 这对于启用mcrypt,gd等特殊模块将非常有帮助。任何帮助将不胜感激!configuration.nixpkgs


答案 1

我花了一段时间才弄清楚这一点,但是使用 composeDerivation 设置 php 包构建功能的正确方法是:

  # config.nix
  {
   packageOverrides = pkgs: rec {
      php = pkgs.php.merge {
        cfg = {
          imapSupport = false;
          intlSupport = false;
          fpmSupport = false;
        };
      };
   };
  }

这将覆盖 php/default.nix 中指定的 cfg 中的默认值(imapSupport、intlSupport 和 fpmSupport 被关闭)。您可以将该文件放入系统范围内处于活动状态,也可以将其用于另一个 nix 文件中,例如自定义全局 nixpkgs:~/.nixpkgs/config.nix

pkgs = import <nixpkgs> { config = (import ./config.nix);  };

答案 2

尝试从configal.nix跟踪文件交互,并尝试首先理解所有这些标志,PHP文件是某种类型的“启动引擎”,我似乎没有任何可能的配置选项,它只是用作某种类型的运行开关并读取行234-236(PHP)它说它需要配置

此外,http://nixos.org/nixos/manual/sec-configuration-syntax.html#sec-nix-syntax-summary 也非常清楚地展示了可能性。我再说一遍,我不喜欢那个引擎,但我认为所有进一步的配置都是用NixOS管理命令完成的,如果你解释你到底需要做什么,我会更容易帮助你。


推荐