Nix es un sistema de gestión de paquetes y configuración que permite definir entornos de desarrollo de forma declarativa y reproducible. Al combinar Nix con WSL2, se obtiene lo mejor de ambos mundos: control total sobre las dependencias y entornos aislados, con la eficiencia de Linux corriendo dentro de Windows.
Por qué usar Nix en WSL2 Link to heading
- Configuración de entornos por proyecto
- Reproducibilidad exacta entre máquinas y desarrolladores
- Aislamiento sin necesidad de contenedores
- Compatibilidad total con herramientas Linux
Esto es especialmente útil en equipos, en proyectos de investigación, o en flujos DevOps que exigen entornos estables.
Instalar Nix en WSL2 Link to heading
Desde una terminal en Ubuntu o Debian:
sh <(curl -L https://nixos.org/nix/install)
Al finalizar, activar el entorno:
. ~/.nix-profile/etc/profile.d/nix.sh
Verificar:
nix-env --version
Crear entorno declarativo con shell.nix
Link to heading
Ejemplo: entorno Python con NumPy y Pandas.
# shell.nix
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
buildInputs = [ pkgs.python310 pkgs.python310Packages.numpy pkgs.python310Packages.pandas ];
}
Activar el entorno:
nix-shell
Una vez dentro, las herramientas estarán disponibles sin afectar el sistema.
Caso práctico: entorno para ciencia de datos Link to heading
# shell.nix
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
name = "data-env";
buildInputs = [
pkgs.python310
pkgs.python310Packages.numpy
pkgs.python310Packages.scipy
pkgs.python310Packages.matplotlib
pkgs.python310Packages.jupyter
];
}
Iniciar:
nix-shell
jupyter notebook
Esto lanza un entorno Jupyter funcional desde WSL2.
Buenas prácticas Link to heading
- Incluir
shell.nix
en control de versiones - Usar
direnv
para cargar entornos automáticamente - Combinar con
lorri
onix-direnv
para flujos más eficientes - Actualizar paquetes vía
nix-channel --update
Conclusión Link to heading
Nix permite declarar entornos portables y estables para desarrollo, ciencia de datos o DevOps. Junto a WSL2, ofrece una solución poderosa para definir, compartir y automatizar configuraciones sin depender de contenedores o configuraciones globales, todo desde un entorno Linux dentro de Windows.