I think GNOME Builder is the gold standard for how a flatpak IDE can work on an image-based OS. A project can target the host system, any flatpak SDK, or a podman container (such as a toolbox). It also gives you a host terminal as well one in the build environment.
Obviously it’s not going to be to everyone’s taste, and it probably isn’t well-suited for all types of development, so it would be nice to see other IDEs follow its lead. I’m sure that’d be a lot of work for a relatively narrow audience though.
Hello,
I’ve installed Silverblue on my new dev laptop but I’m struggling (or maybe learning is a more relevant word) a bit on the config. I’m also curious of how other devs are using Silverblue for development, and especially a real use case of using multiple toolbox (one for each client? project? How it is a benefice vs using a container for all?).
For now, I’ve installed SublimeText in a (Fedora) toolbox, and made a .desktop for it ; it seems to work fine but didn’t finish the config. I’ve also installed asdf in this toolbox and it works fine.
But as a ArchLinux user, I’m looking to use a ArchLinux toolbox because I don’t have time to learn Fedora; I will of course but it must not slow down my work.
The problem of Silverblue IMHO is that it lacks documentation; I’m used to ArchWiki which is rich.
For now, I continue working on my old (ArchLinux) laptop until I feel confident enough to make the jump.
I am using the intellij ultimate flatpak on silverblue, together with the golang, nodejs, php and dotnet flatpak sdk’s. Have been using it like this for over half a year now, and has worked pretty great so far. Intellij has podman/docker integration, so I can open a shell to a container / toolbox from within the IDE. But I mostly use the flatpak sdk’s and only toolboxes when something is not working or available.
There are some changes that I made, or some things that could be improved:
I removed the access to all my files for intellij, and only allowed access to my code and ssh folder. This way my home directory doesn’t get cluttered with files (~/.npm, ~/.dotnet).
I added the FLATPAK_ENABLE_SDK_EXT=* environment variable to the flatpak, so sdk’s are automatically added to my $PATH
The $PS1 within the IDE doesn’t contain the directory, haven’t found a solution for this yet. Should probably open an issue with the intellij flatpak maintainers.
The php sdk lags behind a bit, had to compile it myself for a newer flatpak runtime version.
If intellij is not your thing, this workflow is also possible with vscode for as far as I know. Just install the flatpak and the needed sdk’s. But don’t forget to add the FLATPAK_ENABLE_SDK_EXT=* environment variable to add the sdk’s to the $PATH.
It would probably be a great idea to write some article about how to do development on silverblue, and make some things a little bit more intuitive (setting the $PS1 and making FLATPAK_ENABLE_SDK_EXT=* the default). If someone is interested in doing these things together or as a group, send me a message on matrix (job:plabble.org). Would be fun to make development on silverblue even better!
This is my workflow.
Create a Ubuntu distrobox container. Install all tools and vscode inside it. And export all the gui apps. It saves me from all the headache.
I wish toolbox will have a gui method just like wsl in windows. Where with one click we will install ubuntu or other os. Also I don’t like shared home of toolbox. So, I go on with distrobox custom home.
Hello @passthejoe ,
Depending on your development needs, The Gnome Builder Flatpak is indeed the Gold Standard (or was). I use NetBeans flatpak and find it quite good, along with using Quarkus and GraalVm to get native executables running in their own containers that I developed in Java as a reactive app! Lots of fun!
Getting IDEs to care has been a long slow process, but that’s a different discussion.
Here’s what I’ve been messing with, standard “might not be everyone’s taste” disclaimers apply:
Open spec, multiple IDE support, and no need to bother configuring tool/distroboxes. And it’s the same workflow on mac, windows, and linux. And it stops the confusion/jank of people copying binaries out of their toolboxes and having to care about SDKs in flatpak. It’s pretty much a direct 1:1 copy of a popular pattern instead of doing it with toolboxes.
The best part about containers is being able to use whatever you want independently of the host os!
Oh! There’s a community repo where some of us maintain toolbox images for distros. If we could get arch users to take a look and help out it’s not that much work.
I’ve been doing the alpine ones and it hasn’t been too much of a time commitment:
I am developing in toolbox now for almost 3 years in my daily job. I use neovim in terminal and because of that don’t have a need for an full-blown IDE, but as far as I know you can install all graphical IDEs inside toolbox and they just work if you start them inside toolbox (I used Azure Data Studio like this).
So my basic idea here is too install everything I need for development only inside the toolbox, it saves you for issues when you upgrade your system.
I also use the same approach for personal projects and for that I have an public dotfiles repo if you are interested.
The main stuff related to toolbox setup is in this file:
I try to have everything in that script so I can recreate my development environment when I have to reinstall it on another machine or to upgrade to never versions of Fedora.