Otros consejos útiles
Mostrar mensajes de error detallados
Siempre puedes intentar agregar --show-trace --print-build-logs --verbose al comando nixos-rebuild para obtener el mensaje de error detallado si encuentras algún error durante el despliegue. Por ejemplo:
cd /etc/nixos
sudo nixos-rebuild switch --flake .#myhost --show-trace --print-build-logs --verbose
# Una versión más concisa
sudo nixos-rebuild switch --flake .#myhost --show-trace -L -vGestionar la configuración con Git
La configuración de NixOS, al ser un conjunto de archivos de texto, es adecuada para el control de versiones con Git. Esto permite revertir fácilmente a una versión anterior en caso de problemas.
NOTA: Al usar Git, Nix ignora todos los archivos que no tienen seguimiento en Git. Si encuentras un error en Nix que indica que no se encuentra un archivo en particular, puede deberse a que todavía no le has hecho
git add.
De forma predeterminada, NixOS coloca la configuración en /etc/nixos, lo que requiere permisos de root para modificarla y resulta inconveniente para el uso diario. Por suerte, Flakes puede ayudar a resolver este problema al permitirte colocar tu flake donde prefieras.
Por ejemplo, puedes colocar tu flake en ~/nixos-config y crear un enlace simbólico en /etc/nixos de la siguiente manera:
sudo mv /etc/nixos /etc/nixos.bak # Respaldar la configuración original
sudo ln -s ~/nixos-config /etc/nixos
# Desplegar el flake.nix ubicado en la ubicación predeterminada (/etc/nixos)
sudo nixos-rebuild switchDe esta manera, puedes usar Git para gestionar la configuración en ~/nixos-config. La configuración se puede modificar con permisos normales de usuario y no requiere propiedad de root.
Otro enfoque es eliminar /etc/nixos directamente y especificar la ruta del archivo de configuración cada vez que la despliegues:
sudo mv /etc/nixos /etc/nixos.bak
cd ~/nixos-config
# `--flake .#my-nixos` despliega el flake.nix ubicado en
# el directorio actual, y el nombre de nixosConfiguration es `my-nixos`
sudo nixos-rebuild switch --flake .#my-nixosElige el método que más te convenga. Después, revertir el sistema se vuelve simple. Solo cambia al commit anterior y despliégalo:
cd ~/nixos-config
# Cambiar al commit anterior
git checkout HEAD^1
# Desplegar el flake.nix ubicado en el directorio actual,
# con el nombre de nixosConfiguration `my-nixos`
sudo nixos-rebuild switch --flake .#my-nixosAquí no se cubren operaciones de Git más avanzadas, pero en general la reversión se puede realizar directamente usando Git. Solo en casos de fallas completas del sistema necesitarías reiniciar en el gestor de arranque y arrancar el sistema desde una versión histórica anterior.
Ver y eliminar datos históricos
Como se mencionó antes, cada despliegue de NixOS crea una nueva versión, y todas las versiones se agregan a las opciones de arranque del sistema. Además de reiniciar la computadora, puedes consultar todas las versiones históricas disponibles con el siguiente comando:
nix profile history --profile /nix/var/nix/profiles/systemPara limpiar versiones históricas y liberar espacio de almacenamiento, usa el siguiente comando:
# Eliminar todas las versiones históricas de más de 7 días
sudo nix profile wipe-history --older-than 7d --profile /nix/var/nix/profiles/system
# Limpiar el historial no recolectará como basura los paquetes sin usar; debes ejecutar el comando gc manualmente como root:
sudo nix-collect-garbage --delete-old
# Debido al siguiente problema, debes ejecutar el comando gc por usuario para eliminar los datos históricos de Home Manager:
# https://github.com/NixOS/nix/issues/8508
nix-collect-garbage --delete-old¿Por qué están instalados algunos paquetes?
Para averiguar por qué está instalado un paquete, puedes usar el siguiente comando:
- Ingresa a una shell con
nix-treeyrgdisponibles:nix shell nixpkgs#nix-tree nixpkgs#ripgrep nix-store --gc --print-roots | rg -v '/proc/' | rg -Po '(?<= -> ).*' | xargs -o nix-tree/<package-name>para encontrar el paquete que deseas revisar.wpara mostrar qué paquetes dependen de ese paquete y la cadena de dependencias completa.
Reducir el uso de disco
La siguiente configuración se puede agregar a tu configuración de NixOS para ayudar a reducir el uso de disco:
{ lib, pkgs, ... }:
{
# ...
# Limitar la cantidad de generaciones que se conservarán
boot.loader.systemd-boot.configurationLimit = 10;
# boot.loader.grub.configurationLimit = 10;
# Realizar recolección de basura semanalmente para mantener bajo el uso de disco
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 7d";
};
# Optimizar el almacenamiento
# También puedes optimizar manualmente el store con:
# nix-store --optimise
# Consulta el siguiente enlace para más detalles:
# https://nixos.org/manual/nix/stable/command-ref/conf-file.html#conf-auto-optimise-store
nix.settings.auto-optimise-store = true;
}Al incorporar esta configuración, puedes gestionar y optimizar mejor el uso de disco de tu sistema NixOS.