skills/nix-profile/SKILL.md
Manage Nix profiles using the modern `nix profile` command (experimental, replaces `nix-env`). Use when installing, removing, upgrading, or managing packages with Nix flakes.
npx skillsauth add meowgorithm/dotfiles nix-profileInstall 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.
Manage Nix profiles using the modern nix profile command (experimental,
replaces nix-env).
nix profile is the modern, flake-native way to manage Nix profiles. It
replaces the older nix-env command with a more intuitive interface built
around flakes.
Warning: Once you use nix profile, you cannot use nix-env on the same
profile without first deleting it.
Profiles are stored at:
$XDG_STATE_HOME/nix/profiles/profile (default for regular users)$NIX_STATE_DIR/profiles/per-user/root/profile (for root)The active profile is symlinked at:
~/.nix-profile (traditional)$XDG_STATE_HOME/nix/profile (if use-xdg-base-directories is enabled)nix profile add nixpkgs#hello
nix profile add nixpkgs/release-23.11#hello
nix profile add nixpkgs/d73407e8e6002646acfdef0e39ace088bacc83da#hello
nix profile add nixpkgs#bash^man # specific output
Alias: nix profile install (same as add)
nix profile list
Shows:
nix profile remove hello # by name
nix profile remove --all # remove everything
nix profile remove --regex '.*vim.*' # by regex
nix profile remove /nix/store/...-hello # by store path
nix profile upgrade hello # upgrade specific package
nix profile upgrade --all # upgrade everything
nix profile upgrade --regex '.*vim.*' # upgrade matching packages
Note: Only works with unlocked flake references (e.g., nixpkgs#hello). Locked references (full git rev) won't upgrade.
nix profile history
Shows changes between profile versions (additions, removals, upgrades).
nix profile rollback # roll back to previous version
nix profile rollback --to 510 # roll back to specific version
nix profile diff-closures
Shows detailed differences between profile versions including all dependencies.
nix profile wipe-history # delete all non-current versions
nix profile wipe-history --older-than 30d # delete versions older than 30 days
nix profile wipe-history --dry-run # preview what would be deleted
--profile /path/to/profile - operate on a custom profile path--priority N - set package priority (lower = higher priority)--dry-run - show what would happen without making changesIf you need to go back to nix-env:
# Warning: this deletes all installed packages
rm -rf "${XDG_STATE_HOME:-$HOME/.local/state}/nix/profiles/profile"
| Feature | nix-env | nix profile |
| --------------- | --------------------------- | ------------------------------- |
| Flake-native | No | Yes |
| Profile format | manifest.nix | manifest.json |
| Install command | nix-env -iA nixpkgs.hello | nix profile add nixpkgs#hello |
| Remove by name | nix-env -e hello | nix profile remove hello |
| Upgrade | nix-env -u | nix profile upgrade --all |
| List | nix-env -q | nix profile list |
~/.local/state/nix/profiles/
├── profile -> profile-7-link # current profile symlink
├── profile-5-link -> /nix/store/...-profile # old version
├── profile-6-link -> /nix/store/...-profile # old version
└── profile-7-link -> /nix/store/...-profile # current version
Each profile version contains:
bin/ - symlinks to installed package binariesshare/ - shared filesmanifest.json - profile manifesttools
Convert video files (MP4, MOV, WebM, GIF, MKV, AVI, etc.) into animated WebP images with control over fps, size, quality, loop count, and trimming. Use when the user wants to turn a video or screen recording into an animated WebP, create a lightweight demo loop, replace an animated GIF with a smaller WebP, or produce a short clip as a .webp.
development
Convert images between formats (PNG, JPEG, WebP, GIF, BMP, TIFF, AVIF, HEIC) with quality control and resizing. Use when the user needs to convert images, batch process multiple files, optimize image sizes, or convert to modern formats like WebP or AVIF.
tools
Use charmtone colors via the `charmtone` CLI or Go API (`github.com/charmbracelet/x/exp/charmtone`). Triggers when the user asks to use charmtone colors, generate color palettes, get hex values, create CSS/SCSS/Vim color variables, or work with the CharmTone palette in Go code. Also triggers on mentions of specific charmtone color names (Cherry, Charple, Julep, Hazy, etc.) or requests to pick/choose/apply charmtone colors.
testing
Stage and commit changes with a Conventional Commits message. Invoke with /commit "optional scope hint". Inspects the diff, picks an appropriate type and scope, writes a concise message, and commits. Does not push.