如何打包NixOS应用程序的插件

时间:2016-07-09 13:46:44

标签: plugins package nixos

如何打包NixOS应用程序的插件?

让应用程序使用src tarball和多个插件从另一个源安装。我期待着一个示例如何或者可能是指向文档的指针。

1 个答案:

答案 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的分解中再迈出一步。