Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Releases: flox/flox

v1.16.0

Choose a tag to compare

@mkenigs mkenigs released this 08 Sep 23:08
v1.16.0
3ed8295

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] gains timeout-seconds, which sets how long a service gets to shut down before it is killed, and signal, 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/--package argument 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 run now 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 --all to show every result and --json for machine-readable output.

Changes

  • flox develop no longer activates an environment; use flox activate instead. flox develop will be used to provide a Nix development shell for Nix expression builds.
  • flox init now records the environment's anonymous metrics id in the env_id field of .flox/env.json instead of a separate .flox/telemetry_id file. Existing telemetry_id files 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/flox now 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_environments keys 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 in flox config --set 'auto_activate_environments."/home/me/work/*"' allow.
  • flox auth status displays the active credential expiry when known.
  • flox auth login now 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 with flox 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 publish submits 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 publish failure, failed to parse file for lock results, caused by a race in per-package catalog locking.
  • flox publish no 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 as https://<user>:<token>@host/owner/repo, only https://host/owner/repo is sent, and the repository is identified the same way. A credential in a git:// remote, or in a remote-helper address such as hg::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 token now prints personal access tokens and other opaque credentials instead of reporting that you are not logged in.
  • Setting auth_notifications = false now 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 pull in an existing environment directory and the remote-environment commands such as flox activate -r. flox pull <owner>/<name> into a new directory has its own message and is unchanged.
  • Fixed a bug where flox edit --name silently reset .flox/env.json to 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

v.1.15.0

Choose a tag to compare

@tanjadev tanjadev released this 25 Aug 21:31

Warning

  • [breaking change] It is recommended to exit all current activations or reboot after installing.

Features

  • Added hook.on-deactivate to the manifest. The on-deactivate script is run in Bash when the last activate of an environment exits.
  • flox publish now 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 service was added as an alias for flox services.
  • Added an auth_notifications config option. Set it to false (via flox config --set auth_notifications false or FLOX_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 -q to 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 systems names a system missing from options.systems now suggests adding that system to options.systems.
  • flox push now works when temporary editor files are present in .flox/env.
  • fish and tcsh now honor $FLOX_PROMPT when NO_COLOR is set.
  • flox build now 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

v1.14.1

Choose a tag to compare

@dcarley dcarley released this 11 Aug 13:07
v1.14.1
aad7ad2

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 default stay quiet.
  • flox -q activate is now silent in every mode, and no longer prints an execution trace of the activation scripts.
  • Environments named default now appear in the shell prompt by default. Set hide_default_prompt = true to 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_PROMPT and the exported prompt variables.
  • flox now reminds users who are not logged in to FloxHub to run flox auth login, instead of only warning when a previously stored token had expired. The reminder appears once per shell session and is suppressed for flox auth commands and prompt hooks.
  • flox search accepts more search terms. Terms such as c++ and g++, 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 build now passes FLOX_ENV_CACHE to builds, so generated state such as pip.ini is written for manifest and sandboxed builds.

Changes

  • x86_64-darwin is 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 in options.systems, and the current system is always included, so environments on x86_64-darwin keep 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 activate no longer adds the environment's sbin directory to PATH by default. Opt back in per activation with flox activate --add-sbin. Packages you build and publish can install to sbin to keep an executable off PATH, while base catalog packages are unaffected. flox run still finds executables installed to sbin, and PATH handling inside flox build wrappers 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 init in the home directory now creates the default environment even when $HOME contains symlinked path components.
  • Remote environment initialization no longer fails when a missing Git branch produces additional diagnostic output.
  • flox activate now writes the generated pip.ini to the environment's cache directory (.flox/cache/pip.ini) instead of .flox/pip.ini. This fixes flox activate -r failing for environments that provide pip when the working directory has no .flox directory. Stale .flox/pip.ini files from earlier versions are no longer used and can be deleted.
  • flox push no 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

v1.14.0

Choose a tag to compare

@mkenigs mkenigs released this 29 Jul 00:21
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

  • flox can now authenticate with FloxHub personal access tokens. Tokens are generated in FloxHub on the user profile page. To login, run flox auth login --token-file or export FLOX_FLOXHUB_TOKEN
  • flox auth login now supports non-interactive authentication via --token-file <PATH>
  • flox auth login now 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 a 0600 plain-text file and warns you. Existing plain-text tokens are migrated into the keyring automatically and safely. Use flox auth login --insecure-storage to force plain-text storage, and flox auth status to see where your credential is stored.
  • flox auth login --insecure-storage is now a persistent preference: the FloxHub token stays in plain text in flox.toml on subsequent commands instead of being moved into the OS keyring on the next invocation. Use flox auth login --insecure-storage --once to store plain text for a single login without changing the preference, and flox 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 -D now 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.d directory now have those scripts sourced on flox 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-catalogs is deprecated. Catalog inputs for Nix expression builds are resolved and locked automatically during flox build and flox publish.

Fixes

  • flox deactivate and 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 interactive flox 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

v1.13.2

Choose a tag to compare

@electricalen electricalen released this 14 Jul 20:05
66c1830

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 cd into the directory produces.
  • The auto-activation prompt no longer hangs when using the fish shell.

Features

  • flox run now supports running packages from custom catalogs (e.g. flox run -p owner/pkg -- ...), using an authenticated download path.

Fixes

  • flox gc and flox envs no longer fail with Failed to fetch environment: ref not found when a deleted environment is still referenced by the local environment registry.
  • flox install no longer prints the "additional outputs" hint when you explicitly selected outputs (pkg^.. or pkg^out,man).
  • The "Your FloxHub token has expired" reminder is now shown once per shell session instead of repeating for nested flox invocations.
  • flox install pkg^bad with an invalid output name now shows a clear error instead of a raw Nix build trace.
  • flox activate no longer crashes on a rare race in activation cleanup.
  • Installing flox via the Nix module no longer emits a 'system' has been renamed evaluation warning.

Download Links

v1.13.1

Choose a tag to compare

@billlevine billlevine released this 30 Jun 20:20
v1.13.1
684cdfb

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-nixpkgs now accepts --stability <STABILITY> to select the nixpkgs revision used for the import, matching the behavior of flox build.
  • flox containerize now accepts --mode/-m to containerize the dev or run environment directly, without editing the manifest.

Fixes

  • flox build 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 deactivate no longer fails with a missing prompt-hook error when deactivating one of several stacked environments.

Download Links

v1.13.0

Choose a tag to compare

@gilmishal gilmishal released this 17 Jun 01:38
bb1b1c4

Features

  • flox deactivate is now available. Use it to leave an active environment and return your shell to its previous state, without closing the shell or terminal the way exit would.
  • A new profile.deactivate section for scripts that run when an environment is deactivated. Requires setting schema-version = "1.13.0".
  • flox upgrade output 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 sandbox levels, warn and enforce, alongside off and pure, plus a sandbox-allow allow-list for files outside the build closure. Requires setting schema-version = "1.13.0".
  • A new disable_hook config option skips installing the prompt hook when set to true.

Fixes

  • flox activate no longer re-locks or rebuilds an environment whose lockfile is already current.
  • flox upgrade and flox activate --remote now correctly create activation symlinks on the first run in an environment that has never been built locally.
  • Flox environment creation is faster, reducing nix build invocations from 3 to 1 per build-and-link cycle and spawning no fetch subprocesses when all packages are already cached.

Download Links

v1.12.2

Choose a tag to compare

@tanjadev tanjadev released this 02 Jun 17:32

Fixes

  • Enable use of git describe for 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

v1.12.1

Choose a tag to compare

@mkenigs mkenigs released this 19 May 20:48
v1.12.1
2078270

Features

  • -D/--default flag provides a shortcut to reference your default FloxHub environment across any command that accepts -r/--reference as 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 publish skips rebuilds and publish when the exact build has already been published

Fixes

  • FLOX_ACTIVATE_START_SERVICES is no longer overridden when a second environment is activated from an RC file.

Thank you to our community contributors for this release

  • flox auth login no longer suggests running flox auth login when the existing token is expired (@stahnma)

Download Links

v1.12.0

Choose a tag to compare

@mkenigs mkenigs released this 06 May 01:38

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 activate automatically starts services when auto-start = true is set in the manifest's [services] section, and a new --no-start-services flag suppresses this on individual invocations.
  • flox publish reports failure-specific error messages for common repository validation issues (missing upstream branch, detached HEAD, SSH/authentication failure, revision not on remote).
  • flox publish collects 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_TOKEN is redacted in log files and verbose output.
  • flox publish reports a clear error when .flox files are untracked in the build repository, instead of failing with a confusing "could not find environment pointer file" message.
  • flox publish honors the keep_tempdir setting when a build fails in an ephemeral directory.
  • flox publish no longer hangs polling for publisher confirmation when running against a metadata-only or NixCopy catalog configuration.
  • Metadata-only flox publish no longer fails with NoToken when no FloxHub token is configured when using Kerberos Authn.
  • flox include upgrade no longer unnecessarily migrates manifests with older but still-supported schema versions, avoiding schema version drift in the lockfile.

Download Links