---
# System prepended metadata

title: Nix Discourse post

---

# Nix Discourse post

Today we’re thrilled to release the **flox (still in beta)** to the [public as an open-source project][github-flox]. In this discourse post we want to take you behind the scenes of what flox is and how it works, but you are welcome to also [read our full announcement on our website][announcement].

[github-flox]: https://github.com/flox/flox
[announcement]: https://floxdev.com/blog/flox-open-beta


## What to expect when you try `flox` today?

Everybody at flox is ecstatic that we finally reached this milestone. The closed-beta cycle provided us with valuable feedback from numerous users both from within and more importantly from outside the Nix community. Being able to finally work in the open means a lot to everybody here at flox. Code can be found [on GitHub][github-flox].

But the truth is that **we are still in beta**.

That means that there are **many things** we still need **to fix and improve**. Not only that, we also have some important features coming in the near future.

> In this release we hope to show **a basic workflow that even non-Nix users will appreciate** and maybe help existing Nix users convince their colleagues to give `nix` and `flox` a try. 


## What features make `flox` worth trying?

Initial onboarding is crucial.

That does not only mean having a good installer, but it does start with it. With `flox`, we want to meet new users where they are. For this reason our [installers are signed & native][install-flox] to the platform (`deb`, `rpm`, `nix`, `mac`, ...). Existing Nix users can directly install as well:

```console
nix profile install 'github:flox/floxpkgs#flox.fromCatalog' \
      --experimental-features "nix-command flakes" \
      --impure
```

**Environments are at the core of `flox`**. We provide an imperative and declarative interface for creating environments. Beginners have an intuitive interface to install specific versions of software. Everything is recorded declaratively for when the users are ready to use that interface. Best of both worlds some would say.

```console
$ flox install cowsay
created generation 1

$ flox activate

flox [default] $ echo "Hello!" | cowsay
 ________
< Hello! >
 --------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

```

There is incredible value in sharing the things we create. **Collaboration is built into `flox`**. It should be as easy to [share your environment][share-environment] as it is to share your code.

```console
$ flox pull -e github:flox-examples/demo
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
To /home/USER/.cache/flox/meta/flox-examples
 * [new branch]      aarch64-linux.demo -> aarch64-linux.demo

$ flox activate -e flox-examples/demo

flox [flox-examples/demo default] $ fortune | cowsay
 _____________________________________
/ Spock: We suffered 23 casualties in \
\ that attack, Captain.               /
 -------------------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

flox [flox-examples/demo default] $ exit
$
```

[Nixpkgs][github-nixpkgs] is the **best collection of packages out there**, period.

We strive to improve the experience of consuming packages from `nixpkgs` by providing a layer that records their evaluation, build, and cache metadata. We call this layer - **a catalog**. This allows users of `flox` to select from **multiple versions of packages**. It also enables enterprise users to **share packages in binary form without exposing their source code** or even their Nix expression.

```console
$ flox search python310
python310 - A high-level dynamically-typed programming language
  stable.nixpkgs-flox.python310@3.10.7
  stable.nixpkgs-flox.python310@3.10.8
  stable.nixpkgs-flox.python310@3.10.9
  staging.nixpkgs-flox.python310@3.10.7
  staging.nixpkgs-flox.python310@3.10.8
  staging.nixpkgs-flox.python310@3.10.9
  unstable.nixpkgs-flox.python310@3.10.7
  unstable.nixpkgs-flox.python310@3.10.8
  unstable.nixpkgs-flox.python310@3.10.9
...
```

Our theory is that **the Nix language is ultimately necessary** to support the full complexity of defining and composing packages, but that completely hiding it means users have less opportunity to learn. Therefore we would like to **slowly introduce concepts**, and along the way expose more value, encouraging further exploration.

Our framework and libraries remain **Nix compatible**. While our command line tool provides additional niceties and we've patched Nix to make the experience better, everything can still be accessed and used with the vanilla Nix command line tool (with some experimental features enabled). Most **patches and improvements have been or will be upstreamed**, as appropriate. For example: impure-derivations, ACL support, fine-grained access tokens, etc.

Our promise is to maintain the compatibility with Nix in order to ensure interoperability with the rest of the ecosystem. This is also because we want to ensure all the great tools and features throughout the ecosystem are avaible to all users. We do not want to limit or restrict - instead we want to **establish and recommend best-practices**.

In short: by **using `flox` you will not be locked into** our ecosystem.


[share-environment]: httpd://floxdev.com/docs/share-environments
[install-flox]: https://floxdev.com/docs/#install-flox
[github-nixpkgs]: https://github.com/NixOS/nixpkgs


## flox and Nix community

The "no bullshit" version of what we want to say is: flox is nothing without the Nix community. And we are well aware of this. Not only that, we are betting that as a company that wants to bring Nix to the world we need to **work with the community**.

This is why in the past year flox dedicated time to support, empower and sometimes lead efforts across the Nix community. Be assured that we will continue to do so in most transparent way possible.

The elephant in the room is: *How will we make money? What is our monetization strategy?* We have nothing to hide here. Our monetization is **focused on increasing corporate and organizational use**. To put it in [layman's terms][laymans-terms]:

1. We love Nix and what we can do with it.
2. We also know that it is not easy to learn or adopt Nix.
3. Even if learning Nix would be easier, adoption of new tech becomes harder the bigger the organisation.
4. The bigger the organisation, the *"weirder"* their requirements (from the perspective of an open source project). Not all of those requirements make sense to include in an open source version, but would make a big difference for enterprise adoption.
5. We want to make it possible for you (the Nix user) to be able to bring Nix-based technology to your organizations and to be an effective ambassador.

As you can see we are playing with open cards. We don't compete with the Nix community, but are part of it. If something is not clear, please feel free to ask us.

[laymans-terms]: https://www.merriam-webster.com/dictionary/layman%27s%20terms


## Give `flox` a try

If you have questions about `flox` we invite you to **[join flox discourse][discourse-flox]** where we can answer all the flox-specific questions, bug reports, and suggestions. All the feedback is much appreciated, even if `flox` is still in beta and a lot of work is still ahead of us.

If you believe in our mission, values and that **Nix will prevail**, then [consider joining us][job].

Let us know what you think about flox either [directly][direct] or by [Twitter][twitter] or [Matrix][matrix].

Happy hacking everybody!

[discourse-flox]: https://discourse.floxdev.com
[direct]: https://floxdev.com/contact
[job]: https://floxdev.com/careers
[twitter]: https://twitter.com/floxdevelopment
[matrix]: https://matrix.to/#/#flox:matrix.org
