overlay - Nix(OS):仅为一个包构建设置“permittedInsecurePackages”(在覆盖中?)
问题描述
我只想为我在 nix 的叠加层中定义的构建应用配置点。
也就是说,我想设置
permittedInsecurePackages = [
"webkitgtk-2.4.11"
];
在叠加层中。我想在那里做,因为覆盖是设置我的爪子邮件配置;如果我没有安装 claws-mail(如果我将它放入 中可能会发生这种情况),我不想允许 webkitgtk ~/.config/nixpkgs/config.nix
。
有没有办法在叠加层中设置它?我尝试将其设置为 self.config。或 super.config.,但都不起作用。
解决方案
您不能在本地覆盖配置,但可以阻止该配置妨碍您尝试实现的目标。
在这里要做的简单的事情是清除您传递给构建meta.knownVulnerabilities
的副本。webkitgtk
claws-mail
为了展示如何做到这一点——
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
在 a 中let
(或者不将其引入覆盖评估的 attrset 中)仍然很重要。
也就是说,在叠加层中执行此操作可能如下所示:
self: super: let
ignoringVulns = x: x // { meta = (x.meta // { knownVulnerabilities = []; }); };
in {
clawsMail = super.clawsMail.override {
webkitgtk24x-gtk2 = self.webkitgtk24x-gtk2.overrideAttrs ignoringVulns;
};
}
推荐阅读
- python - turtle.textinput() 在我的一个代码中不起作用,但在另一个代码中起作用
- python - 循环和布尔值的 Python 列表
- c++ - 我想在cpp中实现python列表,但卡在重载下标运算符[]和逗号,
- sql - Hive:尽管使用了不同的,但仍获得重复的记录
- symfony - 如何将 EntityManager 用作服务?
- javascript - 使用 react-native 时如何更新 jwt refreshToken?
- c++ - 无法在 MSVC 19.28 上编译变体访问者访问
- c++ - VSCode:为静态分析设置 C/C++ 预处理器宏
- javascript - 如何在 jQuery 或 Javascript 中增加单/双引号内的变量?
- java - GUI 中的 JTextField 未按预期顺序打印列