PARU.CONF(5)

πŸ“¦
version 2.1.0-unstable-2026-01 Β· 2 versions
, in nixpkgs unstable

πŸ¦‹ NAME πŸ¦‹

This is paru.conf(5), straight from the Paru Manual 🫢 β€” aka paru.conf, the paru configuration file. She's literally the blueprint for how paru behaves, bestie. πŸ’…

🌸 SYNOPSIS 🌸

Paru checks these spots, in this exact read order:

$PARU_CONF, $XDG_CONFIG_HOME/paru/paru.conf,
$HOME/.config/paru/paru.conf, /etc/paru.conf

πŸ’œ DESCRIPTION πŸ’œ

Okay so real talk: paru.conf is paru's config file. The format is based on pacman.conf(5) β€” yep, the same kind of layout, so if you've edited pacman's config before you're already lowkey fluent. ✨

Paru starts by trying $PARU_CONF. If that variable is unset, she goes for $XDG_CONFIG_HOME/paru/paru.conf. If $XDG_CONFIG_HOME is unset β€” or that file just isn't there β€” she moves on to $HOME/.config/paru/paru.conf. And if even that file doesn't exist, she reads the system config from /etc/paru.conf. That's the whole search order, no cap.

Also, the Include directive exists, and it lets you copy paste files into the config. 🫢 A very valid move: extend the system config by including it in your user's config, then defining options. iykyk.

πŸ’– OPTIONS πŸ’–

These live in the [options] section. Every single option is below β€” no skipping, no summarizing, periodt. πŸ’…

  • BottomUp β€” Print search results from bottom to top. AUR results will be printed first. 🫢
  • AurOnly β€” Assume all targets are from the AUR. Also, actions such as sysupgrade will only act on AUR packages. Note that dependency resolving will still act normally and include repository packages. ✨
  • PkgbuildsOnly β€” Assume all targets are from PKGBUILD repositories. Also, actions such as sysupgrade will only act on PKGBUILD repository packages. Note that dependency resolving will still act normally and include repository and AUR packages. πŸ¦‹
  • RepoOnly β€” Assume all targets are from the repositories. Also, actions such as sysupgrade will only act on repository packages. πŸ’…
  • Mode = aur|repo|pkgbuilds β€” Select what kinds of packages paru should act on. You can select multiple modes by separating them with a comma. Also, a, r, and p may be used as shorthand for aur, repo, and pkgbuilds respectively. Short form modes can also be combined without a comma. E.g. Mode = ar or Mode = arp. πŸ”₯
  • SudoLoop [= args...] β€” Periodically call sudo in the background so it doesn't time out during long builds. Optionally, args can be passed to choose how to loop the command. This may be useful for doas, where looping is done differently. πŸŒ€
  • NoCheck β€” Don't resolve checkdepends or run the check function. πŸ™ˆ
  • InstallDebug β€” Also install debug packages when a package provides them. πŸ›βœ¨
  • Devel β€” During sysupgrade, also check AUR development packages for updates. Currently only Git packages are supported. Devel checking is done using git ls-remote: the newest commit hash is compared against the hash at install time. This allows devel updates to be checked almost instantly and not require the original PKGBUILD to be downloaded. πŸ”₯
  • IgnoreDevel β€” Like IgnorePkg but for devel upgrades. Packages matching this will not be tried for a devel update, but may still be upgraded if the pkgver changes. πŸ’œ
  • IgnoreDevelSource β€” Like IgnoreDevel but targets urls in the source=() array of pkgbuilds. This can be useful if a package has a properly working main git source but also has an unversioned secondary source that doesn't effect the pkgver. 🧚
  • CleanAfter β€” Remove untracked files after installation. Untracked files are removed with the exception of directories. This allows VCS packages to easily pull an update instead of having to reclone the entire repo. 🧹✨
  • Provides [= all] β€” Look for matching providers when searching for AUR packages. When multiple providers are found, a menu will appear prompting you to pick one. This increases dependency resolve time, although this should not be noticeable. By default, only targets and missing packages will be searched for providers. Specifying all will enable this for all packages. πŸŽ€
  • PgpFetch β€” Prompt to import unknown PGP keys from the validpgpkeys field of each PKGBUILD. πŸ”‘
  • CombinedUpgrade β€” During sysupgrade, paru will first perform a refresh, then show its combined menu of repo and AUR packages that will be upgraded. After reviewing the PKGBUILDs, the repo and AUR upgrade will start with no need for manual intervention. If paru exits for any reason after the refresh without upgrading, it will be the user's responsibility to either resolve the reason paru exited or run a sysupgrade through pacman directly. πŸ‘‘
  • BatchInstall β€” When building and installing AUR packages, instead of installing each package after building, queue each package for install. Then, once either all packages are built or a package in the build queue is needed as a dependency to build another package, install all the packages in the install queue. πŸ“¦πŸ’…
  • NewsOnUpgrade β€” Print new news during sysupgrade. πŸ“°
  • UseAsk β€” Use pacman's --ask flag to automatically confirm package conflicts. Paru lists conflicts ahead of time. It is possible that paru does not detect a conflict, causing a package to be removed without the user's confirmation. However, this is very unlikely. ⚠️
  • SaveChanges β€” Commit changes to pkgbuilds made during review. πŸ’Ύ
  • FailFast β€” Exit as soon as any AUR packages fail to build. By default, Paru will continue and try to build other AUR packages. πŸ’€
  • KeepSrc β€” Keep src/ and pkg/ directories after building packages. πŸ“
  • Redownload [= all] β€” Always download PKGBUILDs of targets even when a copy is available in cache. If set to all, then this applies to all packages, not only targets. πŸ”
  • Rebuild [= all, tree] β€” Always build target packages even when a copy is available in cache. If set to all, then all packages are rebuilt, not only targets. If set to tree, the whole dependency tree is rebuilt, including already satisfied dependencies. 🌳
  • RemoveMake [= ask] β€” Remove makedepends after installing packages. If set to ask, a menu will appear during builds allowing an option to be chosen then. 🧽
  • UpgradeMenu β€” Show a detailed list of updates in a similar format to pacman's VerbosePkgLists option. (See pacman.conf(5).) Upgrades can be skipped using numbers, number ranges, or repo names. Warning: it is not recommended to skip updates from the repositories as this can lead to partial upgrades. This feature is intended to easily skip AUR updates on the fly that may be broken or have a long compile time. Ultimately it is up to the user what upgrades they skip. πŸ‘€
  • AurUrl = URL β€” Set an alternative AUR URL. 🌐
  • AurRpcUrl = URL β€” Set an alternative URL for the AUR /rpc endpoint. πŸ›°οΈ
  • CloneDir = /path/to/dir β€” Directory used to download and run PKGBUILDs. πŸ“‚
  • SortBy = <votes|popularity|name|base|submitted|modified|id|baseid> β€” Defaults to votes. Sort AUR results according to the options in "Sort by" visible here: https://aur.archlinux.org/packages/. πŸ—³οΈ
  • SearchBy = <name|name-desc|maintainer|depends|checkdepends|makedepends|optdepends> β€” Defaults to name-desc. Search AUR packages according to the options in "Search by" visible here: https://aur.archlinux.org/packages/. πŸ”
  • Limit = N β€” Limit the number of packages returned in a search to the given amount. Defaults to 0 (no limit). This applies separately to repo and AUR packages. πŸ”’
  • CompletionInterval = N β€” Time in days to refresh the completion cache. Setting this to 0 will cause the cache to be refreshed every time, while setting this to -1 will cause the cache to never be refreshed. Defaults to 7. πŸ—“οΈ
  • PacmanConf = path/to/pacman.conf β€” The pacman config file to use. 🐧
  • MakepkgConf = path/to/makepkg.conf β€” The makepkg config file to use. πŸ› οΈ
  • DevelSuffixes = Suffixes... β€” Suffixes that paru will use to decide if a package is a devel package. Used when determining if a pkgver bump is used when the --needed option is set. 🧬
  • NoWarn = Packages... β€” Don't warn when these packages are not in the aur, out of date, or orphaned. 🀫
  • LocalRepo [= Repos...] β€” Use a local repo to build and upgrade AUR packages. Paru will act on packages in the enabled repos instead of foreign packages. The repo must already be declared in pacman.conf but does not have to already exist on disk. Optionally, a list of repos to use can be passed. By default, paru will consider all local repos, building new packages into the first listed repo and upgrading the packages in other enabled repos. 🏠✨
  • Chroot [= path/to/chroot] β€” Build packages in a chroot. This requires the LocalRepo option to be enabled. Optionally, a directory may be passed to specify where to create the chroot. 🏰
  • Sign [= key] β€” Sign packages with gpg. Optionally indicate which key to sign with. ✍️
  • SignDb [= key] β€” Sign databases with gpg. Optionally indicate which key to sign with. πŸ—ƒοΈ
  • KeepRepoCache β€” Normally, upon AUR packages getting updated, the old versions will be removed from the local repo. This option disables that behavior, keeping all the versions around and only updating the DB. πŸ—„οΈ
  • SkipReview β€” Skip the review process. πŸƒβ€β™€οΈπŸ’¨

πŸ’… BIN

okay so these are all the options that live in the [bin] section β€” it's basically the "which actual program do I call" zone, plus a bunch of flag-passing goodies ✨

  • Makepkg = path/to/makepkg β€” the command paru uses for makepkg calls. can be a command sitting in PATH or an absolute path to the file, whatever vibes πŸ’–
  • Pacman = path/to/pacman β€” the command for pacman calls. again: PATH command or absolute path, ur call bestie.
  • PacmanConf = path/to/pacman-conf β€” the command for pacman-conf calls. yep, same deal β€” PATH or absolute path πŸŽ€
  • Git = path/to/git β€” the command for git calls. PATH or absolute path, no cap.
  • Asp = path/to/asp β€” the command for asp calls. PATH or absolute path, mwah πŸ’‹
  • Bat = path/to/bat β€” the command for bat calls. PATH or absolute path, obviously πŸ¦‹
  • Sudo = path/to/sudo β€” the command for sudo calls. PATH or absolute path. ⚠️ lowkey important: the SudoLoop option is not guaranteed to work with a custom sudo command, so like… be aware bestie 😭
  • FileManager = path/to/fm β€” this one turns on fm review mode, where PKGBUILD review happens using the file manager you point at. it lets you edit PKGBUILDs and related files 🫢 but heads up: changes won't persist unless they're committed. periodt.
  • MFlags = Flags... β€” passes arguments to makepkg. these flags go to every single place paru calls makepkg. arguments get split on whitespace before being passed 🌸
  • GitFlags = Flags... β€” passes arguments to git, every time paru calls git. split on whitespace before being passed ✨
  • GpgFlags = Flags... β€” passes arguments to gpg, every time paru calls gpg. split on whitespace before being passed πŸ’œ
  • BatFlags = Flags... β€” passes arguments to bat, every time paru calls bat. split on whitespace before being passed πŸŽ€
  • SudoFlags = Flags... β€” passes arguments to sudo, every time paru calls sudo. split on whitespace before being passed πŸ”₯
  • FileManagerFlags = Flags... β€” passes arguments to the file manager, every time paru calls the file manager. split on whitespace before being passed 🧚
  • ChrootFlags = Flags... β€” passes arguments to makechrootpkg, every time paru calls makechrootpkg. split on whitespace before being passed πŸ’«
  • RootChrootPkgs = Packages... β€” space-separated list of packages to install when creating the root chroot πŸ‘‘
    • Defaults to "base-devel" if you don't specify anything.
    • unlike --chrootpkgs (which installs packages temporarily before each build), --rootchrootpkgs packages become part of the root chroot and persist across all builds.
    • ⚠️ this only affects chroot creation. to actually apply changes to an existing chroot, you gotta delete it and recreate it. no shortcuts, bestie 😭
  • Pager = Command β€” the command to use for paging πŸ“–
  • PreBuildCommand = Command β€” a command that gets executed for each package before it's built. it runs via sh -c, and its current directory is set to the directory containing that package's PKGBUILD. if a package is already built, the build gets skipped β€” but this command still runs for that package. the variables PKGBASE and VERSION are set for the command to use πŸ’–

🌈 ENV

this section is literally just for setting environment variables. so chill.

  • Key = Value β€” sets the environment variable Key to Value. that's it, that's the whole vibe ✨

πŸŽ€ PKGBUILD REPOSITORY SECTION

okay this part is lowkey iconic β€” you can define PKGBUILD repositories by adding a [reponame] section, where reponame is the name of the repository you wanna add πŸ’…

a PKGBUILD repository acts very much like the AUR when it comes to installing and upgrading packages. and packages in PKGBUILD repositories also take priority over the AUR, so you can use them to mask packages πŸ‘‘

the layout is simple: it's just a directory containing PKGBUILDs. paru will recursively scan a repository for PKGBUILDs, up to 3 levels by default πŸ¦‹

paru refreshes PKGBUILD repositories whenever it refreshes repository databases. and if you wanna refresh just the PKGBUILD repositories, you can do that with paru -Sya πŸ’–

  • Url = https://path/to/repo β€” the git URL to the PKGBUILD repository. file paths may be used to point to git repos on disk 🌸
    • if Path is specified alongside Url, that specified path gets treated as a subdirectory of the repository, and paru will only search for pkgbuilds in that subdirectory πŸ‘€
  • Path = /path/to/repo β€” can be used as an alternative to URL to point to a PKGBUILD repository on disk. unlike using a URL path, changes to this directory are propagated to paru immediately and not on paru -Sya. also there's no review step for this kind of repository 🫢
  • Depth = N β€” the search depth for PKGBUILD scanning πŸ”
  • SkipReview β€” skips review for this repository. bye bye review step πŸ’¨
  • GenerateSrcinfo β€” forces regeneration of the .SRCINFO file even if it already exists on disk. super useful for repositories that forget to update their .SRCINFO files πŸ˜­πŸ™ˆ

and that's the whole page bestie!! πŸŽ‰ this was paru v1.10.0, dated 2021-03-24, from the PARU.CONF(5) manual β€” go forth and configure your heart out, you absolute icon πŸ‘‘πŸ’–βœ¨

πŸ“¦ where this page comes from