agent/skills/tools/nix/SKILL.md
Runs packages temporarily, creates isolated shell environments, and evaluates Nix expressions. Use when executing tools without installing, debugging derivations, or working with nixpkgs.
npx skillsauth add knoopx/pi nixInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Package manager and functional language for reproducible environments. Run any tool once without installing it permanently.
Execute a package from nixpkgs directly:
nix run nixpkgs#cowsay -- "Hello!" # Run with arguments
nix run nixpkgs#hello # Simple command
For long-running services, wrap in tmux: tmux new -d 'nix run nixpkgs#some-server'.
Create a temporary shell with specific tools:
nix shell nixpkgs#git nixpkgs#vim --command git --version
Debug and inspect Nix expressions in headless environments:
nix eval --expr '1 + 2' # Simple expression
nix eval nixpkgs#hello.name # Inspect an attribute
nix eval --file ./default.nix # Evaluate a local file
nix eval --expr 'builtins.attrNames (import <nixpkgs> {})' # List keys
nix search nixpkgs python3 # Search by name or description
nix fmt # Format current directory
nix fmt -- --check # Check formatting without changes
Never pre-compute hashes with nix-prefetch-url, nix hash (file, path, convert, etc.), or nix-hash. These commands are blocked.
Set the hash to "" in your fetchSource and let the build fail with a got: error that reports the correct hash:
fetchFromGitHub {
owner = "nixos";
repo = "nixpkgs";
rev = "abc123";
hash = ""; # let the build tell you the correct hash
}
Use Nix as a script interpreter:
#!/usr/bin/env nix
#! nix shell nixpkgs#bash nixpkgs#curl --command bash
curl -s https://example.com
nix log <derivation> to debug broken buildsnix why-depends to trace dependency chains--no-substitute to force local build when cache is bad#! nix shell ... --command) for inline nix scriptstools
Inform the user what is happening — skip passive lookups
development
Renders markdown to self-contained HTML with a custom dark stylesheet and opens in browser. Use when previewing markdown documents, generating styled HTML from README or report files.
testing
Programmatic hunk selection for Jujutsu — split, commit, or squash specific hunks without interactive prompts. Use when making partial commits or selective squashes.
content-media
Manage version control with Jujutsu (jj) — no staging area, immediate changes, smart rebasing. Use when navigating history, squashing, or pushing to Git remotes.