在 nix 包中设置标志

Set flag in nix package

我正在尝试 link 我的项目使用静态 openssl。我注意到 openssl 包中有标志 statichttps://github.com/NixOS/nixpkgs/blob/d6a12e8d9e0a4ac35ed401881e0d3160c764ac36/pkgs/development/libraries/openssl/default.nix#L5 但我不知道在使用它时如何设置它。 (pkgs.openssl ...?).

目前我使用 pkgs.pkgsStatic.openssl“解决”了它,但它对 gcc 的形式和其他不相关的依赖项的静态重新编译有非常烦人的副作用(什么地狱?)。

如何在启用静态标志的情况下使用 openssl 包?

您可以使用 override 更改传递给包的参数。如果您只想构建静态 openssl:

,这就足够了
pkgs.openssl.override {
    static = true;
}

要使用此自定义 openssl 构建其他包,必须使用覆盖将其添加回 nixpkgs

self: super: {
    openssl = super.openssl.override {
        static = true;
    };
}

此叠加层可以放置在 ~/.config/nixpkgs/overlays/openssl-static.nix 中或添加到 configuration.nixnixpkgs.overlays