devenv-init(1)

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

πŸ’… 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 .envrc file. 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 your devenv.nix comes 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 inside devenv.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 in devenv.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:

  • bash
  • zsh
  • fish
  • nu

πŸ“ 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:

  • true
  • false
  • --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