Homebrew->Flox: size on disk, casks

Hello there. Long-time homebrew user here who discovered Flox the other day. Prior to that, I used a mix of Homebrew + zinit/zi to get cli software installed. I preferred zinit where possible because that generally works well on both MacOS and Linux. Once I saw Flox, and the ease of sharing a default environment via github, I decided to see what migrating (most of) my Homebrew stuff to Flox was like. I have it set up, and 2 things jump out as something to look at:

1 - Flox (for my 33 or so installed things) takes up a LOT more space on disk than the equivalent Homebrew (or zinit) installation; the /nix directory is nearly 5GB This isn’t an issue on my physical hardware, but I do use small Linux VMs, and was able to blow out my disk space pretty easily.

2 - Installing the equivalent of a Homebrew cask does not put the application’s icon in the MacOS Launchpad. So, for example if I install iTerm2 via Homebrew, I can use Spotlight/Launchpad to start iTerm2. If I install it with Flox, it does not show up in either place, so I have to either launch iTerm2 from a terminal window or get it launched and then pin the iTerm2 icon in the dock.

I have searched the community, and didn’t find similar issues. Am I doing something wrong here?

Best

Hi @John_Stegeman!

1 - Are you able to share your Flox environment? I can look what makes your environment so big. Maybe share it via FloxHub. A future idea for the FloxHub is to be able to inspect to also inspect the environment. All the information is there, we just need to present it.

2 - In short: we’re aware of this and there are few options how we will address this. For now, I’d suggest using Homebrew in parallel with Flox. I’m personally also looking how to get this working, and I have a prototype of this from my Nix setup and just need to move it into Flox environment to share it.

Re: 1, another thing that contributes to disk size is that each package brings along the exact versions of its dependencies, and those often don’t overlap with the dependencies of other packages. This is related to how we make software reproducible, but the tradeoff is disk space. If you upgrade a package, the old dependencies are still on disk unless you run some internal commands. So, in short it could be that those 5GB aren’t actually all being used by the currently installed packages.

We have a ticket for “garbage collection” that we need to implement to make the available to end users: flox gc (garbage collect) · Issue #1478 · flox/flox · GitHub

Thanks, @zmitchell - this is a brand-new install, so there won’t at this point be any unrelated dependencies/etc. I get it that this (a single global default environment as a replacement for Homebrew) isn’t exactly the design use case for flox.