Indice
1. - ¿Qué es NixOS y cómo se diferencia de otras distribuciones de Linux?
2. - Características clave de NixOS, como su sistema de paquetes y gestión de configuración declarativa.
3. - Cómo instalar y configurar NixOS en tu sistema.
3.1 - Guia de instalación y configuración inicial de NixOS
3.2 - Ejemplo de un fichero de configuración de NixOS
4. - Rollbacks (generations)
5. - Comandos más frecuentes
6. - Fuentes
1 - ¿Qué es NixOS y cómo se diferencia de otras distribuciones de Linux?
NixOS
es una distribución de Linux basada en el gestor de paquetes Nix
y enfocada en la reproducibilidad y la configuración declarativa. A diferencia de otras distribuciones de Linux, que utilizan configuraciones modificables y scripts para instalar y administrar paquetes y servicios, NixOS ofrece un sistema de configuración que permite declarar de manera explícita los paquetes y servicios que se desean instalar y cómo deben configurarse. Esto permite un mayor control y reproducibilidad en la instalación y administración del sistema.
Recomendado leer esta web que muestra los primeros pasos para instalar el gestor de paquetes Nix y el sistema operativo completo NixOS: https://zero-to-nix.com/
2 - Características clave de NixOS, como su sistema de paquetes y gestión de configuración declarativa.
- Sistema de paquetes Nix: NixOS utiliza el gestor de paquetes Nix, que permite una fácil instalación yactualización de software y ofrece un sistema de dependencias seguro y predecible.
- Configuración declarativa: En lugar de modificar archivos de configuración y ejecutar scripts para instalar yconfigurar paquetes y servicios, NixOS permite declarar de manera explícita qué paquetes y servicios se deseaninstalar y cómo deben configurarse en un único archivo de configuración. Esto permite una mayorreproducibilidad y facilita la administración del sistema.
- Rollback fácil: NixOS permite volver fácilmente a versiones anteriores del sistema y de los paquetesinstalados, lo que puede ser útil en caso de que se produzcan problemas o se quiera probar algo sin tener quepreocuparse por deshacer los cambios.
- Sistema de perfiles: NixOS permite crear y administrar diferentes perfiles del sistema, cada uno con supropio conjunto de paquetes y configuraciones, lo que es útil para tareas especializadas o para tener múltiplesentornos de trabajo.
- Actualizaciones sin reiniciar: NixOS permite actualizar paquetes y servicios sin tener que reiniciar el sistema, lo que puede ser útil en entornos de producción o en los que se requiera un tiempo de inactividadmínimo.
3 - Cómo instalar y configurar NixOS en tu sistema.
- Requisitos de instalación: NixOS puede instalarse en cualquier equipo que cumpla con los requisitos mínimos de hardware. Estos incluyen un procesador x86_64, 512 MB de RAM y 5 GB de espacio en disco.
- Descarga de la imagen de instalación: La primera etapa de la instalación de NixOS es descargar la imagen de instalación desde el sitio web de NixOS. La imagen viene en formato ISO y se puede grabar en un DVD o copiar a una memoria USB.
- Instalación desde la imagen: Una vez que tienes la imagen de instalación, puedes arrancar tu equipo desde ella para iniciar el proceso de instalación. El instalador de NixOS es sencillo y guiado y te llevará a través de- los pasos necesarios para instalar el sistema.
- Archivo de configuración: Una vez que el sistema está instalado, es necesario crear un archivo de configuración para declarar qué paquetes y servicios se desean instalar y cómo deben configurarse. Esto se hace editando el archivo
/etc/nixos/configuration.nix
. - Actualización del sistema: Para actualizar el sistema y los paquetes instalados en NixOS, se debe ejecutar el- comando
nixos-rebuild switch
. Este comando leerá el archivo de configuración y actualizará el sistema y los paquetes de acuerdo a lo especificado en él.
3.1 - Guia de instalación y configuración inicial de NixOS
(por Matthias Benaets
):
Diria que este video (junto a la playlist de abajo) es de obligado visionado si quieres introducirte en NixOS pues cubre todo lo necesario para aprender lo básico y tener el sistema funcional.
Instalación e introducción a NixOS
(playlist recomendada por NixOS):
https://www.youtube.com/playlist?list=PL-saUBvIJzOkjAw_vOac75v-x6EzNzZq-
3.2 - Ejemplo de un fichero de configuración de NixOS:
/etc/nixos/configuration.nix
{ config, pkgs, ... }:
{
# Import other configuration modules
# (hardware-configuration.nix is autogenerated upon installation)
# paths in nix expressions are always relative the file which defines them
imports =
[
./hardware-configuration.nix
./my-dev-tools.nix
./my-desktop-env.nix
./etc.nix
];
# Name your host machine
networking.hostName = "mymachine";
# Set your time zone.
time.timeZone = "Europe/Utrecht";
# Enter keyboard layout
services.xserver.layout = "us";
services.xserver.xkbVariant = "altgr-intl";
# Define user accounts
users.extraUsers =
{
myuser =
{
extraGroups = [ "wheel" "networkmanager" ];
isNormalUser = true;
};
};
# Install some packages
environment.systemPackages =
with pkgs;
[
ddate
testdisk
zsh
];
# Enable the OpenSSH daemon
services.openssh.enable = true;
}
4 - Rollbacks (generations)
Cada vez que se reconstruye el estado del sistema usando nixos-rebuild switch
, se crea una nueva generación. Puede volver a la generación anterior en cualquier momento, lo cual es útil si un cambio de configuración (o actualización del sistema) resulta perjudicial.
Puede retroceder a través de:
$ nix-env --rollback # revertir un entorno de usuario
$ nixos-rebuild switch --rollback # revertir un entorno de sistema
NixOS también coloca entradas para generaciones anteriores en el menú bootloader
, por lo que, como último recurso, siempre puede volver a una configuración anterior reiniciando. Para configurar la generación arrancada actualmente como la ejecución predeterminada
$ /run/current-system/bin/switch-to-configuration boot
Debido a que NixOS mantiene disponibles las generaciones anteriores del estado del sistema en caso de que se desee revertir, las versiones antiguas de los paquetes no se eliminan de su sistema inmediatamente después de una actualización. Puede eliminar las generaciones anteriores manualmente:
# eliminar generaciones mayores de 30 días
$ nix-collect-garbage --delete-older-than 30d
# eliminar TODAS las generaciones anteriores: ya no puede retroceder después de ejecutar esto
$ nix-collect-garbage -d
Listas las generaciones:
# como root
$ nix-env --list-generations --profile /nix/var/nix/profiles/system
Cambiar generaciones:
# cambio como root a la generación 204
$ nix-env --profile /nix/var/nix/profiles/system --switch-generación 204
eliminar generación(es) rota(s):
# como root eliminar las generaciones rotas 205 y 206
$ nix-env --profile /nix/var/nix/profiles/system --delete-generations 205 206
Puede configurar la recolección de basura automática configurando las opciones de nix.gc
en /etc/nixos/configuration.nix
. Esto se recomienda, ya que mantiene bajo el tamaño de la store Nix.
5 - Comandos más frecuentes
Hacer un rebuild a modo de test (dry mode)
$ nixos-rebuild test
Crear una máquina virtual con los cambios que se van a realizar y ejecutar una instancia con toda la configuración del sistema.
$ nixos-rebuild build-vm
$ ./result/bin/run-*-vm
6 - Fuentes
[2] https://en.wikipedia.org/wiki/NixOS
[4] https://nixos.wiki/wiki/Overview_of_the_NixOS_Linux_distribution