Categorize your packages.

A collection of POSIX-compliant shell scripts that let you override your package manager and manage packages in categories.

$ pakt -S git neovim clang +dev $ pakt-dry +dev dev: git neovim clang $ pakt-sync u +dev
[sudo] password for user: ******** checking dependencies... :: gettext optionally requires git: for autopoint infrastructure updates Package (20) Old Version Net Change compiler-rt 19.1.7-1 -43.92 MiB libluv 1.48.0_2-1 -0.18 MiB libvterm 0.3.3-2 -0.14 MiB lua51-lpeg 1.1.0-3 -0.06 MiB

What are categories?

Have you ever wanted to have a proper, structured overview of the stuff you installed on your system? Did you have to deal with a lot of dev depenencies, only to uninstall them all later?
At least we did!
Categories are like hashtags that you assign to software you get from package managers. They are stored in plain text on your home directory. You can freely edit and comment them too.

Features

+
Assign each package on your system multiple categories.
+
Edit the categories in plain-text files.
+
Support all package managers, even NPM and Cargo.
+
Install entire categories worth of packages.
+
Choose default categories to implicitly add packages to.
Hover over the list items to see examples!

Suite

pakt

The one you override your package manager with.
Introduces the +category syntax. (You can override it though.)

$ pakt install pkg-i-want $ pakt i pkg-i-want $ pakt -S pkg-i-want

pakt-dry

Like pakt, but without transactions.
Edits the category files but doesn't install anything.

$ pakt-dry i pkg-i-dont-need-yet $ pakt-dry u pkg-i-dont-need-yet

pakt-sync

Lets you install entire categories worth of packages.
Uninstall too.

$ pakt-sync i +pylibs $ pakt-sync u +pylibs

Installation

The classic way is to use the source code:
git clone https://github.com/mminl-de/pakt cd pakt make install # # You can remove the source code afterwards # cd .. # rm -rf pakt

But you can also install Pakt with a single cURL command:
curl -LsS https://raw.githubusercontent.com/mminl-de/pakt/main/Makefile | make -f - install
[copy]