archx is my personal set of scripts/configs to set up a fresh Arch Linux system the way I like it.
The setup is driven by archx-setup, a small declarative runner living in archx_setup/.
For details about how the runner works and how to extend it, see archx_setup/README.md.
The goal is to be able to rebuild my environment on a fresh Arch install by editing declarative configs (mostly packages/services/symlinks), keeping everything idempotent.
Think “a NixOS-like workflow”, but:
- still Arch-based
- mostly binary packages (pacman / AUR via yay), not rebuilding the whole OS from source
- easy to fork and maintain your own “spin”
From the repo root:
./archx-installDry-run:
./archx-install --dry-run- Fork this repo.
- Edit config files in
archx/(*.toml,*.json,*.yaml,*.yml):- add/remove packages
- add/remove symlinks into your dotfiles
- enable services
- keep changes idempotent (commands should be safe to re-run)
- Keep actual dotfiles/config payloads in
dotfiles/and reference them via[[symlink]] source = "dotfiles/...".
Wallpapers are rotated using awww.
- Where wallpapers live (in repo):
dotfiles/archx/wallpaper/
Important notes:
- The exact outcome depends on your flags (e.g.
--symlink-conflict) and any saved decisions in${XDG_CONFIG_HOME:-~/.config}/archx-setup/decisions.json. - Some steps are implemented as
[[shell]]scripts (see below).
| Category | Choice / Component |
|---|---|
| Compositor | hyprland |
| Hyprland plugins | hyprpm + hyprexpo |
| Panel | waybar |
| Notifications | swaync |
| Browser | chromium |
| Terminal | kitty |
| Editor | lite-xl |
| File manager | yazi |
| Image viewer | swayimg |
| Display manager | greetd + greetd-regreet |
| Screenshots | grimblast-git (AUR via yay) |
| AUR helper | yay |
| App launcher | vicinae-bin (AUR via yay) |
| Vicinae plugins/extensions | pulseaudio, wifi-commander, bluetooth |
| Wallpaper daemon | awww |
| Group | Packages |
|---|---|
| Build essentials / AUR builds | base-devel, gcc, cmake, meson, cpio, git |
| JS toolchain (used by extension builds) | npm |
| Desktop utilities | brightnessctl, jq, libnotify |
| Fonts | noto-fonts, otf-font-awesome |
The following packages are ensured to be installed by the configs under archx/:
- pacman:
base-develbrightnessctlchromiumcmakecpiogccgitgreetdgreetd-regreethypridlehyprlandhyprlockjqkittylibnotifylite-xlmesonnanonetworkmanagernoto-fontsnoto-fonts-emojinpmotf-font-awesomeplymouthswayimgswayncwaybaryazi
- yay (AUR):
grimblast-gitawww-gitvicinae-bin
NetworkManager.servicegreetd.service
These are ensured as symlinks (if the target path is free or you choose to replace it):
~/.config/archx->dotfiles/archx~/.config/hypr->dotfiles/hypr~/.config/swaync->dotfiles/swaync~/.config/vicinae->dotfiles/vicinae~/.config/waybar->dotfiles/waybar~/.config/yazi->dotfiles/yazi/etc/greetd->dotfiles/greetd/etc/mkinitcpio.conf.d/000_plymouth.conf->dotfiles/mkinitcpio/000_plymouth.conf