Mi experiencia con Nix y NixOS

[!NOTE]
Mi intención con este post no es hacer una introducción a Nix o NixOS, sino compartir mi experiencia personal con estas herramientas y, tal vez, motivar a alguien a probarlas.

Antes de explicar mi experiencia con Nix y NixOS, voy a explicar mi perfil de usuario de Linux.

Yo me considero un usuario avanzado de Linux, me manejo por la terminal como si fuera mi casa. Llevo más de 6 años usando Linux como sistema operativo principal, de los cuales la mayoría han sido con Arch Linux. También he estado en Fedora, Void Linux y Gentoo, pero siempre volvía a Arch Linux. Incluso llegué a leer los primeros capítulos de Linux From Scratch.

Siempre volvía a Arch Linux, principalmente por la flexibilidad que me daba al tener acceso a todo el software actualizado en AUR. Esa libertad y control eran difíciles de igualar en otras distros.

Claramente, me gusta Linux y siempre he sido alguien que disfruta probar cosas nuevas y aprender en el proceso. Ya hace tiempo que leía sobre Nix y NixOS, pero nunca me había animado a probarlo. Hasta que vi los directos de Alpha Developer hablando de sobre Nix con Neovim.

Mi experiencia con Nix

Primero empecé a probar Nix con Neovim, ya que me parecía una buena forma de empezar a probar Nix sin tener que instalar el sistema operativo, y ahi es cuando me encanto Nix.

Soy un Backend Developer con Typescript y Node, no necesito mucha cosa, con docker puedo trabajar perfectamente. El problema viene cuando la programación se convierte en mi hobby, y programo en cosas tan variadas como Rust, C, Zig, OCaml, y muchas mas. Y para eso necesito tener muchas cosas instaladas en mi sistema y plugins. Antes usaba Lazy para manejar los plugins de Neovim. Pero seguía teniendo que instalar muchas dependencias en mi sistema. Ahi es cuando Nix me soluciono la vida. El poder replicar mi configuración solo usando un comando como:

nix run github:BasileusErwin/nixvim#{perfil}

Con mi configuración, ya no tengo que instalar tantas dependencias en mi sistema y poder programar en cualquier lado, que tenga nix, claro.

Además, utilizo direnv y nix-shell para asegurarme de que cada proyecto tenga sus propias dependencias acotadas. Por ejemplo, mi directorio de trabajo está dividido en ~/dev/work y ~/dev/personal, cada uno con su propio archivo .envrc y shell.nix. direnv se encarga de cargar automáticamente las configuraciones necesarias cuando entro a cualquier subdirectorio, asegurándome de que siempre tengo las herramientas correctas para cada proyecto, sin ensuciar mi sistema base.

Mi experiencia con NixOS

Llevó más o menos una semana probando en máquina virtual NixOS y ya un mes desde que pase mi configuración de Neovim a Nix.

Mis pruebas con NixOS en la VM han sido configurando home manager para poder tener tres perfiles de NixOS, uno para la máquina virtual que está usando, otro para mi Thinkpad y otro para mi servidor local (Donde de momento solo tengo nix instalado en armbian).

Lo que más me ha sorprendido de Nix y NixOS es el nivel de control y claridad que el enfoque declarativo me ofrece. Puedo versionar y gestionar cada aspecto de mi configuración, saber exactamente qué se está instalando y en qué versión. Todo está documentado y replicable, lo que me da una paz mental increíble al moverme entre diferentes máquinas o entornos.

La instalación de NixOS en mi Thinkpad T14 fue sorprendentemente rápida. En unos 15 minutos, ya tenía todo configurado con mis dotfiles, algo que en otras distros como Arch Linux me tomaba cerca de media hora con mis scripts automatizados. Este nivel de eficiencia me dejó impresionado.

El poder centralizar mis configuraciones de diferentes Linux en un repo y un sistema de dotfiles me está gustando mucho.

Ahora, con Nix y NixOS, he simplificado enormemente la administración de mis entornos de desarrollo y servidores. El enfoque declarativo me da total control sobre lo que sucede en mi sistema, y tener mis configuraciones centralizadas me permite moverme entre máquinas sin ningún dolor de cabeza. Para mí, esta es la flexibilidad y el control que siempre quise en un sistema Linux.

Aún hay cosas que tengo que solucionar, como integrar mis dotfiles antiguos con NixOS, manejar los casos bordes con los monitores, y varias cosas más, que poco a poco me gustaría ir solucionando.

Tal vez no he usado el sistema lo suficiente, pero lo poco que lo use me ha encantado.

Si estás buscando una forma eficiente y flexible de gestionar tus configuraciones y entornos de desarrollo, definitivamente vale la pena darle una oportunidad a Nix y NixOS. Ha cambiado por completo la forma en que administro mis proyectos, y creo que podría hacer lo mismo por ti.

Mis repos con las configuraciones de Nix son:

Link de Nix:

2 Me gusta

NixOS es una de esas distros que se deben probar en algún momento, aunque no sea en donde te quedes al final.