https://github.com/cloudlena/pacmanfile
Manage your pacman packages declaratively
https://github.com/cloudlena/pacmanfile
Last synced: about 1 year ago
JSON representation
Manage your pacman packages declaratively
- Host: GitHub
- URL: https://github.com/cloudlena/pacmanfile
- Owner: cloudlena
- License: other
- Created: 2020-12-07T10:13:25.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2024-02-10T22:50:17.000Z (over 2 years ago)
- Last Synced: 2025-04-01T23:39:03.160Z (over 1 year ago)
- Language: Shell
- Size: 20.5 KB
- Stars: 47
- Watchers: 2
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Pacmanfile
[](https://aur.archlinux.org/packages/pacmanfile/)
Pacmanfile is a tool that allows to declaratively define which packages you want to have installed via Arch Linux' [Pacman](https://wiki.archlinux.org/index.php/Pacman), [Yay](https://aur.archlinux.org/packages/yay/) or [Paru](https://github.com/morganamilo/paru) to include packages from the [AUR](https://aur.archlinux.org/).
## Installation
Pacmanfile is available in the [AUR](https://aur.archlinux.org/packages/pacmanfile/).
1. Run `paru -S pacmanfile`
## Usage
1. Run `pacmanfile help` to get an overview of the existing commands and flags.
1. Run `pacmanfile dump` which dumps your currently explicitly installed packages into a pacmanfile.
Alternatively, you can manually create a `pacmanfile.txt` file in your `$XDG_CONFIG_HOME/pacmanfile` directory (usually `~/.config/pacmanfile`) which contains all the packages you want to have installed. Here's an example:
```txt
alacritty
base
git
linux
linux-firmware
zsh
```
You can split the file up into any number of files that match `pacmanfile*.txt` (e.g. `pacmanfile-extra.txt`).
You can add comments to pacmanfiles by starting any line with a `#`.
1. Run `pacmanfile sync`. This will remove any packages that you have installed which are not listed in `pacmanfile*.txt` and install any packages that you have not yet installed but that are listed in `pacmanfile*.txt`.
## Limitations
Pacmanfile expects its packages to be installed explicitly. In case it complains about a package not being installed, you need to change that package's installation reason to explicit by running `sudo pacman -D --asexplicit PACKAGE_NAME`.
Currently, installing groups with `pacmanfile` is not supported. The workaround is to list all the members of the group individually in your file.