bombon
0.3.0
自動構建Nix軟件包的Cyclonedx軟件材料(SBOM)!
Bombon產生了Cyclonedx v1.5 SBOM,旨在符合:
如果您發現它們不合規,請打開一個問題!
nix flake init -t github:nikstur/bombon或手動將其複製到您的存儲庫中的flake.nix :
# file: flake.nix
{
inputs = {
nixpkgs . url = "github:NixOS/nixpkgs/nixpkgs-unstable" ;
bombon . url = "github:nikstur/bombon" ;
bombon . inputs . nixpkgs . follows = "nixpkgs" ;
} ;
outputs = { self , nixpkgs , bombon } :
let
system = "x86_64-linux" ;
pkgs = import nixpkgs { inherit system ; } ;
in
{
packages . ${ system } . default = bombon . lib . ${ system } . buildBom pkgs . hello { } ;
} ;
}niv init
niv add nikstur/bombon # file: default.nix
let
sources = import ./nix/sources.nix { } ;
pkgs = import sources . nixpkgs { } ;
bombon = import sources . bombon { inherit pkgs ; } ;
in
bombon . buildBom pkgs . hello { } nixpkgs中的某些語言生態系統(最著名的是Rust and Go)供應商依賴性。這意味著,並非每個依賴性都是其自身的推導,因此龐德無法像“正常”的nix依賴關係那樣記錄其信息。但是,龐德可以自動讀取來自其他工具(例如cargo-cyclonedx )生成的SBOM,以從稱為bombonVendoredSbom的傳球派生中為供應商依賴項生成。
您可以使用passthruVendoredSbom.rust函數將bombonVendoredSbom Passhru派生添加到生鏽軟件包:
myPackageWithSbom = bombon . passthruVendoredSbom . rust myPackage { inherit pkgs ; } ;或使用薄片:
myPackageWithSbom = bombon . lib . ${ system } . passthruVendoredSbom . rust myPackage { inherit pkgs ; } ;現在,由此新推導構建的SBOM現在將包括供應商的依賴項。
buildBom接受選項作為屬性集。所有屬性都是可選的:
extraPaths :SBOM的商店路徑列表。當您構建丟棄其引用的圖像時,這很有用(例如,使用unsafeDiscardReferences ,但您仍然希望它們的內容出現在SBOM中extraPaths將作為主推導的組成部分出現。includeBuildtimeDependencies :布爾旗,將構建時間依賴性包括在輸出中。excludes :商店路徑的正則列表,以從最終的SBOM中排除。例子:
bombon . lib . ${ system } . buildBom pkgs . hello {
extraPaths = [ pkgs . git ] ;
includeBuildtimeDependencies = true ;
excludes = [ "service" ] ;
} passthruVendoredSbom.rust也接受includeBuildtimeDependencies作為可選屬性。
例子:
myPackageWithSbom = bombon . passthruVendoredSbom . rust myPackage { inherit pkgs ; includeBuildtimeDependencies = true ; } ; 在開發過程中,NIX REPL是測試更改的方便而快速的方法。啟動REPL,加載您的本地版本的Nixpkgs。
nix repl < nixpkgs >在補充器內部,加載龐德薄片並為您感興趣的包裝構建BOM。
:l .
:b lib.x86_64-linux.buildBom python3 { }
請記住,每當您更改任何源代碼時,都要重新加載龐邦薄片。
尼古拉斯·馬蒂亞(Nicolas Mattia)的這篇博客文章對使用NIX檢索依賴性的方式很大。