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
- 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
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
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
# 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
- 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
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.
Ver también
- Construcción de un asistente contextual para escritorio usando IA local con acceso al sistema
- Integración de inferencia local ONNX con Windows ML en apps modernas
- Integración con servicios locales vía App Services y extensión de funcionalidades entre apps
- Implementación de Background Tasks persistentes en apps modernas
- Empaquetado de apps modernas con MSIX y configuración avanzada del manifiesto