Jump to content

Nix (package manager)/fr: Difference between revisions

From Official NixOS Wiki
Nanucq (talk | contribs)
Created page with "{{Navbox Nix}} {{Disambiguation|message=Cet article traite du gestionnaire de paquets Nix. À ne pas confondre avec l'écosystème Nix, le langage Nix ou la commande Nix.}} Nix est un gestionnaire de paquets et un système de compilation qui analyse des instructions de compilation reproductibles spécifiées dans le langage d'expression Nix, un langage fonctionnel pur avec évaluation paresseuse. Les expressions Nix sont des fonctions pures<ref>Les valeur..."
 
Nanucq (talk | contribs)
Created page with "== Utilisation =="
Line 4: Line 4:
Nix est un gestionnaire de paquets et un système de compilation qui analyse des instructions de compilation reproductibles spécifiées dans le [[langage d'expression Nix]], un langage fonctionnel pur avec évaluation paresseuse. Les expressions Nix sont des fonctions pures<ref>Les valeurs ne peuvent pas changer pendant le calcul. Les fonctions produisent toujours le même résultat si leur entrée ne change pas. </ref>qui prennent des dépendances en arguments et produisent une « [[Derivations|dérivation]] » spécifiant un environnement de compilation reproductible pour le paquet. Nix stocke les résultats de la compilation à des adresses uniques spécifiées par un hachage de l'arborescence complète des dépendances, créant ainsi un magasin de paquets immuable (également appelé [[#Nix store|nix store]]) qui permet des mises à jour atomiques, des retours en arrière et l'installation simultanée de différentes versions d'un paquet, éliminant ainsi pratiquement [https://en.wikipedia.org/wiki/Dependency_hell l'enfer des dépendances].  
Nix est un gestionnaire de paquets et un système de compilation qui analyse des instructions de compilation reproductibles spécifiées dans le [[langage d'expression Nix]], un langage fonctionnel pur avec évaluation paresseuse. Les expressions Nix sont des fonctions pures<ref>Les valeurs ne peuvent pas changer pendant le calcul. Les fonctions produisent toujours le même résultat si leur entrée ne change pas. </ref>qui prennent des dépendances en arguments et produisent une « [[Derivations|dérivation]] » spécifiant un environnement de compilation reproductible pour le paquet. Nix stocke les résultats de la compilation à des adresses uniques spécifiées par un hachage de l'arborescence complète des dépendances, créant ainsi un magasin de paquets immuable (également appelé [[#Nix store|nix store]]) qui permet des mises à jour atomiques, des retours en arrière et l'installation simultanée de différentes versions d'un paquet, éliminant ainsi pratiquement [https://en.wikipedia.org/wiki/Dependency_hell l'enfer des dépendances].  


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Usage"></span>
== Usage ==
== Utilisation ==
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">

Revision as of 11:45, 13 May 2026

Introduction to Nix

Tools and applications

⤧︎
Disambiguation: Cet article traite du gestionnaire de paquets Nix. À ne pas confondre avec l'écosystème Nix, le langage Nix ou la commande Nix.

Nix est un gestionnaire de paquets et un système de compilation qui analyse des instructions de compilation reproductibles spécifiées dans le langage d'expression Nix, un langage fonctionnel pur avec évaluation paresseuse. Les expressions Nix sont des fonctions pures[1]qui prennent des dépendances en arguments et produisent une « dérivation » spécifiant un environnement de compilation reproductible pour le paquet. Nix stocke les résultats de la compilation à des adresses uniques spécifiées par un hachage de l'arborescence complète des dépendances, créant ainsi un magasin de paquets immuable (également appelé nix store) qui permet des mises à jour atomiques, des retours en arrière et l'installation simultanée de différentes versions d'un paquet, éliminant ainsi pratiquement l'enfer des dépendances.

Utilisation

Installation

On NixOS, Nix is automatically installed.

On other Linux distributions or on macOS, you can install Nix following the installation section of the Nix manual.

Nix commands

The Nix commands are documented in the Nix reference manual: main commands, utilities and experimental commands. Prior to version 2.0 (released in February 2018) there have been different commands.

Configuration

On NixOS, Nix can be configured using the nix option.

Standalone Nix is configured through nix.conf (usually found in /etc/nix/). Details on the available options are found in the Nix reference manual.

You can also configure Nix using Home Manager, which manages declarative environments for a single user. For system-wide configuration, you can use System Manager on Linux and nix-darwin on macOS.

Internals

Nix store

↱︎
This section is a candidate for splitting off into a separate article. The nix store is conceptually separate enough that it warrants a separate article. For more information, consult the related discussion page.

Packages built by Nix are placed in the read-only Nix store, normally found in /nix/store. Each package is given a unique address specified by a cryptographic hash followed by the package name and version, for example /nix/store/nawl092prjblbhvv16kxxbk6j9gkgcqm-git-2.14.1. These prefixes hash all the inputs to the build process, including the source files, the full dependency tree, compiler flags, etc. This allows Nix to simultaneously install different versions of the same package, and even different builds of the same version, for example variants built with different compilers. When adding, removing or updating a package, nothing is removed from the store; instead, symlinks to these packages are added, removed or changed in profiles.

Cleaning the Nix store

For information relating to cleaning the Nix store, refer to NixOS Manual: Chapter - Cleaning the Nix Store.

Nix store corruption

For information relating to fixing a corrupted Nix store, refer to NixOS Manual: Chapter - Nix Store Corruption.

Valid Nix store names

Profiles

In order to construct a coherent user or system environment, Nix symlinks entries of the Nix store into profiles. These are the front-end by which Nix allows rollbacks: since the store is immutable and previous versions of profiles are kept, reverting to an earlier state is simply a matter of change the symlink to a previous profile. To be more precise, Nix symlinks binaries into entries of the Nix store representing the user environments. These user environments are then symlinked into labeled profiles stored in /nix/var/nix/profiles, which are in turn symlinked to the user's ~/.nix-profile.

Sandboxing

When sandbox builds are enabled, Nix will setup an isolated environment for each build process. It is used to remove further hidden dependencies set by the build environment to improve reproducibility. This includes access to the network during the build outside of fetch* functions and files outside the Nix store. Depending on the operating system access to other resources are blocked as well (ex. inter process communication is isolated on Linux).

Sandboxing is enabled by default on Linux, and disabled by default on macOS. In pull requests for Nixpkgs people are asked to test builds with sandboxing enabled (see Tested using sandboxing in the pull request template) because in official Hydra builds sandboxing is also used.

To configure Nix for sandboxing, set sandbox = true in /etc/nix/nix.conf; to configure NixOS for sandboxing set nix.useSandbox = true; in configuration.nix. The nix.useSandbox option is true by default since NixOS 17.09.

Alternative Interpreters

There is an ongoing effort to reimplement Nix, from the ground up, in Rust.

There is also a community-led fork of Nix 2.18 named Lix, focused on correctness, usability, and growth. While it has also ported some components of Nix to Rust, it is not a ground-up rewrite like Tvix.

Earlier attempts can be found on riir-nix

Notes

  1. Les valeurs ne peuvent pas changer pendant le calcul. Les fonctions produisent toujours le même résultat si leur entrée ne change pas.