Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
KyleGospo opened this issue Nov 12, 2023 · 43 comments
Open

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

KyleGospo opened this issue Nov 12, 2023 · 43 comments
Labels
help wanted Extra attention is needed

Comments

@KyleGospo
Copy link
Member

KyleGospo commented Nov 12, 2023

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.

@KyleGospo KyleGospo pinned this issue Nov 12, 2023
@EyeCantCU
Copy link
Member

Suggestions:

Utilities that would likely be helpful:

  • Blender
  • GIMP
  • InkScape
  • Audacity

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

  • Zsh - with oh-my-zsh configured with the half life theme
  • chatgpt-shell-cli symlinked to GLaDOS/glados
  • Nerd fonts - broader symbol support
  • bat, eza, fd - robust alternatives to cat, ls, and find
  • virt-manager - for image testing

@badlydrawnface
Copy link
Contributor

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
Copy link
Member

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
Copy link
Member

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
Copy link
Member

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

@KyleGospo KyleGospo added the help wanted Extra attention is needed label Nov 13, 2023
@bi0shacker001
Copy link

bi0shacker001 commented Nov 14, 2023

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
Copy link
Contributor

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

@dnkmmr69420
Copy link
Contributor

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
Copy link
Contributor

badlydrawnface commented Nov 16, 2023

  1. it requires root
  2. it has a daemon service

not quite sure if those are really "advantages"

@dreamyukii
Copy link
Contributor

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

@hisergiorojas
Copy link

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
Copy link
Member

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

@KyleGospo KyleGospo unpinned this issue Dec 30, 2023
@AlexandrosMelissas
Copy link

AlexandrosMelissas commented May 10, 2024

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
Copy link
Contributor

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
Copy link

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
Copy link

Why not start with only whatever -dx adds to Bluefin? Related: ublue-os/bluefin#1321

@EPOCHvoyager
Copy link
Contributor

Some software suggestions as of yet:

  • Reaper - DAW for sound design and music production; although technically paid software(some may call it 'nagware', in the vein of WinRAR), there's a 30-day trial, and it is distributed in the Arch Extra repository.
  • Godots - Godot Engine version and project manager; similar to the engine's standard project manager menu, but manages engine binaries as well, allows you to launch and assign specific projects with and to specific Godot versions, and download them to your machine - all-in-one.
  • Furnace - multi-system chiptune tracker; simulates most known video game synthesizers - even WonderSwan - within a single familiar interface.

@kittenvr
Copy link

Nodejs

@kittenvr
Copy link

Java gui

@p5
Copy link
Member

p5 commented Jun 26, 2024

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
Copy link

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
Copy link

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
Copy link

kittenvr commented Jul 2, 2024

I want java and nodejs

@dreamyukii
Copy link
Contributor

I want java and nodejs

for java and nodejs you can use homebrew

@kittenvr
Copy link

kittenvr commented Jul 3, 2024

I want java and nodejs

for java and nodejs you can use homebrew

Java isn't on homebrew

@dreamyukii
Copy link
Contributor

dreamyukii commented Jul 3, 2024

I want java and nodejs

for java and nodejs you can use homebrew

Java isn't on homebrew

openjdk

@Confusedsiren56
Copy link

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
Copy link
Member

m2Giles commented Jul 6, 2024

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
Copy link
Member Author

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
Copy link
Member Author

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
Copy link

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
Copy link
Member Author

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
Copy link

RoyAwesome commented Jul 8, 2024

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
Copy link

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

@m2Giles
Copy link
Member

m2Giles commented Jul 11, 2024

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
Copy link

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
Copy link

deoradh commented Jul 14, 2024

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
Copy link

Suggestion:

  • rpm-ostree install openssl-devel -- --allow-replacement

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
Copy link

Rerum02 commented Sep 4, 2024

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
Copy link

bb010g commented Sep 5, 2024

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
Copy link

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
Copy link

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
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests