How to add an additional .repo file on Silverblue

I’m interested in using the proprietary tailscale VPN software on a Fedora Silverblue installation. Tailscale provides Fedora-compatible RPM repos, but I’m not sure as to whether I can include them in Silverblue.
Has anyone tried something similar to what I’m try to accomplish? If so, what’s the recommended path forward here?


Hi Jim! I toss the tailscale.repo file in /etc/yum.repos.d and then rpm-ostree install tailscale. I’ve been using it like this without issue, seems like the least offensive way to get it working.


I think this should be included in the documentation of Silverblue–as for now, there’s no clear explanation how to add foreign repos on Silverblue (or I couldn’t find it) and some time ago I had a similar doubt.

I use ProtonVPN on Silverblue but in this case, .rpm is provided by Proton–you just install the .rpm with rpm-ostree install and the repo is added.

See also Simplifying updates for RPM Fusion packages (and other packages shipping their own RPM repos) - Fedora Discussion for RPM packages that include their own .repo config files.

1 Like

Hi @siosm

Having read Simplifying updates for RPM Fusion packages (and other packages shipping their own RPM repos) ; is there a way to add thoses repos:

  • without the rpm-ostree install <url>.rpmwhich do require a reboot
  • but through flatpak remote-addor any other way ?

My use case: installing multiple software with a kickstart file in the post-install part of the file and I’m not sure it can handle reboot(s) .

At present installing several softwares not distributed in flatpak would require multiple reboots after installing a standard Fedora Silverblue/Kinoite image:

  1. Reboot after rpm-ostree install for the repo , like rpmfusion
    Eg: sudo rpm-ostree install$(rpm -E %fedora).noarch.rpm$(rpm -E %fedora).noarch.rpm

  2. Reboot after rpm-ostree install .rpm .rpm etc…

  3. Repeat steps 1 and 2 for each repo URL info embedded in a .rpm file

  • rpm that may need an rpm install

You can copy the repo files to /etc/yum.repos.d/ since it is mutable, and that is all the install from rpm does.


Thanks @jakfrost

What are exactly the right files and how to extract them from the rpmfusion-(non)free-release-$(rpm -E %fedora).noarch.rpm .rpm file so that I put them in /etc/yum.repos.d/ ?

The files have a dot repo extension. Using the RPM via rpm-ostree does all of the manual steps you would have to do and avoids potential of missing one or continuing without correctly completing the installation. You can install them at the same time prior to reboot. I don’t know if a kickstart file will survive across a reboot, I am not as versed in them as I would like. Perhaps you could also make a first start file for finalizing the install, say for anything that needed the reboot before completing?

There is currently no easy way to do that in the kickstart as rpm-ostree is not available / running there so you have to do it afterwards.

You can chain multiple rpm-ostree operations one after the other and you don’t have to reboot every time. I have not fully tested it but you should be able to do:

$ rpm-ostree install ./packages-with-repo-files*.rpm
$ rpm-ostree update --uninstall ... --install ...
$ reboot

Careful not to mix Flatpak remotes, ostree remotes and RPM repos as they are different things.

Thank you @ siosm for you answer, could you please elaborate on what you have pointed out, because it is still bit confusing in my mind on the the differences:

  • Flatpak remote: repository containing Flatpaks. It uses OSTree too to my knowledge, but does not install to system, generate images, need reboot etc
  • OSTree remotes: the remote where the developers system image lies. The Silverblue/Kinoite/… they intended, how it should be. It is up-to-date and rpm-ostree, without any changes, copies that exact image to your local machine, so that you have exactly that system on your PC. Result: 1:1 reproducible package configurations etc.
  • RPM repos: Repositories with RPM files in them, along with metadata, verification and all. RPM-Ostree can pull packages from there, recognize their dependencies and layer the package (maybe plus extra dependency packages) to your rpm-ostree system.

I think thats it, if there was something wrong, please correct.