Discussion
Loading...

Post

Log in
  • About
  • Code of conduct
  • Privacy
  • Users
  • Instances
  • About Bonfire
Arne Babenhauserheide
Arne Babenhauserheide
@ArneBab@rollenspiel.social  ·  activity timestamp 3 weeks ago

If you want to comply with dependency reporting requirements (⇒ SBOM: Software Bill of Materials) for a program of any kind, this is now very easy with #Guix:

https://www.draketo.de/software/bsi-grundschutz#CON.8.A8-sbom-guix

TLDR: guix graph --backend=cyclonedx-json <package-name> gives you an SBOM.

To do that for your own packages, even if they are not in the distro, write a guix.scm (instructions and links in the article).

It works across languages and to arbitrary depth.

#software #owasp #security #gnu #FreeSoftware #programming

Create SBOM from Guix

Since Nov. 12th 2025, GNU Guix can be used to create a complete SBOM in cyclonedx json format for all packaged software:

guix graph guile --backend=cyclonedx-json | head ; echo ...

{
  "bomFormat": "CycloneDX",
  "specVersion": "1.6",
  "metadata": {
    "timestamp": "2025-12-29T19:24:18Z",
    "tools": {
      "components": [
        {
          "type": "operating-system",
          "name": "guix"
...

To only create an SBOM of a specific depth, use --max-depth=N:

guix graph guile --backend=cyclonedx-json | grep '"name":' | wc -l
guix graph guile --backend=cyclonedx-json --max-depth=1 | grep '"name":' | wc -l

11
10

In short:

guix graph guile -b cyclonedx-json -M 1

To create an SBOM for a non-packaged tool, create a local guix.scm file, then you can graph from that. With the example of dryads-wake:

cd /path/to/dryads-wake && \
guix graph -L . -e '(load "guix.scm")' -b cyclonedx-json | grep '"name":' | wc -l && \
# => 172
guix graph -L . -e '(load "guix.scm")' -b cyclonedx-json -M1 | grep '"name":' | wc -l
# => 13
Create SBOM from Guix Since Nov. 12th 2025, GNU Guix can be used to create a complete SBOM in cyclonedx json format for all packaged software: guix graph guile --backend=cyclonedx-json | head ; echo ... { "bomFormat": "CycloneDX", "specVersion": "1.6", "metadata": { "timestamp": "2025-12-29T19:24:18Z", "tools": { "components": [ { "type": "operating-system", "name": "guix" ... To only create an SBOM of a specific depth, use --max-depth=N: guix graph guile --backend=cyclonedx-json | grep '"name":' | wc -l guix graph guile --backend=cyclonedx-json --max-depth=1 | grep '"name":' | wc -l 11 10 In short: guix graph guile -b cyclonedx-json -M 1 To create an SBOM for a non-packaged tool, create a local guix.scm file, then you can graph from that. With the example of dryads-wake: cd /path/to/dryads-wake && \ guix graph -L . -e '(load "guix.scm")' -b cyclonedx-json | grep '"name":' | wc -l && \ # => 172 guix graph -L . -e '(load "guix.scm")' -b cyclonedx-json -M1 | grep '"name":' | wc -l # => 13
Create SBOM from Guix Since Nov. 12th 2025, GNU Guix can be used to create a complete SBOM in cyclonedx json format for all packaged software: guix graph guile --backend=cyclonedx-json | head ; echo ... { "bomFormat": "CycloneDX", "specVersion": "1.6", "metadata": { "timestamp": "2025-12-29T19:24:18Z", "tools": { "components": [ { "type": "operating-system", "name": "guix" ... To only create an SBOM of a specific depth, use --max-depth=N: guix graph guile --backend=cyclonedx-json | grep '"name":' | wc -l guix graph guile --backend=cyclonedx-json --max-depth=1 | grep '"name":' | wc -l 11 10 In short: guix graph guile -b cyclonedx-json -M 1 To create an SBOM for a non-packaged tool, create a local guix.scm file, then you can graph from that. With the example of dryads-wake: cd /path/to/dryads-wake && \ guix graph -L . -e '(load "guix.scm")' -b cyclonedx-json | grep '"name":' | wc -l && \ # => 172 guix graph -L . -e '(load "guix.scm")' -b cyclonedx-json -M1 | grep '"name":' | wc -l # => 13
  • Copy link
  • Flag this post
  • Block

bonfire.cafe

A space for Bonfire maintainers and contributors to communicate

bonfire.cafe: About · Code of conduct · Privacy · Users · Instances
Bonfire social · 1.0.1 no JS en
Automatic federation enabled
Log in
  • Explore
  • About
  • Members
  • Code of Conduct