comma: el comando mas vago (y util) de Nix


20 de febrero de 2026

El problema con nix run

En el post anterior hablamos de nix run: ejecutar cualquier programa sin instalarlo. Genial. Pero tiene un problema: necesitas saber el nombre exacto del paquete.

Quieres convertir una imagen? Sabes que el comando es convert, pero el paquete se llama imagemagick. Quieres un servidor web rapido? El comando es python3 -m http.server, pero el paquete es python3. Quieres comprimir un video? El comando es ffmpeg, y por suerte el paquete tambien, pero no siempre tienes tanta suerte.

En nixpkgs hay mas de 100.000 paquetes. Saber que paquete proporciona que comando no es trivial.

comma: el atajo definitivo

Comma es un programa que se instala como , (si, una coma). Lo que hace es magico:

# No tienes cowsay instalado? Da igual
, cowsay 'hola mundo'

# No sabes que paquete tiene convert?
, convert imagen.png imagen.jpg

# Necesitas ffprobe pero no recuerdas si es ffmpeg o libav?
, ffprobe video.mp4

Comma busca automaticamente que paquete de nixpkgs proporciona ese comando, lo descarga, y lo ejecuta. Todo en un solo paso. Sin instalar nada permanentemente.

Como funciona por dentro

Comma usa nix-index, una base de datos que mapea comandos a paquetes. Cuando escribes , cowsay:

  1. Comma busca en la base de datos de nix-index: "que paquete proporciona el binario cowsay?"
  2. Encuentra que cowsay esta en el paquete nixpkgs#cowsay
  3. Ejecuta nix run nixpkgs#cowsay -- 'hola mundo' automaticamente

Si hay varios paquetes que proporcionan el mismo comando, te pregunta cual quieres usar.

Instalacion

Si usas NixOS con flakes, una linea en tu configuracion:

# En tu flake.nix, importa nix-index-database y habilita comma
programs.nix-index-database.comma.enable = true;

Si usas home-manager standalone (en Ubuntu, Fedora, etc.):

# En tu home.nix
imports = [ inputs.nix-index-database.homeModules.nix-index ];
programs.nix-index-database.comma.enable = true;

Necesitas anadir nix-index-database como input en tu flake:

# En flake.nix inputs
nix-index-database = {
  url = "github:nix-community/nix-index-database";
  inputs.nixpkgs.follows = "nixpkgs";
};

La base de datos se descarga precompilada (no tienes que indexar nada tu), se actualiza automaticamente, y ocupa poco espacio.

El bonus: command-not-found mejorado

Cuando habilitas nix-index-database, ademas de comma obtienes un command-not-found mejorado. Si escribes un comando que no existe:

$ cowsay hola
cowsay: command not found

The program cowsay is provided by the following packages:
  - nixpkgs#cowsay (cowsay-3.7.0)

You can run it with:
  , cowsay hola

En vez del tipico "command not found" seco, te dice exactamente que paquete lo tiene y como ejecutarlo con comma. Es como tener un asistente en el terminal.

Ejemplos reales

# Necesitas ver el tamano de un directorio bonito
, ncdu /home

# Quieres un monitor de red rapido
, bmon

# Editar un JSON desde el terminal
, fx data.json

# Descargar un video de YouTube (sin instalar yt-dlp)
, yt-dlp 'https://youtube.com/watch?v=...'

# Hacer un benchmark de disco
, fio --name=test --rw=read --bs=4k --runtime=10

# Escanear puertos (sin instalar nmap)
, nmap -sT localhost

Cada uno de estos comandos: sin instalar nada, sin buscar el paquete, sin limpiar despues. Escribes , delante y funciona.

La diferencia con nix run

nix runcomma (,)
Necesitas saber el paqueteSiNo
Sintaxisnix run nixpkgs#paquete -- args, comando args
Multiples sourcesSi (github:, ramas, etc.)Solo nixpkgs
Velocidad primera vezIgualIgual + lookup en DB
Velocidad segunda vezInstantaneo (cache)Instantaneo (cache)

En resumen: nix run cuando sabes exactamente que paquete y de donde. Comma cuando solo sabes el comando y quieres que funcione ya.

Por que esto importa

Comma elimina la ultima friccion que tenia Nix. Ya no necesitas saber como se llama el paquete. No necesitas buscar en search.nixos.org. No necesitas recordar la sintaxis de nix run. Solo necesitas saber el comando que quieres ejecutar.

Una coma. Eso es todo lo que separa "no lo tengo instalado" de "funciona".

Comparte este post:

Es tu post

Estas seguro? Esto no se puede deshacer.

Comentarios (0)

Sin comentarios todavia. Se el primero!

Deja un comentario