فا نیکسی

Qt

نوشتن عبارت‌های Nix برای کتابخانه‌ها و برنامه‌های Qt تا حد زیادی مشابه سایر نرم‌افزارهای C++ است. این بخش فرض می‌کند که شما

{ stdenv, qt6 }:

stdenv.mkDerivation {
  pname = "myapp";
  version = "1.0";

  buildInputs = [ qt6.qtbase ];
  nativeBuildInputs = [ qt6.wrapQtAppsHook ];
}

در مورد Qt 5 نیز صدق می‌کند که در آن کتابخانه‌ها و ابزارها زیر libsForQt5 قرار دارند.

هر بسته Qt باید wrapQtAppsHook را در nativeBuildInputs

{ stdenv, qt6 }:

stdenv.mkDerivation {
  # ...
  nativeBuildInputs = [ qt6.wrapQtAppsHook ];
  qtWrapperArgs = [ "--prefix PATH : /path/to/bin" ];
}

این ورودی‌ها به عنوان آرگومان به wrapProgram پاس داده می‌شوند.

اگر به کنترل بیشتری بر فرآیند ایجاد wrapper نیاز دارید، dontWrap

{
  stdenv,
  lib,
  wrapQtAppsHook,
}:

stdenv.mkDerivation {
  # ...
  nativeBuildInputs = [ wrapQtAppsHook ];
  dontWrapQtApps = true;
  preFixup = ''
    wrapQtApp "$out/bin/myapp" --prefix PATH : /path/to/bin
  '';
}

wrap نمی‌شوند، بنابراین همان‌طور که قبلاً اشاره شد باید آن‌ها را به‌صورت دستی wrap کنید. یک نمونه از مواردی که همیشه لازم است این