0

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

有一个带有 src tarball 和多个插件的应用程序要从另一个来源安装。我期待一个示例如何或可能指向文档的指针。

4

1 回答 1

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 包通过合并 main 包和 wrapper在因式分解中又迈进了一步。

于 2016-07-11T04:58:05.267 回答