2016-07-09 15 views
0

Wie man ein Plugin für eine Anwendung für NixOS verpackt?Wie man Plugins für eine Anwendung für NixOS verpackt

Eine Anwendung mit einem Src-Tarball und mehrere Plugins von einer anderen Quelle installiert werden. Ich freue mich auf ein Beispiel wie oder vielleicht einen Zeiger auf die Dokumentation.

Antwort

1

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.