【问题标题】:Nix Composable Derivation OptionsNix 可组合派生选项
【发布时间】:2023-03-19 07:55:02
【问题描述】:

我试图通过搜索 nixpkgs 源代码树的 pkgs 子文件夹,选择 module's definitions 以了解可用选项,了解在我的 configuration.nix 中对特定程序可用的选项。但是,我遇到了PHP 的麻烦案例——这是一个特殊的派生,composable derivation。我无法看到 PHP 有哪些可用选项 - 这对于启用特殊模块(如 mcrypt、gd 等)非常有帮助。对此的任何帮助将不胜感激!

【问题讨论】:

  • 也在寻找这个。
  • 它们在 PHP 的派生中被设置为标志。您可以覆盖您的 configuration.nix 或 config.nix 中的标志,但如果您真的想在编译中进行更改,您必须实际创建自己的派生。
  • 我找到了这个 .nix 文件 github.com/NixOS/nixpkgs/blob/master/pkgs/development/… 用于 php composableDerivation,如果这对使用 nix-build 构建 php 模块有帮助的话。如果这是您要的,当您构建 php 特定包时添加自定义包时,这似乎在 github 上。如果您尝试将 php 包添加到 nixos,他们的添加自定义包部分会指示它是如何完成的,除非它的完成方式与其他用户不同。

标签: php configuration mcrypt nixos


【解决方案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 被关闭)。您可以将该文件放在 ~/.nixpkgs/config.nix 中以在系统范围内处于活动状态,或者在另一个 nix 文件中使用它来自定义全局 nixpkgs:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-03
      • 1970-01-01
      • 1970-01-01
      • 2017-11-28
      • 2023-04-02
      • 2020-08-27
      • 2019-11-17
      相关资源
      最近更新 更多