Ramin_HAL9001, (edited )

In short: Nix tracks all installable software and dependencies using a Merkel tree data structure to ensure fully reproducible builds of software. This Merkel tree also provides properties similar to that of a C.O.W. filesystem where you can snapshot and rollback system software build configurations in O(1) time, it just rewrites a fixed number of symbolic links to the root of the desired Merkel tree. In my opinion, it is the most technologically advanced package manager currently in existence.

Every input that goes into building a piece of software on Nix OS (or in the Nix package manager in general) is hashed and placed into a database on the system. These hash IDs become dependencies for everything they are used to build. By tracing the chain of hash IDs you can guarantee that every single bit that goes into the build of the system software is accounted for. If two separate computers with the same ISA are running the same tree of packages verifiable by their hash IDs, you are guaranteed that both computers are running the exact same software. All dynamic libraries, shared libraries, executable files, and even the config files in the package database refer only to other files in the database.

When you use Nix OS, not just the package manager, the C compiler, boot loader, and kernel are themselves build inputs. You can even roll back to a snapshot of a working system from the bootloader menu if you accidentally break your system (as long as the package database is not corrupted).

Finally, the system itself is both built and configured using a declarative programming language. So you install software by declaring that it should exist, and the package manager computes precisely which dependencies must be installed to realize what it is you have declared in the system configuration files. Making a change to what is installed requires simply altering the lines of code in the system configuration file. You can also use these configuration files to easily construct Docker images or Flatpacks.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • linux@lemmy.ml
  • localhost
  • All magazines
  • Loading…
    Loading the web debug toolbar…
    Attempt #