如何打包NixOS应用程序的插件?
让应用程序使用src tarball和多个插件从另一个源安装。我期待着一个示例如何或者可能是指向文档的指针。
答案 0 :(得分:1)
据我所知,没有关于此主题的文档,但您可以举例说明如何管理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包在merging the main package and the wrapper的分解中再迈出一步。