overlay - 尼克斯): Set "permittedInsecurePackages" only for one package build (in an overlay?)

标签 overlay nix nixos

我只想为我在 nix 的叠加层中定义的构建应用配置点。

也就是我要设置

permittedInsecurePackages = [
     "webkitgtk-2.4.11"
];

在叠加层中。我想在那里做,因为覆盖是为了设置我的爪子邮件配置;如果我不安装 claws-mail,我不想允许 webkitgtk(如果我将它放入 ~/.config/nixpkgs/config.nix 中,这可能会发生)。

有没有办法在叠加层中设置它?我尝试将其设置为 self.config。或 super.config.,但均无效。

最佳答案

您不能在本地覆盖配置,但您可以阻止该配置妨碍您尝试实现的目标。

此处最简单的事情是清除传递给 claws-mail 构建的 webkitgtk 副本中的 meta.knownVulnerabilities

展示这是如何做到的——

let
  ignoringVulns = x: x // { meta = (x.meta // { knownVulnerabilities = []; }); };
  webkitGtkIgnoringVulns = pkgs.webkitgtk24x-gtk2.overrideAttrs ignoringVulns;
in
  pkgs.clawsMail.override { webkitgtk24x-gtk2 = webkitGtkIgnoringVulns; }

以上是在 nix repl 中测试的。在覆盖层中,您可以将 pkgs. 替换为 super. 以引用手头包的原始/未修改版本;将 webkitGtkIgnoringVulns 保留在 let 中仍然很重要(或者以其他方式将其引入覆盖评估的 attrset 中)如果你不这样做不希望它在任何其他范围内定义。

也就是说,在叠加层中执行此操作可能如下所示:

self: super: let
  ignoringVulns = x: x // { meta = (x.meta // { knownVulnerabilities = []; }); };
in {
  clawsMail = super.clawsMail.override {
    webkitgtk24x-gtk2 = self.webkitgtk24x-gtk2.overrideAttrs ignoringVulns;
  };
}

关于overlay - 尼克斯): Set "permittedInsecurePackages" only for one package build (in an overlay?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53566342/

相关文章:

html - 悬停时变暗的叠加层比图像大

c++ - 如何在 Eclipse 中使用 nix

mariadb - NixOS 创建数据库(mysql、mariadb)

haskell - NixOS 和 ghcWithPackages - wiki 中的信息可能不正确

nix - 相同的代码和相同的编译器可以在不同的机器上生成不同的二进制文件吗?

CSS Opacity 不生成颜色叠加层?

java - 如何绘制覆盖其他应用程序的应用程序? - 设定优先次序?

javascript - 谷歌地图平移后叠加不正确

nix - 如何撤消 `nix-channel --update`

nix - nix 是否提供包选项/参数?我如何列出它们?