agent/skills/tools/nix-flake/SKILL.md
Creates reproducible builds, manages flake inputs, defines devShells, and builds packages with flake.nix. Use when initializing Nix projects, locking dependencies, or running nix build/develop commands.
npx skillsauth add knoopx/pi nix-flakeInstall 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.
Modern Nix project management with hermeticity through flake.lock. Every dependency is locked to a specific revision for reproducibility.
Initialize a new flake:
nix flake init # Basic flake in current directory
nix flake new hello -t templates#hello # From template
Manage dependencies:
nix flake update # Update all inputs in flake.lock
nix flake update nixpkgs # Update specific input only
nix flake lock # Lock missing entries without updating
Always prefix local paths with path: to include untracked files:
nix build path:. # Build default package
nix build path:.#packageName # Build a specific output
nix run path:. # Run the default app
nix run path:.#appName # Run a specific app
nix run github:numtide/treefmt # Run from a remote flake
Run commands inside a devShell:
nix develop path:. --command make build
nix develop path:. --command env # Check the environment
The --command flag is required in headless environments to avoid interactive mode.
nix flake show path:. # List all outputs
nix flake metadata path:. # See inputs and revisions
nix eval path:.#packages.x86_64-linux.default.name # Evaluate a specific output
{
description = "A basic flake";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
};
outputs = { self, nixpkgs }:
let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
in {
packages.${system}.default = pkgs.hello;
devShells.${system}.default = pkgs.mkShell {
buildInputs = [ pkgs.git pkgs.vim ];
};
};
}
flake.lock for reproducibilitypath: prefix when building local flakes to include untracked files--command with nix develop in scripts and headless environmentstools
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.