如何为 NixOS 的应用程序打包插件?
有一个带有 src tarball 和多个插件的应用程序要从另一个来源安装。我期待一个示例如何或可能指向文档的指针。
据我所知,没有关于此主题的文档,但您可以举例说明如何管理 pidgin 或输入法。
一般的想法是有:
symlinkJoin
或类似功能将主包和插件连接到单个包中。例如,fcitx
输入法相关的定义在all-packages.nix
:
fcitx = callPackage ../tools/inputmethods/fcitx { };
fcitx-engines = recurseIntoAttrs {
anthy = callPackage ../tools/inputmethods/fcitx-engines/fcitx-anthy { };
chewing = callPackage ../tools/inputmethods/fcitx-engines/fcitx-chewing { };
hangul = callPackage ../tools/inputmethods/fcitx-engines/fcitx-hangul { };
m17n = callPackage ../tools/inputmethods/fcitx-engines/fcitx-m17n { };
mozc = callPackage ../tools/inputmethods/fcitx-engines/fcitx-mozc {
inherit (pythonPackages) gyp;
protobuf = protobuf.override { stdenv = clangStdenv; };
};
table-other = callPackage ../tools/inputmethods/fcitx-engines/fcitx-table-other { };
cloudpinyin = callPackage ../tools/inputmethods/fcitx-engines/fcitx-cloudpinyin { };
};
fcitx-configtool = callPackage ../tools/inputmethods/fcitx/fcitx-configtool.nix { };
fcitx-with-plugins = callPackage ../tools/inputmethods/fcitx/wrapper.nix {
plugins = [ ];
};
因此,可以通过将以下内容添加到environment.systemPackages
列表(或使用专用的 nixos 模块)来安装带有 anthy 和 m17n 插件的 fcitx:
pkgs.fcitx-with-plugins.override { plugins = [ fcitx-engines.anthy fcitx-engines.m17n ]; };
pidgin 包通过合并 main 包和 wrapper在因式分解中又迈进了一步。