Skip to main content
CLI & DevEnv

Nix Dev Shells

13 composable Nix development shells for reproducible tooling. Use when setting up dev environments, configuring .envrc files, or adding Nix shells to projects.

Nix Dev Shells

Overview

All development environments are managed through Nix Flakes, providing reproducible, composable toolsets per language. Enter any shell with:

nix develop .#<shell>

Available Shells

ShellPurpose
defaultBase tools only
nodeNode.js 22, npm/yarn/pnpm
pythonPython 3.12, uv
rustRust stable, cargo, clippy
goGo, golangci-lint
devopsTerraform, kubectl, Helm, k9s, AWS CLI 2
luaLua 5.4, luarocks, stylua
haskellGHC, cabal, stack
rubyRuby, bundler
schemeGuile Scheme
perlPerl with core modules
javaJava 21, Gradle/Maven
fullAll of the above combined

Base Tools (Every Shell)

Every shell includes a common set of CLI tools:

  • git, gh — version control and GitHub CLI
  • fzf — fuzzy finder
  • ripgrep — fast search
  • jq, yq — JSON/YAML processing
  • just — command runner
  • direnv — per-directory environment variables
  • chezmoi — dotfile management
  • tmux — terminal multiplexer
  • tree-sitter — incremental parsing
  • uv — Python package manager (available everywhere)

Usage with direnv

Projects use .envrc files with use flake .#<shell> to automatically activate the correct Nix shell when entering the directory:

# .envrc
use flake .#rust

Combined with direnv, this means the right tools are always available without manual shell activation.