PARU(8)

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

πŸ’… NAME

okay so welcome to PARU(8), bestie 🫢 β€” this is the manual for paru, and honestly it's giving main character energy: it's an AUR helper written in Rust and based on the design of yay. The whole goal? Be your standard pacman-wrapping AUR helper with minimal interaction. Minimal interaction, maximum slay. ✨


✨ SYNOPSIS ✨

paru <operation> [options] [targets]

paru <search terms>

paru

like, three whole moods πŸ’…


🌸 DESCRIPTION 🌸

So. Paru is an AUR helper written in Rust and based on the design of yay, and its whole thing is being your standard pacman wrapping AUR helper with minimal interaction. no cap.

It's the tool you use to easily build and install packages from the AUR, along with their dependencies. And the glow-up? Paru also expands many of pacman's options making them AUR aware. iconic behaviour tbh.

πŸŽ€ Real talk though: this manpage only covers options unique to paru. For other options see pacman(8). iykyk.

πŸ¦‹ PARU OPERATIONS πŸ¦‹

these are paru's very own operations, its signature moves πŸ’…

  • -P, --show β€” printing related options. it's literally the "show me things" mode ✨
  • -G, --getpkgbuild β€” downloads PKGBUILDs from the ABS or AUR. Heads up: the ABS can only be used for Arch Linux repositories.
  • -B, --build β€” build PKGBUILDs on disk. The targets here are directories directly containing a PKGBUILD.
  • -L, --repoctl β€” list local repos.
  • -C, --chrootctl β€” interactive shell to the chroot. get in there 🐚
πŸ’– And if no arguments are provided, paru -Syu will be performed. it just does it. no notes.

πŸ”₯ EXTENDED PACMAN OPERATIONS πŸ”₯

  • -R, -S, -Si, -Sl, -Ss, -Su, -Sc, -Qu, -T β€” these operations are extended to support both AUR and repo packages. AUR awareness unlocked fr fr.

now the specific little extras, one by one:

  • -R β€” Paru will also remove cached data about devel packages. bye bye cached devel data 🫢
  • -Sc β€” Paru will also clean cached AUR packages and any untracked files in the cache. Cleaning untracked files will wipe any downloaded sources or built packages but will keep already downloaded VCS sources. Also, -d or --delete can be passed to delete the entire package instead of just cleaning it.
  • -Ss β€” The AUR can be searched using regex but it must be explicitly requested using -x/--regex. Regex search will only search package names and not descriptions regardless of SearchBy. so like, don't @ me when descriptions don't show up β€” that's just the rules πŸ’€
  • -Sss β€” Paru will also output a verbose search result when passing two
  • -S, -Si, -Sl, -Ss, -Su, -Qu β€” Paru will also handle AUR packages for these operations.
  • -Ta β€” Will filter a list of packages to ones that appear in the AUR. little filter, big job πŸŽ€

🌈 NO OPERATION 🌈

the "just vibes" section β€” what happens when you hand paru nothing but a dream ✨

  • <NO OPTION> β€” Interactive search and install. Displays a list of packages matching the search terms and prompts the user on which packages to install. a whole little menu moment πŸ“
  • --gendb β€” Generate the development package database. This tracks the latest commit for each development package, so when there is a new commit paru will know to update. This is done per package whenever a package is synced. This option should only be used when migrating to paru from another AUR helper.

Also β€” and this is the important bit β€” this also causes paru to assume all current development packages are up to date. Updates will then be detected on the next commit. so don't come crying when nothing updates immediately, bestie 😭

  • -c, --clean β€” Remove unneeded dependencies.

Make and check dependencies are considered for foreign packages. Pass this twice to ignore these. Pass -o to ignore optional dependencies. (yes, twice. two taps. the second tap is the "okay I mean it" tap πŸ’…)


🧚 SHOW OPTIONS (APPLY TO -P AND --SHOW) 🧚

this whole stack only works when you're in show mode, k? πŸ‘‘

  • -c, --complete β€” Print a list of all AUR and repo packages. This allows shell completion and is not intended to be used directly by the user. so like, back away slowly, it's for the shell not for you πŸ™ˆ
  • -s, --stats β€” Displays information about installed packages and system health. If there are orphaned, or out-of-date packages, or packages that no longer exist on the AUR; warnings will be displayed. the vibe check of your whole system fr 🩺
  • -w, --news β€” Print new news from the Arch Linux homepage. News is considered new if it is newer than the build date of all native packages. Pass this twice to show all available news. why yes, it IS a news reader now 🌸
  • -o, --order β€” Print buildorder for targets.

This option outputs information about how to build a package and its dependencies. Each line of output specifies an action to perform or information to take into consideration.

Each line of output will be in one of the following formats:

  • MISSING <DEP> [WANTED BY]... β€” A dependency could not be found.

<DEP> is the dependency that could not be found and [WANTED BY] is the current dependency stack. The dependency stack will be empty if the package that could not be found was a target.

⚠️ Paru will exit 1 if any packages are missing. that's a real exit status, not a drill.
  • CONFLICT LOCAL|INNER <PKG> <CONFLICTING PKG> [CONFLICT] β€” There was a package conflict.

The second arg will be LOCAL if the conflict is with an installed package and INNER if two of the to be installed packages conflict. <PKG> and <CONFLICTING PKG> are the packages in conflict and [CONFLICT] will be the conflict string if it is different from <CONFLICTING PKG>.

  • INSTALL TARGET|DEP|MAKE <DB> <NAME> β€” Install a package from the pacman repos.

The first arg will be TARGET if the package is a target, DEP if a dependency, or MAKE if the package is a build time dependency. <DB> is the name of the database the package belongs to and <NAME> is the name of the package.

  • AUR TARGET|DEP|MAKE <BASE> <NAMES>... β€” Build a package from the AUR.

The first arg will be TARGET if the package is a target, DEP if a dependency, or MAKE if the package is a build time dependency. <BASE> is the pkgbase of the package and <NAMES> are the names of the packages belonging to the pkgbase.

πŸ’€ tl;dr: "More options may be added in the future." so keep an eye out, bestie.

πŸŽ€ GETPKGBUILD OPTIONS (APPLY TO -G AND --GETPKGBUILD) πŸŽ€

grab a PKGBUILD, peek at it, kiss it on the forehead πŸ’–

  • -p, --print β€” Prints the PKGBUILD to the terminal instead of downloading it. reading it right there in the terminal like a text message πŸ‘€
  • -c, --comments β€” Print the AUR comments from the PKGBUILD's AUR page.

Pass twice to get all comments instead of the first page. yes, the double-tap strikes again πŸ’…

  • -s, --ssh β€” Clone the AUR package using SSH (e.g.: a read-write remote). read-write remote = you can push, you fancy thing πŸ”‘

⭐ REPOCTL OPTIONS (APPLY TO -L AND --REPOCTL) ⭐

local repo admin hours πŸ—‚οΈ

  • -l, --list β€” List packages in local repos
  • -c, --clean β€” Remove packages that are not currently installed from repos.
  • -d, --delete β€” Remove a package from the local repo. Pass this twice to also uninstall the package. (twice = "and take it off my system too" πŸ”₯)
  • -y, --refresh β€” Refresh local repos.
  • -q, --quiet β€” Show less information. for when the output is doing Too Much πŸ™ˆ

🐚 CHROOTCTL OPTIONS (APPLY TO -C AND --CHROOTCTL) 🐚

  • -i, --install β€” Install a package into the chroot.

--noconfirm can also be specified and will be forwarded to pacman. πŸ‘‘

  • -u, --sysupgrade β€” Upgrade the chroot.
  • -p, --print β€” Print path to currently configured chroot. just the path. that's it. that's the tweet ✨

πŸ› οΈ BUILD OPTIONS (APPLY TO -B AND --BUILD) πŸ› οΈ

  • -i, --install β€” Also install the package once built. build it, then keep it 🫢

🌟 NEW OPTIONS 🌟

the fresh stuff, the new-new πŸ’…

  • --repo β€” Assume all targets are from the repositories. Additionally, actions such as sysupgrade will only act on repository packages. commit to the repo life 🏠
  • -a, --aur β€” Assume all targets are from the AUR. Additionally, actions such as sysupgrade will only act on AUR packages.

Note that dependency resolution will still include repository packages. so like, AUR-only acting, but deps are still invited to the party πŸ’œ

  • --pkgbuilds β€” Assume all targets are from the PKGBUILD repositories. Additionally, actions such as sysupgrade will only act on AUR packages.

Note that dependency resolution will still include repository and AUR packages. same deal, broader guest list πŸŽ€

  • --mode = aur|repo|pkgbuilds β€” Select what kinds of packages paru should act on. Multiple modes can be selected by separating them with a comma.

Additionally, a, r and p may be used as short hand for aur, repo and pkgbuilds respectively. Short form modes can also be combined without a comma. E.g. --mode=ar or --mode=arp. efficient queen behavior πŸ‘‘

  • --interactive β€” Enable interactive package selection for -S, -R, -Ss and -Qs.

For -S/-R this allows you to pick which packages to install/remove from a list.

paru <foo> is an alias to paru -S --interactive <foo>.

For -Ss/-Qs this allows you to interactively pick packages from the sync/local repos respectively. This is intended to be chained with other package tools so paru can handle the menu work while the other tool in the pipeline just gets the packages.

For example:

paru -Ssaq --interactive ruby | paru -Gc -

will show AUR packages containing the term ruby, give the user an interactive menu to pick packages, then pipeline those packages into -Gc and display the comments.

Would allow a user to interactively choose what files to list. πŸ“

  • --aururl β€” Set an alternative AUR URL.
  • --aurrpcurl β€” Set an alternative URL for the AUR /rpc endpoint.
  • --clonedir <dir> β€” Directory used to download and run PKGBUILDs.
  • --makepkg <command> β€” The command to use for makepkg calls. This can be a command in PATH or an absolute path to the file.
  • --makepkgconf <file> β€” Specifies a makepkg.conf file to use in the chroot environment. The file can only be an absolute path to the file. absolute. path. only. no exceptions πŸ’€
  • --pacman <command> β€” The command to use for pacman calls. This can be a command in PATH or an absolute path to the file.
  • --pacman-conf <command> β€” The command to use for pacman-conf calls. This can be a command in PATH or an absolute path to the file.
  • --git <command> β€” The command to use for git calls. This can be a command in PATH or an absolute path to the file.
  • --gitflags <flags> β€” Passes arguments to git. These flags get passed to every instance where git is called by paru. Arguments are split on whitespace before being passed to git. Multiple arguments may be passed by supplying a space separated list that is quoted by the shell.
  • --gpg <command> β€” The command to use for gpg calls. This can be a command in PATH or an absolute path to the file.
  • --gpgflags <flags> β€” Passes arguments to gpg. These flags get passed to every instance where gpg is called by paru. Arguments are split on whitespace before being passed to gpg. Multiple arguments may be passed by supplying a space separated list that is quoted by the shell.
  • --fm <command> β€” This enables fm review mode, where PKGBUILD review is done using the file manager specified by command.

This allows the PKGBUILDs and related files to be edited. Changes won't persist unless committed. ngl that last part is the whole plot twist β€” edit all you want, but if you don't commit it, it never happened 😭

okay so we're still deep in the options list, and this whole chunk is basically "which tools does paru call, and how does it act" β€” customizing the group chat settings, essentially πŸ’…

  • --fmflags <flags> β€” passes arguments to your file manager. these flags get handed to every instance where paru calls the file manager. arguments are split on whitespace before being passed, and you can pass multiple arguments by giving a space separated list that's quoted by the shell 🫢
  • --asp <command> β€” the command to use for asp calls. can be a command in PATH or an absolute path to the file.
  • --mflags <flags> β€” passes arguments to makepkg. these get passed to every instance where paru calls makepkg. split on whitespace before being passed, and multiple args can be passed with a shell-quoted space separated list ✨
  • --bat <command> β€” the command to use for bat calls. can be a command in PATH or an absolute path to the file.
  • --batflags <flags> β€” passes arguments to bat. these get passed to every instance where paru calls bat. split on whitespace, multiple args via a shell-quoted space separated list πŸ¦‹
  • --sudo <command> β€” the command to use for sudo calls. can be a command in PATH or an absolute path to the file. heads up bestie: the --sudoloop option is not guaranteed to work with a custom sudo command 😭
  • --sudoflags <flags> β€” passes arguments to sudo. these get passed to every instance where paru calls sudo. split on whitespace, multiple args via a shell-quoted space separated list.
  • --chrootflags <flags> β€” passes arguments to makechrootpkg. these get passed to every instance where paru calls makechrootpkg. split on whitespace before being passed, multiple args via a shell-quoted space separated list 🧚
  • --chrootpkgs <package> β€” installs a package into the chroot before building. multiple packages? just separate them with a comma.

this is the move when a PKGBUILD doesn't declare the dependencies it actually needs 🫠

note that this is only a temp fix and only applies to this one build. you should ideally patch the package yourself or report the problem to the maintainer β€” be a good citizen fr fr πŸ’–

if you want to permanently add a package to the chroot, use paru -Ci package to install packages into the root chroot, or use --rootchrootpkgs to specify packages that should be installed when the chroot is created.

  • --rootchrootpkgs <packages> β€” comma-separated list of packages to install when creating the root chroot.

defaults to "base-devel" if not specified.

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 apply changes to an existing chroot, you must delete and recreate it. no shortcuts, sorry πŸ’€

  • --completioninterval <days> β€” time in days to refresh the completion cache. setting it to 0 refreshes the cache every time, and setting it to -1 means the cache is never refreshed. defaults to 7 ⭐
  • --sortby <votes|popularity|id|baseid|name|base|submitted|modified> β€” sort AUR results by a specific field during search. defaults to votes.
  • --searchby <name|name-desc|maintainer|depends|checkdepends|makedepends|optdepends> β€” search for AUR packages by querying the specified field. defaults to name-desc.
  • --skipreview β€” skip the review process.
  • --review β€” don't skip the review process.
  • --upgrademenu β€” show a detailed list of updates, similar in 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, since that 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.
  • --noupgrademenu β€” do not show the upgrade menu.
  • --removemake [yes|no|ask] β€” remove makedepends after installing packages. if set to ask, a menu will appear during builds letting you choose then and there. defaults to yes when specified without an option πŸŽ€
  • --noremovemake β€” don't remove makedepends after installing packages.
  • --topdown β€” print search results from top to bottom. repo packages print first. this is the default ✨
  • --bottomup β€” print search results from bottom to top. AUR packages print first.
  • --limit <limit> β€” 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.
  • -x, --regex β€” enable regex for AUR search πŸ”

the regex will only be matched against pkgnames and not pkgdescs, as you would usually expect. sneaky, but that's the deal.

  • --nocheck β€” don't resolve checkdepends or run the check function.
  • --installdebug β€” also install debug packages when a package provides them.
  • --noinstalldebug β€” don't 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 lets devel updates be checked almost instantly and means the original PKGBUILD doesn't need to be downloaded at all. iconic.

the slower pacaur-like devel checks can be implemented manually by piping a list of packages into paru (see examples).

  • --ignoredevel β€” like --ignore but for devel upgrades. packages matching this won't be tried for a devel update, but may still be upgraded if the pkgver changes πŸ™ˆ
  • --nodevel β€” do not check for development package updates during sysupgrade.
  • --develsuffixes β€” 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.
  • --cleanafter β€” remove untracked files after installation.

untracked files are removed with the exception of directories. this lets VCS packages easily pull an update instead of having to reclone the entire repo. big brain energy 🧠

  • --nocleanafter β€” do not remove package sources after successful install.
  • --redownload [yes|no|all] β€” always download PKGBUILDs of targets even when a copy is available in cache. if all is specified, then PKGBUILDs get downloaded for all packages, not just targets. defaults to yes when specified.
  • --noredownload β€” when downloading PKGBUILDs, if the PKGBUILD is found in cache and is equal to or newer than the AUR's version, use that instead of downloading a new one πŸ“
  • --provides β€” look for matching providers when searching for AUR packages. when multiple providers are found, a menu appears prompting you to pick one. this increases dependency resolve time, although it shouldn't be noticeable.

by default only targets and missing packages will be searched for providers. specifying all will enable this for all packages.

  • --noprovides β€” do not look for matching providers when searching for AUR packages. paru will never show its provider menu, but pacman will still show its provider menu for repo packages πŸ€·β€β™€οΈ
  • --pgpfetch β€” prompt to import unknown PGP keys from the validpgpkeys field of each PKGBUILD.
  • --nopgpfetch β€” do not prompt to import unknown PGP keys. this is likely to cause a build failure unless you're using options such as --skippgpcheck or a customized gpg config πŸ’€
  • --newsonupgrade β€” print new news during sysupgrade.
  • --useask β€” use pacman's --ask flag to automatically confirm package conflicts. paru lists conflicts ahead of time. it's possible that paru doesn't detect a conflict, which would cause a package to be removed without the user's confirmation β€” however, this is very unlikely 😌
  • --nouseask β€” manually resolve package conflicts during the install. packages which do not conflict will not need to be confirmed manually.
  • --savechanges β€” commit changes to pkgbuilds made during review.
  • --nosavechanges β€” don't 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 the other AUR packages 🫢

  • --nofailfast β€” don't exit as soon as any AUR packages fail to build.
  • --keepsrc β€” keep src/ and pkg/ directories after building packages.
  • --nokeepsrc β€” don't keep src/ and pkg/ directories after building packages.
  • --combinedupgrade β€” during sysupgrade, paru will first perform a refresh, then show its combined menu of repo and AUR packages that will be upgraded. then, after reviewing the PKGBUILDs, the repo and AUR upgrade starts with no need for manual intervention. so smooth ✨
if paru exits for any reason after the refresh without upgrading, it's your responsibility to either resolve the reason paru exited or run a sysupgrade through pacman directly. no cap.
  • --nocombinedupgrade β€” during sysupgrade, pacman -Syu will be called, then the AUR upgrade will start. this means the upgrade menu and PKGBUILD review are performed after the sysupgrade has finished.
  • --batchinstall β€” when building and installing AUR packages, instead of installing each package right after building it, 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 πŸ“¦
  • --nobatchinstall β€” always install AUR packages immediately after building them.
  • --rebuild [yes|no|all|tree] β€” bestie, this one says always build the target packages, even when there's already a copy chillin' in the cache. Pick all and literally every package gets rebuilt, not just the targets. Pick tree and the whole dependency tree gets rebuilt, even the deps that are already satisfied. Defaults to no, so by default it's not doing all that.
  • --norebuild β€” the opposite vibe: while building, if the package is found in cache and it's an equal version to the one you want, skip the build entirely and just use the existing package. Efficient queen behavior πŸ’…
  • --sudoloop [= args...] β€” periodically calls sudo in the background so it doesn't time out mid-build on you during long builds 😭 Optionally you can pass args to choose how the looping happens β€” lowkey useful for doas, since looping works differently there.
  • --nosudoloop β€” nope, don't loop sudo calls in the background. We live dangerously.
  • --localrepo [= Repos...] β€” use a local repo to build and upgrade AUR packages ✨ when this is on, paru acts on packages in the enabled repos instead of foreign packages. The repo has to already be declared in pacman.conf, but it doesn't have to exist on disk yet. Optionally you can pass a list of Repos to use β€” by default paru considers all local repos, builds new packages into the first listed repo, and upgrades the packages in the other enabled repos.
  • --nolocalrepo β€” don't build into a local repo. Simple as that.
  • --chroot [= /path/to/chroot] β€” build packages in a chroot 🫢 this needs the LocalRepo option enabled or it's not happening. Optionally pass a directory to say where the chroot should be created.
  • --nochroot β€” don't build packages in a chroot.
  • --sign [= key] β€” sign packages with gpg πŸ”₯ optionally tell it which key to sign with.
  • --nosign β€” don't sign the package with gpg.
  • --keeprepocache β€” okay so normally, when AUR packages get updated, the old versions get removed from the local repo. This option turns that behavior off, keeping both all the versions and only updating the DB. (That's what the manpage says, so that's what we're saying πŸ‘‘)
  • --nokeeprepocache β€” don't keep old packages.
  • --signdb [= key] β€” sign databases with gpg ✨ optionally indicate which key to sign with.
  • --nosigndb β€” don't sign databases with gpg.

🌈 EXAMPLES 🌈

Real talk, these are the ones you'll actually type every day:

  • paru foo β€” search and install from the repos and the AUR, using interactive search and install. No flags needed, she just knows.
  • paru -Syu β€” update the package list and upgrade all currently installed repo and AUR packages. The classic.
  • paru -Sua β€” update all currently installed AUR packages only.
  • paru -S foo β€” installs package foo from the repos or the AUR.
  • paru -Ss foo β€” searches for package foo on the repos or the AUR.
  • paru -Si foo β€” gets information about package foo from the repos or the AUR.
  • paru -S foo --mflags "--skipchecksums --skippgpcheck" β€” installs foo while skipping checksums and PGP checks 🫣
  • paru -B . β€” build the PKGBUILD in the current directory.
  • pacman -Qmq | grep -Ee '-(cvs|svn|git|hg|bzr|darcs)$' | paru -Ta - | paru -S --needed - β€” the pacaur-like devel check. Look at her go πŸ’€
pacman -Qmq | grep -Ee '-(cvs|svn|git|hg|bzr|darcs)$' | paru -Ta - |
paru -S --needed -

πŸ¦‹ ENVIRONMENT VARIABLES πŸ¦‹

  • AURDEST β€” can be set to configure the build directory. Overridden by --clonedir, so that flag wins if they ever beef.
  • PARU_CONF β€” overrides where paru will look for its config file.
  • PARU_PAGER β€” the pager paru uses for file review. Has higher priority than PAGER, but lower priority than paru.conf ✨ (yes, the priority ladder is real)

πŸŽ€ FILES πŸŽ€

πŸ“ CONFIG DIRECTORY

The config directory is $XDG_CONFIG_HOME/paru/. If $XDG_CONFIG_HOME is unset, she falls back to $HOME/.config/paru.

paru.conf is where all of paru's config options live. Check paru.conf(5) for the whole tea on that file β˜•

πŸ“ CACHE DIRECTORY

The cache directory is $XDG_CACHE_HOME/paru/. If $XDG_CACHE_HOME is unset, it falls back to $HOME/.cache/paru.

packages.aur holds a list of all AUR packages for shell completion. By default the completion files get refreshed every 7 days 🌸

πŸ“ STATE DIRECTORY

The state directory is $XDG_STATE_HOME/paru/. If $XDG_STATE_HOME is unset, it falls back to $HOME/.local/state/paru.

devel.json tracks VCS packages and the latest commit of each source. If any of these commits change, the package gets upgraded during a devel update πŸ‘€

πŸ“ BUILD DIRECTORY

Unless you set it otherwise, this should be the same as the CACHE DIRECTORY. This directory stores downloaded AUR packages, plus any source files and built packages from those packages.

πŸ“ PACMAN.CONF

Paru uses pacman's config file to set certain pacman options, either through alpm.rs or paru itself. Options it inherits include most libalpm options and pacman options.

Notably: Databases, Color and *Path/*Dir options are used πŸ’–


⭐ SEE ALSO ⭐

paru.conf(5), makepkg(8), makepkg.conf(5), PKGBUILD(5), pacman(8), pacman.conf(5)

Also, the arch wiki has the full lore on the AUR at https://wiki.archlinux.org/index.php/Arch_User_Repository β€” go read it, it's giving study session 🧚


πŸ’€ BUGS πŸ’€

If something's busted, please report bugs to the GitHub page at https://github.com/Morganamilo/paru. They want to hear from you, fr fr πŸ™ˆ


πŸ‘‘ AUTHORS πŸ‘‘

Morgan <morganamilo@archlinux.org> β€” the main character who made all this happen ✨


That's the whole page, bestie 🫢 now go build something iconic. No cap, you're gonna slay.

paru v1.10.0, dated 2021-03-24, page PARU(8) β€” that's a wrap, mwah πŸ’‹πŸ’–

πŸ“¦ where this page comes from