NixOS: No es solo otra distro más con el wallpaper cambiado

draz1c

header

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

[1] https://nixos.org/

[2] https://en.wikipedia.org/wiki/NixOS

[3] https://nixos.wiki/

[4] https://nixos.wiki/wiki/Overview_of_the_NixOS_Linux_distribution

[5] https://nixos.org/learn.html

7
draz1c

Para este hilo he probado algo nuevo: He usado a ChatGPT para la primera mitad del hilo y eso es lo que ha salido xd

A partir del video de Matthias Benaets ya no es texto de ChatGPT pero he copiado toda la seccion de rollbacks de la web oficial (y traducido con Google Translate)

Se me han quedado cosas en el tintero pero tengo el cerebro frito ahora mismo además como dije en el hilo general de Linux, estoy aprendiendo sobre NixOS por lo que hay cosas que no sé y por eso hago este hilo para tener un sitio en el que hablar sobre esta distro y su gestor de paquetes.

4
preguntitas

Muy interesante, no conocía nix, ni nixos. Le pegaré un vistazo. Muchas gracias por compartirlo.

I use arch btw

FlameThrower

Currazo.

Ya tengo la ISO preparada en mi Ventoy,.en cuanto tenga un rato empiezo. Con lo que quiero instalar ya tengo que pasarme al canal unstable así que a ver cómo me va.

13 días después
Wei-Yu

Llevan unos días dándole bombo a una plataforma nueva para aprender a usar nixos, así que para el que le interese:

https://zero-to-nix.com

3 2 respuestas
pantocreitor

#5 está bien el link? (No se encuentra el servidor me tira)

1 respuesta
Wei-Yu

#6 se me coló una t al final de la url, ya lo arreglé xd

1
pantocreitor

Tengo un rato libre así que voy a coger el MacbookPro de 2011 que tengo para trastear y a ver si con suerte no me da por saco con ningún driver y puedo probar la distro tranquilo.

draz1c

#5 Muy top esa web, muchas gracias! Añadido a #1

21 días después
FlameThrower

Martin Winpress hablando sobre Nix y NixOS en el último episodio de Linux Downtime.

https://linuxdowntime.com/

Al parecer está trabajando con el creador de Nix para reducir la fricción en el aprendizaje de Nix. Creo que alguien como Martin puede llevar esto muy lejos.

1
1 mes después
Wei-Yu

llevo unas semanas con ganas de probar nixpkgs sin usar nixos, he visto esto ahora y quizás le de un tiento este finde si me veo con hueco

Generate Nix packages from URLs with hash prefetching, dependency inference, license detection, and more
https://discourse.nixos.org/t/nix-init-generate-nix-packages-from-urls-with-hash-prefetching-dependency-inference-license-detection-and-more/25035

2 meses después
draz1c

Chris Titus Tech ha hecho una serie de videos enseñando en profundidad como usar NixOS. En total son mas de 3 horas y eso que no ha llegado a tocar ni "Home Manager" ni los "Flakes" así que todo lo anterior antes de llegar a esto lo ha podido mostrar con detalle.

En su entrada del blog https://christitus.com/nixos-explained/ están los links a los videos con sus respectivos timestamps y en su repositorio de GitHub ha compartido su configuration.nix.

garlor

y que es lo que le soluciona

#1draz1c:

la reproducibilidad y la configuración declarativa

al usuario?

2 respuestas
doogie780

#13

Si conoces ansible es parecido pero a nivel OS, no sólo config files.

Cuando tienes 3-4 PC's y te gustaría tenerlos al día y todos con la misma config, es un SO muy bien diseñado para ello.

draz1c

#13 Los sistemas operativos declarativos e inmutables como NixOS y otros más que han aparecido en los últimos años ofrecen alternativas al sistema operativo clásico. Tiene sus ventajas y desventajas como todo y habrá personas (o equipos) a los que les vendrá bien utilizar un sistema u otro.

Rinkes

Que guapens

7 meses después
FlameThrower

Un año después me pongo con esto y ....
En menos de 15 minutos ya tenía la configuración de Intel+Nvidia funcionando a la perfección con la gpu de nvidia en modo "on demand" y con lo básico funcionando. Lo del Nvidia on demand es algo que en la mayoría de las distros ni siquiera se configura por defecto (excepto en Fedora donde está super pulido). Así que muy grata sorpresa.

Ahora solo me falta conseguir configurar micromamba, que no conseguí que quedara bien, y añadir algunos paquetes desde unstable que tampoco lo conseguí porque me tiraba error en el archivo de configuración.

1 respuesta
23 días después
draz1c

#17 Genial! Compartirás tu configuration.nix o tiene contenido personal que no te gustaría mostrar?

Lo que me encanta de NixOS es que hace unos meses que borré la particion de NixOS pero subí ese fichero a Github por lo que si quiero volver a NixOS tengo la misma configuración que cuando lo dejé en cuestión de segundos.

1 respuesta
FlameThrower

#18 La borré :sweat: pero no tenía nada del otro mundo, es simplemente copiando las recomendaciones de la documentación. Estaba intentando instalar Hyprland me cansé de no lograrlo con Nixos y me fui por Hyprland Fedora qu eme funcionó a la primera.

Usuarios habituales

  • FlameThrower
  • draz1c
  • Rinkes
  • doogie780
  • Wei-Yu
  • pantocreitor
  • preguntitas

Tags