devenv-test(1)
π§ͺ 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.devenvwith a temporary directory so everything stays isolated π§ perfect when you don't want your real.devenvcatching 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 fordevenv.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 indevenv.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 tonixcommands.
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 indevenv.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:
bashzshfishnu
π 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:
truefalse
--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
- nixpkgs unstable: devenv 2.4.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms