فا نیکسی

ابزارهای کمکی شل توسعه

دستور nix-shell مفهوم محیط‌های شل زودگذر را برای مقاصد توسعه یا آزمایش رواج داده است.

با این حال، nix-shell تنها راه برای ایجاد چنین محیط‌هایی نیست و حتی خود nix-shell نیز می‌تواند به طور غیرمستقیم از این کتابخانه بهره‌مند شود.

این کتابخانه مجموعه‌ای از توابع را ارائه می‌دهد که به ایجاد چنین محیط‌هایی کمک می‌کنند.

devShellTools.valueToString

مقادیر Nix را به همان روشی که تابع توکار derivation انجام می‌دهد، به رشته تبدیل می‌کند.

مثال

نمونه‌های استفاده از valueToString

devShellTools.valueToString (builtins.toFile "foo" "bar")
# => "/nix/store/...-foo"
devShellTools.valueToString false
# => ""

devShellTools.unstructuredDerivationInputEnv

تبدیل یک مجموعه از صفات derivation (همان‌طور که به [derivation] ارسال می‌شود) به مجموعه‌ای از متغیرهای محیطی که می‌توانند در یک اسکریپت شل استفاده شوند. این تابع از __structuredAttrs پشتیبانی نمی‌کند، اما از passAsFile پشتیبانی می‌کند.

مثال

نمونه استفاده از unstructuredDerivationInputEnv

devShellTools.unstructuredDerivationInputEnv {
  drvAttrs = {
    name = "foo";
    buildInputs = [
      hello
      figlet
    ];
    builder = bash;
    args = [
      "-c"
      "${./builder.sh}"
    ];
  };
}
# => {
#  name = "foo";
#  buildInputs = "/nix/store/...-hello /nix/store/...-figlet";
#  builder = "/nix/store/...-bash";
#}

توجه داشته باشید که args گنجانده نشده است، زیرا Nix آن را به محیط فرآیند سازنده (Builder) اضافه نمی‌کند.

devShellTools.derivationOutputEnv

بخش‌های مرتبط یک derivation / اشتقاق ساخت را دریافت کرده و مجموعه‌ای از متغیرهای محیطی که در آن derivation وجود خواهند داشت را برمی‌گرداند.

مثال

نمونه استفاده از derivationOutputEnv

let
  pkg = hello;
in
devShellTools.derivationOutputEnv {
  outputList = pkg.outputs;
  outputMap = pkg;
}