Primeros pasos con NixOS
Ahora que hemos aprendido los fundamentos del lenguaje Nix, podemos empezar a usarlo para configurar nuestro sistema NixOS. El archivo de configuración predeterminado de NixOS se encuentra en /etc/nixos/configuration.nix. Este archivo contiene toda la configuración declarativa del sistema, incluyendo ajustes de zona horaria, idioma, distribución del teclado, red, usuarios, sistema de archivos y opciones de arranque.
Para modificar el estado del sistema de manera reproducible (lo cual es altamente recomendable), necesitamos editar manualmente el archivo /etc/nixos/configuration.nix y luego ejecutar sudo nixos-rebuild switch para aplicar la configuración modificada. Este comando genera un nuevo entorno del sistema basado en el archivo de configuración actualizado, establece el nuevo entorno como predeterminado y conserva el entorno anterior en las opciones de arranque de grub/systemd-boot. Esto garantiza que siempre podamos retroceder al entorno anterior incluso si el nuevo falla al iniciar.
Si bien /etc/nixos/configuration.nix es el método clásico para configurar NixOS, depende de fuentes de datos configuradas mediante nix-channel y carece de un mecanismo de bloqueo de versiones, lo que dificulta garantizar la reproducibilidad del sistema. Un mejor enfoque es usar Flakes, que proporciona reproducibilidad y facilita la gestión de configuraciones.
En esta sección, primero aprenderemos a gestionar NixOS usando el método clásico (/etc/nixos/configuration.nix), y luego exploraremos el enfoque más avanzado con Flakes.
Configuración del sistema usando /etc/nixos/configuration.nix
El archivo /etc/nixos/configuration.nix es el método clásico y predeterminado para configurar NixOS. Aunque carece de algunas de las funciones avanzadas de Flakes, todavía se usa ampliamente y ofrece flexibilidad en la configuración del sistema.
Para ilustrar cómo usar /etc/nixos/configuration.nix, consideremos un ejemplo en el que habilitamos SSH y añadimos un usuario llamado ryan al sistema. Podemos lograrlo añadiendo el siguiente contenido a /etc/nixos/configuration.nix:
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’).
{ config, pkgs, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
];
# Omit previous configuration settings...
# Add user 'ryan'
users.users.ryan = {
isNormalUser = true;
description = "ryan";
extraGroups = [ "networkmanager" "wheel" ];
openssh.authorizedKeys.keys = [
# Replace with your own public key
"ssh-ed25519 <some-public-key> ryan@ryan-pc"
];
packages = with pkgs; [
firefox
# thunderbird
];
};
# Enable the OpenSSH daemon.
services.openssh = {
enable = true;
settings = {
X11Forwarding = true;
PermitRootLogin = "no"; # disable root login
PasswordAuthentication = false; # disable password login
};
openFirewall = true;
};
# Omit the rest of the configuration...
}En esta configuración, declaramos nuestra intención de habilitar el servicio openssh, añadir una clave pública SSH para el usuario ryan y deshabilitar el inicio de sesión por contraseña.
Para desplegar la configuración modificada, ejecuta sudo nixos-rebuild switch. Este comando aplicará los cambios, generará un nuevo entorno del sistema y lo establecerá como predeterminado. Ahora podrás iniciar sesión en el sistema usando SSH con las claves configuradas.
Siempre puedes añadir
--show-trace --print-build-logs --verboseal comandonixos-rebuildpara obtener mensajes de error detallados si encuentras problemas durante el despliegue.
Recuerda que cualquier cambio reproducible en el sistema puede hacerse editando el archivo /etc/nixos/configuration.nix y desplegando los cambios con sudo nixos-rebuild switch.
Para encontrar opciones de configuración y documentación:
- Usa motores de búsqueda como Google; por ejemplo, busca
Chrome NixOSpara encontrar información relacionada con Chrome en NixOS. La Wiki de NixOS y el código fuente de Nixpkgs suelen aparecer entre los primeros resultados. - Utiliza el NixOS Options Search para buscar por palabras clave.
- Consulta la sección de Configuración en el Manual de NixOS para documentación de configuración a nivel de sistema.
- Busca palabras clave directamente en el código fuente de nixpkgs en GitHub.