Module reference Β· Contributing Β· License
Β
archforge automates the configuration of a freshly installed Arch Linux system. It runs independent modules that configure packages, services, security, networking, performance, input, console, graphics, and more. Every file archforge edits or creates is automatically backed up and can be reverted with archforge restore β including undoing files it created from scratch, not just restoring overwritten ones. Package installs and service/group state changes (systemctl enable, usermod, etc.) are applied directly and are not reverted by restore; the summary printed after each run lists the packages installed so you can remove them manually if needed.
Note
ArchWiki only (official): README text, module descriptions, links, and implementation guidance in this repository are based solely on the public ArchWiki β the official Arch Linux wiki. Where user repositories are involved, that means the same wiki (e.g. Arch User Repository, AUR helpers), not third-party blogs or unofficial guides. The wiki remains the authoritative, up-to-date source; archforge is a helper and may lag behind wiki edits.
Β
git clone https://github.com/h3n-x/archforge.git
cd archforge
chmod +x archforge
./archforgeTip
Use ./archforge --dry-run first to see what would change without applying anything.
Β
Note
Without --modules or --profile, a two-column numbered menu appears. Choose by number (1 3 5), by module id (pacman firewall), the word all for every module, or q to quit. Separate tokens with spaces or commas. Rows may show β when a module can touch hardware or deserves a quick review before applying.
Β
Instead of choosing individual modules manually, apply a curated system configuration with --profile=NAME:
./archforge --profile=desktop-full| Profile | Target / Use Case | Base Software Modules |
|---|---|---|
server |
Headless servers, VPS or Home Labs | pacman, aur-helper, systemd, users-groups, network, dns, firewall, antivirus, locale, ssd, performance |
desktop-minimal |
Lightweight desktop / TWM base (Hyprland, Sway, i3) | pacman, aur-helper, systemd, users-groups, network, dns, firewall, keyboard, locale, fonts, libinput, audio, ssd, performance |
desktop-full |
Full daily workstation | desktop-minimal + bluetooth, printing |
gaming |
Dedicated gaming rigs | pacman, aur-helper, network, dns, firewall, keyboard, locale, fonts, libinput, audio, bluetooth, ssd, performance, steam |
Note
Universal Security Baseline: Every profile includes dns (with DNSSEC / DoT) and firewall (nftables).
Automatic Hardware Resolution: By default, archforge scans the machine bus dynamically:
- Multi-GPU PCI Bus Scanning: Scans all PCI controllers (
lspci), seamlessly configuring hybrid setups (e.g., integrated AMD APU + discrete NVIDIA GPU on laptops) without driver collision. - Laptops: Inspects battery subsystems (
/sys/class/power_supply) to addtlpandacpidon genuine mobile devices only. - Sensors: Inspects virtualization via
systemd-detect-virt, injectingsensorson bare-metal hardware and skipping inside VMs.
Use --no-hardware-detect if you want strictly the curated software base without auto-detecting hardware modules.
Β
sudo make installThis installs the archforge script and copies lib/ and modules/ under $(PREFIX)/share/archforge (default prefix: /usr/local). See the Makefile for DESTDIR and PREFIX.
Β
Interactive TUI: run ./archforge in a UTF-8 terminal for the live experience.
Β
Β
--modules m1,m2,... Run specific modules (skips menu)
--dry-run Show what would change, execute nothing
--yes, -y Skip all confirmation prompts
--aur-helper=NAME Override AUR helper (yay, paru, ...)
--help, -h Show help
--version Show version
Β
./archforge restoreShows previous sessions and lets you selectively restore backed-up files.
Β
make lint # shellcheck
make test # bats
make check # lint + testΒ
- Arch Linux (or compatible derivative)
- bash >= 5.0
- sudo privileges
Β
| Resource | Description |
|---|---|
| docs/en/modules.md | Module list with packages and wiki links (English) |
| docs/es/modules.md | Same, Spanish |
| README.es.md | This readme in Spanish |
Β
Contributions are welcome. See CONTRIBUTING.md for tests, shellcheck, and the module API (module_info / module_run).
Β
-
Q: How do I skip the menu?
A: Pass explicit module ids:./archforge --modules pacman,firewall(comma-separated), or use a preset profile:./archforge --profile=desktop-full. To run everything without typing each id, use the interactive menu and enterall. -
Q: Can I combine a profile with additional modules?
A: Yes. Pass--profile=NAME --modules mod1,mod2. The modules are merged and automatically sorted into canonical execution order without duplicates. -
Q: Where are backups stored?
A: By default under~/.local/share/archforge/backups/<session-id>/. Override with theBACKUP_BASE_DIRenvironment variable. Use./archforge restoreto pick a previous session interactively.
Β
- Arch Linux and the ArchWiki authors
- README layout inspired by the Catppuccin communityβs port templates (badges, spacing, sections). Not affiliated β only structural inspiration.
Β
Copyright Β© 2026 h3n-x