Aller directement au contenu

Nix

Le gestionnaire de paquets Nix est un outil avancé pour les personnes utilisatrices expérimentées pouvant être utilisé pour acquérir pratiquement n'importe quel paquet de logiciel libre que vous pouvez imaginer à partir de son grand dépôt maintenu par la communauté.

Il peut être installé sur KDE Linux pour un système mono-utilisateur. Nix enregistre les logiciels et leurs dépendances dans le dossier /nix/store. Il maintient votre emplacement de recherche toujours à jour automatiquement à mesure que des outils sont ajoutés ou supprimés.

Installation

Le gestionnaire de paquets Nix peut être installé pour l'utilisateur actuel comme suit :

sh <(curl --proto '=https' --tlsv1.2 -L https://nixos.org/nix/install) --no-daemon

Déconnectez-vous et reconnectez-vous, puis testez :

nix-shell -p mc emacs-nox  # you are now inside a shell with mc and emacs

Veuillez noter que lorsque vous quittez ce shell, mc et emacs ne seront plus dans l'emplacement de recherche de votre shell. Veuillez consulter la section suivante pour rendre ces outils disponibles de manière persistante.

Veuillez consulter la page « https://nixos.org/download/#nix-install-linux » pour plus de détails.

Installations avec des paquets persistants

Utilisez nix-env -iA ou nix-env --install --attr pour installer des paquets dans /nix/store et les rendre disponibles dans l'emplacement de recherche de votre utilisateur :

$ nix-env -f '' -iA mc
⋮
building '/nix/store/1q2sh2f178jx9fl37gd9ks85ysfvpwd9-user-environment.drv'...

Cela crée un nouvel « environnement » contenant toutes les modifications d'état nécessaires pour rendre le paquet mc disponible et celles-ci peuvent être avancées ou reculées. C'est le véritable attrait du système de gestion de paquets sous Nix, mais cela dépasse le cadre de ce guide.

Vérifiez que la commande mc est maintenant disponible pour votre utilisateur :

$ which mc
/home/username/.nix-profile/bin/mc

Supprimez les paquets avec la commande nix-env --uninstall ou nix-env -e :

$ nix-env -e mc
uninstalling 'mc-4.8.33'
building '/nix/store/rqbghiyds6f7a49qiwi9gmq7bnkgn9qi-user-environment.drv'...

Veuillez consulter la section sur [[#garbage-collection|la collecte des espaces de mémoire]] ci-dessous pour savoir comment récupérer l'espace utilisé par les paquets que vous n'utilisez plus.

Veuillez consulter la page « https://nix.dev/manual/nix/latest/command-ref/nix-env.html » pour plus d'informations.

Utilisation d'un profil de Nix profile

L’interface nix <command> est encore techniquement considérée comme expérimentale (Plus d'informations sur le statut « Expérimental » du profil nix se trouve dans ce RFC). Mais, en pratique, elle est largement utilisée et plus ergonomique. L'auto-complètement avec la touche « Tab » et les options --help pour les différentes sous-commandes pour nix fonctionneront également de façon native lors d’une nouvelle installation. Comme nix-env, nix profile installeront des paquets sur le dossier /nix/store et les rendront disponibles dans votre emplacement de recherche, de façon persistante entre les sessions de connexion.

Voici un exemple trivial utilisant nix profile pour installer l’outil de recherche de code ag :

$ mkdir -p ~/.config/nix
$ cat >> ~/.config/nix/nix.conf <<EOF
experimental-features = nix-command flakes
EOF

$ nix search nixpkgs silver searcher
⋮
* legacyPackages.x86_64-linux.silver-searcher (2.2.0)
  Outil de recherche de code similaire à ACK, mais plus rapide

$ nix profile add nixpkgs#silver-searcher
$ which ag
/home/username/.nix-profile/bin/ag

Pour lister les paquets installés ou les supprimer :

$ nix profile list
⋮
Nom :               silver-searcher
Attribut Flake :    legacyPackages.x86_64-linux.silver-searcher
URL Flake original : flake:nixpkgs
URL Flake verrouillée :   github:NixOS/nixpkgs/f08e6b11a5ed43637a8ac444dd44118bc7d273b9?narHash=sha256-7vUo0qWCl/rip%2Bfzr6lcMlz9I0tN/8m7d5Bla/rS2kk%3D
Emplacements d'enregistrement :        /nix/store/l120si3zsshmf3jr7dkn5dvcj0n586xb-silver-searcher-2.2.0

$ nix profile remove silver-searcher

Veuillez consulter la section sur la collecte des espaces mémoire ci-dessous pour savoir comment récupérer l'espace utilisé par les paquetages que vous n'utilisez plus.

Veuillez consulter la page « https://nix.dev/manual/nix/latest/command-ref/new-cli/nix3-profile.html » pour plus de détails.

Ré-installation de Nix

Si vous avez activé la fonction « expérimentale » nix profile, vous devrez la désactiver et supprimer les fichiers d'état associés au profil de votre utilisateur avant toute réinstallation, sinon vous obtiendrez un message d'erreur comme celui-ci :

Erreur : le profil « /home/username/.local/state/nix/profiles/profile » est incompatible avec « nix-env ». Veuillez utiliser « nix profile » à la place. 
Attention : cela fera oublier tous les paquets précédemment installés !

Commentez la ligne experimental-features dans votre fichier de configuration pour Nix, puis supprimez le dossier d'état du profil :

$ sed -i'' 's/^experimental-features = nix-command flakes$/#&/' ~/.config/nix/nix.conf
$ rm -rf ~/.local/state/nix/profiles/profile

Vous pouvez maintenant répéter les étapes d'installation.

Collecte des espaces libérés pour récupérer de l'espace disque

Veuillez noter que nix-env -e et nix profile remove suppriment tous deux les commandes fournies par un paquet de l'environnement actuel de votre utilisateur. Cependant, le logiciel reste en réalité installé dans /nix/store jusqu'à ce qu'il soit collecté par le ramasse-miettes.

Vous pouvez forcer cette collecte des espaces libérés, pour récupérer de l'espace disque, avec l'une des commandes suivantes :

nix-store --gc           # routine garbage collection
nix-collect-garbage -d   # supprimer les paquets « non atteignables » à partir de la boutique 

Suppression de Nix

Pour supprimer le gestionnaire de paquets Nix, veuillez lancer les commandes suivantes :

sudo systemctl disable --now nix-daemon.service nix-daemon.socket

sudo rm -rf /nix /etc/nix /etc/profile.d/nix.sh /etc/tmpfiles.d/nix-daemon.conf /nix /root/.nix-channels /root/.nix-defexpr /root/.nix-profile /root/.cache/nix ~/.nix-channels ~/.nix-defexpr ~/.nix-profile ~/.cache/nix

for i in $(seq 1 32); do sudo userdel nixbld$i; done

sudo groupdel nixbld

Voir aussi


Article rédigé par Ernstki sous licence CC-BY-4.0.