ublue-os / bazzite

Bazzite is a cloud native image built upon Fedora Atomic Desktops that brings the best of Linux gaming to all of your devices - including your favorite handheld.
https://bazzite.gg
Apache License 2.0
4.08k stars 251 forks source link

Open for comment: DX Images (Developer Experience) #533

Open KyleGospo opened 1 year ago

KyleGospo commented 1 year ago

Similarly to Bluefin-DX, we'd like to ship DX images which come preconfigured with common game development and debugging tools. If you're a developer we'd love to hear what you might find useful in an image like Bazzite.

EyeCantCU commented 1 year ago

Suggestions:

Utilities that would likely be helpful:

Things that would be cool, but totally not necessary/probably out of scope:

badlydrawnface commented 1 year ago

That would seem interesting! Getting JetBrains IDEs installed through a copr is a bit of a hassle and there doesn't seem to be a way to make JetBrains Toolbox run on a specific Distrobox container (obviously excluding the AUR package), because of how it installs, it can only install on the host, where there won't be any (other than probably Python) SDKs installed.

EyeCantCU commented 1 year ago

That would seem interesting! Getting JetBrains IDEs installed through a copr is a bit of a hassle and there doesn't seem to be a way to make JetBrains Toolbox run on a specific Distrobox container (obviously excluding the AUR package), because of how it installs, it can only install on the host, where there won't be any (other than probably Python) SDKs installed.

The challenge here is, you can't throw all of them into one distrobox image (nor do people need all of them... usually) as the size is too big for GHCR unless you do it after the fact

One solution would be using distrobox assemble for each JetBrains IDE, keeping the environment completely separate from one another, installing everything while setting the image up on the host

Another alternative is one distrobox instance that provides everything needed by each IDE with just scripts that install whatever IDE you need

castrojo commented 1 year ago

Jetbrains has it's own "toolbox" that people have been using and so far the feedback has been positive: https://universal-blue.org/images/bluefin/developer-experience/#jetbrains

EyeCantCU commented 1 year ago

Jetbrains has it's own "toolbox" that people have been using and so far the feedback has been positive: https://universal-blue.org/images/bluefin/developer-experience/#jetbrains

Toolbox works great for that but these are all installed as AppImages that rely on the host to provide individual SDKs. Providing a path isolated from the host that's reusable anywhere could be an awesome way of managing that. Brainstorming ways of doing that

bi0shacker001 commented 1 year ago

As a reminder, distrobox has a --home flag that lets you specify an alternative home directory for the container user, which, coupled with distrobox-enter -n (containername) -- (executable in absolute location) , may solve the issue. Distrobox can export any binary a container can see.

dreamyukii commented 1 year ago

Integration with game engine like Unity,Godot,and maybe Unreal Vscode pre-installed will be huge plus and maybe Docker too?

dnkmmr69420 commented 1 year ago

Integration with game engine like Unity,Godot,and maybe Unreal Vscode pre-installed will be huge plus and maybe Docker too?

what advantages does docker have over podman?

badlydrawnface commented 1 year ago
  1. it requires root
  2. it has a daemon service

not quite sure if those are really "advantages"

dreamyukii commented 1 year ago

more compatible with stuff for example i tried to use devcontainers on bluefin image and it just PITA, meanwhile docker works ootb

hisergiorojas commented 1 year ago

I would like a distro that has preinstall the following software:

  1. Blender
  2. Godot
  3. Visual Studio Code
  4. Chrome
  5. VFX Library https://vfxplatform.com/
  6. Raven https://github.com/OpenTimelineIO/raven
noelmiller commented 1 year ago

Software I'd like to see that I haven't seen others post:

  1. Virtual Machine Manager (layered seems to be the easiest way I've gotten it installed)
  2. Podman Desktop
  3. OBS
AlexandrosMelissas commented 6 months ago

I would suggest to have all the necessary stuff that are common for the majority of developers and are commonly used (podman, vscode, configs etc). As for the rest, they can be installed seperately.

I would imagine, for example, i as an android developer, if i wanted android studio ready, maybe i could do ujust android-studio

TaylorMichaelHall commented 6 months ago

Integration with game engine like Unity,Godot,and maybe Unreal Vscode pre-installed will be huge plus and maybe Docker too?

what advantages does docker have over podman?

For me it's just a requirement for collaborating with others who all use Docker.

I would definitely appreciate an easy way to get docker up in Bazzite. It works in Bluefin out of the box, but getting docker working properly is a pain on just about every other atomic system that I've used.

bayazidbh commented 5 months ago

IMHO VMware, VirtualBox, and anything that requires kernel modules should be built in. At least the kernel module part - so that when user needs those tool, they can just be installed from a menu/command.

As long as that's done, I think everything else can just be thrown to different yafti menu/sub-categories.

wojpawlik commented 5 months ago

Why not start with only whatever -dx adds to Bluefin? Related: https://github.com/ublue-os/bluefin/issues/1321

EPOCHvoyager commented 5 months ago

Some software suggestions as of yet:

kittenvr commented 5 months ago

Nodejs

kittenvr commented 5 months ago

Java gui

p5 commented 5 months ago

There certainly needs to be a scope that needs to be referred to.

There's many suggestions of general development tools, rather than what I thought this was intended to be - a game dev image.

If we add everything from Bluefin DX, then we've just replicated Bluefin.

SNThrailkill commented 4 months ago

There certainly needs to be a scope that needs to be referred to.

There's many suggestions of general development tools, rather than what I thought this was intended to be - a game dev image.

If we add everything from Bluefin DX, then we've just replicated Bluefin.

Would that really be the case? Because Bazzite has a lot of things I wanted for Bluefin DX like OpenRazer, Emudeck, OpenTabletDriver, Sunshine, Waydroid, etc. Whereas Bluefin has things I want like Jetbrains toolbox. cockpit, Gnome VRR, VFIO, ollama, etc.

Im thinking about making my own image or configuration and I dont even know which would be the correct base because both seem to have what I want.

VeachTech commented 4 months ago

I want bluefin-dx but on bazzite. To me that would be the main base for gamedev. I wouldn't include any software that doesn't require configuration in order to fully function. At a minimum: I need devcontainers working out of the box with vs code.

kittenvr commented 4 months ago

I want java and nodejs

dreamyukii commented 4 months ago

I want java and nodejs

for java and nodejs you can use homebrew

kittenvr commented 4 months ago

I want java and nodejs

for java and nodejs you can use homebrew

Java isn't on homebrew

dreamyukii commented 4 months ago

I want java and nodejs

for java and nodejs you can use homebrew

Java isn't on homebrew

openjdk

Confusedsiren56 commented 4 months ago

1 Tools for making Minecraft mods 2 unreal engine 4 and 5 3 VS code 4 Java 5 a version of bazzite that's lighter wight

m2Giles commented 4 months ago

My bad take.

Basically everything that's been mentioned can be run via containers/flatpak/brew. While having your editor on the host is nice, it doesn't actually need to be there. For example docker, incus, and libvirt will all happily run inside of a rootful container. Distrobox makes it even easier. It sounds more like people just want an easy button for configuring an option not necessarily it to be shipped on image.

What is the scope of -dx on Bazzite?

KyleGospo commented 4 months ago

1 Tools for making Minecraft mods 2 unreal engine 4 and 5 3 VS code 4 Java 5 a version of bazzite that's lighter wight

The current version is as light as it will get from a software standpoint.

DX will naturally be heavier.

KyleGospo commented 4 months ago

My bad take.

Basically everything that's been mentioned can be run via containers/flatpak/brew. While having your editor on the host is nice, it doesn't actually need to be there. For example docker, incus, and libvirt will all happily run inside of a rootful container. Distrobox makes it even easier. It sounds more like people just want an easy button for configuring an option not necessarily it to be shipped on image.

What is the scope of -dx on Bazzite?

Intended scope of a bazzite-dx is inherently different from bluefin-dx. Our focus would be to have a game developer workstation that's ready to use from install.

bi0shacker001 commented 4 months ago

My bad take. Basically everything that's been mentioned can be run via containers/flatpak/brew. While having your editor on the host is nice, it doesn't actually need to be there. For example docker, incus, and libvirt will all happily run inside of a rootful container. Distrobox makes it even easier. It sounds more like people just want an easy button for configuring an option not necessarily it to be shipped on image. What is the scope of -dx on Bazzite?

Intended scope of a bazzite-dx is inherently different from bluefin-dx. Our focus would be to have a game developer workstation that's ready to use from install.

wouldn't the logical approach to this simply be bundling common utilities with as many game engines as possible, so pretty much anyone can just boot it up and start working with their engine of choice?

KyleGospo commented 4 months ago

That's correct, but we can't appeal to everybody. That's why this is open for comment, we need to identify what the common tools are and what the uncommon tools are, make sure the common ones are installed where it makes sense, and everything else is easy to install when needed.

RoyAwesome commented 4 months ago

So, I do a lot of noodling on my spare time. Professionally I'm a senior gameplay engineer, so most of the things I reach for are C++ related when I want to do gamedev noodling.

In trying to get my at-home development workflow set up, I've been bouncing into quite a few issues that I think a DX image can solve.

VS Code on flatpak is a nightmare to work with. Putting into distrobox runs into issues doing gamedev with running 3d graphics.

I would really like to see VS Code, CMake (and the vscode cmake extension), and llvm/clang working together out of the box. Together they form the backbone of my development workflow, and getting them working in bazzite normally is kind of janky.

Outside of that, I also noodle a lot with Godot, and with .net workflows. Installing .net is kind of pain, and having that come pre-installed would be nice.

EDIT: For folks building the -dx image, generally what I'm looking for working out of the box is:

VS Code, C/C++ Extension pack When you open a folder with a base CMakeLists.txt, VS Code should be able to detect that and prompt you with what compiler kits you want to use. While I prefer to use clang exclusively, I'm okay with this kit scanning also showing me gcc. Base bazzite with vscode flatpak does not do this by default. On the bottom toolbar, after CMake successfully generates project files, I would like to be able to press the Build, Debug, and Run buttons without needing to configure anything after setting my kit (it works this way in windows). Base bazzite does not do this by default, and requires manually setting clang paths to get the build and run buttons to work. I can't seem to get the debug button to work, but setting a launch.json does work. Given the button on the bottom toolbar is the "intended" workflow, that should work.
Another issue is vscode with flatpak on base bazzite 1) doesn't log into github properly (I have to cancel the login window and do the self webserver option), and 2) doesn't save logins.

I can go over this flow in more detail if needed (also im on discord, same username, if that's needed)

wojpawlik commented 4 months ago

Why doesn't brew install cmake work for you? I'd be reluctant to add anything already available on brew or Flathub.

m2Giles commented 4 months ago

Why doesn't brew install cmake work for you? I'd be reluctant to add anything already available on brew or Flathub.

This is what I do. Vscode picks it up no problem with the cmake extension for me. I may have added homebrew to my argv.json PATH.

RoyAwesome commented 4 months ago

Why doesn't brew install cmake work for you? I'd be reluctant to add anything already available on brew or Flathub.

It worked okay, but a lot of features on it didn't work. cmake wasn't able to find anything, i had to set everything up myself. lldbg still doesn't work for me. This would be nice for the -dx image to just have available or set up for me without having to google and hope i find something relevant for bazzite's setup.

deoradh commented 4 months ago

Instead of making "bazzite-dx" be game focused (locking out a simple -dx experience for those of use who play games) opt for a model where we can bring in groups of tool packages. I note the .devcontainer model supports feature sets, and this could be leveraged. Then you could define the game-dev experience, the web-dev, the server-dev, etc, and they can be brought into play as desired.

To that end, I'd recommend devpod or something much like it: .devcontainer aware, can use that to set up a containerized development environment. Container, I think, being the operative term.

However it is done, I'd recommend an approach that focused more on getting people indoctrinated into container-centric development practices and tooling. There are a lot of devs out there who have not touched them.

Ran-Mewo commented 3 months ago

Suggestion:

I'd the packages this command installs to be a thing by default so I don't have a pain trying to figure out why rust isn't working

Rerum02 commented 2 months ago

I would like Zed on there, there is a Flatpak, but as of now, Nvidia on Wayland will not work, so Zed rpm would be nice

bb010g commented 2 months ago

I'd prefer a pairing of bazzite-dx and bazzite-gamedev-dx, where bazzite{,-gnome}-dx closely follows {aurora,bluefin}-dx, and bazzite{,-gnome}-gamedev-dx builds from that to include tools specific to gamedev. I understand wanting to give people an easy way to start game development on Linux, but my use case for bazzite-dx would be just doing some general development on the same laptop I play games with. I could use aurora-dx for that, but I'd like the gaming features in Bazzite.

Additionally, building bazzite-gamedev-dx on top of bazzite-dx should make it both easier to keep in sync with aurora-dx, make it more apparent to those curious what tools are added for gamedev, and even allow bazzite-dx to ship while bazzite-gamedev-dx is still being planned.

@Sparkrai has been building unofficial bazzite-dx images using this approach at https://github.com/Sparkrai/bazzite-dx.

sambuca1g commented 2 months ago

I'd prefer a pairing of bazzite-dx and bazzite-gamedev-dx, where bazzite{,-gnome}-dx closely follows {aurora,bluefin}-dx, and bazzite{,-gnome}-gamedev-dx builds from that to include tools specific to gamedev.

This. Perhaps the installation of dev tools could be implemented in ujust like ujust setup-dx-edition or for each tool seperately (also mentioned in a previous reply). It would be more universal.

mcreekmore commented 1 month ago

I'd prefer a pairing of bazzite-dx and bazzite-gamedev-dx, where bazzite{,-gnome}-dx closely follows {aurora,bluefin}-dx, and bazzite{,-gnome}-gamedev-dx builds from that to include tools specific to gamedev.

This. Perhaps the installation of dev tools could be implemented in ujust like ujust setup-dx-edition or for each tool seperately (also mentioned in a previous reply). It would be more universal.

I would just like to +1 this approach. Without it, this would introduce many image variants: bazzite * nvidia * dx * desktopenv * etc in the future. Not sure how the community feels about that.

Currently Sparkrai's bazzite-dx image is interesting but doesn't include the nvidia images as of yet. When I find some time, I'd like to see if I could contribute to this effort.

RoyAwesome commented 1 month ago

vulkan debug layers would be really nice on a bazzite-dx