فا نیکسی

WeeChat

می‌توان WeeChat را به‌گونه‌ای پیکربندی کرد که تنها شامل افزونه‌های انتخابی شما باشد؛ این کار اندازه closure آن را در مقایسه با پیکربندی پیش‌فرض که شامل تمام افزونه‌های موجود است، کاهش می‌دهد. برای استفاده از این قابلیت، عبارتی را نصب کنید که پیکربندی آن را بازنشانی کند، مانند:

weechat.override {
  configure = (
    { availablePlugins, ... }:
    {
      plugins = with availablePlugins; [
        python
        perl
      ];
    }
  );
}

خودکار از availablePlugins استفاده خواهد شد.

پلاگین‌های در حال حاضر در دسترس عبارتند از python، perl، ruby، guile

weechat.override {
  configure =
    { availablePlugins, ... }:
    {
      plugins = with availablePlugins; [
        (python.withPackages (
          ps: with ps; [
            pycrypto
            python-dbus
          ]
        ))
      ];
    };
}

برای اینکه تمامی افزونه‌های پیش‌فرض نیز به‌صورت نصب‌شده باقی بمانند، می‌توان از روش زیر استفاده کرد:

weechat.override {
  configure =
    { availablePlugins, ... }:
    {
      plugins = builtins.attrValues (
        availablePlugins
        // {
          python = availablePlugins.python.withPackages (
            ps: with ps; [
              pycrypto
              python-dbus
            ]
          );
        }
      );
    };
}

WeeChat امکان تنظیم مقادیر پیش‌فرض را هنگام راه‌اندازی با استفاده از --run-command فراهم می‌کند. از متد configure می‌توان برای ارسال دستورات به برنامه استفاده کرد:

weechat.override {
  configure =
    { availablePlugins, ... }:
    {
      init = ''
        /set foo bar
        /server add libera irc.libera.chat
      '';
    };
}

هنگام اجرای weechat --run-command "your-commands"، می‌توان مقادیر بیشتری را به فهرست دستورها اضافه کرد.

علاوه بر این، امکان مشخص کردن اسکریپت‌هایی وجود دارد که هنگام راه‌اندازی weechat بارگیری شوند. این اسکریپت‌ها پیش از دستورهای init بارگیری خواهند شد:

weechat.override {
  configure =
    { availablePlugins, ... }:
    {
      scripts = with pkgs.weechatScripts; [
        weechat-xmpp
        weechat-matrix-bridge
        wee-slack
      ];
      init = ''
        /set plugins.var.python.jabber.key "val"
      '';
    };
}

در nixpkgs یک زیربسته وجود دارد که شامل درایویشن‌ها برای اسکریپت‌های WeeChat است. چنین درایویشن‌هایی انتظار صفت passthru.scripts را دارند که شامل فهرستی از تمامی اسکریپت‌های داخل مسیر انبار است. علاوه بر این، همه اسکریپت‌ها باید در $out/share قرار داشته باشند. یک درایویشن نمونه به این صورت است:

{ stdenv, fetchurl }:

stdenv.mkDerivation {
  name = "exemplary-weechat-script";
  src = fetchurl {
    url = "https://scripts.tld/your-scripts.tar.gz";
    hash = "...";
  };
  passthru.scripts = [
    "foo.py"
    "bar.lua"
  ];
  installPhase = ''
    runHook preInstall

    mkdir $out/share
    cp foo.py $out/share
    cp bar.lua $out/share

    runHook postInstall
  '';
}