devenv-test(1)

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

πŸ§ͺ devenv-test(1) β€” run your tests, bestie πŸ’…

okay so this page lives in the General Commands Manual (that's the manual name, we're keeping it, it's giving classic reference-section realness ✨) and it's all about devenv-test, which is how you run your tests. let's go 🫢


✨ NAME ✨

devenv-test β€” Run tests. no cap, that's the whole gig. docs at http://devenv.sh/tests/ and yes you should read them πŸ’–

πŸŽ€ SYNOPSIS πŸŽ€

devenv test [--override-dotfile] [--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]

like, that's a lot of flags and honestly? iconic. every single one explained below, no skipping πŸ”₯

πŸ¦‹ DESCRIPTION πŸ¦‹

Run tests. fr fr, that's it β€” the vibe is "your test suite goes brrr". more at http://devenv.sh/tests/ if you wanna be thorough πŸ’œ

🌸 OPTIONS 🌸

the general ones first, the day-one basics:

  • --override-dotfile β€” overrides .devenv with a temporary directory so everything stays isolated 🧚 perfect when you don't want your real .devenv catching strays
  • --user-config <USER_CONFIG> β€” use this user configuration file instead of the XDG default. main character config energy, you pick the file πŸ‘‘

πŸ’« INPUT OVERRIDES πŸ’«

this is where you swap out where stuff comes from, and honestly it's so useful:

  • --from <FROM> β€” the source for devenv.nix.

it can be either a filesystem path (with the path: prefix, don't forget the prefix bestie πŸ’…) or a flake input reference.

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. lowkey my fave for pinning stuff.

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, because Nix will judge you if you get the type wrong, so we're being explicit πŸŽ€

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

list types (pkgs) append to existing values by default. add a ! suffix to replace instead: pkgs! β€” that little exclamation mark is doing a lot of work, ngl

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 ⭐

the Nix dials, turn them responsibly 😭

  • -j, --max-jobs <MAX_JOBS> β€” maximum number of Nix builds to run concurrently.

defaults to 1/4 of available CPU cores (minimum 1). yes, a quarter. your CPU is safe-ish πŸ’€

  • -u, --cores <CORES> β€” number of CPU cores available to each build.

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). cross-compiling girlies rise 🌈

  • -i, --impure β€” relax the hermeticity of the environment. we're opening a window in the clean room πŸͺŸ
  • --no-impure β€” force a hermetic environment, overriding config. back in the sealed bubble bestie 🫧
  • --offline β€” disable substituters and consider all previously downloaded files up-to-date. airplane mode but for Nix ✈️
  • --nix-option <NAME> <VALUE> β€” pass additional options to nix commands.

these options are passed 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 sideways, you get a whole debugger to poke at, slay πŸ›πŸ”

🐚 SHELL OPTIONS 🐚

  • -c, --clean [<CLEAN>...] β€” ignore existing environment variables when entering the shell. pass a list of comma-separated environment variables to let through. so like, a clean slate but with VIP exceptions πŸ’…
  • -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. it's giving outfit-swapping but for your environment πŸ‘—βœ¨

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). it just knows πŸ¦‹
  • --no-reload β€” disable auto-reload when config files change.
  • --shell <SHELL_TYPE> β€” 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). speed, we love her ⚑
  • --no-eval-cache β€” disable caching of Nix evaluation results.
  • --refresh-eval-cache β€” force a refresh of the Nix evaluation cache. out with the old πŸ”„
  • --refresh-task-cache β€” force a refresh of the task cache. same energy, task edition 🧹

πŸ” 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. yes, plural, go off πŸ“‘

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 format is omitted, defaults to json. tracing is disabled by default. (so if you see nothing, that's correct, not broken πŸ’€)

[env: DEVENV_TRACE_TO=] (comma-separated) [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. the receipts, all of them πŸ—£οΈ
  • -q, --quiet β€” silence all logs. not a peep 🀐
  • --tui <TUI> β€” enable the interactive terminal interface (default when interactive).

possible values:

  • true
  • false
  • --no-tui β€” disable the interactive terminal interface. plain text mode, no frills πŸ“
  • -h, --help β€” print help (see a summary with -h). your map, your bestie πŸ’–

heads up bestie: everything above is exactly what the page says β€” I'm not adding behaviour that isn't there. if you want to change how something works, go read the actual docs, don't come for me πŸ™ˆ

and that's the page!! πŸŽ‰ footer says test over on the left with devenv-test(1) on the right, and that's a wrap β€” mwah πŸ’‹βœ¨πŸŽ€

πŸ“¦ where this page comes from