Jump to content

NixOS/es: Difference between revisions

From Official NixOS Wiki
Flandoor (talk | contribs)
Created page with "=== Arquitecturas del sistema ==="
Flandoor (talk | contribs)
Created page with "La mayoria de los dispositivos <code>x86_64</code> deberian ejecutar NixOS sin ningun problema."
 
(48 intermediate revisions by the same user not shown)
Line 3: Line 3:
{{Expansion|reason=Debe ser una introducción sencilla, porque es uno de los primeros artículos que leen los nuevos usuarios aquí. Por eso debe simplificarse un poco y los temas más complejos deberían trasladarse a otros artículos.}}
{{Expansion|reason=Debe ser una introducción sencilla, porque es uno de los primeros artículos que leen los nuevos usuarios aquí. Por eso debe simplificarse un poco y los temas más complejos deberían trasladarse a otros artículos.}}


[https://nixos.org/ NixOS] es una distribución de Linux basada en el gestor de paquetes y sistema de construcción [[Special:MyLanguage/Nix|Nix]]. Admite la [[Wikipedia:Declarative programming|gestión declarativa]] de la [[Wikipedia:Configuration management|configuración]] de todo el sistema, así como actualizaciones y reversiones [[Wikipedia:Atomicity (database_systems)|atómicas]], aunque también puede admitir la gestión [[Wikipedia:Imperative programming|imperativa]] de paquetes y usuarios. En NixOS, todos los componentes de la distribución &mdash; incluido el [[Wikipedia:Linux kernel|kernel]], los [[Wikipedia:Package manager|paquetes]] instalados y los archivos de configuración del sistema &mdash; son construidos por [[Special:MyLanguage/Nix|Nix]] a partir de [[Wikipedia:Pure function|funciones puras]] llamadas [[Special:MyLanguage/Nix (language)|expresiones Nix]].
[https://nixos.org/ NixOS] es una distribución de Linux basada en el gestor de paquetes y sistema de construcción [[Special:MyLanguage/Nix|Nix]]. Admite la [[Wikipedia:Declarative programming|gestión declarativa]] de la [[Wikipedia:Configuration management|configuración]] de todo el sistema, así como actualizaciones y reversiones [[Wikipedia:Atomicity (database_systems)|atómicas]], aunque también puede admitir la gestión [[Wikipedia:Imperative programming|imperativa]] de paquetes y usuarios. En NixOS, todos los componentes de la distribución; incluido el [[Wikipedia:Linux kernel|kernel]], los [[Wikipedia:Package manager|paquetes]] instalados y los archivos de configuración del sistema; son construidos por [[Special:MyLanguage/Nix|Nix]] a partir de [[Wikipedia:Pure function|funciones puras]] llamadas [[Special:MyLanguage/Nix (language)|expresiones Nix]].


Dado que Nix utiliza caché de [[Wikipedia:Executable|binarios]], esto proporciona un equilibrio único entre el enfoque orientado a binarios utilizado por distribuciones como Debian y el enfoque orientado al [[Wikipedia:Source code|código fuente]] utilizado por distribuciones como Gentoo. Los binarios pueden utilizarse para componentes estándar, y los paquetes y módulos personalizados pueden utilizarse automáticamente cuando no hay disponible un binario precompilado.
Dado que Nix utiliza caché de [[Wikipedia:Executable|binarios]], esto proporciona un equilibrio único entre el enfoque orientado a binarios utilizado por distribuciones como Debian y el enfoque orientado al [[Wikipedia:Source code|código fuente]] utilizado por distribuciones como Gentoo. Los binarios pueden utilizarse para componentes estándar, y los paquetes y módulos personalizados pueden utilizarse automáticamente cuando no hay disponible un binario precompilado.
Line 30: Line 30:
=== Arquitecturas del sistema ===
=== Arquitecturas del sistema ===


<div lang="en" dir="ltr" class="mw-content-ltr">
NixOS ofrece soporte integrado para la mayoría de dispositivos x86_64 y dispositivos ARM64 genéricos.
NixOS provides out of the box support for most x86_64 devices, and generic ARM64 devices.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="32-bit_x86_architectures"></span>
==== 32-bit x86 architectures ====
==== Arquitecturas 32-bit x86 ====
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
El soporte para arquitecturas x86 de 32 bits (es decir, <code>i686</code>) ha ido disminuyendo. Aunque la mayoría de los paquetes todavía deberían compilarse y ejecutarse, su disponibilidad en caché se ha reducido considerablemente<ref>https://discourse.nixos.org/t/limited-cache-availability-for-i686-32-bits-x86-architecture/37626</ref>. La ISO de x86 de 32 bits ya no se ofrece como una imagen preconstruida, pero todavía puede generarse manualmente.
Support for 32-bit x86 architectures (i.e. <code>i686</code>) has been declining. While most packages should still compile and run, their cache availability is significantly reduced<ref>https://discourse.nixos.org/t/limited-cache-availability-for-i686-32-bits-x86-architecture/37626</ref>. The 32-bit x86 ISO is no longer offered as a ready-built image, but it may still be built manually.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="64-bit_x86_architectures"></span>
==== 64-bit x86 architectures ====
==== Arquitecturas 64-bit x86 ====
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
La mayoria de los dispositivos <code>x86_64</code> deberian ejecutar NixOS sin ningun problema.
Most <code>x86_64</code> devices should run NixOS without issues.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="32-bit_ARM_architectures"></span>
==== 32-bit ARM architectures ====
==== Arquitecturas 32-bit ARM ====
</div>


{{Main|NixOS on ARM}}
{{Main|NixOS on ARM}}


<div lang="en" dir="ltr" class="mw-content-ltr">
NixOS no tiene soporte oficial para dispositivos ARM32 (por ejemplo, <code>armv6</code> y <code>armv7l</code>); sin embargo, para algunos de estos dispositivos puede existir soporte por parte de la comunidad.
NixOS isn't officially supported on ARM32 devices (e.g. <code>armv6</code> and <code>armv7l</code>), however, for some of these devices, there may be community support.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="64-bit_ARM_architectures"></span>
==== 64-bit ARM architectures ====
==== Arquitecturas ARM de 64 bits ====
</div>


{{Main|NixOS on ARM}}
{{Main|NixOS on ARM}}


<div lang="en" dir="ltr" class="mw-content-ltr">
Siempre que un dispositivo sea compatible con el proceso de arranque genérico de systemd, NixOS debería funcionar sin configuración adicional. Sin embargo, algunos dispositivos específicos con cargadores de arranque propietarios pueden presentar problemas al ejecutarlo.
As long as a device supports the generic systemd boot process, NixOS should run out of the box. However, specific devices with proprietary bootloaders may have issues running it.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="MIPS_architectures"></span>
==== MIPS architectures ====
==== Arquitecturas MIPS ====
</div>


{{Main|NixOS on MIPS}}
{{Main|NixOS on MIPS}}


<div lang="en" dir="ltr" class="mw-content-ltr">
En el pasado hubo soporte limitado para arquitecturas MIPS en NixOS, y aún pueden encontrarse vestigios de ese soporte en Nixpkgs. Sin embargo, actualmente no existe soporte oficial.
There used to be limited support for MIPS architectures in NixOS, and remnants of this support may still be found in Nixpkgs. However, there is no official support.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="RISC-V_architectures"></span>
==== RISC-V architectures ====
==== Arquitecturas RISC-V ====
</div>


{{Main|RISC-V}}
{{Main|RISC-V}}




<div lang="en" dir="ltr" class="mw-content-ltr">
NixOS no ofrece soporte oficial para dispositivos RISC-V. Sin embargo, algunos dispositivos pueden contar con soporte de la comunidad.
NixOS does not provide official support for RISC-V devices. However, several devices may benefit from community support.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Usage"></span>
== Usage ==
== Uso ==
</div>


<span id="declarative-configuration"></span>
<span id="declarative-configuration"></span>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Declarative_Configuration"></span>
=== Declarative Configuration ===
=== Configuración Declarativa ===
</div>
 
Una de las características distintivas de NixOS es su modelo de configuración declarativa, donde todo el estado del sistema, incluidos los paquetes instalados, los servicios del sistema y la configuración, se describe en archivos de configuración. El archivo principal suele estar ubicado en <code>/etc/nixos/configuration.nix</code>.


<div lang="en" dir="ltr" class="mw-content-ltr">
Los cambios en la configuración se aplican de forma atómica mediante <code>nixos-rebuild switch</code>, garantizando la reproducibilidad y la posibilidad de volver a estados anteriores. La mayoría de los usuarios mantienen sus archivos de configuración en un sistema de control de versiones, lo que permite configuraciones del sistema coherentes y portables.
One of NixOS's defining features is its declarative configuration model, where the entire system state — including installed packages, system services, and settings — is described in configuration files. The primary file is typically located at <code>/etc/nixos/configuration.nix</code>.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Estas deficiencias suelen corregirse posteriormente, si es que se corrigen, mediante soluciones de gestión de configuración como Puppet, Ansible o Chef. Estas herramientas sincronizan la configuración del sistema con una descripción del estado esperado. Sin embargo, estas herramientas no están integradas en el diseño del sistema operativo, sino que simplemente se superponen sobre él, y la configuración del sistema operativo aún puede variar cuando algún aspecto de dicha configuración no ha sido especificado en la descripción del estado esperado.  
Changes to the configuration are applied atomically using <code>nixos-rebuild switch</code>, ensuring reproducibility and the ability to roll back to previous states. Most users track their configuration files in a version control system, enabling consistent and portable system setups. These shortcomings are often rectified after-the-fact if at all by configuration management solutions such as Puppet, Ansible or Chef. These tools reconcile system configuration with a description of the expected state. However, these tools are not integrated into the operating system design and are simply layered on top, and OS configuration may still vary where an aspect of OS configuration has not been specified in the description of expected state.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
A diferencia de las distribuciones convencionales, donde la configuración del sistema suele estar repartida entre archivos editados manualmente, NixOS integra la gestión de configuración directamente en el sistema operativo. Esto elimina las inconcistencias de configuración y hace que NixOS sea especialmente adecuado para despliegues automatizados y reproducibles.
Unlike conventional distributions, where system configuration is often scattered across manually edited files, NixOS integrates configuration management directly into the operating system. This eliminates configuration drift and makes NixOS particularly well-suited for automated, reproducible deployments.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Para obtener más detalles y ejemplos sobre las configuraciones de NixOS, consulta [[Special:MyLanguage/NixOS system configuration|Configuración del sistema NixOS]].
For more details and examples on NixOS configurations, see [[Special:MyLanguage/NixOS system configuration|NixOS system configuration]].
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Imperative_Operations"></span>
=== Imperative Operations ===
=== Operaciones Imperativas ===
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Aunque NixOS normalmente se configura de forma declarativa siempre que sea posible, hay algunos ámbitos en los que las operaciones imperativas siguen siendo necesarias, como la gestión del entorno de usuario y la gestión de canales.
While NixOS is typically configured declaratively as much as possible, these are a few domains where imperative operations are still necessary; these include user environment management and channel management.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="User_Environments"></span>
==== User Environments ====
==== Entornos de usuario ====
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Además de la configuración declarativa del sistema, los usuarios de NixOS pueden utilizar el comando imperativo <code>nix-env</code> de Nix para instalar paquetes a nivel de usuario, sin modificar el estado del sistema. Consulta la [[Special:MyLanguage/Nix#User Environments|sección de entornos de usuario del artículo sobre Nix]] para obtener más información.
In addition to declarative system configuration, NixOS users can utilize Nix's imperative <code>nix-env</code> command to install packages at the user level, without changing the system state. See the [[Special:MyLanguage/Nix#User Environments| user environments section of the Nix article]] for more information.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Channels"></span>
==== Channels ====
==== Canales (Channels) ====
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
En el [[Special:MyLanguage/Nix ecosystem|ecosistema Nix]], los [[Special:MyLanguage/Channel branches|canales]] son un mecanismo para distribuir colecciones de [[Special:MyLanguage/Nixpkgs|paquetes de Nix]] y definiciones de módulos de [[Special:MyLanguage/NixOS|NixOS]]. Un canal representa un conjunto seleccionado y versionado de definiciones de paquetes y configuraciones del sistema, que normalmente corresponde a una versión específica o al estado de desarrollo más reciente disponible.
In the [[Special:MyLanguage/Nix ecosystem|Nix ecosystem]], [[Special:MyLanguage/Channel branches|channels]] are a mechanism for distributing collections of [[Special:MyLanguage/Nixpkgs|Nix packages]] and [[Special:MyLanguage/NixOS|NixOS]] module definitions. A channel represents a curated, versioned set of package definitions and system configurations, typically corresponding to a particular release or the latest available development state.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Al utilizar canales, tu sistema o [[Special:MyLanguage/User Environment|entorno de usuario]] obtiene definiciones de paquetes y opciones desde una URL que apunta a una instantánea (snapshot) específica de la colección de paquetes de Nix (Nixpkgs) y los módulos de NixOS asociados.
When using channels, your system or [[Special:MyLanguage/User Environment|user environment]] pulls package definitions and options from a URL pointing to a specific snapshot of the Nix Packages collection (Nixpkgs) and associated NixOS modules.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Para obtener más información sobre el uso y la configuración de los canales de Nix, consulta [[Special:MyLanguage/Channel branches|ramas de canales]] (channel branches).
For more information on using and configuring nix channels, refer to [[Special:MyLanguage/Channel branches|channel branches]].
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Internals"></span>
== Internals ==
== Funcionamiento interno ==
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Comparison_with_traditional_Linux_Distributions"></span>
=== Comparison with traditional Linux Distributions ===
=== Comparación con las distribuciones Linux tradicionales ===
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
''Articulo principal: [[Special:MyLanguage/Nix vs. Linux Standard Base|Nix vs. Linux Standard Base]]''
''Main Article: [[Special:MyLanguage/Nix vs. Linux Standard Base|Nix vs. Linux Standard Base]]''
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
La principal diferencia entre NixOS y otras distribuciones Linux es que NixOS no sigue la estructura del sistema de archivos de la [[Wikipedia:Linux Standard Base|Linux Standard Base]]. En los sistemas compatibles con LSB, el software se almacena en <code>/{,usr}/{bin,lib,share}</code> y la configuración generalmente se almacena en <code>/etc</code>. Los binarios del software están disponibles en el entorno de usuario si se ubican en uno de los directorios <code>/bin</code> definidos por la LSB. Cuando un programa hace referencia a bibliotecas dinámicas, buscará las bibliotecas necesarias en las carpetas de la LSB (<code>/lib</code>, <code>/usr/lib</code>).
The main difference between NixOS and other Linux distributions is that NixOS does not follow the [[Wikipedia:Linux Standard Base |Linux Standard Base ]] file system structure. On LSB-compliant systems software is stored under <code>/{,usr}/{bin,lib,share}</code> and configuration is generally stored in <code>/etc</code>. Software binaries are available in the user environment if they are placed in one of the LSB's <code>/bin</code> directories. When a program references dynamic libraries it will search for the required libraries in the LSB folders (<code>/lib</code>, <code>/usr/lib</code>).
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
En NixOS, sin embargo, <code>/lib</code> y <code>/usr/lib</code> no existen. En su lugar, todas las bibliotecas del sistema, binarios, kernels, firmware y archivos de configuración se colocan en el [[Special:MyLanguage/Nix (package_manager)#Nix store|Nix store]]. Los archivos y directorios dentro de <code>/nix/store</code> reciben nombres basados en hashes de la información que describe los datos construidos. Todos los archivos y directorios almacenados en el Nix store son inmutables. <code>/bin</code> y <code>/usr/bin</code> están prácticamente ausentes: solo contienen <code>/bin/sh</code> y <code>/usr/bin/env</code>, respectivamente, para proporcionar compatibilidad mínima con scripts existentes que utilizan líneas shebang. Los entornos a nivel de usuario se implementan mediante una gran cantidad de enlaces simbólicos a todos los paquetes necesarios y archivos auxiliares. Estos entornos se denominan [[Special:MyLanguage/Nix#Profiles|perfiles]] y se almacenan en <code>/nix/var/nix/profiles</code>, teniendo cada usuario sus propios perfiles. La estructuración del sistema de esta manera es lo que permite a NixOS obtener sus ventajas principales frente a las distribuciones Linux convencionales, como la atomicidad y la compatibilidad con retrocesos.
In NixOS however <code>/lib</code> and <code>/usr/lib</code> do not exist. Instead all system libraries, binaries, kernels, firmware and configuration files are placed in the [[Special:MyLanguage/Nix (package_manager)#Nix store|Nix store]]. The files and directories in <code>/nix/store</code> are named by hashes of the information describing the built data. All of the files and directories placed in the Nix store are immutable. <code>/bin</code> and <code>/usr/bin</code> are almost absent: they contain only <code>/bin/sh</code> and <code>/usr/bin/env</code> respectively, to provide minimal compatibility with existing scripts using shebang lines. User-level environments are implemented using a large number of symbolic links to all required packages and auxiliary files. These environments are called [[Special:MyLanguage/Nix#Profiles|profiles]] and are stored in <code>/nix/var/nix/profiles</code>, each user having their own profiles. Structuring the system in this way is how NixOS obtains its key advantages over conventional Linux distributions, such as atomicity and rollback support.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Usage_of_the_Nix_store"></span>
=== Usage of the Nix store ===
=== Uso de Nix store ===
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Gran parte de la confusión entre los nuevos usuarios surge del hecho de que la configuración se almacena en el árbol de solo lectura <code>/nix/store</code> junto con todos los paquetes instalados. Esto hace imposible editar manualmente la configuración del sistema; todos los cambios de configuración deben realizarse modificando el archivo <code>/etc/nixos/configuration.nix</code> y ejecutando <code>nixos-rebuild switch</code>. NixOS proporciona el [[Special:MyLanguage/NixOS_modules|sistema de módulos]] para editar todas las configuraciones necesarias. Los usuarios deberían utilizar primero [https://search.nixos.org/options la herramienta de búsqueda de opciones] para comprobar si existe la opción que necesitan antes de intentar añadir manualmente archivos o configuración mediante características de bajo nivel de NixOS, como los scripts de activación.
A lot of confusion for newcomers arises from the fact that configuration is stored in the read-only <code>/nix/store</code> tree along with all the installed packages. This fact makes it impossible to manually edit system configuration; all configuration changes must be performed by editing the <code>/etc/nixos/configuration.nix</code> file and executing <code>nixos-rebuild switch</code>. NixOS provides the [[Special:MyLanguage/NixOS_modules|module system]] for editing all required configurations. Users should first use [https://search.nixos.org/options the option search tool] to check if the option they need exists before attempting to manually add files or configuration via low-level NixOS features like activation scripts.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
La pureza del sistema permite mantener la configuración del sistema en un lugar centralizado, sin necesidad de editar múltiples archivos. Esta configuración puede distribuirse o mantenerse bajo control de versiones según sea necesario. También proporciona determinismo; si se proporcionan las mismas entradas, la misma versión de Nixpkgs y el mismo archivo <code>/etc/nixos/configuration.nix</code>, se obtiene exactamente el mismo estado del sistema.
The system purity makes it possible to keep system configuration in a central place, without the need to edit multiple files. This configuration can be distributed or version controlled as desired. It also provides for determinism; if you provide the same inputs, the same version of Nixpkgs and the same <code>/etc/nixos/configuration.nix</code> you will get the exact same system state.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Modules"></span>
=== Modules ===
=== Modulos ===
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
El [[Special:MyLanguage/NixOS modules|sistema de módulos de NixOS]], definido en [[Special:MyLanguage/Nixpkgs|Nixpkgs]], proporciona las herramientas necesarias para personalizar la configuración del sistema operativo. Se utiliza para habilitar y configurar servicios como nginx, habilitar firmware y personalizar el kernel.
The [[Special:MyLanguage/NixOS modules|NixOS module system]] as defined in  [[Special:MyLanguage/Nixpkgs|Nixpkgs]] provides the means necessary to customize the configuration of the OS. It is used to enable and customize services such as nginx, enable firmware and customize the kernel.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Por lo general, toda la configuración de los módulos se realiza añadiendo opciones al archivo <code>/etc/nixos/configuration.nix</code>. La mayoría de los ejemplos de la wiki muestran cómo utilizar este archivo para configurar el sistema operativo.
All module configuration is generally performed by adding options to <code>/etc/nixos/configuration.nix</code>. Most of the examples in the wiki show how this file can be used to configure the OS.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
El sistema de módulos de NixOS implementa un sistema de tipos que permite la verificación de tipos de las opciones configuradas. También permite combinar automáticamente opciones definidas en múltiples lugares. Esto permite distribuir la configuración en varios archivos, y las opciones establecidas en todos ellos se combinarán entre sí:
The NixOS module system implements a typing system which allows typechecking of option settings. It also enables options defined in multiple places to be merged automatically. This allows you to spread your configuration over multiple files, and the options you set across all of those files will be merged together:
</div>


{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
Line 223: Line 162:
</nowiki>}}
</nowiki>}}


<div lang="en" dir="ltr" class="mw-content-ltr">
Para obtener más detalles, consulta la sección [https://nixos.org/manual/nixos/stable/index.html#sec-writing-modules Módulos del Manual de NixOS].
See the [https://nixos.org/manual/nixos/stable/index.html#sec-writing-modules Modules section of the NixOS Manual] for more details.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Generations"></span>
=== Generations ===
=== Generaciones ===
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Cada vez que se reconstruye el estado del sistema mediante <code>nixos-rebuild switch</code>, se crea una nueva generación. Puedes volver a una generación anterior en cualquier momento, lo que resulta útil si un cambio en la configuración (o una actualización del sistema) causa problemas.
Every time the system state is rebuilt using <code>nixos-rebuild switch</code>, a new generation is created. You can revert to the previous generation at any time, which is useful if a configuration change (or system update) turns out to be detrimental.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Puedes volver atrás (roll back) mediante:
You can roll back via:
</div>


<syntaxHighlight lang=console>
<syntaxHighlight lang=console>
Line 244: Line 176:
</syntaxHighlight>
</syntaxHighlight>


<div lang="en" dir="ltr" class="mw-content-ltr">
NixOS también incluye entradas de generaciones anteriores en el menú del cargador de arranque, por lo que, como último recurso, siempre puedes volver a una configuración anterior simplemente reiniciando. Para establecer la generación actualmente arrancada como predeterminada, ejecuta:
NixOS also places entries for previous generations in the bootloader menu, so as a last resort you can always revert to a previous configuration by rebooting. To set the currently booted generation as the default run
</div>


<syntaxHighlight lang=console>
<syntaxHighlight lang=console>
Line 252: Line 182:
</syntaxHighlight>
</syntaxHighlight>


<div lang="en" dir="ltr" class="mw-content-ltr">
Como NixOS conserva generaciones anteriores del estado del sistema para permitir retrocesos, las versiones antiguas de los paquetes no se eliminan inmediatamente después de una actualización. Puedes eliminar generaciones antiguas manualmente:
Because NixOS keeps previous generations of system state available in case rollback is desired, old package versions aren't deleted from your system immediately after an update. You can delete old generations manually:
</div>


<syntaxHighlight lang=console>
<syntaxHighlight lang=console>
Line 264: Line 192:
</syntaxHighlight>
</syntaxHighlight>


<div lang="en" dir="ltr" class="mw-content-ltr">
Listar generaciones:
List generations:
</div>


<syntaxHighlight lang=console>
<syntaxHighlight lang=console>
Line 273: Line 199:
</syntaxHighlight>
</syntaxHighlight>


<div lang="en" dir="ltr" class="mw-content-ltr">
Cambiar entre generaciones:
Switch generations:
</div>


<syntaxHighlight lang=console>
<syntaxHighlight lang=console>
Line 282: Line 206:
</syntaxHighlight>
</syntaxHighlight>


<div lang="en" dir="ltr" class="mw-content-ltr">
Eliminar generacion(es) dañada(s):
delete broken generation(s):
</div>


<syntaxHighlight lang=console>
<syntaxHighlight lang=console>
Line 291: Line 213:
</syntaxHighlight>
</syntaxHighlight>


<div lang="en" dir="ltr" class="mw-content-ltr">
Puedes configurar la "recolección de basura" (garbage collection GC) automática definiendo las opciones de [https://search.nixos.org/options?query=nix.gc <code>nix.gc</code>] en <code>/etc/nixos/configuration.nix</code>. Esto es recomendable, ya que ayuda a mantener reducido el tamaño del Nix store.
You can configure automatic garbage collection by setting the [https://search.nixos.org/options?query=nix.gc nix.gc] options in <code>/etc/nixos/configuration.nix</code>. This is recommended, as it keeps the size of the Nix store down.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="See_also"></span>
== See also ==
== Véase también ==
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">

Latest revision as of 23:04, 13 July 2026

Introduction to Nix

Tools and applications

☶︎
This article or section needs to be expanded. Debe ser una introducción sencilla, porque es uno de los primeros artículos que leen los nuevos usuarios aquí. Por eso debe simplificarse un poco y los temas más complejos deberían trasladarse a otros artículos. Further information may be found in the related discussion page. Please consult the pedia article metapage for guidelines on contributing.

NixOS es una distribución de Linux basada en el gestor de paquetes y sistema de construcción Nix. Admite la gestión declarativa de la configuración de todo el sistema, así como actualizaciones y reversiones atómicas, aunque también puede admitir la gestión imperativa de paquetes y usuarios. En NixOS, todos los componentes de la distribución; incluido el kernel, los paquetes instalados y los archivos de configuración del sistema; son construidos por Nix a partir de funciones puras llamadas expresiones Nix.

Dado que Nix utiliza caché de binarios, esto proporciona un equilibrio único entre el enfoque orientado a binarios utilizado por distribuciones como Debian y el enfoque orientado al código fuente utilizado por distribuciones como Gentoo. Los binarios pueden utilizarse para componentes estándar, y los paquetes y módulos personalizados pueden utilizarse automáticamente cuando no hay disponible un binario precompilado.

Las versiones estables de NixOS se publican dos veces al año (alrededor de finales de mayo y finales de noviembre). NixOS fue creado por Eelco Dolstra y Armijn Hemel, y publicado inicialmente en 2003. Es desarrollado y mantenido por la comunidad bajo la supervisión de la Fundación NixOS.

Instalación

Para obtener una guía de instalación completa, consulta el capítulo de instalación del manual de NixOS. Esta wiki también incluye guías alternativas o complementarias, como NixOS como escritorio.

La mayoría de los usuarios instalarán NixOS mediante una de las imágenes ISO. Hay disponibles variantes ISO "gráfica" y "mínima" para cada arquitectura compatible; las imágenes "gráficas" son adecuadas para usuarios que planean instalar un entorno de escritorio, mientras que las imágenes "mínimas" son adecuadas para usuarios que desean instalar NixOS como servidor o prefieren una imagen ISO más pequeña.

Las imágenes ISO son imágenes híbridas que pueden grabarse en medios ópticos o copiarse directamente a una unidad USB y arrancarse tal cual. Consulta la guía de instalación para obtener más detalles.

Además de las imágenes ISO, la página de descarga ofrece varios métodos alternativos para instalar NixOS. Estos incluyen:

  • Dispositivos virtuales en formato OVA (compatibles con VirtualBox);
  • AMI de Amazon EC2;

Additionally, many existing Linux installations can be converted into NixOS installations using nixos-infect or nixos-in-place; this is particularly useful for installing NixOS on hosting providers which do not natively support NixOS.

Arquitecturas del sistema

NixOS ofrece soporte integrado para la mayoría de dispositivos x86_64 y dispositivos ARM64 genéricos.

Arquitecturas 32-bit x86

El soporte para arquitecturas x86 de 32 bits (es decir, i686) ha ido disminuyendo. Aunque la mayoría de los paquetes todavía deberían compilarse y ejecutarse, su disponibilidad en caché se ha reducido considerablemente[1]. La ISO de x86 de 32 bits ya no se ofrece como una imagen preconstruida, pero todavía puede generarse manualmente.

Arquitecturas 64-bit x86

La mayoria de los dispositivos x86_64 deberian ejecutar NixOS sin ningun problema.

Arquitecturas 32-bit ARM

Main article: NixOS on ARM

NixOS no tiene soporte oficial para dispositivos ARM32 (por ejemplo, armv6 y armv7l); sin embargo, para algunos de estos dispositivos puede existir soporte por parte de la comunidad.

Arquitecturas ARM de 64 bits

Main article: NixOS on ARM

Siempre que un dispositivo sea compatible con el proceso de arranque genérico de systemd, NixOS debería funcionar sin configuración adicional. Sin embargo, algunos dispositivos específicos con cargadores de arranque propietarios pueden presentar problemas al ejecutarlo.

Arquitecturas MIPS

Main article: NixOS on MIPS

En el pasado hubo soporte limitado para arquitecturas MIPS en NixOS, y aún pueden encontrarse vestigios de ese soporte en Nixpkgs. Sin embargo, actualmente no existe soporte oficial.

Arquitecturas RISC-V

Main article: RISC-V


NixOS no ofrece soporte oficial para dispositivos RISC-V. Sin embargo, algunos dispositivos pueden contar con soporte de la comunidad.

Uso

Configuración Declarativa

Una de las características distintivas de NixOS es su modelo de configuración declarativa, donde todo el estado del sistema, incluidos los paquetes instalados, los servicios del sistema y la configuración, se describe en archivos de configuración. El archivo principal suele estar ubicado en /etc/nixos/configuration.nix.

Los cambios en la configuración se aplican de forma atómica mediante nixos-rebuild switch, garantizando la reproducibilidad y la posibilidad de volver a estados anteriores. La mayoría de los usuarios mantienen sus archivos de configuración en un sistema de control de versiones, lo que permite configuraciones del sistema coherentes y portables.

Estas deficiencias suelen corregirse posteriormente, si es que se corrigen, mediante soluciones de gestión de configuración como Puppet, Ansible o Chef. Estas herramientas sincronizan la configuración del sistema con una descripción del estado esperado. Sin embargo, estas herramientas no están integradas en el diseño del sistema operativo, sino que simplemente se superponen sobre él, y la configuración del sistema operativo aún puede variar cuando algún aspecto de dicha configuración no ha sido especificado en la descripción del estado esperado.

A diferencia de las distribuciones convencionales, donde la configuración del sistema suele estar repartida entre archivos editados manualmente, NixOS integra la gestión de configuración directamente en el sistema operativo. Esto elimina las inconcistencias de configuración y hace que NixOS sea especialmente adecuado para despliegues automatizados y reproducibles.

Para obtener más detalles y ejemplos sobre las configuraciones de NixOS, consulta Configuración del sistema NixOS.

Operaciones Imperativas

Aunque NixOS normalmente se configura de forma declarativa siempre que sea posible, hay algunos ámbitos en los que las operaciones imperativas siguen siendo necesarias, como la gestión del entorno de usuario y la gestión de canales.

Entornos de usuario

Además de la configuración declarativa del sistema, los usuarios de NixOS pueden utilizar el comando imperativo nix-env de Nix para instalar paquetes a nivel de usuario, sin modificar el estado del sistema. Consulta la sección de entornos de usuario del artículo sobre Nix para obtener más información.

Canales (Channels)

En el ecosistema Nix, los canales son un mecanismo para distribuir colecciones de paquetes de Nix y definiciones de módulos de NixOS. Un canal representa un conjunto seleccionado y versionado de definiciones de paquetes y configuraciones del sistema, que normalmente corresponde a una versión específica o al estado de desarrollo más reciente disponible.

Al utilizar canales, tu sistema o entorno de usuario obtiene definiciones de paquetes y opciones desde una URL que apunta a una instantánea (snapshot) específica de la colección de paquetes de Nix (Nixpkgs) y los módulos de NixOS asociados.

Para obtener más información sobre el uso y la configuración de los canales de Nix, consulta ramas de canales (channel branches).

Funcionamiento interno

Comparación con las distribuciones Linux tradicionales

Articulo principal: Nix vs. Linux Standard Base

La principal diferencia entre NixOS y otras distribuciones Linux es que NixOS no sigue la estructura del sistema de archivos de la Linux Standard Base. En los sistemas compatibles con LSB, el software se almacena en /{,usr}/{bin,lib,share} y la configuración generalmente se almacena en /etc. Los binarios del software están disponibles en el entorno de usuario si se ubican en uno de los directorios /bin definidos por la LSB. Cuando un programa hace referencia a bibliotecas dinámicas, buscará las bibliotecas necesarias en las carpetas de la LSB (/lib, /usr/lib).

En NixOS, sin embargo, /lib y /usr/lib no existen. En su lugar, todas las bibliotecas del sistema, binarios, kernels, firmware y archivos de configuración se colocan en el Nix store. Los archivos y directorios dentro de /nix/store reciben nombres basados en hashes de la información que describe los datos construidos. Todos los archivos y directorios almacenados en el Nix store son inmutables. /bin y /usr/bin están prácticamente ausentes: solo contienen /bin/sh y /usr/bin/env, respectivamente, para proporcionar compatibilidad mínima con scripts existentes que utilizan líneas shebang. Los entornos a nivel de usuario se implementan mediante una gran cantidad de enlaces simbólicos a todos los paquetes necesarios y archivos auxiliares. Estos entornos se denominan perfiles y se almacenan en /nix/var/nix/profiles, teniendo cada usuario sus propios perfiles. La estructuración del sistema de esta manera es lo que permite a NixOS obtener sus ventajas principales frente a las distribuciones Linux convencionales, como la atomicidad y la compatibilidad con retrocesos.

Uso de Nix store

Gran parte de la confusión entre los nuevos usuarios surge del hecho de que la configuración se almacena en el árbol de solo lectura /nix/store junto con todos los paquetes instalados. Esto hace imposible editar manualmente la configuración del sistema; todos los cambios de configuración deben realizarse modificando el archivo /etc/nixos/configuration.nix y ejecutando nixos-rebuild switch. NixOS proporciona el sistema de módulos para editar todas las configuraciones necesarias. Los usuarios deberían utilizar primero la herramienta de búsqueda de opciones para comprobar si existe la opción que necesitan antes de intentar añadir manualmente archivos o configuración mediante características de bajo nivel de NixOS, como los scripts de activación.

La pureza del sistema permite mantener la configuración del sistema en un lugar centralizado, sin necesidad de editar múltiples archivos. Esta configuración puede distribuirse o mantenerse bajo control de versiones según sea necesario. También proporciona determinismo; si se proporcionan las mismas entradas, la misma versión de Nixpkgs y el mismo archivo /etc/nixos/configuration.nix, se obtiene exactamente el mismo estado del sistema.

Modulos

El sistema de módulos de NixOS, definido en Nixpkgs, proporciona las herramientas necesarias para personalizar la configuración del sistema operativo. Se utiliza para habilitar y configurar servicios como nginx, habilitar firmware y personalizar el kernel.

Por lo general, toda la configuración de los módulos se realiza añadiendo opciones al archivo /etc/nixos/configuration.nix. La mayoría de los ejemplos de la wiki muestran cómo utilizar este archivo para configurar el sistema operativo.

El sistema de módulos de NixOS implementa un sistema de tipos que permite la verificación de tipos de las opciones configuradas. También permite combinar automáticamente opciones definidas en múltiples lugares. Esto permite distribuir la configuración en varios archivos, y las opciones establecidas en todos ellos se combinarán entre sí:

❄︎ /etc/nixos/configuration.nix
{
  imports = [
    ./basic-webserver.nix
    ./blog.nix
  ];
}
❄︎ /etc/nixos/basic-webserver.nix
{
  services.nginx.enable = true;
  services.nginx.virtualHosts."example.com" = {
    root = "/var/www/example.com";
  };
}
❄︎ /etc/nixos/blog.nix
{
  services.nginx.virtualHosts."blog.example.com" = {
    root = "/var/www/blog.example.com";
  };
}

Para obtener más detalles, consulta la sección Módulos del Manual de NixOS.

Generaciones

Cada vez que se reconstruye el estado del sistema mediante nixos-rebuild switch, se crea una nueva generación. Puedes volver a una generación anterior en cualquier momento, lo que resulta útil si un cambio en la configuración (o una actualización del sistema) causa problemas.

Puedes volver atrás (roll back) mediante:

$ nix-env --rollback               # roll back a user environment
$ nixos-rebuild switch --rollback  # roll back a system environment

NixOS también incluye entradas de generaciones anteriores en el menú del cargador de arranque, por lo que, como último recurso, siempre puedes volver a una configuración anterior simplemente reiniciando. Para establecer la generación actualmente arrancada como predeterminada, ejecuta:

$ /run/current-system/bin/switch-to-configuration boot

Como NixOS conserva generaciones anteriores del estado del sistema para permitir retrocesos, las versiones antiguas de los paquetes no se eliminan inmediatamente después de una actualización. Puedes eliminar generaciones antiguas manualmente:

$ # delete generations older than 30 days
$ nix-collect-garbage --delete-older-than 30d

$ # delete ALL previous generations - you can no longer rollback after running this
$ nix-collect-garbage -d

Listar generaciones:

$ # as root
$ nix-env --list-generations --profile /nix/var/nix/profiles/system

Cambiar entre generaciones:

$ # as root switch to generation 204
$ nix-env --profile /nix/var/nix/profiles/system --switch-generation 204

Eliminar generacion(es) dañada(s):

$ # as root delete broken generations 205 and 206 
$ nix-env --profile /nix/var/nix/profiles/system --delete-generations 205 206

Puedes configurar la "recolección de basura" (garbage collection GC) automática definiendo las opciones de nix.gc en /etc/nixos/configuration.nix. Esto es recomendable, ya que ayuda a mantener reducido el tamaño del Nix store.

Véase también