NixOS Reproducible Builds: minimal ISO successfully independently rebuilt

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • nixpkgs

    Nix Packages collection & NixOS

  • GCC respects SOURCE_DATE_EPOCH, and Nixpkgs has specific support for setting that environment variable: https://github.com/NixOS/nixpkgs/blob/92fdbd284c262f3e478033... (although I haven't proved that this is actually how it works for cpython's build).

    Irrelevant spelunking details follow:

    That string is output by cpython to contain the contents of the __DATE__ C macro (https://github.com/python/cpython/blob/fa35b9e89b2e207fc8bae... which calls to https://github.com/python/cpython/blob/fa35b9e89b2e207fc8bae... which uses the __DATE__ macro at https://github.com/python/cpython/blob/fa35b9e89b2e207fc8bae... ).

    Cpython is defined in nixpkgs at https://github.com/NixOS/nixpkgs/blob/92fdbd284c262f3e478033... which I imagine (but haven't proved) uses GCC.

  • workstation

    Docker based portable Workstation

  • I am on a similar journey

    I built https://github.com/mikadosoftware/workstation

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • bootstrap-seeds

    The roots of trust for all architectures

  • This[0] is basically the hand-documentation of those bytes then. Handwritten ELF header and assembly code.

    [0] https://github.com/oriansj/bootstrap-seeds/blob/master/POSIX...

  • stage0-posix-x86

  • nix-starter-configs

    Simple and documented config templates to help you get started with NixOS + home-manager + flakes. All the boilerplate you need!

  • Another good option: https://github.com/Misterio77/nix-starter-configs

    I started with this one, the minimal version, then moved on to something more like the standard version, and now I'm moving on to something based on his much more complicated and flexible build in a different repo. I had been flailing, then this repo made it click.

  • builder-hex0

    Builder-Hex0 is a minimal build system which includes a bootloader, kernel, shell, and a hex0 compiler

  • Isn't that what builder-hex0 does?

    https://github.com/ironmeld/builder-hex0

  • CPython

    The Python programming language

  • GCC respects SOURCE_DATE_EPOCH, and Nixpkgs has specific support for setting that environment variable: https://github.com/NixOS/nixpkgs/blob/92fdbd284c262f3e478033... (although I haven't proved that this is actually how it works for cpython's build).

    Irrelevant spelunking details follow:

    That string is output by cpython to contain the contents of the __DATE__ C macro (https://github.com/python/cpython/blob/fa35b9e89b2e207fc8bae... which calls to https://github.com/python/cpython/blob/fa35b9e89b2e207fc8bae... which uses the __DATE__ macro at https://github.com/python/cpython/blob/fa35b9e89b2e207fc8bae... ).

    Cpython is defined in nixpkgs at https://github.com/NixOS/nixpkgs/blob/92fdbd284c262f3e478033... which I imagine (but haven't proved) uses GCC.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • [1] https://gitlab.com/prateem/turning-polyglot-solutions-into-t...

  • [1] https://gitlab.com/prateem/turning-polyglot-solutions-into-t...

  • ostree

    Operating system and container binary deployment and upgrades

  • Ansible makes mutable changes to the OS, task by task.

    Nix is immutable. A new change is made entirely new, and only after the build is successful, all packages are "symlinked" to the current system.

    Fedora Silverblue is based on ostree [1]. It works similarly like git, but on your root tree. But it requires you to reboot the whole system for the changes to take effect. Since Nix is just symlinked packages, you don't need to reboot the system.

    More detailed explanation here [2].

    [1]: https://github.com/ostreedev/ostree

    [2]: https://dataswamp.org/~solene/2023-07-12-intro-to-immutable-...

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts