We are very excited to share what we’ve been working on and to launch the new flox website - flox (floxdev.com)
You can find the full story on our announcement in the flox blog and try it out for yourselves today.
Looking forward to feedback and thoughts!
Amazing work!!! Looking forward to see the Flox’s story unfold
From the website I am guessing that flox is something like:
- fancy wrapper around nix
- that somehow finds multiple versions or collections
- has some git integration (“git-like” as in it uses git in the background?)
- css particles that follow my cursor
Not sure how much it helps packaging things which is mostly the problem I see, not the distribution.
but not going to try it because of the restrictive license.
Does flox solve any issues that nixos/nix(pkgs) has in regard of python environments?
How does flox detect nixpkgs which are broken but not marked brolen in meta ?
…
I read the terms of the beta program and they look pretty standard to me, and the restrictions are applying to any proprietary parts, not the open source parts. I am not sure how much of the Flox tools are proprietary, if at all.
regarding python, depends what you mean by issues in nix. We have some tools to help package Python programs, but fairly equivalent to what Nix offers today. Could you elaborate on what you’re looking for?
Regarding broken packages, we only pull in packages that build successfully, whether marked as such in the metadata or not.
I am having somewhat of a difficult time visualizing exactly what flox would do for me as an end-user. (Although I imagine the marketing pages and blog posts are pretty difficult to put together when you first launch a new product, so this is understandable!)
As a somewhat experienced Nix user, here are my reactions to the features from https://floxdev.com/blog/announcement:
- a multi-platform and reproducible environment manager : test and run the same bits everywhere
Is this not just Nix plus Nixpkgs (plus maybe nix-env
/ nix profile
)?
- an intuitive git-like workflow for sharing composable environments : collaborate, distribute, and onboard seamlessly, and never hear “works on my machine!” again
This sounds like just committing .nix
files to a Git repo and making sure all your inputs are pinned?
- a “publish” primitive to share the output of builds : track, reuse, and provide the result of your builds
I’m not sure what this would refer to in practice, but this sort of sounds like a shared Nix cache?
- the “flox Catalog”, a reliable interface to Nixpkgs , providing only packages that are ready to download from the biggest collection of software packages in the world
This sounds sort of like what you’d already get with Nixpkgs plus the NixOS shared cache?
From the blog post and LP, I’m struggling to understand why I’d be interested in flox
as a potential end-user.
This is not the first announcement about Flox, some more then a year or so I expressed some doubts also. I came back at my conclusion in that same topic.
Like you said you’re a somewhat experienced Nix user so Flox might not be something for you.
Then again I would like to quote from the same blog:
At the same time, people shouldn’t have to become a Nix expert in order to use it effectively. Our central mission is to make Nix’s superpowers more accessible to a broader audience of developers, teams and enterprises . While we are just at the beginning, we hope our fellow Nix community members find flox to be a natural way to help introduce Nix to your coworkers, projects, and communities.
In short, flox is Nix for simplicity and scale .
My take on this now is if they succeed in their mission to provide a lower barrier for developers/enterprises to get started using Nix, and it attracks more people to the course by doing so, then I applaud them for their endeavour as this could also potential benefit Nix(OS) in general.
And no, I’m not involved with the company
Ah, sorry, I’m not trying to criticize what Flox is trying to do. I also think their mission is great, and I’m really happy more companies are getting into the Nix community!
I was just trying to point out that people looking at their blog post and landing page may have trouble figure out what is flox, or what does it do (specifically). The blog post lists a bunch of features, but I couldn’t really imagine what they are supposed to mean, or what flox
is supposed to do, or how I would use it, or how it improves on the current Nix experience.
But I realize that writing understandable blog posts and documentation can be quite tricky, especially if you’re a time-strapped startup!
Thank you for your understanding - it’s been quite a journey to be sure! If you’re anything like me I expect you won’t be fully satisfied until you can try it out for yourself but I’ll take a shot at answering your questions.
To an extent yes, we’re utilising components already in use by the Nix community but with a focus on making them more easily accessible by people who don’t already know Nix. By leveraging these components in a single experience we can lower the barrier to entry while still exposing Nix for them to explore and grow into.
The sharing is indeed based on git both as a transport and system of record, and yes there are pinned flakerefs embedded in flox environments, but those are really just implementation details (and in fact the previous version of flox had these same properties implemented in a completely different way).
The real value comes from having an easy and intuitive interface for defining collections of packages to be managed in one place and shared across machines and teams, and we further enhance that by adding container/venv-like features upon activation.
It’s not a binary cache, no. You can think of it as providing the guarantee that a package can be built, and (optionally) a list of locations for finding a binary cache hit. Notably it also allows firms to publish their Nix-based packages to clients without having to expose their source code in the process, which is something we believe has been a blocker for Nix adoption in an enterprise setting.
You can think of the flox Catalog as the application of the publish primitive (above) to every successful job in Nixpkgs, sampled at weekly intervals. This history of successful builds provides users with the guarantee that a package installation will always succeed (with a binary cache hit), and the ability to easily select different versions of software over time.
For example:
brantley@ubuntu:~$ flox search vimHugeX
vimHugeX - The most popular clone of the VI editor
stable.nixpkgs-flox.vimHugeX@8.2.3877
stable.nixpkgs-flox.vimHugeX@8.2.4816
stable.nixpkgs-flox.vimHugeX@8.2.4975
staging.nixpkgs-flox.vimHugeX@8.2.4816
staging.nixpkgs-flox.vimHugeX@8.2.4975
staging.nixpkgs-flox.vimHugeX@9.0.0001
unstable.nixpkgs-flox.vimHugeX@8.2.4816
unstable.nixpkgs-flox.vimHugeX@8.2.4975
unstable.nixpkgs-flox.vimHugeX@9.0.0001
brantley@ubuntu:~$ flox install stable.nixpkgs-flox.vimHugeX@8.2.4816
brantley@ubuntu:~$ flox activate -- vim --version |& head -2
VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Jan 01 1980 00:00:00)
Included patches: 1-4816
brantley@ubuntu:~$
Our aim is to provide value to both the Nix and non-Nix communities on any distribution, in or out of a container, and we will need all the feedback we can get to make that happen. I will highlight that unlike the previous flox version, this one is less intrusive and can be installed as a package on your existing Nix installation (2.7.0 or later), so it’s something you can try on a side-by-side basis without disrupting your existing workflows.
Hope this helps!
Wow, this looks really nice! I feel like I’ve seen another tool in the Nix ecosystem that tries to do something similar, but wrapping this functionality up with a nice interface and making it easy to use could really be a game-changer depending on your workflow!
Oh, that’s really convenient, too.
I hope you guys are able to put together a more technical(?) blog post that highlights some of these nice features of flox
! I’m sure more people (especially people not already in the Nix ecosystem) will be interested when they can see specific examples of what flox
enables you to do. For instance, easily installing arbitrary versions of any package is a feature that doesn’t exist anywhere else in the software world!