Minimal Setup
Smallest useful setup for beginners.
declarch.kdl
imports {
"modules/base.kdl"
}
modules/base.kdl
pkg {
aur {
neovim
git
}
}
Apply
declarch --dry-run sync
declarch sync
Why this is a good start
- only one module
- easy to read
- easy to expand later
Desktop Example
Simple desktop-oriented module layout.
Suggested structure
modules/
├── base.kdl
├── desktop.kdl
└── apps.kdl
modules/base.kdl
pkg {
aur {
neovim
bat
fzf
ripgrep
}
pacman {
git
curl
wget
}
}
modules/desktop.kdl
pkg {
aur {
hyprland
waybar
rofi-wayland
}
pacman {
foot
mako
grim
slurp
}
}
modules/apps.kdl
pkg {
pacman {
firefox
thunderbird
}
flatpak {
com.spotify.Client
org.telegram.desktop
}
}
declarch.kdl
imports {
"modules/base.kdl"
"modules/desktop.kdl"
"modules/apps.kdl"
}
Apply safely
declarch --dry-run sync
declarch sync
Development Example
Beginner-friendly dev setup with separate modules.
Prerequisite
declarch init --backend npm
Structure
modules/
├── base.kdl
├── dev.kdl
└── langs.kdl
modules/dev.kdl
pkg {
aur {
neovim
tmux
docker
}
pacman {
git
github-cli
jq
}
}
modules/langs.kdl
pkg {
aur {
rustup
}
npm {
typescript
ts-node
prettier
eslint
}
}
declarch.kdl
imports {
"modules/base.kdl"
"modules/dev.kdl"
"modules/langs.kdl"
}
Apply
declarch --dry-run sync
declarch sync
Modular Example
Organize by purpose, not by backend.
Example structure
modules/
├── core.kdl
├── work.kdl
├── gaming.kdl
└── media.kdl
core.kdl
pkg {
aur {
neovim
bat
fzf
}
pacman {
git
curl
}
flatpak {
org.mozilla.firefox
}
}
work.kdl
pkg {
pacman {
slack-desktop
zoom
}
flatpak {
com.microsoft.Teams
}
}
Select imports per machine
// work laptop
imports {
"modules/core.kdl"
"modules/work.kdl"
}
// gaming pc
imports {
"modules/core.kdl"
"modules/gaming.kdl"
"modules/media.kdl"
}
Why this pattern works
- cleaner diffs
- easier reuse
- machine-specific setups stay simple