devenv-init(1)
π devenv-init(1) π
okay so bestie, buckle up β this is devenv-init from the General Commands Manual, and honestly? it's giving "starter pack but make it cute." let's go β¨
πΈ NAME πΈ
devenv-init β scaffold devenv.yaml, devenv.nix, and .gitignore. that's the whole vibe, no cap π
π¦ SYNOPSIS π¦
devenv init [--include-envrc] [--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]
[TARGET]
like, yes, it's a lot of brackets β think of them as lil accessories, every one of them optional π
π DESCRIPTION π
scaffold devenv.yaml, devenv.nix, and .gitignore. boom. that's literally the whole personality. your project gets its little starter set and it is iconic π«Ά
β¨ OPTIONS β¨
π the basics
--include-envrcβ also drop in a.envrcfile. yes bestie, direnv girlies rise π--user-config <USER_CONFIG>β point at this user config file instead of the XDG default. main character config energy π[TARGET]β the optional target. it's just... there. sitting pretty π¦
π INPUT OVERRIDES π
--from <FROM>β where yourdevenv.nixcomes from.
can be either a filesystem path (with a path: prefix) or a flake input reference. so many options, so little time π
examples, bestie:
--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 insidedevenv.yaml. lowkey one of the most useful things here fr fr
examples:
--override-input nixpkgs github:NixOS/nixpkgs/nixos-unstable
--override-input nixpkgs path:/path/to/local/nixpkgs
-O,--option <OPTION:TYPE> <VALUE>β override config options with typed values. type safety but make it fashion β¨
OPTION must include a type in the form <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! π (yes that exclamation mark is doing a lot of heavy lifting)
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>β how many Nix builds run at the same time. maximum multitasking energy π§
defaults to 1/4 of available CPU cores (minimum 1).
-u,--cores <CORES>β how many CPU cores each build gets. sharing is caring π
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. letting the outside world in, respectfully π--no-impureβ force a hermetic environment, overriding config. no vibes from outside allowed, periodt π«--offlineβ disable substituters and consider all previously downloaded files up-to-date. airplane mode but for Nix βοΈ--nix-option <NAME> <VALUE>β pass extra options to nix commands.
these get passed straight to Nix using the --option flag. see man nix.conf for the full list of available options β it's a lot, iykyk.
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 wrong, go full detective mode ππ
π SHELL OPTIONS π
-c,--clean [<CLEAN>...]β ignore existing environment variables when entering the shell. pass a list of comma-separated environment variables to let through. clean slate, fresh start, new me πΈ-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 changes" π
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). she's always watching π--no-reloadβ disable auto-reload when config files change. sometimes you just need peace and quiet π€«--shell <SHELL_TYPE>β which 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, slay, repeat β‘--no-eval-cacheβ disable caching of Nix evaluation results. living dangerously, honestly π--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, different cache π§Ή
π SECRETSPEC OPTIONS π
--secretspec-provider <SECRETSPEC_PROVIDER>β override the secretspec provider. secrets but make it specified π€«--secretspec-profile <SECRETSPEC_PROFILE>β override the secretspec profile. profile inception, we love to see it π
β TRACING OPTIONS β
--trace-to <TRACE_TO>β enable tracing and set output destination(s). can be repeated for multiple outputs. more destinations = more data = more fun, obviously π₯
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.
[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. she's chatty and we respect it π¬-q,--quietβ silence all logs. shhh. not a peep π€«--tui <TUI>β enable the interactive terminal interface (default when interactive).
possible values:
truefalse
--no-tuiβ disable the interactive terminal interface. some days you just want plain text, and that's valid π«Ά-h,--helpβ print help (see a summary with-h). cute lil shortcut for the impatient girlies β
ok real talk bestie:--offline,--impure/--no-impure, and all those override flags genuinely change how your environment behaves. read before you yeet π«Ά
and that's the whole page, no crumbs left π this was devenv-init(1) from the General Commands Manual, version init, closing out the devenv-init(1) footer like a proper sign-off β bye bestie, go scaffold something iconic ππ¦β¨
π¦ 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