devenv-machines-deploy(1)
π
devenv-machines-deploy(1) β the devenv machines deploy glow-up
okay so bestie, welcome to devenv-machines-deploy (that's the manual-name part of the header, we're keeping it, it's iconic). This is from the General Commands Manual and it's literally your whole fleet's main character moment β¨
πΈ NAME πΈ
devenv-machines-deploy β build, review, and deploy NixOS, nix-darwin, and home-manager together. fr fr, all of them, at once π«Ά
https://devenv.sh/machines/#updating-an-existing-host
π SYNOPSIS π
devenv machines deploy [--yes] [--max-concurrent]
[--use-machines-as-builders] [--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]
[NAMES]
π¦ DESCRIPTION π¦
Build, review, and deploy NixOS, nix-darwin, and home-manager together. That's the whole vibe. No cap.
https://devenv.sh/machines/#updating-an-existing-host
β¨ OPTIONS β¨
--yesβ Apply the displayed fleet plan without an interactive confirmation. it just goes, no "are you sure" moment π--max-concurrent <N>β Activate at most N machines per batch (default: 1). Stop after a failed batch β like, it will not keep going after a flop, periodt.--use-machines-as-buildersβ Treat every machine with a reachabletarget.hostas a candidate Nix remote builder for cross-architecture builds. When a machine's system differs from the local host, a matching machine is used as the builder. basically your machines be building for each other, mutual aid slay π«Ά--user-config <USER_CONFIG>β Use this user configuration file instead of the XDG default. (no default-shaming, the XDG one is fine, but you do you)[NAMES]β Machine names to deploy. With no names, deploys every machine in the attrset that hastarget.hostset; machines without a host are skipped. so if you're lazy (same) it just does everything that can be done π
π₯ INPUT OVERRIDES π₯
--from <FROM>β Source fordevenv.nix.
Can be either a filesystem path (with path: prefix) 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.
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. (typed!! we love type safety in this house π)
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 ! is doing so much work, honestly iconic.
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>β Maximum number of Nix builds to run concurrently.
Defaults to 1/4 of available CPU cores (minimum 1). generous but not too generous π
-u,--cores <CORES>β Number of CPU cores available to each build.
Defaults to available cores divided by max-jobs (minimum 1). the math is mathing.
-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. living dangerously, we respect it π--no-impureβ Force a hermetic environment, overriding config. the responsible friend.--offlineβ Disable substituters and consider all previously downloaded files up-to-date. no internet? no problem, bestie π--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 wrong, we go deep ππ
π 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 little bouncer for your env vars πͺ-P,--profile <PROFILES>β Activate one or more profiles defined indevenv.nix.
Profiles allow you to define different configurations that can be merged with your base configuration.
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's giving attentive partner.--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 β¨--no-eval-cacheβ Disable caching of Nix evaluation results.--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 π€«--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.
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) [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 group chat gets loud π£οΈ-q,--quietβ Silence all logs. not a word. π€--tui <TUI>β Enable the interactive terminal interface (default when interactive).
Possible values:
truefalse
--no-tuiβ Disable the interactive terminal interface.-h,--helpβ Print help (see a summary with-h). classic, we stan a helpful icon π
okay that's the whole page bestie, you ate that reading π and for the cute sign-off: this one's sourced from deploy and stamped devenv-machines-deploy(1) β the footer didn't hand us a date, so we're just gonna say it's giving timeless πβ¨ go deploy something gorgeous π¦
π¦ 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