Basic Concepts

1) Declarch is a wrapper

Declarch orchestrates real package managers. You are still using actual tools under the hood (apt, pacman, flatpak, npm, nix, etc).

2) Agnostic design

You can mix ecosystems in one config:

pkg {
    pacman { firefox git }
    flatpak { org.mozilla.firefox }
    npm { typescript }
}

3) Declarative loop

  1. declare packages
  2. run sync
declarch sync

4) Keep config portable first

If you copy your config to another machine (laptop, VPS, etc), it should still work with default sync:

declarch sync

No host or profile required. but if you want specify host and profile you can configure it.

5) Backend configs can evolve

Package managers change over time. Declarch backend definitions are designed to be editable and update-friendly.

6) Modules keep things simple

Use small files by context:

  • base.kdl
  • dev.kdl
  • work.kdl
  • gaming.kdl

7) Optional profile/host layering

If you need machine-specific extras, you can opt in:

profile "work" {
    pkg {
        npm { @angular/cli }
    }
}

host "laptop-1" {
    pkg {
        flatpak { com.discordapp.Discord }
    }
}


```bash
declarch sync --profile work
declarch sync --host laptop-1

If you do not pass those flags, declarch uses your normal default config only.

8) Start safe

When unsure, use:

declarch --dry-run sync