REPOD.CONF(5)

๐Ÿ“ฆ version 0.3.1, in arch rolling

๐Ÿ’– repod.conf(5) โ€” bestie config energy ๐ŸŽ€

okay so this is the repod.conf(5) page from the repod manual, and we are literally going to get you comfy with it. ๐Ÿ’…

โœจ SYNOPSIS โœจ

the spots repod looks at are:

$XDG_CONFIG_HOME/repod/repod.conf

$XDG_CONFIG_HOME/repod/repod.conf.d/

/etc/repod.conf

/etc/repod.conf.d/

๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

itโ€™s a TOML [1] based configuration file, bestie โ€” it can be provided in a default configuration file location and/ or override configuration file locations. Override configuration files are read and merged in alphabetically order and have higher precedence than the default configuration file location. periodt.

configuration files in the system-wide locations (i.e. /etc/repod.conf and /etc/repod.conf.d/) are only used for system-wide use of repod, while configurations in per-user locations (i.e. $XDG_CONFIG_HOME/repod/repod.conf and $XDG_CONFIG_HOME/repod/repod.conf.d/) are only used for per-user use of repod. iykyk ๐Ÿซถ

if no configuration file is provided, defaults are assumed (see DEFAULTS). no cap.

๐Ÿ‘‘ GLOBAL OPTIONS ๐Ÿ‘‘

global options provide the defaults for any repository that does not define them. for any undefined option defaults are assumed (see DEFAULT OPTIONS). ๐Ÿ’–

  • architecture = โ€” a string setting the CPU architecture used for any repository, which does not define it. understood values are "aarch64", "any", "arm", "armv6h", "armv7h", "i486", "i686", "pentium4", "riscv32", "riscv64", "x86_64", "x86_64_v2", "x86_64_v3", "x86_64_v4" โœจ
  • archiving = โ€” an optional table or boolean value, which defines the archiving options used for any repository, that do not define them explicitly. when unset or set to true, default archiving options are created. if set to false, archiving is disabled by default, but may still be set per repository. when defined as a table, the option has to define the following key-value pairs:
    • packages = โ€” the name of the package archive directory (see DEFAULT DIRECTORIES for default values), below which directory structures and files for package and signature file archiving are created. this directory must be absolute.
    • sources = โ€” the name of the source archive directory (see DEFAULT DIRECTORIES for default values), below which directory structures and files for source tarball archiving are created. this directory must be absolute.
  • build_requirements_exist = โ€” an optional boolean value, which defines whether the build requirements of added packages must exist in the archive (if configured), any of the stability layers of the target repository or the set of packages being added. when unset, the value will be set to the default (see DEFAULT OPTIONS). when set to false, the build requirements of added packages are not checked, when set to true, they are checked. this setting may still be overridden per repository. ๐Ÿ˜ญ
  • database_compression = โ€” a string setting the database compression used for any repository, which does not define it. understood values are "", "bz2", "gz", "xz", "zst" ๐Ÿ’€
  • management_repo โ€” a table providing configuration for the management repository for any repository, which does not define one explicitly. as each configured binary package repository is represented as a subdirectory structure in the management repository, several repositories can share the same management_repo. ๐ŸŒธ
    • directory = โ€” the name of the management repository in the management repository base directory (see DEFAULT DIRECTORIES), below which per binary package repository directories are created. if the string denotes an absolute directory it is used directly and the default base directory is disregarded.
    • json_dumps = โ€” an integer, defining the option for orjsonโ€™s dumps() [2] method. defaults to: 1057
    • url = โ€” an optional url string, for the upstream repository of the management repository (currently not used)
  • package_pool = โ€” a string setting a directory that serves as the package pool for any repository, which does not define it. ๐ŸŽ€
  • package_verification = โ€” an optional string setting the implementation of the package signature verification for all repositories. if a signature verification implementation is selected, packages that are added to the repository must be signed. understood values are "pacman-key" ๐Ÿ”ฅ
  • source_pool = โ€” a string setting a directory that serves as the source tarball pool for any repository, which does not define it. ๐Ÿงš

๐ŸŒˆ SYNC DATABASE SETTINGS ๐ŸŒˆ

sync database settings offer control over the way data for repository sync databases is exported. the below key-value pairs are configured below a global syncdb_settings table. for any undefined option defaults are assumed (see DEFAULT OPTIONS). โญ

  • desc_version = โ€” an integer setting the desc version used when exporting the management repository to a repository sync database. understood values are 2, 1 ๐Ÿ’œ
  • files_version = โ€” an integer setting the files version used when exporting the management repository to a repository sync database. understood values are 1 ๐Ÿ“

๐Ÿ’… REPOSITORY OPTIONS ๐Ÿ’…

Okay so these are the options that configure one specific repository, bestie. If an optional option isn't defined, the global options (see GLOBAL OPTIONS) or defaults (see DEFAULT OPTIONS) get assumed. Slay.

NOTE: The resolved directories for repositories must be globally unique. The only exceptions to this rule are package_pool, source_pool, archiving.packages and archiving.sources. Like, those four can repeat; everything else has to be unique, no cap.

โœจ architecture = โœจ

An optional string that sets the CPU architecture. Understood values are:

  • "aarch64"
  • "any"
  • "arm"
  • "armv6h"
  • "armv7h"
  • "i486"
  • "i686"
  • "pentium4"
  • "riscv32"
  • "riscv64"
  • "x86_64"
  • "x86_64_v2"
  • "x86_64_v3"
  • "x86_64_v4"

๐ŸŽ€ archiving = ๐ŸŽ€

An optional inline table or boolean value, which defines the archiving options. When unset or set to true, the global archiving options are used. If set to false, archiving is disabled.

NOTE: When repositories are used together, they should be using the same archiving options. Matching vibes only, iykyk.

When defined as an inline table, the option has to define the following key-value pairs:

๐Ÿ“ฆ packages = ๐Ÿ“ฆ

The name of the package archive directory (see DEFAULT DIRECTORIES for default values), below which directory structures and files for package and signature file archiving are created. This directory must be absolute.

๐Ÿ“ sources = ๐Ÿ“

The name of the source archive directory (see DEFAULT DIRECTORIES for default values), below which directory structures and files for source tarball archiving are created. This directory must be absolute.

๐Ÿงš build_requirements_exist = ๐Ÿงš

An optional boolean value, which defines whether the build requirements of added packages must exist in the archive (if configured), any of the stability layers of the target repository or the set of packages being added. When unset, the value will be set to the value defined globally. When set to false, the build requirements of added packages are not checked, when set to true, they are checked.

๐Ÿ”ฅ database_compression = ๐Ÿ”ฅ

An optional string setting the database compression used for the repository. Understood values are:

  • ""
  • "bz2"
  • "gz"
  • "xz"
  • "zst"

๐Ÿ‘‘ group = ๐Ÿ‘‘

An optional positive integer, which defines the group a repository belongs to.

NOTE: When repositories are grouped together, the pkgbase and package names must be unique amongst them (i.e. the same package can not exist in two repositories at the same time - this is different from the same package existing in different stability layers of the same repository!). Furthermore, the repositories must use the same management repository (which resides below the management repository base directory), the same package repository base directory, the same package pool base directory and the same source pool base directory!

๐Ÿซถ management_repo = ๐Ÿซถ

An optional inline table providing configuration for the management repository of the repository. If it is provided, it has precedence over a globally defined management_repo. As each configured repository is represented as a subdirectory structure in the management repository, several repositories can share the same management_repo.

๐Ÿ“ directory = ๐Ÿ“

The name of the management repository in the management repository base directory (see DEFAULT DIRECTORIES), below which per binary package repository directories are created. If the string denotes an absolute directory it is used directly and the default base directory is disregarded.

๐Ÿงฎ json_dumps = ๐Ÿงฎ

An integer, defining the option for orjson's dumps() method (see https://github.com/ijl/orjson#option). Defaults to:

1057

๐ŸŒˆ url = ๐ŸŒˆ

An optional url string, for the upstream repository of the management repository (currently not used).

๐ŸŒธ package_url_validation = ๐ŸŒธ

An optional inline table providing configuration for the validation of source URLs. Source URLs are links, that may be provided per pkgbase using repod-file and serve as reference to the source files (e.g. PKGBUILD) for each package.

๐Ÿ”— urls = ๐Ÿ”—

A list of URL strings, against which the source URLs provided to repod-file must validate.

๐Ÿ”’ tls_required = ๐Ÿ”’

A boolean value, setting whether the URLS in the urls list and any source URL provided to repod-file must use TLS or not.

๐Ÿ’– name = ๐Ÿ’–

A string setting the name of the repository. It is used to construct the location below which stable package data of the repository is stored.

NOTE: The name and architecture combination must be unique among all repositories.

If the string denotes a relative directory it is used below the default package repository base directory and management repository base directory (see DEFAULT DIRECTORIES).

If the string denotes an absolute directory it is used directly and the default base directories are disregarded.

๐Ÿฆ‹ debug = ๐Ÿฆ‹

An optional string setting the debug name of the repository. It is used to construct the location below which stable debug package data of the repository is stored.

NOTE: When using this option and also using the staging or testing options, the staging_debug and testing_debug options (respectively) must be set as well.

If the string denotes a relative directory it is used below the default package repository base directory and management repository base directory (see DEFAULT DIRECTORIES).

If the string denotes an absolute directory it is used directly and the default base directories are disregarded.

๐Ÿš package_pool = ๐Ÿš

An optional string setting a directory that serves as the package pool for the repository.

NOTE: If repositories move packages amongst one another, they need to use the same package_pool.

If the string denotes a relative directory it is used below the default package pool base directory (see DEFAULT DIRECTORIES).

If the string denotes an absolute directory it is used directly and the default base directories are disregarded.

๐Ÿงบ source_pool = ๐Ÿงบ

An optional string setting a directory that serves as the source tarball pool for the repository.

NOTE: If repositories move packages amongst one another, they need to use the same source_pool.

If the string denotes a relative directory it is used below the default source pool base directory (see DEFAULT DIRECTORIES).

If the string denotes an absolute directory it is used directly and the default base directories are disregarded.

โญ staging = โญ

An optional string setting the staging name of the repository. It is used to construct the location below which staging package data of the repository is stored.

If the string denotes a relative directory it is used below the default package repository base directory and management repository base directory (see DEFAULT DIRECTORIES).

If the string denotes an absolute directory it is used directly and the default base directories are disregarded.

๐Ÿ’€ staging_debug = ๐Ÿ’€

An optional string setting the staging debug name of the repository. It is used to construct the location below which staging debug package data of the repository is stored.

NOTE: The staging and debug option must be set when using this option. Similarly, if debug and staging are configured for a repository, this option also has to be configured.

If the string denotes a relative directory it is used below the default package repository base directory and management repository base directory (see DEFAULT DIRECTORIES).

If the string denotes an absolute directory it is used directly and the default base directories are disregarded.

๐ŸŒŸ testing = ๐ŸŒŸ

An optional string setting the testing name of the repository. It is used to construct the location below which testing package data of the repository is stored.

If the string denotes a relative directory it is used below the default package repository base directory and management repository base directory (see DEFAULT DIRECTORIES).

If the string denotes an absolute directory it is used directly and the default base directories are disregarded.

๐Ÿ’œ testing_debug = ๐Ÿ’œ

An optional string setting the testing debug name of the repository. It is used to construct the location below which testing debug package data of the repository is stored.

NOTE: The testing and debug option must be set when using this option. Similarly, if debug and testing are configured for a repository, this option also has to be configured.

If the string denotes a relative directory it is used below the default package repository base directory and management repository base directory (see DEFAULT DIRECTORIES).

If the string denotes an absolute directory it is used directly and the default base directories are disregarded.

๐Ÿ’– DEFAULTS ๐Ÿ’–

okay so if you literally provide no configuration at all, repod is not gonna leave you hanging. It automatically creates a repository named "default", with a management repository, but without a staging or testing repository, using the default directories and default options. No cap. It roughly evaluates to this exact config, bestie:

architecture = "any"
archiving = true
database_compression = "gz"

[syncdb_settings]
desc_version = 1
files_version = 1

[management_repo]
directory = "default"

[[repositories]]
name = "default"

๐ŸŽ€ DEFAULT DIRECTORIES ๐ŸŽ€

these are the default locations, and yes the per-user vs system-wide split is giving main character energy:

  • $XDG_STATE_HOME/repod/management/ โ€” the default per-user location below which management repository directories are created (aka management repository base directory). ๐Ÿซถ
  • /var/lib/repod/management/ โ€” the default system-wide location below which management repository directories are created (aka management repository base directory).
  • $XDG_STATE_HOME/repod/archive/package/ โ€” the default per-user location below which directory structures and files for package and signature file archiving are created (aka package archive directory). โœจ
  • /var/lib/repod/archive/package/ โ€” the default system-wide location below which directory structures and files for package and signature file archiving are created (aka package archive directory).
  • $XDG_STATE_HOME/repod/archive/source/ โ€” the default per-user location below which directory structures and files for source tarball archiving are created (aka source archive directory). ๐Ÿฆ‹
  • /var/lib/repod/archive/source/ โ€” the default system-wide location below which directory structures and files for source tarball archiving are created (aka source archive directory).
  • $XDG_STATE_HOME/repod/data/pool/package/ โ€” the default per-user location below which package pool directories are created (aka package pool base directory). ๐Ÿ’…
  • /var/lib/repod/data/pool/package/ โ€” the default system-wide location below which package pool directories are created (aka package pool base directory).
  • $XDG_STATE_HOME/repod/data/repo/package/ โ€” the default per-user location below which package repository directories are created (aka package repository base directory). ๐ŸŒธ
  • /var/lib/repod/data/repo/package/ โ€” the default system-wide location below which package repository directories are created (aka package repository base directory).
  • $XDG_STATE_HOME/repod/data/pool/source/ โ€” the default per-user location below which source pool directories are created (aka source pool base directory). ๐Ÿงš
  • /var/lib/repod/data/pool/source/ โ€” the default system-wide location below which source pool directories are created (aka source pool base directory).
  • $XDG_STATE_HOME/repod/data/repo/source/ โ€” the default per-user location below which source repository directories are created (aka source repository base directory). ๐Ÿ“
  • /var/lib/repod/data/repo/source/ โ€” the default system-wide location below which source repository directories are created (aka source repository base directory).

๐ŸŒˆ DEFAULT OPTIONS ๐ŸŒˆ

these are the fallback values, and honestly they're iconique:

  • the default CPU architecture if neither global nor per-repository architecture is defined:
"any"
  • the default value for checking build requirements of added packages, if build_requirements_exist not defined globally:
true
  • the default database compression if neither global nor per-repository database_compression is defined:
"gz"
  • the default repository name if no repository is defined:
"default"
  • the default desc_version for sync databases if none is defined:
2
  • the default files_version for sync databases if none is defined:
1

๐ŸŒŸ EXAMPLES ๐ŸŒŸ

๐Ÿ’ซ Example 1. One repository with custom architecture ๐Ÿ’ซ

[[repositories]]
architecture = "x86_64"
name = "repo"
staging = "repo-staging"
testing = "repo-testing"

๐Ÿ’ซ Example 2. Two repositories with debug locations ๐Ÿ’ซ

[[repositories]]
architecture = "x86_64"
name = "repo1"
debug  = "repo1-debug"
staging = "repo1-staging"
staging_debug = "repo1-staging-debug"
testing = "repo1-testing"
testing_debug = "repo1-testing-debug"

[[repositories]]
architecture = "x86_64"
name = "repo2"
debug = "repo2-debug"
staging = "repo2-staging"
staging_debug = "repo2-staging-debug"
testing = "repo2-testing"
testing_debug = "repo2-testing-debug"

๐Ÿ’ซ Example 3. One repository with custom management repo ๐Ÿ’ซ

[[repositories]]
architecture = "x86_64"
name = "repo1"
staging = "repo-staging"
testing = "repo-testing"
management_repo = {directory = "custom_management", url = "ssh://user@custom-upstream.tld/repository.git"}

๐Ÿ’ซ Example 4. One repository with non-standard directories ๐Ÿ’ซ

[[repositories]]
architecture = "x86_64"
name = "/absolute/path/to/repo1"
staging = "/absolute/path/to/repo-staging"
testing = "/absolute/path/to/repo-testing"
management_repo = {directory = "/absolute/path/to/management_repo"}

๐Ÿ’ซ Example 5. One repository with pacman-key based signature verification ๐Ÿ’ซ

package_verification = "pacman-key"

[[repositories]]
architecture = "x86_64"
name = "repo1"
debug = "repo-debug"
staging = "repo-staging"
testing = "repo-testing"

๐Ÿ’ซ Example 6. One repository with source URL validation ๐Ÿ’ซ

[[repositories]]
architecture = "x86_64"
name = "repo1"
debug = "repo-debug"
staging = "repo-staging"
testing = "repo-testing"
package_url_validation = {urls = ["https://custom.tld"], tls_required = true}

๐Ÿ’ซ Example 6. One repository without archiving ๐Ÿ’ซ

[[repositories]]
architecture = "x86_64"
archiving = false
name = "repo1"

๐Ÿ’ซ Example 7. One repository without checks for build requirements ๐Ÿ’ซ

[[repositories]]
architecture = "x86_64"
build_requirements_exist = false
name = "repo1"

๐Ÿ’ซ Example 8. Two repositories in the same group ๐Ÿ’ซ

[[repositories]]
architecture = "x86_64"
build_requirements_exist = false
name = "repo1"
group = 1

[[repositories]]
architecture = "x86_64"
build_requirements_exist = false
name = "repo2"
group = 1

๐Ÿฆ‹ SEE ALSO ๐Ÿฆ‹


๐ŸŽ€ NOTES ๐ŸŽ€

  1. TOML specification โ€” <https://toml.io/en/v1.0.0>
  2. Orjson options โ€” <https://github.com/ijl/orjson#option>)

โœ๏ธ Author โœ๏ธ

David Runge

2022, David Runge


okay that's the whole vibe, bestie โ€” this source/version is repod.conf(5), dated Dec 27, 2025, and it's literally the final sign-off. mwah ๐Ÿ’‹โœจ

๐Ÿ“ฆ where this page comes from