Php Nix可组合派生选项

Php Nix可组合派生选项,php,configuration,mcrypt,nixos,Php,Configuration,Mcrypt,Nixos,我试图通过搜索nixpkgs的源代码树的pkgs子文件夹,找出可用选项,了解在我的configuration.nix中可用于特定程序的选项。然而,我遇到了一个麻烦的例子-这是一个特殊的派生,一个。我看不出我在PHP上有什么可用的选项——这对于启用诸如mcrypt、gd等特殊模块非常有帮助。对此的任何帮助都将不胜感激 尝试跟踪configuration.nix中的文件交互,并尝试了解所有这些标志。首先,PHP文件是某种类型的“启动引擎”,我似乎没有任何可能的配置选项。它只是用作某种类型的运行开关,

我试图通过搜索nixpkgs的源代码树的
pkgs
子文件夹,找出可用选项,了解在我的
configuration.nix
中可用于特定程序的选项。然而,我遇到了一个麻烦的例子-这是一个特殊的派生,一个。我看不出我在PHP上有什么可用的选项——这对于启用诸如mcrypt、gd等特殊模块非常有帮助。对此的任何帮助都将不胜感激

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


同时,该计划也非常清楚地显示了各种可能性。我再说一遍,我不喜欢这个引擎,但我认为所有需要进一步配置的东西都是通过NixOS admin命令完成的,如果你解释你到底需要做什么,我会更容易帮助你。

我花了一段时间才弄明白这一点,但是使用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被禁用)。您可以将该文件放在
~/.nixpkgs/config.nix
中,使其在系统范围内处于活动状态,也可以将其放在另一个nix文件中,这样可以自定义全局nixpkgs:

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

也在寻找它。它们在PHP的派生中被设置为标志。您可以覆盖configuration.nix或config.nix中的标志,但是如果您真的想在编译中更改内容,您必须实际创建自己的派生。我发现了这个用于php ComposableDelivation的.nix文件,如果它在使用nix build构建php模块时有用的话。这似乎是在github上,当您构建特定于php的软件包时添加自定义软件包,如果这是您的要求的话。如果您试图将php包添加到nixos,他们的“添加自定义包”部分会指示这是如何完成的,除非它与其他用户的操作不同。