Releases: flox/flox
Release list
v1.16.0
Services
Flox 1.16.0 introduces a new manifest schema 1.16.0 that includes the service fields depends-on, shutdown.timeout-seconds, and shutdown.signal.
- Services can declare start ordering:
[services.<name>.depends-on]waits for another service to start or complete before this one starts. [services.<name>.shutdown]gainstimeout-seconds, which sets how long a service gets to shut down before it is killed, andsignal, which sets the signal to deliver.- Services now start in dependency order, so a service listed before its dependency no longer starts early and ignores
depends-on.
flox run
flox run now provides the ability to run commands solely by providing the command name. For example, use flox run rg to run ripgrep.
- The
-p/--packageargument is now optional. When several packages provide the same command, Flox prompts asking what package to use if an interactive terminal is available, and remembers the choice for next time. flox runnow accepts--reselect <COMMAND>, which clears the choice of what package to use for a command.flox search --command <COMMAND>lists the packages that provide a named binary, with--allto show every result and--jsonfor machine-readable output.
Changes
flox developno longer activates an environment; useflox activateinstead.flox developwill be used to provide a Nix development shell for Nix expression builds.flox initnow records the environment's anonymous metrics id in theenv_idfield of.flox/env.jsoninstead of a separate.flox/telemetry_idfile. Existingtelemetry_idfiles are still honored. The id is committed with the environment on purpose, so that clones of one environment count as one environment, and it is only submitted when metrics collection is enabled.- Catalog inputs for expression builds resolve to the latest published versions, independent of
--stability, which selects only the nixpkgs base package set. nix profile install github:flox/floxnow prefers cache.nixos.org for upstream packages; cache.flox.dev continues to serve the Flox closures themselves. No action is needed, as the substituter and trusted key shipped in the flake are unchanged apart from the priority parameter.
Features
- A new Flox NixOS module runs systemd services from Flox environments, with automatic environment provisioning, scheduled updates, and restart-on-change. See the module README for details.
auto_activate_environmentskeys may now be glob patterns, where*matches one directory name and**matches any depth, so a single entry can allow or deny auto-activation for many repositories. An exact path always wins, and if matching patterns disagree the directory is denied, as inflox config --set 'auto_activate_environments."/home/me/work/*"' allow.flox auth statusdisplays the active credential expiry when known.flox auth loginnow asks the configured FloxHub server where to log in: a deployment serving auth discovery gets the device-grant login against its own identity provider, and a deployment without it keeps today's Auth0 login unchanged.- Projects using Nix expression builds may now pin their catalog inputs in a single committed
.flox/catalog.lock, created explicitly withflox build update-catalogs, so every build of a revision uses the same pinned inputs. Without one, builds resolve the built packages' references fresh on every invocation, and nothing is written into the project tree.flox publishsubmits only the entries relevant to the published package, and a stale committed lock fails the publish with the uncovered references.
Fixes
- Fixed an intermittent
flox publishfailure,failed to parse file for lock results, caused by a race in per-package catalog locking. flox publishno longer sends the user and password portion of an http(s) git remote URL, or the password portion of an ssh one. Where a remote is configured ashttps://<user>:<token>@host/owner/repo, onlyhttps://host/owner/repois sent, and the repository is identified the same way. A credential in agit://remote, or in a remote-helper address such ashg::https://…, is still sent in full. Source URLs recorded by publishes made before this release may include userinfo for any shape, so rotate any token that was configured in a remote.- Fixed verbose authentication output so FloxHub credentials are redacted.
flox auth tokennow prints personal access tokens and other opaque credentials instead of reporting that you are not logged in.- Setting
auth_notifications = falsenow also suppresses the warning about resolving packages while logged out, which previously fired every eight hours regardless of the setting. - Commands that fail with "Environment not found in FloxHub." now add "you may need to run 'flox auth login'" when no FloxHub identity is resolved locally, rather than implying the environment was deleted. This covers
flox pullin an existing environment directory and the remote-environment commands such asflox activate -r.flox pull <owner>/<name>into a new directory has its own message and is unchanged. - Fixed a bug where
flox edit --namesilently reset.flox/env.jsonto owner-only permissions; env.json rewrites now preserve the file's existing permissions.
Thank you to our community contributions this release
- Corrected the clone command syntax in
CONTRIBUTING.md(@esteve)
Download Links
- DEB (x86_64-linux)
- DEB (aarch64-linux)
- RPM (x86_64-linux)
- RPM (aarch64-linux)
- OSX (x86_64-darwin)
- OSX (aarch64-darwin)
Note
You can find the SHA256 checksums for Flox 1.16.0 and SHA512 checksums for Flox 1.16.0 online.
v.1.15.0
Warning
- [breaking change] It is recommended to exit all current activations or reboot after installing.
Features
- Added
hook.on-deactivateto the manifest. Theon-deactivatescript is run in Bash when the lastactivateof an environment exits. flox publishnow detects an already-published build before building the package, so re-publishing an unchanged source and closure returns immediately instead of paying for a full build first.flox servicewas added as an alias forflox services.- Added an
auth_notificationsconfig option. Set it tofalse(viaflox config --set auth_notifications falseorFLOX_AUTH_NOTIFICATIONS=false) to quiet the "You are not logged in to FloxHub" reminder. Commands that require authentication still fail with an explanation, and this does not control warnings about authentication when connecting to the catalog. - Unauthenticated users are now warned that resolving packages will require authentication to FloxHub in an upcoming release. See https://go.flox.dev/auth for more information. The warning appears only when the CLI actually contacts the catalog, and at most once every 8 hours. Use
-qto suppress it.
Fixes
- If an environment variable is set prior to activating an environment with a variable in
[vars], a second activation of that environment still sets the variable from[vars]. Closes #3761 - When activating an environment in one shell on top of a second environment but on top of a third environment in another shell, environment variables from the second environment no longer leak into the second shell.
- Experimental plugin scripts can now read variables set in the manifest's
[vars]section: activation sources Flox's own profile.d scripts first, then exports[vars], then sources plugin-provided profile.d scripts. A variable exported by a plugin script takes precedence over a same-named[vars]entry. - Clearer errors and guidance are now provided when packages and package outputs have file collisions.
- Locking a package whose
systemsnames a system missing fromoptions.systemsnow suggests adding that system tooptions.systems. flox pushnow works when temporary editor files are present in.flox/env.- fish and tcsh now honor
$FLOX_PROMPTwhenNO_COLORis set. flox buildnow fails with a source location when a Nix expression cannot be parsed or read, or when it uses the catalog namespace in a way that cannot be analyzed, instead of writing a lock with missing catalog inputs.
Download Links
- DEB (x86_64-linux)
- DEB (aarch64-linux)
- RPM (x86_64-linux)
- RPM (aarch64-linux)
- OSX (x86_64-darwin)
- OSX (aarch64-darwin)
Note
You can find the SHA256 checksums for Flox 1.15.0 and SHA512 checksums for Flox 1.15.0 online.
v1.14.1
Features
- Activations now announce the environment they enter when stderr is a terminal, using the same wording in every activation mode, including in-place and auto-activations. Re-activations of an already-active environment and environments named
defaultstay quiet. flox -q activateis now silent in every mode, and no longer prints an execution trace of the activation scripts.- Environments named
defaultnow appear in the shell prompt by default. Sethide_default_prompt = trueto hide them again. - The shell prompt now shows just the environment name for each active environment, instead of
owner/name (local). flox-activate(1)now documents$FLOX_PROMPTand the exported prompt variables.floxnow reminds users who are not logged in to FloxHub to runflox auth login, instead of only warning when a previously stored token had expired. The reminder appears once per shell session and is suppressed forflox authcommands and prompt hooks.flox searchaccepts more search terms. Terms such asc++andg++, and terms written in non-Latin scripts, now work, and the message for a rejected term no longer prints a regular expression at the user. Search terms longer than 200 characters are rejected before the request is sent.flox buildnow passesFLOX_ENV_CACHEto builds, so generated state such aspip.iniis written for manifest and sandboxed builds.
Changes
x86_64-darwinis no longer one of the implicit default systems, because nixpkgs drops it from LTS releases after 26.05, which makes environments that include it resolve to older package versions. It remains valid when listed explicitly inoptions.systems, and the current system is always included, so environments onx86_64-darwinkeep working there.- Locking now warns when it removes packages, which can happen when re-locking an environment created before this change. Building an environment with no packages locked for the current system now fails with an error naming the locked systems, instead of producing an empty environment.
flox activateno longer adds the environment'ssbindirectory toPATHby default. Opt back in per activation withflox activate --add-sbin. Packages you build and publish can install tosbinto keep an executable offPATH, while base catalog packages are unaffected.flox runstill finds executables installed tosbin, and PATH handling insideflox buildwrappers is unchanged.
Fixes
- Deactivating the last active environment no longer breaks auto-activation for the rest of the shell session ("This shell's Flox prompt hook is out of sync with the running Flox.").
- Environments spawned by auto-activation no longer misreport the Flox version as v0.0.0 (seen as "This environment requires Flox vX.Y.Z or later" warnings).
flox initin the home directory now creates thedefaultenvironment even when$HOMEcontains symlinked path components.- Remote environment initialization no longer fails when a missing Git branch produces additional diagnostic output.
flox activatenow writes the generatedpip.inito the environment's cache directory (.flox/cache/pip.ini) instead of.flox/pip.ini. This fixesflox activate -rfailing for environments that provide pip when the working directory has no.floxdirectory. Stale.flox/pip.inifiles from earlier versions are no longer used and can be deleted.flox pushno longer reports "changes that are not yet synced to a generation" after upgrading an environment created with an older version of Flox.[vars]entries that reference other entries with${name}now resolve in dependency order, so a reference works regardless of where the entries appear in the manifest. A reference cycle between entries fails with a clear error instead of aborting activation.- Process monitoring now falls back to polling when it cannot block waiting for a process, instead of assuming the process has exited and re-monitoring the same PID.
Download Links
- DEB (x86_64-linux)
- DEB (aarch64-linux)
- RPM (x86_64-linux)
- RPM (aarch64-linux)
- OSX (x86_64-darwin)
- OSX (aarch64-darwin)
Note
You can find the SHA256 checksums for Flox 1.14.1 and SHA512 checksums for Flox 1.14.1 online.
v1.14.0
Auto activation
Flox now prompts whether to auto-activate environments in the current directory and parent directories. After an environment is approved, it is subsequently activated whenever the shell enters the directory containing the environment, and it is deactivated when the shell leaves that directory.
Auto-activated Flox environments work just like normal Flox activations, so this provides an easy way to load packages, environment variables, shell aliases, and services all with a single cd.
Auto-activation requires the Flox prompt hook to be installed, which can be done by activating a default environment in your shell's RC files.
For more details, see https://flox.dev/docs/concepts/auto-activation
Authentication changes
floxcan now authenticate with FloxHub personal access tokens. Tokens are generated in FloxHub on the user profile page. To login, runflox auth login --token-fileor exportFLOX_FLOXHUB_TOKENflox auth loginnow supports non-interactive authentication via--token-file <PATH>flox auth loginnow stores your FloxHub token in your operating system's encrypted credential store (macOS Keychain / Linux Secret Service) by default, instead of in plain text. On systems without a keyring, it falls back to a0600plain-text file and warns you. Existing plain-text tokens are migrated into the keyring automatically and safely. Useflox auth login --insecure-storageto force plain-text storage, andflox auth statusto see where your credential is stored.flox auth login --insecure-storageis now a persistent preference: the FloxHub token stays in plain text inflox.tomlon subsequent commands instead of being moved into the OS keyring on the next invocation. Useflox auth login --insecure-storage --onceto store plain text for a single login without changing the preference, andflox config --delete floxhub_token_storage(or--set floxhub_token_storage keyring) to switch back to keyring storage.
Other features and changes
- Users can now trust all environments from an organization with a single config entry:
flox config --set 'trusted_environments.myorg/*' trust. The interactive trust prompt also offers this as a one-step option when activating an untrusted remote environment. flox activate -Dnow proceeds when your FloxHub token has expired, instead of forcing a re-login, since the expired token still carries a valid handle.- Packages installed to an environment that provide Bash script in the
etc/profile.ddirectory now have those scripts sourced onflox activate, in lexical order alongside scripts provided by Flox itself. - An experimental
[plugins]manifest section is now available for storing free-form data for installed plugin packages. It is not yet stable, so its shape may change. flox build update-catalogsis deprecated. Catalog inputs for Nix expression builds are resolved and locked automatically duringflox buildandflox publish.
Fixes
flox deactivateand auto-deactivation now work when the active environment's directory has been deleted (e.g. a removed git worktree), instead of erroring with "Did not find an environment" on every prompt.- Fish shell users using auto-activation (cd-triggered) will now see the
flox [env]prompt prefix, matching the behavior of interactiveflox activate. - Fixed INFOPATH inside activated environments so info manuals installed outside the environment (e.g. the built-in emacs manual) remain discoverable.
- Deactivating from within a subshell no longer fails with
PID XXX is not attached to the activation.
Download Links
- DEB (x86_64-linux)
- DEB (aarch64-linux)
- RPM (x86_64-linux)
- RPM (aarch64-linux)
- OSX (x86_64-darwin)
- OSX (aarch64-darwin)
Note
You can find the SHA256 checksums for Flox 1.14.0 and SHA512 checksums for Flox 1.14.0 online.
v1.13.2
Improvements to auto-activate (experimental)
Note
Auto-activate is behind a feature flag. Enable it with flox config --set features.auto_activate true (or FLOX_FEATURES_AUTO_ACTIVATE=true).
- Declining the auto-activation prompt for an environment is now remembered, so you are no longer prompted for it again.
- Re-allowing a previously denied environment in the middle of a nested auto-activation stack now restores it to its correct position in the prompt and PATH, matching what a fresh
cdinto the directory produces. - The auto-activation prompt no longer hangs when using the fish shell.
Features
flox runnow supports running packages from custom catalogs (e.g.flox run -p owner/pkg -- ...), using an authenticated download path.
Fixes
flox gcandflox envsno longer fail withFailed to fetch environment: ref not foundwhen a deleted environment is still referenced by the local environment registry.flox installno longer prints the "additional outputs" hint when you explicitly selected outputs (pkg^..orpkg^out,man).- The "Your FloxHub token has expired" reminder is now shown once per shell session instead of repeating for nested
floxinvocations. flox install pkg^badwith an invalid output name now shows a clear error instead of a raw Nix build trace.flox activateno longer crashes on a rare race in activation cleanup.- Installing flox via the Nix module no longer emits a
'system' has been renamedevaluation warning.
Download Links
- DEB (x86_64-linux)
- DEB (aarch64-linux)
- RPM (x86_64-linux)
- RPM (aarch64-linux)
- OSX (x86_64-darwin)
- OSX (aarch64-darwin)
Note
You can find the SHA256 checksums for Flox 1.13.2 and SHA512 checksums for Flox 1.13.2 online.
v1.13.1
Features
flox run -p <PACKAGE> [--] <COMMAND>runs a command directly from a Flox Catalog package without creating an environment, resolving, downloading, and executing it in a single step. Packages not in the binary cache, such as unfree packages, are built from source automatically.flox build import-nixpkgsnow accepts--stability <STABILITY>to select the nixpkgs revision used for the import, matching the behavior offlox build.flox containerizenow accepts--mode/-mto containerize thedevorrunenvironment directly, without editing the manifest.
Fixes
floxbuild environment conflict errors now include the output names (for example(out)) when two outputs of the same package collide on a file path, making the conflict easier to act on.flox deactivateno longer fails with a missing prompt-hook error when deactivating one of several stacked environments.
Download Links
- DEB (x86_64-linux)
- DEB (aarch64-linux)
- RPM (x86_64-linux)
- RPM (aarch64-linux)
- OSX (x86_64-darwin)
- OSX (aarch64-darwin)
Note
You can find the SHA256 checksums for Flox 1.13.1 and SHA512 checksums for Flox 1.13.1 online.
v1.13.0
Features
flox deactivateis now available. Use it to leave an active environment and return your shell to its previous state, without closing the shell or terminal the wayexitwould.- A new
profile.deactivatesection for scripts that run when an environment is deactivated. Requires settingschema-version = "1.13.0". flox upgradeoutput now distinguishes version changes (curl: 8.9.0 -> 8.10.1) from same-version rebuilds (terraform-docs: 0.21.0 (rebuild, ...)) and summarizes them as "N version changes and M rebuilds".- Manifest builds support two new
sandboxlevels,warnandenforce, alongsideoffandpure, plus asandbox-allowallow-list for files outside the build closure. Requires settingschema-version = "1.13.0". - A new
disable_hookconfig option skips installing the prompt hook when set totrue.
Fixes
flox activateno longer re-locks or rebuilds an environment whose lockfile is already current.flox upgradeandflox activate --remotenow correctly create activation symlinks on the first run in an environment that has never been built locally.- Flox environment creation is faster, reducing
nix buildinvocations from 3 to 1 per build-and-link cycle and spawning no fetch subprocesses when all packages are already cached.
Download Links
- DEB (x86_64-linux)
- DEB (aarch64-linux)
- RPM (x86_64-linux)
- RPM (aarch64-linux)
- OSX (x86_64-darwin)
- OSX (aarch64-darwin)
Note
You can find the SHA256 checksums for Flox 1.13.0 and SHA512 checksums for Flox 1.13.0 online.
v1.12.2
Fixes
- Enable use of
git describefor setting version strings in manifest builds. - Fix bug triggering unnecessary rebuilds with
flox publish.
Changes
- Add color highlighting to debug output for easier identification of slow operations.
Download Links
- DEB (x86_64-linux)
- DEB (aarch64-linux)
- RPM (x86_64-linux)
- RPM (aarch64-linux)
- OSX (x86_64-darwin)
- OSX (aarch64-darwin)
Note
You can find the SHA256 checksums for Flox 1.12.2 and SHA512 checksums for Flox 1.12.2 online.
v1.12.1
Features
-D/--defaultflag provides a shortcut to reference your default FloxHub environment across any command that accepts-r/--referenceas an argument, replacing-r <user>/default.flox install <package>^<output>now appends an output to a package that is already installed; previously this only worked when the package was not yet installed.flox publishskips rebuilds and publish when the exact build has already been published
Fixes
FLOX_ACTIVATE_START_SERVICESis no longer overridden when a second environment is activated from an RC file.
Thank you to our community contributors for this release
flox auth loginno longer suggests runningflox auth loginwhen the existing token is expired (@stahnma)
Download Links
- DEB (x86_64-linux)
- DEB (aarch64-linux)
- RPM (x86_64-linux)
- RPM (aarch64-linux)
- OSX (x86_64-darwin)
- OSX (aarch64-darwin)
Note
You can find the SHA256 checksums for Flox 1.12.1 and SHA512 checksums for Flox 1.12.1 online.
v1.12.0
Fix for Nix vulnerabilities
This release fixes GHSA-vh5x-56v6-4368 and GHSA-gr92-w2r5-qw5p. For Linux and macOS installations of Flox, GHSA-vh5x-56v6-4368 can allow arbitrary code execution as root. This affects Flox versions >=1.3.12.
Features
The manifest schema was bumped from 1.11.0 to 1.12.0 for the auto-start feature below.
flox activateautomatically starts services whenauto-start = trueis set in the manifest's[services]section, and a new--no-start-servicesflag suppresses this on individual invocations.flox publishreports failure-specific error messages for common repository validation issues (missing upstream branch, detached HEAD, SSH/authentication failure, revision not on remote).flox publishcollects narinfo for build outputs and their full closure from the local Nix store when publishing to a metadata-only catalog. This data is required to build a complete SBOM.
Fixes
- Propagated packages now respect the priority of their parent package in the manifest's
[install]block when activated in "develop" mode. - Manifest builds no longer fail when source files contain special characters in their filenames.
FLOX_FLOXHUB_TOKENis redacted in log files and verbose output.flox publishreports a clear error when.floxfiles are untracked in the build repository, instead of failing with a confusing "could not find environment pointer file" message.flox publishhonors thekeep_tempdirsetting when a build fails in an ephemeral directory.flox publishno longer hangs polling for publisher confirmation when running against a metadata-only orNixCopycatalog configuration.- Metadata-only
flox publishno longer fails withNoTokenwhen no FloxHub token is configured when using Kerberos Authn. flox include upgradeno longer unnecessarily migrates manifests with older but still-supported schema versions, avoiding schema version drift in the lockfile.
Download Links
- DEB (x86_64-linux)
- DEB (aarch64-linux)
- RPM (x86_64-linux)
- RPM (aarch64-linux)
- OSX (x86_64-darwin)
- OSX (aarch64-darwin)
Note
You can find the SHA256 checksums for Flox 1.12.0 and SHA512 checksums for Flox 1.12.0 online.