devenv-build(1)

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

πŸ’… devenv-build(1) β€” the one where you build literally anything in devenv.nix

ok so first things first bestie, this is a page from the General Commands Manual β€” it's devenv-build(1), the manual entry for the build command. Say hi πŸ‘‹

✨ NAME ✨

devenv-build β€” build any attribute in devenv.nix. yes. any. of them. 🫢

🌸 SYNOPSIS 🌸

devenv build [--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] [ATTRIBUTES]

πŸŽ€ DESCRIPTION πŸŽ€

Build any attribute in devenv.nix. that's it. that's the whole vibe. it's giving "just build the thing" and honestly? iconic. πŸ’…

⭐ OPTIONS ⭐

  • --user-config <USER_CONFIG> β€” use this user configuration file instead of the XDG default. be a rebel, pick your own path πŸ™ˆ
  • [ATTRIBUTES] β€” the attributes you're building, bestie

πŸ¦‹ INPUT OVERRIDES πŸ¦‹

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

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

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. so powerful honestly πŸ”₯

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. type safety? we love her πŸ’–

OPTION must include a type: <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! ⚠️ (yes, appending vs. replacing is a whole different situation, choose wisely)

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 to run concurrently. it defaults to 1/4 of available CPU cores (minimum 1). so it's like, polite about it 🧚
  • -u, --cores <CORES> β€” number of CPU cores available to each build. defaults to available cores divided by max-jobs (minimum 1). math! ✨
  • -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 a little chaos in, respectfully 🌈
  • --no-impure β€” force a hermetic environment, overriding config. back in the 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. yes, the full list πŸ‘‘

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 πŸ’€, go debug πŸ’€πŸ”

πŸ“ SHELL OPTIONS πŸ“

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

Profiles allow you to define different configurations that can be merged with your base configuration. very mix-and-match of them πŸ’…

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 already on, bestie ✨
  • --no-reload β€” disable auto-reload when config files change.
  • --shell <SHELL_TYPE> β€” the 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 πŸ’¨
  • --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. out with the old, part two πŸ”„

πŸ” 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 the output destination(s). can be repeated for multiple outputs. yes, you can have more than one πŸ‘€

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) [env: DEVENV_TRACE_DEFAULT_TO=] (comma-separated, used only when no explicit tracing is configured; set to an empty string to suppress) 🫢

πŸ‘‘ GLOBAL OPTIONS πŸ‘‘

  • -v, --verbose β€” enable additional debug logs. nosy in the best way πŸ”Ž
  • -q, --quiet β€” silence all logs 🀐
  • --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) πŸ₯Ί

and that's the page, bestie πŸ’– this whole manual entry is build (that's the source, right there) for devenv-build(1) β€” no date on this one, so don't come for me about timestamps πŸ™ˆ go build something gorgeous. periodt. πŸŽ€βœ¨

πŸ“¦ where this page comes from