Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Install Nix in the Claude Code web sandbox (the cloud environment) as a general-purpose package installer, then install packages from the Nix binary cache with no GitHub access. Use whenever a web session needs a tool that isn't preinstalled and isn't in a language registry (npm/pypi/crates/go) — Neovim, ripgrep, a compiler, anything in nixpkgs. Installs nix-bin via apt, configures single-user mode, and installs packages via nix-env against the nixpkgs channel tarball. Web-sandbox only.
.claude/skills/fredrikaverpil-nix-install/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-16 | ✗→✓ | ▲ Improved | -33% | 0% |
| case-01 | ✗→✓ | ▲ Improved | -28% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 638% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 20% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 40% | 0% |
Nix is the most general way to install tools in the Claude Code web sandbox. The sandbox network is locked to package registries plus this session's GitHub repos, but two facts make Nix work anyway:
apt reaches the main Ubuntu archive, and nix-bin is in it.cache.nixos.org and channels.nixos.org are reachable through the proxy, soNix substitutes prebuilt binaries and pulls the nixpkgs expression without any GitHub access.
Scope: web sandbox only (CLAUDE_CODE_REMOTE=true). On a real machine Nix is already the system package manager — do not run this there.
bashcurl -sSI -o /dev/null -w "cache: %{http_code}\n" https://cache.nixos.org curl -sSI -o /dev/null -w "channels: %{http_code}\n" https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz
200/302 on both → proceed. If either is blocked, the environment's network policy is stricter than default; widen it (claude.ai environment editor → network / allowed hosts) to include cache.nixos.org and channels.nixos.org.
Refresh the apt index, then install nix-bin:
bashapt-get update apt-get install -y --no-install-recommends nix-bin # Single-user (rootless-build) mode: the sandbox has no 'nixbld' build-users # group, so disable multi-user builds or nix-env operations fail. mkdir -p /etc/nix grep -q '^build-users-group' /etc/nix/nix.conf 2>/dev/null \ || echo 'build-users-group =' >> /etc/nix/nix.conf nix --version
Use classic nix-env against the channel tarball. Do not use flakes / nix run nixpkgs#pkg here: the nixpkgs flake reference resolves to github.com/NixOS/nixpkgs, which the proxy blocks. The channel tarball is served from the reachable channels.nixos.org, so this needs no GitHub:
bashTARBALL=https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz nix-env -f "$TARBALL" -iA ripgrep # attribute name = nixpkgs attr path export PATH="$HOME/.nix-profile/bin:$PATH" rg --version
Finding an attribute name quickly — query the single attribute, not all of nixpkgs (a bare nix-env -qaP evaluates everything and is very slow):
bashnix-env -f "$TARBALL" -qaP -A ripgrep # -> "ripgrep ripgrep-14.x"
Each Bash call is a fresh shell whose environment is snapshotted at session start, and ~/.bashrc is not re-run per call (its non-interactive return guard exits early), so appending an export there does not put the tool on PATH in later calls. Either call the binary by its full path:
bash~/.nix-profile/bin/rg --version
or prepend the profile to PATH at the start of any call that needs it:
bashexport PATH="$HOME/.nix-profile/bin:$PATH" rg --version
is committed. Re-run in a fresh environment.
nixpkgs-unstable is a moving target. The version you get today may differtomorrow. Pin a specific channel (e.g. a nixos-XX.YY tarball URL) if you need reproducibility.
github.com at build time (flake inputs, fetchFromGitHub on a cache miss) is subject to the proxy's GitHub scoping. Prebuilt substitutes from cache.nixos.org avoid this for anything already cached — which is the common case for nixpkgs packages.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-16 | fail→pass | 14,106 | 3,329 | -76% | 1 | 1 | 0% | 2,457 | 1,651 | -33% | 0 | 0 | — |
case-01 | fail→pass | 13,096 | 4,333 | -67% | 1 | 1 | 0% | 2,657 | 1,905 | -28% | 0 | 0 | — |
case-02 | fail→pass | 5,118 | 3,755 | -27% | 1 | 1 | 0% | 245 | 1,808 | +638% | 0 | 0 | — |
case-03 | fail→pass | 9,556 | 6,875 | -28% | 1 | 1 | 0% | 1,728 | 2,082 | +20% | 0 | 0 | — |
case-04 | fail→pass | 9,197 | 6,812 | -26% | 1 | 1 | 0% | 1,576 | 2,206 | +40% | 0 | 0 | — |
case-05 | fail→pass | 12,341 | 7,667 | -38% | 1 | 1 | 0% | 1,827 | 2,344 | +28% | 0 | 0 | — |
case-06 | fail→pass | 14,141 | 12,066 | -15% | 1 | 1 | 0% | 2,401 | 3,192 | +33% | 0 | 0 | — |
case-07 | pass→pass | 5,521 | 2,592 | -53% | 1 | 1 | 0% | 895 | 1,460 | +63% | 0 | 0 | — |
case-08 | fail→pass | 7,036 | 3,137 | -55% | 1 | 1 | 0% | 1,278 | 1,711 | +34% | 0 | 0 | — |
case-09 | pass→pass | 5,015 | 1,318 | -74% | 1 | 1 | 0% | 806 | 1,290 | +60% | 0 | 0 | — |
case-10 | fail→pass | 8,483 | 5,537 | -35% | 1 | 1 | 0% | 1,429 | 2,111 | +48% | 0 | 0 | — |
case-11 | fail→pass | 9,293 | 4,341 | -53% | 1 | 1 | 0% | 1,632 | 1,902 | +17% | 0 | 0 | — |
case-12 | fail→pass | 8,818 | 4,356 | -51% | 1 | 1 | 0% | 1,604 | 1,820 | +13% | 0 | 0 | — |
case-13 | pass→pass | 10,376 | 4,909 | -53% | 1 | 1 | 0% | 1,789 | 1,896 | +6% | 0 | 0 | — |
case-14 | fail→pass | 12,846 | 9,321 | -27% | 1 | 1 | 0% | 2,152 | 2,638 | +23% | 0 | 0 | — |
case-15 | fail→pass | 7,806 | 4,401 | -44% | 1 | 1 | 0% | 1,371 | 1,934 | +41% | 0 | 0 | — |
case-17 | fail→pass | 6,159 | 5,086 | -17% | 1 | 1 | 0% | 1,074 | 2,033 | +89% | 0 | 0 | — |
case-18 | fail→pass | 14,128 | 4,820 | -66% | 1 | 1 | 0% | 2,507 | 1,703 | -32% | 0 | 0 | — |
case-19 | pass→pass | 11,497 | 3,301 | -71% | 1 | 1 | 0% | 1,549 | 1,575 | +2% | 0 | 0 | — |
case-20 | fail→pass | 25,785 | 3,870 | -85% | 1 | 1 | 0% | 2,087 | 1,707 | -18% | 0 | 0 | — |
case-21 | fail→pass | 12,254 | 6,081 | -50% | 1 | 1 | 0% | 1,808 | 2,074 | +15% | 0 | 0 | — |
case-22 | pass→pass | 8,945 | 5,813 | -35% | 1 | 1 | 0% | 1,502 | 1,934 | +29% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +77 percentage points is the difference between those two pass rates over the 21 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.