nixpkgs/doc/introduction.md
Frederik Rietdijk 92179785b6 DOC: Overview of Nixpkgs/channels/Hydra/tests (close #11263)
What I missed when I began using Nix and NixOS was a clear overview of
how packages, channels, Hydra, the master branch and updates to channels
relate to each other.

I've noticed I am not the only one, given the amount of times these
questions pop up.

For now I propose to include this in the Nixpkgs manual, since this
seems to be the best fit. However, I think it would be good to include
this in either a new manual, i.e., a user manual, or an 'official'
tutorial.
2016-02-21 11:32:22 +01:00

2.8 KiB
Raw Blame History

title author date
Introduction Frederik Rietdijk 2015-11-25

Introduction

The Nix Packages collection (Nixpkgs) is a set of over 30,000 packages for the Nix package manager, released under a permissive MIT/X11 license. Packages are available for several architectures, and can be used with the Nix package manager on most GNU/Linux distributions as well as NixOS.

This manual describes how to write packages for the Nix Packages collection (Nixpkgs). Thus its for packagers and developers who want to add packages to Nixpkgs. If you like to learn more about the Nix package manager and the Nix expression language, then you are kindly referred to the Nix manual.

Overview of Nixpkgs

Nix expressions describe how to build packages from source and are collected in the nixpkgs repository. Also included in the collection are Nix expressions for NixOS modules. With these expressions the Nix package manager can build binary packages.

Packages, including the Nix packages collection, are distributed through channels. The collection is distributed for users of Nix on non-NixOS distributions through the channel nixpkgs. Users of NixOS generally use one of the nixos-* channels, e.g. nixos-15.09, which includes all packages and modules for the stable NixOS 15.09. The channels of the stable NixOS releases are generally only given security updates. More up to date packages and modules are available via the nixos-unstable channel.

Both nixos-unstable and nixpkgs follow the master branch of the Nixpkgs repository, although both do lag the master branch by generally a couple of days. Updates to a channel are distributed as soon as all tests for that channel pass, e.g. this table shows the status of tests for the nixpkgs channel.

The tests are conducted by a cluster called Hydra, which also builds binary packages from the Nix expressions in Nixpkgs. As soon as a channel is updated, the binaries are made available via a binary cache. Until the channel updates, binaries that have already been built, are available via Hydra's binary cache.

The current Nix expressions of the channels are available in the nixpkgs-channels repository, which has branches corresponding to the available channels. There is also the Nixpkgs Monitor which keeps track of updates and security vulnerabilities.