Agent Skills: Nix

Runs packages temporarily, creates isolated shell environments, and evaluates Nix expressions. Use when executing tools without installing, debugging derivations, or working with nixpkgs.

UncategorizedID: knoopx/pi/nix

Install this agent skill to your local

pnpm dlx add-skill https://github.com/knoopx/pi/tree/HEAD/agent/skills/tools/nix

Skill Files

Browse the full folder contents for nix.

Download Skill

Loading file tree…

agent/skills/tools/nix/SKILL.md

Skill Metadata

Name
nix
Description
"Runs packages temporarily, creates isolated shell environments, and evaluates Nix expressions. Use when executing tools without installing, debugging derivations, or working with nixpkgs."

Nix

Package manager and functional language for reproducible environments. Run any tool once without installing it permanently.

Running Packages

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'.

Shell Environments

Create a temporary shell with specific tools:

nix shell nixpkgs#git nixpkgs#vim --command git --version

Evaluating Expressions

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

Searching Packages

nix search nixpkgs python3           # Search by name or description

Formatting Nix Files

nix fmt                              # Format current directory
nix fmt -- --check                   # Check formatting without changes

Hashes

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
}

Shebang Scripts

Use Nix as a script interpreter:

#!/usr/bin/env nix
#! nix shell nixpkgs#bash nixpkgs#curl --command bash
curl -s https://example.com

Rules

  • Use nix log <derivation> to debug broken builds
  • Use nix why-depends to trace dependency chains
  • Add --no-substitute to force local build when cache is bad
  • Use shebang scripts (#! nix shell ... --command) for inline nix scripts