nix run: prueba cualquier programa sin instalarlo
El problema de siempre
Quieres probar un programa. En Ubuntu haces apt install programa. En Fedora dnf install programa. En Arch pacman -S programa. Y si no te gusta, a desinstalar. Y a veces la desinstalacion deja basura, dependencias huerfanas, configs sueltas.
O peor: el programa que quieres no esta en los repos de tu distro. O esta, pero en una version antigua. Y te toca andar con PPAs, flatpaks, snaps, appimages, compilar desde source...
nix run: ejecutar sin instalar
nix run descarga un programa, lo ejecuta, y cuando cierras no queda nada instalado en tu sistema. Nada. Cero side effects.
# Probar htop sin instalarlo
nix run nixpkgs#htop
# Probar una version especifica de nodejs
nix run nixpkgs#nodejs_22
# Probar un editor que nunca has usado
nix run nixpkgs#helixEso es todo. No hace falta ser usuario de NixOS. Solo necesitas tener Nix instalado (funciona en Ubuntu, Fedora, macOS, lo que sea).
De donde salen los programas
nixpkgs es el repositorio de paquetes de Nix. Tiene mas de 100.000 paquetes, probablemente el repo mas grande que existe. Cuando escribes nixpkgs#htop le estas diciendo: del repositorio nixpkgs, dame el paquete htop.
Pero no estas limitado a nixpkgs. Puedes ejecutar desde cualquier repositorio de GitHub que sea un flake de Nix:
# Desde un repo de GitHub directamente
nix run github:usuario/repo
# Desde una rama especifica
nix run github:NixOS/nixpkgs/master#programa
# Desde un commit concreto
nix run github:NixOS/nixpkgs/abc123#programaEl truco de las versiones
Aqui es donde se pone interesante. nixpkgs tiene varias ramas:
- nixpkgs (sin especificar): usa tu canal por defecto, normalmente nixos-unstable
- nixpkgs/nixos-unstable: paquetes recientes, actualizados cada pocos dias
- nixpkgs/master: lo ultimo de lo ultimo, puede no estar testeado
- nixpkgs/nixos-24.11: version estable, paquetes mas conservadores
Ejemplo real: Antigravity (el IDE de Google) esta en la version 1.16.5 en nixpkgs unstable, pero en master ya hay 1.18.3. Si quieres la ultima:
# Version estable (1.16.5)
nix run nixpkgs#antigravity
# Bleeding edge (1.18.3)
nix run github:NixOS/nixpkgs/master#antigravityY si alguien mantiene un flake dedicado con la version mas reciente:
# Desde un flake externo
nix run github:jacopone/antigravity-nixBuscar paquetes
No sabes como se llama el paquete? Dos opciones:
# Buscar en la linea de comandos
nix search nixpkgs firefox
# O en la web (mas rapido)
# https://search.nixos.org/packagesPasar argumentos al programa
Todo lo que va despues de -- se pasa al programa:
# Ejecutar python con un script
nix run nixpkgs#python3 -- script.py
# Ejecutar ffmpeg con argumentos
nix run nixpkgs#ffmpeg -- -i video.mp4 -c:v libx264 output.mp4
# Ejecutar curl
nix run nixpkgs#curl -- -s https://api.example.comPara que sirve en la practica
- Probar herramientas: quieres ver si
ripgrepes mejor quegrep?nix run nixpkgs#ripgrep -- patron archivo - Versiones especificas: tu distro tiene Node 18 pero necesitas Node 22 para un proyecto?
nix run nixpkgs#nodejs_22 -- --version - Maquinas ajenas: estas en el servidor de un companero y no quieres instalar nada? Si tiene Nix,
nix run - Demos rapidas: quieres ensenarle algo a alguien sin montar un entorno?
nix run - CI/CD: en un pipeline quieres usar una herramienta puntual sin anadirla a la imagen
La cache lo hace rapido
La primera vez que ejecutas nix run nixpkgs#htop, Nix descarga el paquete. La segunda vez es instantaneo porque queda en la Nix store (/nix/store/). No esta instalado en tu PATH, pero esta cacheado. Si quieres limpiar espacio: nix-collect-garbage.
nix shell: lo mismo pero sin ejecutar
Si en vez de ejecutar el programa quieres tenerlo disponible en tu shell actual:
# Abre un shell con htop y jq disponibles
nix shell nixpkgs#htop nixpkgs#jq
# Ahora puedes usar ambos
htop
cat data.json | jq '.campo'
# Cuando cierras el shell, desaparecenUtil cuando necesitas varias herramientas juntas para una tarea puntual.
Resumen
nix run convierte cualquier paquete de los 100.000+ de nixpkgs en algo que puedes probar con un comando, sin instalar nada, sin tocar tu sistema, sin dejar basura. Funciona en cualquier Linux y macOS. Solo necesitas Nix.
Es probablemente la feature menos conocida y mas util del ecosistema Nix.
Comentarios (0)
Sin comentarios todavia. Se el primero!
Deja un comentario