Declarative package management configuration for Arch Linux.
This dotfiles is used internally for Perkedel offices. You are free to also use this as well.
config.yaml- Main configuration filepackages/base.yaml- Base packages for all machinespackages/hosts/- Host-specific package configurationspackages/modules/- Optional package modulesscripts/- Post-install hook scriptsudev-rules/- Custom udev rulesstate/- Auto-generated state files (git-ignored)
Edit packages/base.yaml to add packages that should be installed on all machines.
Edit packages/hosts/joelwindows7-endeavour-dcli.json to add packages specific to this machine.
- Create a new JSON file in
packages/modules/ - Enable it with:
dcli module enable <module-name>OR editconfig.yamland add<module-name>into sectionenabled-moduleslist. - Sync packages:
dcli sync
dcli sync # Preview and install missing packages
dcli sync --prune # Also remove packages not in configurationInitialize a git repository to track your configuration:
cd ~/.config/arch-config
git init
git add .
git commit -m "Initial arch-config setup"The state/installed.yaml file is auto-generated and git-ignored.
Update this arch-config repo with:
cd ~/.config/arch-config
dcli repo push # Type your commit message when prompted & entercd ~/.config/arch-config
dcli repo pull
dcli sync # then review what will be installed, and confirm.- https://gitlab.com/theblackdon/dcli . Main resource of DCLI. DCLI is a Package Declarator system for Arch Linux and derivatives, inspired by Nix & NixOS.
- https://gitlab.com/theblackdon/arch-config . Sample config of the DCLI. Black Don's personal config you can learn & reference from.