devenv-container(1)

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

πŸ’… devenv-container β€” the build/copy/run container command, bestie

okay so real talk: this is devenv container, from the General Commands Manual (section 1, the "you can just type this in your terminal" section 🌸). It builds containers, copies containers to a registry, and runs containers. That's the whole vibe. Docs live at https://devenv.sh/containers/ and yes you should go look at them.


✨ SYNOPSIS ✨

devenv container [--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] <subcommands>

like, yes, that's a lot of flags. breathe. we'll get through them together 🫢


πŸ¦‹ DESCRIPTION πŸ¦‹

Build, copy, or run a container. That's it, that's the whole thing. The full glow-up of docs is at https://devenv.sh/containers/ β€” go read it, iykyk.


πŸ’– OPTIONS πŸ’–

  • --user-config <USER_CONFIG> β€” bestie, use this user configuration file instead of the XDG default. main character config energy ✨

πŸŽ€ INPUT OVERRIDES πŸŽ€

  • --from <FROM> β€” where devenv.nix comes from. it can be a filesystem path (with a path: prefix) or a flake input reference. iconic either way.

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. you're basically saying "no bestie, this is the input" πŸ’…

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. important: OPTION must include a type, formatted as <attribute>:<type>. Supported types are: string, int, float, bool, path, pkg, pkgs.

List types (pkgs) append to existing values by default. Want to replace instead? add a ! suffix, like pkgs!. periodt.

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 running at the same time. defaults to 1/4 of your available CPU cores (minimum 1, so it never hits zero, we love a safe default πŸ’€).
  • -u, --cores <CORES> β€” how many CPU cores each build gets. 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. living dangerously, love that for you.
  • --no-impure β€” force a hermetic environment, overriding whatever your config says. the responsible friend in the group chat 🧚
  • --offline β€” disable substituters and treat all previously downloaded files as up-to-date. airplane mode but make it nix ✈️
  • --nix-option <NAME> <VALUE> β€” pass extra options to nix commands. these go straight to Nix via 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 β€” drop into the Nix debugger when things fail. grab a snack, you're gonna be here a while 😭

🐚 SHELL OPTIONS 🐚

  • -c, --clean [<CLEAN>...] β€” ignore existing environment variables when entering the shell. you can pass a list of comma-separated environment variables to let through (the chosen ones πŸ‘‘).
  • -P, --profile <PROFILES> β€” activate one or more profiles defined in devenv.nix. profiles let you define different configurations that get merged with your base configuration. see https://devenv.sh/profiles for more.

Examples:

--profile python-3.14
--profile backend --profile fast-startup
  • --reload β€” enable auto-reload when config files change. this is the default btw ✨
  • --no-reload β€” disable auto-reload when config files change.
  • --shell <SHELL_TYPE> β€” which shell to use for interactive sessions. options: bash, zsh, fish, nu.

Possible values:

  • bash
  • zsh
  • fish
  • nu

⭐ CACHE OPTIONS ⭐

  • --eval-cache β€” enable caching of Nix evaluation results. default, and honestly thank god for it πŸ™
  • --no-eval-cache β€” disable caching of Nix evaluation results. you're choosing violence, respect.
  • --refresh-eval-cache β€” force a refresh of the Nix evaluation cache.
  • --refresh-task-cache β€” force a refresh of the task cache.

πŸ™ˆ SECRETSPEC OPTIONS πŸ™ˆ

  • --secretspec-provider <SECRETSPEC_PROVIDER> β€” override the secretspec provider. secrets stay secret, no cap πŸ”
  • --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.

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.

environment girly pop: [env: DEVENV_TRACE_TO=] (comma-separated) and [env: DEVENV_TRACE_DEFAULT_TO=] (comma-separated, used only when no explicit tracing is configured; set it to an empty string to suppress). lowkey important, don't skip πŸ’…

🌈 GLOBAL OPTIONS 🌈

  • -v, --verbose β€” enable additional debug logs. the "i want to see everything" era.
  • -q, --quiet β€” silence all logs. peace and quiet, we love her 🌸
  • --tui <TUI> β€” enable the interactive terminal interface (this is the default when interactive).

Possible values:

  • true
  • false
  • --no-tui β€” disable the interactive terminal interface.
  • -h, --help β€” print help (see a summary with -h). yes, that's slightly unhinged, but that's what it says 🫢

πŸ‘‘ SUBCOMMANDS πŸ‘‘


k bye bestie, go container-ify something πŸ’–

β€” that was container, page devenv-container(1) in the General Commands Manual, and this diva's files live in the container section, dated the same as always πŸŽ€βœ¨πŸ¦‹

πŸ“¦ where this page comes from