pkgs.mkShell
pkgs.mkShell یک stdenv.mkDerivation تخصصیشده است که هنگام استفاده با nix-shell (یا nix develop) برخی تکرارها را کاهش میدهد.
نحوه استفاده
در ادامه یک نمونه استفاده متداول آورده شده است:
{
pkgs ? import <nixpkgs> { },
}:
pkgs.mkShell {
packages = [ pkgs.gnumake ];
inputsFrom = [
pkgs.hello
pkgs.gnutar
];
shellHook = ''
export DEBUG=1
'';
} صفات
name(پیشفرض:nix-shell). نام derivation را تنظیم میکند.packages(پیشفرض:[]). بستههای قابل اجرا را به محیطnix-shellاضافه میکند.inputsFrom(پیشفرض:[]). وابستگیهای ساخت درایویشنهای فهرستشده را به محیطnix-shellاضافه میکند.shellHook(پیشفرض:""). دستورات Bash که توسطnix-shellاجرا میشوند.
... تمام صفات stdenv.mkDerivation.
گونهها
pkgs.mkShellNoCC گونهای است که به جای stdenv از stdenvNoCC به عنوان محیط پایه استفاده میکند. این ویژگی زمانی مفید است که به کامپایلر C در محیط شل نیازی نباشد.
ساخت شل
خروجی این derivation شامل یک فایل متنی خواهد بود که حاوی ارجاعی به تمام ورودیهای ساخت است. این موضوع در ادغام مداوم (CI) کاربرد دارد، جایی که میخواهیم اطمینان حاصل کنیم هر derivation و وابستگیهای آن بهدرستی ساخته میشوند؛ یا هنگام ایجاد یک ریشه GC تا وابستگیهای ساخت جمعآوری زباله (garbage collection) نشوند.