فا نیکسی

CycloneDX

OWASP CycloneDX یک استاندارد صورت مواد تشکیل‌دهنده نرم‌افزار (SBOM) است. استانداردهای توصیف‌شده در این‌جا برای گنجاندن اطلاعات مختص Nix درون SBOMها به گونه‌ای است که با ابزارهای SBOM خارجی تعامل‌پذیر باشد.

طبقه‌بندی ویژگی‌های فضای نام nix

جداول زیر فضاهای نام را برای ویژگی‌ها که می‌توانند به کامپوننت‌ها درون SBOMها ضمیمه شوند، توصیف می‌کنند. ویژگی‌های کامپوننت، فهرست‌هایی از جفت‌های نام-مقدار هستند که مقادیر آن‌ها باید رشته باشند. ویژگی‌های با نام یکسان ممکن است بیش از یک بار ظاهر شوند. نام‌ها و مقادیر به حروف کوچک و بزرگ حساس هستند.

ویژگیتوضیحات
nix:store_pathیک مسیر انبار Nix برای کامپوننت داده‌شده. این ویژگی باید با ویژگی‌های اضافی که تولید مسیر انبار را توصیف می‌کنند، مانند ویژگی‌های فضاهای نام nix:narinfo: و nix:fod بسترسازی و مکمل شود.
فضای نامتوضیحات
nix:narinfoفضای نام برای ویژگی‌هایی که مختص نحوه ذخیره‌سازی یک کامپوننت به عنوان یک آرشیو Nix (NAR) در یک کش باینری هستند.
nix:fodفضای نام برای ویژگی‌هایی که یک derivation / اشتقاق ساخت با خروجی ثابت را توصیف می‌کنند.

nix:narinfo

ویژگی‌های Narinfo آرشیوهای کامپوننتی را توصیف می‌کنند که ممکن است از کش‌های باینری در دسترس باشند. ویژگی‌های nix:narinfo باید همراه با یک ویژگی nix:store_path درون همان فهرست ویژگی ارائه شوند.

ویژگیتوضیحات
nix:narinfo:store_pathمسیر انبار برای کامپوننت انبار داده‌شده.
nix:narinfo:urlبخش مسیر URL.
nix:narinfo:nar_hashهش بخش شیء سیستم‌فایل کامپوننت هنگام سریال‌سازی به عنوان یک آرشیو Nix.
nix:narinfo:nar_sizeاندازه کامپوننت هنگام سریال‌سازی به عنوان یک آرشیو Nix.
nix:narinfo:compressionقالب فشرده‌سازی که آرشیو کامپوننت در آن قرار دارد.
nix:narinfo:file_hashیک خلاصه (digest) برای خودِ آرشیو فشرده‌شده کامپوننت، برعکس داده‌های درون آن.
nix:narinfo:file_sizeاندازه خودِ آرشیو فشرده‌شده کامپوننت.
nix:narinfo:deriverمسیر به derivation / اشتقاق ساخت که این کامپوننت از آن تولید شده است.
nix:narinfo:systemپلتفرم سخت‌افزاری و نرم‌افزاری که این کامپوننت روی آن تولید شده است.
nix:narinfo:sigامضاها که ادعا می‌کنند این کامپوننت همان چیزی است که ادعا می‌کند.
nix:narinfo:caآدرس محتوایی (Content address) شیء سیستم‌فایل این شیء انبار، که برای محاسبه مسیر انبار آن استفاده می‌شود.
nix:narinfo:referencesآرایه‌ای جداشده با فاصله از مسیرهای انبار که این کامپوننت به آن‌ها ارجاع می‌دهد.

nix:fod

ویژگی‌های FOD یک fixed-output derivation را توصیف می‌کنند. ویژگی nix:fod:method الزامی است و باید همراه با یک ویژگی nix:store_path در همان فهرست ویژگی‌ها قرار گیرد. تمام ویژگی‌های دیگر در این فضای نام، مختص همان متد هستند. برای بازتولید ساخت یک کامپوننت، مقدار nix:fod:method به یک تابع مناسب در Nixpkgs نگاشته می‌شود که آرگومان‌های آن با ویژگی‌های داده‌شده اشتراک دارند. هنگام تولید ویژگی‌های nix:fod، متد انتخاب‌شده باید یک تابع پایدار با حداقل تعداد آرگومان‌ها باشد. به عنوان مثال، fetchFromGitHub معمولاً در Nixpkgs استفاده می‌شود اما باید به فراخوانی تابعی که توسط آن پیاده‌سازی شده است، یعنی fetchzip کاهش یابد.

ویژگیتوضیحات
nix:fod:methodتابع Nixpkgs که این FOD را تولید می‌کند. الزامی. نمونه‌ها: "fetchzip"، "fetchgit"
nix:fod:nameنام derivation، در صورت استفاده از متد "fetchzip" موجود است
nix:fod:refGit ref، در صورت استفاده از متد "fetchgit" موجود است
nix:fod:revGit rev، در صورت استفاده از متد "fetchgit" موجود است
nix:fod:sha256هش FOD
nix:fod:urlآدرس URL برای دریافت

ویژگی‌های nix:fod ممکن است استخراج شده و با فرض وجود یک تابع ساختگی filterPropertiesToAttrs با استفاده از کدی مشابه زیر، به یک derivation ارزیابی شوند:

{
  pkgs,
  filterPropertiesToAttrs,
  properties,
}:
let
  fodProps = filterPropertiesToAttrs "nix:fod:" properties;

  methods = {
    fetchzip =
      {
        name,
        url,
        sha256,
        ...
      }:
      pkgs.fetchzip { inherit name url sha256; };
  };

in
methods.${fodProps.method} fodProps