Skip to content




fedrq - Simplified repository querying


fedrq uses the TOML syntax for its configuration files.



Builtin configuration files. These should not be modified directly but may be overridden or used as examples.


System wide configuration files. Has precedence over builtin configuration files.


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.


default_branch <str> (default: rawhide)

What branch to query by default when -b/--branch is not specified.

smartcache <bool|Literal["always"]> (default: true)

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.

releases <dict[str, ReleaseConfig]>

Keys are a friendly name for the distribution. RELEASE specifies the format for the values.

filelists <always|never|auto> (default: auto)

See --filelists in fedrq(1)

backend <dnf|libdnf5>

See --backend in fedrq(1)


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.

 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>

Python regex to match -b/--branch names against. Regexes must have one capture group to use as the branch's releasever.
(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.

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.


Here are some example configuration snippets.

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

2. 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.
# 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
    # Include all repositories in defs.rpmfusion-nonfree-only above.
# Make sure that fedrq loads repositories from the system configuration.
# This is the default but better to explicitly specify.
system_repos = true

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 = [

system_repos = true


fedrq is maintained by Maxwell G <>. See for more information about fedrq.