Skip to main content

Arch Linux declarative package management

Project description

Simple declarative package management

For Debianish Linux

Declarative package management means you make a file containing everything you want installed, and the package manager adds/removes to make the system match that. It's good if you happen to install lots of random programs and forget to remove them until you forgot whether they were important to have installed or not in the first place!

Requires: aptitude, sudo, python 3.6+

  1. pip install decapt
  2. decapt generate
  3. Modify decapt.luxem
  4. Update your system with decapt


  • Manage snap packages
  • Manage manual debian packages Add an entry like { name: mypackage, path: ~/debs/mypackage } where there's a script in path which creates a mypackage.deb in path.
  • Luxem



Debian considers installed "suggested" and "recommended" for other installed packages to be important, so they won't be autoremoved after being installed once. If for instance something recommends chrome or firefox, and you remove chrome from your list and add firefox, it won't be removed (by default). To make these not recommended, create /etc/apt/apt.conf.d/99_norecommends and add:

APT::Install-Recommends "false";
APT::AutoRemove::RecommendsImportant "false";
APT::AutoRemove::SuggestsImportant "false";


If you run apt autoremove you can confirm what this affects that's currently installed. You should probably add some to your decapt list (ex: grub-efi-amd64). You can check why something on that list is currently installed by running aptitude why PACKAGE -- if it's actually a dependency (not just suggested/recommended) by something else, try aptitude why on that something else until you find what package at the head of the chain is set free by this change.

Base packages

Decapt generate consults the list of currently manually installed non-base software. Debian seems to "manually" install a lot of unnecessary packages, so the initially generated list will include both packages and dependencies, where you might only want the package itself? To convert all manually installed dependencies to auto packages, run:

$ sudo apt-mark showmanual | while read line; do if [[ $(apt-cache rdepends --installed $line | wc -l) -ne 2 ]]; then apt-mark auto $line; fi; done

If you do decapt generate after that you should have a smaller list of base-system spam in the list.

(TODO: rdepends seems to include suggested/recommended dependencies too, so this might need to be reworked to use a different tool).

Friends (not really)

  • Nix - A strict declarative package (and config) manager, and also the basis of Linux distro NixOS
  • Guix - A strict declarative package (and config) manager, and also the basis of Linux distro GuixSD
  • aconfmgr - A declarative Arch-native package and config manager
  • decpac - I made something similar for Arch

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

decapt-0.0.21.tar.gz (6.0 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page