devenv-shell(1)

πŸ“¦
version 2.4.0 Β· 2 versions
, in nixpkgs unstable

πŸ’… NAME πŸ’…

okay so bestie, welcome to devenv-shell(1) β€” straight out of the General Commands Manual, no cap. This is the page that tells you how to activate the developer environment, and the whole vibe is documented over at https://devenv.sh/basics/ ✨


πŸ¦‹ SYNOPSIS πŸ¦‹

devenv shell [--user-config] [--from] [-o|--override-input]
[-O|--option] [-j|--max-jobs] [-u|--cores] [-s|--system] [-i|--impure]
[--no-impure] [--offline] [--nix-option] [--nix-debugger] [-c|--clean]
[-P|--profile] [--reload] [--no-reload] [--shell] [--eval-cache]
[--no-eval-cache] [--refresh-eval-cache] [--refresh-task-cache]
[--secretspec-provider] [--secretspec-profile] [--trace-to]
[-v|--verbose] [-q|--quiet] [--tui] [--no-tui] [-h|--help] [CMD] [ARGS]

like, that's the whole menu, and every single one of those flags is described below, so don't panic 🫢


🌸 DESCRIPTION 🌸

Activate the developer environment. That's the whole thing. The docs live at https://devenv.sh/basics/ and they're iconic, go read them πŸ’–


✨ OPTIONS ✨

  • --user-config <USER_CONFIG> β€” use this user configuration file instead of the XDG default. you're the main character now, you pick the config πŸ’…
  • [CMD] β€” the command to run inside the environment. omit it and you get an interactive shell instead 🐚
  • [ARGS] β€” extra arguments, passed literally. no vibes-based reinterpretation, they go through exactly as written πŸŽ€

🧚 INPUT OVERRIDES 🧚

  • --from <FROM> β€” where devenv.nix comes from.

it can be either a filesystem path (with the path: prefix) or a flake input reference. both are valid, both slay.

Examples:

--from github:cachix/devenv
--from github:cachix/devenv?dir=examples/simple
--from path:/absolute/path/to/project
--from path:./relative/path
  • -o, --override-input <NAME> <URI> β€” override inputs in devenv.yaml.

Examples:

--override-input nixpkgs github:NixOS/nixpkgs/nixos-unstable
--override-input nixpkgs path:/path/to/local/nixpkgs
  • -O, --option <OPTION:TYPE> <VALUE> β€” override configuration options with typed values.

OPTION must include a type, like <attribute>:<type>. supported types are: string, int, float, bool, path, pkg, pkgs.

list types (pkgs) append to existing values by default. add a ! suffix to replace instead: pkgs! β€” that bang is doing SO much work fr.

Examples:

--option languages.rust.channel:string beta
--option services.postgres.enable:bool true
--option languages.python.version:string 3.10
--option packages:pkgs "ncdu git"       (appends to packages)
--option packages:pkgs! "ncdu git"      (replaces all packages)

⭐ NIX OPTIONS ⭐

  • -j, --max-jobs <MAX_JOBS> β€” max number of Nix builds running at the same time. defaults to 1/4 of available CPU cores (minimum 1) πŸƒβ€β™€οΈ
  • -u, --cores <CORES> β€” how many CPU cores each build gets. defaults to available cores divided by max-jobs (minimum 1).
  • -s, --system <SYSTEM> β€” override the target system. defaults to the host system (e.g. aarch64-darwin, x86_64-linux) πŸ’»
  • -i, --impure β€” relax the hermeticity of the environment. chaotic good.
  • --no-impure β€” force a hermetic environment, overriding config. structured good.
  • --offline β€” disable substituters and consider all previously downloaded files up-to-date. airplane mode but make it nix ✈️
  • --nix-option <NAME> <VALUE> β€” pass additional options to nix commands.

these go directly to Nix using the --option flag. see man nix.conf for the full list of available options πŸ‘‘

Examples:

--nix-option sandbox false
--nix-option keep-outputs true
--nix-option system x86_64-darwin
  • --nix-debugger β€” enter the Nix debugger on failure. when things go πŸ’€, at least you get a debugger.

🐚 SHELL OPTIONS 🐚

  • -c, --clean [<CLEAN>...] β€” ignore existing environment variables when entering the shell. pass a list of comma-separated environment variables to let through 🧼
  • -P, --profile <PROFILES> β€” activate one or more profiles defined in devenv.nix.

profiles let you define different configurations that can be merged with your base configuration. very "different outfits, same girl" energy.

see https://devenv.sh/profiles for more information.

Examples:

--profile python-3.14
--profile backend --profile fast-startup
  • --reload β€” enable auto-reload when config files change (default) πŸ”„
  • --no-reload β€” disable auto-reload when config files change.
  • --shell <SHELL_TYPE> β€” which shell to use for interactive sessions (bash, zsh, fish, nu).

Possible values:

  • bash
  • zsh
  • fish
  • nu

πŸ“ CACHE OPTIONS πŸ“

  • --eval-cache β€” enable caching of Nix evaluation results (default) ⚑
  • --no-eval-cache β€” disable caching of Nix evaluation results.
  • --refresh-eval-cache β€” force a refresh of the Nix evaluation cache.
  • --refresh-task-cache β€” force a refresh of the task cache.

πŸ” SECRETSPEC OPTIONS πŸ”

  • --secretspec-provider <SECRETSPEC_PROVIDER> β€” override the secretspec provider 🀫
  • --secretspec-profile <SECRETSPEC_PROFILE> β€” override the secretspec profile

🌈 TRACING OPTIONS 🌈

  • --trace-to <TRACE_TO> β€” enable tracing and set output destination(s). can be repeated for multiple outputs.

Syntax: [format:]destination

Examples:

--trace-to stderr                              # json to stderr
--trace-to pretty:stderr                       # pretty format to stderr
--trace-to json:file:/tmp/trace.json           # JSON to file
--trace-to otlp-grpc                           # OTLP gRPC to default endpoint
--trace-to otlp-grpc:http://collector:4317     # OTLP gRPC to custom endpoint

Multiple outputs:

--trace-to pretty:stderr --trace-to json:file:/tmp/t.json

Destinations: stdout, stderr, file:<path>, http(s)://<host>:<port> Formats: json (default), pretty, full, otlp-grpc, otlp-http-protobuf, otlp-http-json

when the format is omitted it defaults to json. tracing is disabled by default πŸ™ˆ

[env: DEVENV_TRACE_TO=] (comma-separated) and [env: DEVENV_TRACE_DEFAULT_TO=] (comma-separated, used only when no explicit tracing is configured; set to empty string to suppress)


πŸ‘‘ GLOBAL OPTIONS πŸ‘‘

  • -v, --verbose β€” enable additional debug logs. lore drops unlocked πŸ”
  • -q, --quiet β€” silence all logs. peace and quiet, we love to see it 🀐
  • --tui <TUI> β€” enable the interactive terminal interface (default when interactive).

Possible values:

  • true
  • false
  • --no-tui β€” disable the interactive terminal interface.
  • -h, --help β€” print help (see a summary with -h) 🫢

okay that's literally the whole page, you ate that πŸ’…βœ¨ this little beauty comes to you from the shell source in the devenv-shell(1) manual, and that's the tea β€” periodt πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from