Ir al contenido

Nix

El gestor de paquetes Nix es una herramienta avanzada para usuarios avanzados que se puede usar para adquirir virtualmente cualquier paquete de software libre que puedas imaginar de su gran repositorio mantenido por la comunidad.

Se puede instalar en KDE Linux para un sistema de un único usuario. Nix guarda el software y las dependencias en /nix/store y mantiene actualizada automáticamente la ruta de búsqueda cuando se añaden o eliminan herramientas.

Instalación

El gestor de paquetes Nix se puede instalar para el usuario actual de esta manera:

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

Cierra sesión, vuelve a iniciarla y luego prueba:

nix-shell -p mc emacs-nox  # ahora estarás en una shell con mc y emacs

Ten en cuenta que cuando salgas de esta shell, mc y emacs dejarán de estar en la ruta de búsqueda de tu shell. Consulta la siguiente sección para hacer que estas herramientas estén disponibles de forma persistente.

Consulta https://nixos.org/download/#nix-install-linux para más detalles.

Instalación de paquetes persistente

Usa nix-env -iA o nix-env --install --attr para instalar paquetes en /nix/store y hacer que estén disponibles en la ruta de búsqueda de tu usuario.

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

Esto crea un nuevo «entorno» que contiene todos los cambios de estado necesarios para que el paquete mc esté disponible. Estos cambios se pueden deshacer o rehacer. Este es el atractivo «real» del sistema de gestión de paquetes Nix, aunque queda fuera del alcance de esta guía.

Verifica que la orden mc está disponible para tu usuario:

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

Elimina paquetes con nix-env --uninstall o nix-env -e:

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

Consulta la sección inferior sobre [[#garbage-collection|recolección de basura]] para más información sobre cómo recuperar el espacio ocupado por los paquetes que has dejado de usar.

Consulta https://nix.dev/manual/nix/latest/command-ref/nix-env.html para más detalles.

Uso de nix profile

La interfaz nix <orden> se sigue considerando técnicamente experimental (puedes encontrar más contexto sobre el estado «experimental» de nix profile en esta RFC), aunque en la práctica se usa ampliamente y es más ergonómico. La compleción con Tab y las opciones --help para las distintas órdenes nix también funcionarán directamente en una instalación reciente. Del mismo modo que nix-env, nix profile instalará paquetes en /nix/store y hará que estén disponibles en tu ruta de búsqueda de forma persistente entre inicios de sesión.

Aquí tienes un ejemplo básico del uso de nix profile para instalar la herramienta de búsqueda de código 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)
  Code-searching tool similar to ack, but faster

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

Para listar los paquetes instalados o eliminarlos:

$ nix profile list
⋮
Name:               silver-searcher
Flake attribute:    legacyPackages.x86_64-linux.silver-searcher
Original flake URL: flake:nixpkgs
Locked flake URL:   github:NixOS/nixpkgs/f08e6b11a5ed43637a8ac444dd44118bc7d273b9?narHash=sha256-7vUo0qWCl/rip%2Bfzr6lcMlz9I0tN/8m7d5Bla/rS2kk%3D
Store paths:        /nix/store/l120si3zsshmf3jr7dkn5dvcj0n586xb-silver-searcher-2.2.0

$ nix profile remove silver-searcher

Consulta la sección inferior sobre recolección de basura para más información sobre cómo recuperar el espacio ocupado por los paquetes que has dejado de usar.

Consulta https://nix.dev/manual/nix/latest/command-ref/new-cli/nix3-profile.html para más detalles.

Reinstalación de Nix

Si has activado la función nix profile «experimental», tendrás que desactivarla y borrar los archivos de estado asociados a tu perfil de usuario antes de reinstalar. En caso contrario obtendrás un mensaje de error como este:

error: el perfil '/home/username/.local/state/nix/profiles/profile' es incompatible con 'nix-env'; use 'nix profile' en su lugar
Advertencia: esto olvidará cualquier paquete instalado previamente.

Descomenta la línea experimental-features del archivo de configuración de Nix y luego borra el directorio de estado del perfil:

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

Ahora puedes repetir los pasos de la instalación.

Recolección de basura para recuperar espacio en disco

Ten en cuenta que tanto nix-env -e como nix profile remove eliminan las órdenes proporcionadas por un paquete de tu entorno actual de usuario, aunque el software permanece instalado en realidad en /nix/store hasta que se recolecte su basura.

Puedes forzar esta recolección de basura para recuperar el espacio en disco con una de las siguientes órdenes:

nix-store --gc           # recolección de basura rutinaria
nix-collect-garbage -d   # eliminar paquetes «inalcanzables» de la tienda

Eliminación de Nix

Para eliminar el gestor de paquetes Nix, ejecuta las siguientes órdenes:

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

Consulta también


Artículo escrito por Ernstki bajo las condiciones de la licencia CC-BY-4.0.