ابزارهای کمکی شل توسعه
دستور 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; }