this post was submitted on 29 Oct 2023
170 points (96.7% liked)

Linux

48035 readers
737 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

Great achievement by the NixOS Developers. Congratulations!

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 20 points 1 year ago (3 children)

I thought NixOS was already reproducible, like, isn't that the whole point? What's the big deal here, and why is it a "great achievement" - does the Linux world now completely change? Does this revolutionize how Linux ISOs are built?

[–] [email protected] 30 points 1 year ago

From my understanding, Nix is currently reproducible in that you can easily run an install with a script that gets you set up with the packages and configuration that you want, but the announcement is that they can verify the binaries that they ship are faithful to their source, and haven't been tampered with anywhere in the build pipeline

That is almost word for word would the body of the post says

[–] [email protected] 11 points 1 year ago* (last edited 1 year ago) (1 children)

I think the ISO specifically wasn't reproducible but now it is.

Nix packages are probably what you're thinking of. They are reproducible

[–] [email protected] 32 points 1 year ago (1 children)

In general nix packages are not reproducible in the sense that the output will be bit-for-bit identical. When a package is built on two different machines, nix will run the same commands, with the same environment variables, using identical inputs (e.g. source tarballs). However there are various ways build systems, compilers etc can still be non-deterministic, and this effort is about fixing that.

[–] [email protected] 5 points 1 year ago (1 children)

In general nix packages are not reproducible in the sense that the output will be bit-for-bit identical.

A large amount aren't but, OTOH, a large amount also are because Nix does almost everything it can to set up an environment without easily preventable sources of non-determinism such as general filesystem access, networking or other means of communication with some uncontrolled system.

[–] [email protected] 3 points 1 year ago (1 children)

Reading this thread I am even more confused about Linux in general.

[–] [email protected] 6 points 1 year ago

If you have questions, feel free to ask.

[–] [email protected] 8 points 1 year ago

There are different "levels" to reproducibility and there's also a distinction between Nix/Nixpkgs and NixOS.

You can talk about r13y in terms of functional r13y (same behaviour, though even here you can differentiate between "roughly same behaviour" and "exact same behaviour") and binary bit-for-bit r13y.

Nix/Nixpkgs are about producing individual binaries reproducibly. Functional r13y is the most important but binary r13y is a great boon for security testing as it makes verification simple and simplicity trumps when it comes to security.

NixOS is about building functionally reproducible OS configuration. Because it uses Nixpkgs, the binaries contained in the OS inherit Nixpkgs' binary r13y. As Nixpkgs becomes more binary-reprodicible, so does NixOS and here we can see the point where binary r13y of the packages in the minimal ISO has reached a point where it's thought to be fully reproducible.

The real meat of NixOS is functional r13y though; both kinds: You can reproduce a system with the exact same behaviour from a given Nixpkgs and NixOS config and you can use the same NixOS config with different revisions of Nixpkgs to produce systems which produce roughly the same behaviour.