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.

setup-devenv

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.