Soweit ich weiß gibt es keine Dokumentation zu diesem Thema, aber Sie können ein Beispiel dafür nehmen, wie Pidgin oder Eingabemethoden verwaltet werden.
Die allgemeine Idee ist, dass es:
- Ein Hauptpaket.
- Ein oder mehrere Plugins-Pakete.
- Ein Wrapper-Paket, mit
symlinkJoin
oder eine ähnliche Funktion, um das Hauptpaket und die Plugins in einem einzigen Paket zu verbinden.
So zum Beispiel die fcitx
Eingabemethode bezogene Definitionen in 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 = [ ];
};
So ist es möglich, mit dem anthy und m17n Plugin zu installieren fcitx durch die folgenden environment.systemPackages
Liste hinzugefügt (oder unter Verwendung der dedizierte NixOS Modul):
pkgs.fcitx-with-plugins.override { plugins = [ fcitx-engines.anthy fcitx-engines.m17n ]; };
die pidgin Paket geht ein weiterer Schritt in Faktorisierung von merging the main package and the wrapper.