ublue-os / bluefin

The next generation Linux workstation, designed for reliability, performance, and sustainability.
https://projectbluefin.io
Apache License 2.0
1.05k stars 144 forks source link

Recommend homebrew as the default #576

Closed castrojo closed 4 months ago

castrojo commented 11 months ago

Ok so the distrobox workflow isn't working out until we get a new terminal program. I'm continually seeing people struggling with containers so I'm thinking we should just declare this as our default:

This solves a few issues:

@bketelsen's been prototyping a fleek backend so we could totally ship a default Brewfile with cool tools to supplement the starship setup, etc.

Also, getting Brew to work on silverblue was work started in this repo!

But more seriously, I switched all my machines over a month ago and this is going to be what people coming from normal Linux will want: get the latest cool thing they read about on HN without caring about distro delays.

alxlg commented 11 months ago

What does a new terminal app need for the distrobox workflow?

bigpod98 commented 11 months ago

Maybe its time i revive my old oci based package manager(never thought it could work real life but here we are)

castrojo commented 11 months ago

What does a new terminal app need for the distrobox workflow?

https://github.com/orgs/ublue-os/discussions/156

castrojo commented 11 months ago

Thinking out loud here, I like the idea of shipping a nice set of CLI tools by default in a fleek profile with a bunch of cool stuff. And I love that we can use a Brewfile for this, but we're still missing a declarative way to do Flatpaks so I was thinking about a homebrew plugin:

brew "automake"
cask "blah"

I wonder if we could do a thing like:

flatpak "com.valvesoftware.Steam"

And then similarly on the CLI it's like with cask: brew install --flatpak steam or whatever.

cc @osalbahr @bketelsen

osalbahr commented 11 months ago

Related:

osalbahr commented 11 months ago

I don’t know if Homebrew would officially support being a frontend to flatpak (see the discussion in the linked issue). Either ways, the idea of having one file that can be generated (brew bundle dump) or used (brew bundle) for both CLI and GUI apps is interesting .

An alternative I can think of is to use a wrapper that is able to create and use a Brewfile-like file and delegates to either brew or flatpak accordingly (for both creating and using).

alxlg commented 11 months ago

Apparently Nix can be used to install Flatpak declaratively?

https://github.com/yawnt/declarative-nix-flatpak

rohanssrao commented 11 months ago

Could I ask why Homebrew is a better default than Nix?

castrojo commented 11 months ago

Nix isn't a default and is already included (people can already use it if they want).

bketelsen commented 11 months ago

I have a nice start to a fleek+brew setup at https://getfleek.dev/docs/homebrew It needs more configuration and some good tool recommendations from the community.

nikodunk commented 11 months ago

I'm looking for a zero-maintenance Linux development system, and I've have been pleased with (non-immutable) Fedora Workstation for a while. But when off-the-clock I was trying to play games I have looked longingly at the rollback features of immutable/atomic distro features.

When I tried Atomic/Silverblue systems however, they've never stuck. Games worked great, and rollback was awesome :), but due to the mental overhead of "layering" CLI systems onto the core, or Toolbx/Distroboxing and then dealing with all the "specialities" of my Linux system vs. my coworkers' Mac systems it wasn't worth it. Desktop apps like VSCode have worked great as Flatpaks for a while, but CLI apps were an issue.

Today I discovered that on Ublue/Silverblue CLI packages like node, rails and psql install and run seamlessly with Homebrew, similarly easy to the DX I would have on macOS. No googling of fast-deprecated guides. I think this is the way.

Thank you everyone for all your efforts and recommendations!

castrojo commented 10 months ago

Ok so let's scope this:

Right now we have just brew and just brew-shell and a fleek homebrew backend is here: https://github.com/bketelsen/fleekgenbrew

We can do this in two steps I think (more ideas welcome):

Initial Work

We add a banner telling people about the options available and then make just brew and just brew-shell one step: https://github.com/ublue-os/bluefin/issues/609

This is relatively easy and should be east to "backport" to gts/F38 once we shake things out.

Add Profiles via Fleek

We take the fleekbrew stuff and "import" it into this repo so it lives here. Then we default to a few profiles. Each profile lives in this repo for centralized maintenance and so that we can customize them based on what we already include in -dx. Some decent default profiles might be: vanilla/off, low, medium, high. Vanilla is Fedora defaults basically, with high being super bling.

We'd need to normalize what's in the profiles with what we have on the image. For example we don't need git in any profile because it's on the image, etc.

castrojo commented 10 months ago

We'll also need a robust just entry for uninstalling brew.

osalbahr commented 10 months ago

We'll also need a robust just entry for uninstalling brew.

Thoughts on using the official uninstall script or sudo rm -rf /home/linuxbrew?

castrojo commented 10 months ago

Yeah I think just (lol) having it aliased as a just command so people don't have to go look it up will be useful!

castrojo commented 9 months ago

This would likely/ideally/eventually be support for both types.

This comment in the upstream bug report leads me to believe that a flatpak plugin might be possible?

castrojo commented 9 months ago

Just an FYI for completeness, due to path issues we're going to recommend brew in a container and not on the host:

https://github.com/ublue-os/bluefin/issues/687 https://github.com/ublue-os/bluefin/issues/701

castrojo commented 9 months ago

This is mostly complete in the bluefin-cli container, which will be wolfi + brew, just waiting on them to merge brew in upstream wolfi:

https://github.com/ublue-os/bluefin/blob/main/toolboxes/packages.bluefin-cli

m2Giles commented 4 months ago

Brew is now on the host and available via bluefin-cli container. Brew has been integrated into config (https://github.com/ublue-os/config/pull/235)