FEDRQ(5)

πŸ“¦
version 1.7.0 Β· 4 versions
, in epel 10, fedora 43, fedora 44

πŸ’… FEDRQ(5) β€” the fedrq config files, bestie ✨

okay so you found the manual page for fedrq config files (that's the File Formats Manual one, not the command one, don't get it twisted 🫢) and honestly? it's giving "simplified repository querying" and it ATE. let's get into it.


🌸 NAME 🌸

fedrq β€” Simplified repository querying. that's it. that's the whole name. iconic.


✨ SYNTAX ✨

so the tea is: fedrq uses the TOML syntax for its configuration files. that's the vibe. TOML girlies stay winning πŸŽ€


πŸ¦‹ DIRECTORIES πŸ¦‹

there are like, three (3) places config files can live, and they have a whole hierarchy situation going on. precedence queen behavior:

  • PYTHON_SITELIB/fedrq/data/*.toml β€” these are the builtin configuration files. ngl bestie, do not modify these directly, okay? πŸ™ˆ you may override them, or use them as examples (which is actually such a good idea, they're basically free inspo).
  • /etc/fedrq/*.toml β€” system wide configuration files. these have precedence over the builtin ones, so they get to talk over them πŸ’…
  • ~/.config/fedrq/*.toml β€” user configuration files. highest precedence πŸ‘‘ top level options and releases in the [releases] table can be redefined by creating a configuration file with higher precedence. so you can literally just make a higher-precedence file and rewrite the top level options and the releases. main character energy fr fr.

🌈 OPTIONS 🌈

here's every single one, no skips, no crumbs left behind:

  • default_branch <str> (default: rawhide) β€” what branch to query by default when -b/--branch is not specified. it's the fallback babe πŸ“
  • smartcache <bool|Literal["always"]> (default: true) β€” okay so different releases have different releasevers. switching the releasever (i.e. passing a different value to --branch) clears the dnf cache. when smartcache is true, fedrq sets base.conf.cachedir to $XDG_CACHE_DIR/fedrq/BRANCH when changing the releasever. unless smartcache is set to always, the system cache is used if the requested branch's releasever is the same as the system's releasever. she's smart, that's the point πŸ’…
  • releases <dict[str, ReleaseConfig]> β€” keys are a friendly name for the distribution. RELEASE specifies the format for the values. (see below bestie, there's a whole section ⬇️)
  • filelists <always|never|auto> (default: auto) β€” see --filelists in fedrq(1) 🫢
  • backend <dnf|libdnf5> β€” see --backend in fedrq(1) 🫢

πŸŽ€ RELEASE πŸŽ€

this is what goes inside each release entry, k? each one is a whole little moment:

  • defs <dict[str, list[str]]> β€” keys are repo types to pass to -r/--repo. each repo type takes a list of repo ids to query. All releases MUST have a base def. like, non-negotiable. periodt.
defs.base = ["rawhide", "rawhide-source"]
# These are defined in rawhide-buildroot.repo which
# is referenced in `releases.rawhide.defpaths`.
defs.buildroot = ["fedrq-koji-rawhide", "fedrq-koji-rawhide-source"]
  • matcher <regex> β€” a Python regex to match -b/--branch names against. regexes must have one capture group to use as the branch's releasever. exactly one, don't be greedy (well, greedy quantifiers are fine, greedy capture groups are not).
# example:
matcher = "^(rawhide)$"
# or
matcher = "^f(\d{2})$"
  • defpaths <list of paths> (default: []) β€” list of .repo files to load. All repo(s) MUST have enabled=0. fedrq will enable the appropriate repos that are specified in defs for the user's requested repo type. paths can be relative or absolute. relative paths are searched for in the following directories:
    • PYTHON_SITELIB/fedrq/data/repos/
    • /etc/fedrq/repos/
    • ~/.config/fedrq/repos/
  • copr_chroot_fmt <str> (e.g. fedora-{version} or epel-{version} or fedora-rawhide) β€” name of the Copr chroot that corresponds to this release. {version} will be replaced with the releasever. it's like mad libs but for chroots ✨
  • system_repos <bool> (default: true) β€” whether to load the system repository configuration. if all of the repository definitions are specified in defpaths, then it's a good idea to turn this off to avoid conflicts (if e.g. the system configuration defines the same repository IDs) and save time. so like, if you already brought your own repos, don't also grab the system's. sharing is not always caring πŸ™ˆ

🧚 EXAMPLES 🧚

here are some example configuration snippets. real ones. you can literally copy these.

configuring RPMFusion πŸ’œ

  1. Install the applicable rpmfusion release packages.
$ sudo dnf install \
     rpmfusion-free-release rpmfusion-free-release-rawhide \
     rpmfusion-nonfree-release rpmfusion-nonfree-release-rawhide
  1. Create a configuration.
# ~/.config/fedrq/rpmfusion.toml

# `releases.rawhide` exists in the default configuration.
# fedrq will merge the extras keys in the `defs` table with the default config.
[releases.rawhide]
# Note that the corresponding -source repositories are enabled.
# All fedrq release defs must have these to ensure all functionality works
# properly (notably subpkgs and whatrequires-src).

# `fedrq CMD -b rawhide -r fusion-free` will enable the following two
# repositories and nothing more.
#
# Use `fedrq CMD -b rawhide -e fusion-free` to enable these repositories
# *in addition* to the default rawhide repositories.
defs.fusion-free = [
    "rpmfusion-free-rawhide", "rpmfusion-free-rawhide-source",
]
defs.fusion-nonfree-only = [
    "rpmfusion-nonfree-rawhide", "rpmfusion-nonfree-rawhide-source"
]
# Enable everything
defs.rpmfusion = [
    # Include all repositories in defs.rpmfusion-free above
    "@fusion-free",
    # Include all repositories in defs.rpmfusion-nonfree-only above.
    "@fusion-nonfree-only",
]
# Make sure that fedrq loads repositories from the system configuration.
# This is the default but better to explicitly specify.
system_repos = true

[releases.branched]
defs.fusion-free = [
    "rpmfusion-free", "rpmfusion-free-source",
    "rpmfusion-free-updates", "rpmfusion-free-updates-source"
]
defs.fusion-nonfree-only = [
    "rpmfusion-nonfree", "rpmfusion-nonfree-source",
    "rpmfusion-nonfree-updates", "rpmfusion-nonfree-updates-source"
]
defs.rpmfusion = [
    "@fusion-free",
    "@fusion-nonfree-only",
]

system_repos = true
bestie the @fusion-free syntax is literally including all the repos from that other def. it's defs referencing defs. so meta. slay πŸ’…

πŸ‘‘ AUTHOR πŸ‘‘

fedrq is maintained by Maxwell G <maxwell@gtmx.me>. see https://fedrq.gtmx.me/ for more information about fedrq. ty for your service king 🫑


πŸ’– SEE ALSO πŸ’–

  • fedrq(1) β€” the command itself, go read it, it's right there

and that's the whole page bestie, you're officially a fedrq config girly now ✨

this lil doc is from the File Formats Manual, version-dated 2026-07-13, and it's filed under FEDRQ(5) πŸ’… mwah, go configure something cute πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from