Omarchy Install Scripts: Pre‑install Hardware Fixes and Service Setup Explained
Omarchy install scripts automate hardware‑specific pre‑install fixes, package installation, user‑level configuration, and systemd service enablement to ensure a deterministic first boot without starting services during the installation process.
Omarchy provides a structured Arch Linux installation framework that separates system preparation into distinct pre‑install and service‑setup phases. These scripts reside in the omac/omarchy repository and handle vendor‑specific hardware quirks, essential package provisioning, and systemd unit orchestration before the system reboots. Understanding the exact scope of these scripts allows administrators to debug installation failures or extend the framework for custom hardware.
Pre‑install Phase: Hardware, Packages, and User Configuration
The pre‑install phase runs before the main system configuration is copied, targeting hardware detection, package installation, and user‑level customizations.
Hardware‑Specific Fixes
Scripts under install/hardware/ detect the platform and apply vendor‑specific kernel module adjustments, firmware updates, and udev rules. According to the omac/omarchy source code, these fixes resolve issues such as broken AMD audio inputs on Framework laptops, missing Wi‑Fi regulatory domains, and NVIDIA driver quirks.
Individual vendor directories contain targeted scripts—for example, install/user/hardware/framework/fix-f13-amd-audio-input.sh addresses specific audio input failures on Framework 13 AMD models. The aggregate script install/hardware/all.sh sources each hardware‑specific fix in the correct order to ensure comprehensive coverage for Asus, Dell, Apple, and other supported platforms.
Package Preparation
Before the main configuration phase, install/hardware/pacman.sh installs the essential package set using the omarchy-pkg-add helper. This approach keeps the installation process distro‑agnostic while ensuring core utilities, drivers, and optional tools are present. The script handles pacman repository synchronization and AUR helper setup if required by the target environment.
User‑Level Configuration
The install/user/all.sh script aggregates one‑time user customizations that must occur before the desktop environment is fully configured. These adjustments include theme file deployment, SSH keep‑alive settings, and Chromium policy tweaks. By running these scripts as the target user rather than root, Omarchy ensures proper ownership and permissions for dotfiles and browser configurations.
Service Setup Phase: Systemd Unit Management
After hardware and user preparation, the service‑setup phase configures systemd units to start automatically on the next boot.
Enable‑Only Strategy
The install/config/enable-services.sh script enables required systemd services using systemctl enable without immediately starting them. This design prevents interference with the ongoing installation process while ensuring that core daemons such as cups, avahi-daemon, power-profiles-daemon, and the sddm display manager are active after the first reboot.
Service Masking and Ancillary Sockets
To prevent boot stalls, the script masks NetworkManager-wait-online.service, which would otherwise block the boot target while waiting for network configuration. Additionally, it enables ancillary components such as docker.socket for container runtime availability and systemd-oomd.service to protect user sessions from runaway memory usage once the system boots.
Running the Scripts Manually
While the main omarchy-install entry point executes these scripts automatically, administrators can invoke them directly for debugging or partial reconfiguration.
Run all hardware fixes as root:
sudo bash /usr/local/omarchy/install/hardware/all.sh
Apply user‑level configurations as the target user:
bash /usr/local/omarchy/install/user/all.sh
Enable systemd services after configuration changes:
sudo bash /usr/local/omarchy/install/config/enable-services.sh
Summary
- Hardware fixes reside in
install/hardware/and target specific vendors such as Framework, AMD, and Intel to resolve kernel module and firmware issues. - Package installation occurs via
install/hardware/pacman.shusing theomarchy-pkg-addhelper to maintain distro compatibility. - User configuration is handled by
install/user/all.sh, applying themes, SSH settings, and browser policies before the desktop environment loads. - Service setup uses
install/config/enable-services.shto enable—but not start—systemd units, while maskingNetworkManager-wait-online.serviceto prevent boot delays. - Key services enabled include
sddm,cups,avahi-daemon,power-profiles-daemon,docker.socket, andsystemd-oomd.service.
Frequently Asked Questions
What hardware vendors does Omarchy support with pre‑install scripts?
Omarchy includes hardware‑specific scripts for vendors such as Asus, Dell, Apple, and Framework. These scripts reside in install/hardware/ and address issues like Intel VA‑API acceleration via install/hardware/intel/video-acceleration.sh, NVIDIA driver quirks, and AMD audio input fixes on specific laptop models.
Why does the service setup script use systemctl enable instead of start?
The install/config/enable-services.sh script only enables services to ensure they activate on the next boot. Starting services during installation could interfere with the setup process or cause resource conflicts before the system is fully configured.
How can I add custom hardware fixes to an Omarchy installation?
Create a new shell script in the appropriate install/hardware/ subdirectory following the naming conventions of existing fixes, then ensure it is sourced by install/hardware/all.sh. The script should use standard bash utilities to modify kernel modules, udev rules, or firmware configurations.
What prevents the system from hanging during boot after Omarchy installation?
The service setup script masks NetworkManager-wait-online.service, which prevents the boot sequence from stalling while waiting for network connectivity. Additionally, it enables systemd-oomd.service to mitigate memory pressure that could otherwise freeze the system during the first boot.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →