Насколько я знаю, документации по этой теме нет, но вы можете взять пример о том, как управлять 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 = [ ];
};
Так можно установить fcitx с Anthy и m17n плагин, добавив следующее environment.systemPackages
списка (или с помощью модуль посвященный nixos):
pkgs.fcitx-with-plugins.override { plugins = [ fcitx-engines.anthy fcitx-engines.m17n ]; };
пакет пиджин идет еще один шаг в факторизации по merging the main package and the wrapper.