# Dependencies for Omarchy: Core System Requirements and Package Architecture

> Discover Omarchy dependencies: Arch Linux pacman, systemd, bash, git, curl, jq, and hardware specific packages. Learn about its package architecture and core system requirements.

- Repository: [37signals/omarchy](https://github.com/basecamp/omarchy)
- Tags: internals
- Published: 2026-08-19

---

**Omarchy requires Arch Linux's package manager (pacman), systemd service management, and a minimal set of standard utilities including bash, git, curl, and jq, with additional hardware-specific dependencies enumerated in `install/omarchy-base.packages` and managed through Omarchy's wrapper scripts.**

Omarchy is an opinionated Arch Linux distribution maintained by basecamp/omarchy that automates system configuration through declarative package sets and shell scripts. Understanding its dependency structure is essential for troubleshooting installation failures or extending the system with custom hardware support.

## Core System Dependencies

Omarchy operates as a management layer atop Arch Linux, inheriting all base Arch requirements while adding specific tooling for its automated workflows.

### Required Base Utilities

- **pacman**: The native Arch package manager serves as the foundation for all Omarchy operations. The `omarchy-pkg-add` and `omarchy-pkg-drop` commands are thin wrappers around pacman that handle logging and state tracking.

- **systemd**: Provides the service infrastructure for Omarchy's automated maintenance tasks, including update timers and backup services referenced in [`docs/file-layout.md`](https://github.com/basecamp/omarchy/blob/main/docs/file-layout.md).

- **bash (≥ 5.0)**: All Omarchy CLI tools live in the `bin/` directory as Bash scripts following the project's strict style guidelines. The [`AGENTS.md`](https://github.com/basecamp/omarchy/blob/main/AGENTS.md) file specifies that agents must assume Bash 5+ availability.

- **git**: Required for cloning Omarchy plugins and managing the repository's distributed configuration files. The [`shell/plugins/README.md`](https://github.com/basecamp/omarchy/blob/main/shell/plugins/README.md) workflow depends on git for plugin installation.

- **curl**: Used by hardware installation scripts to fetch remote firmware and drivers, such as in [`install/hardware/intel/sof-firmware.sh`](https://github.com/basecamp/omarchy/blob/main/install/hardware/intel/sof-firmware.sh).

- **jq**: Parses JSON output from Omarchy commands, particularly when generating machine-readable command lists for testing via `test/cli`.

### AUR Helper Support

While not strictly required for base functionality, **yay** (or any compatible AUR helper) enables installation of community packages. The [`manual/29-other-packages.md`](https://github.com/basecamp/omarchy/blob/main/manual/29-other-packages.md) documentation references `omarchy pkg aur add` workflows that rely on AUR helper presence.

## Package Source Files

Omarchy maintains canonical dependency lists in the install directory that define the system state.

### omarchy-base.packages

The file `install/omarchy-base.packages` contains the definitive list of system packages installed during Omarchy setup. This includes:

- Core filesystem utilities
- Network management tools
- Base development headers
- Essential firmware packages

### omarchy-other.packages

Optional hardware support and additional utilities reside in `install/omarchy-other.packages`. These packages are installed on-demand when users select specific hardware profiles or optional features through the Omarchy menu interface.

## Hardware-Specific Dependencies

Omarchy uses modular installation scripts for hardware enablement, each defining their own dependency chains.

### Firmware Updates

The **fwupd** daemon handles firmware updates through the `omarchy-update-firmware` command. Per [`manual/30-updates.md`](https://github.com/basecamp/omarchy/blob/main/manual/30-updates.md), this service installs automatically on first run of the firmware updater, pulling dependencies like `flashrom` or `fwupd` itself as needed.

### Video and Audio Acceleration

Hardware-specific scripts in `install/hardware/` declare their own dependencies:

- **Intel graphics**: [`install/hardware/intel/video-acceleration.sh`](https://github.com/basecamp/omarchy/blob/main/install/hardware/intel/video-acceleration.sh) installs Intel media drivers and Vulkan support
- **Audio subsystems**: Dependencies like `lsp-plugins-lv2` and `ffmpeg` for professional audio workflows

## Dependency Management Examples

### Installing Base System Packages

```bash

# Install a package from the Arch repositories

omarchy pkg add neovim

```

This invokes `bin/omarchy-pkg-add`, which wraps `pacman -S` while updating Omarchy's internal package state tracking.

### Adding AUR Dependencies

```bash

# Install from AUR (requires yay or compatible helper)

omarchy pkg aur add visual-studio-code-bin

```

The wrapper detects AUR packages and delegates to the configured AUR helper, falling back to error messaging if no helper is present.

### Running System Updates

```bash

# Update Omarchy and all dependencies

omarchy update

```

As documented in [`docs/update-process.md`](https://github.com/basecamp/omarchy/blob/main/docs/update-process.md), this script:
1. Invokes `pacman -Syu` for system packages
2. Runs `omarchy-migrate` for configuration migrations
3. Prunes cache directories
4. Restarts affected systemd services

### Installing Hardware Support

```bash

# Install Intel-specific video dependencies

omarchy install hardware intel video-acceleration

```

This executes [`install/hardware/intel/video-acceleration.sh`](https://github.com/basecamp/omarchy/blob/main/install/hardware/intel/video-acceleration.sh), which calls `omarchy-pkg-add` for packages like `intel-media-driver` and `vulkan-intel`.

## Summary

- **Omarchy** builds on standard Arch Linux infrastructure, requiring **pacman** and **systemd** as non-negotiable foundations.
- Core utilities (**bash**, **git**, **curl**, **jq**) support the automation scripts in `bin/` and installation workflows.
- Canonical dependency lists live in `install/omarchy-base.packages` and `install/omarchy-other.packages`, representing the complete system package set.
- Hardware support uses modular scripts that declare runtime dependencies dynamically based on selected profiles.
- **Yay** or equivalent AUR helpers extend functionality for community packages, though base Omarchy operates within official repositories.

## Frequently Asked Questions

### Does Omarchy work without an AUR helper like yay?

Yes, Omarchy's core functionality operates entirely within official Arch repositories using pacman. However, installing packages from the Arch User Repository (AUR) requires a compatible helper such as yay, as referenced in [`manual/29-other-packages.md`](https://github.com/basecamp/omarchy/blob/main/manual/29-other-packages.md). The `omarchy pkg aur` subcommands will prompt for helper installation if missing.

### Where can I find the complete list of packages Omarchy installs?

The authoritative source is `install/omarchy-base.packages` in the basecamp/omarchy repository. This file enumerates all packages installed during initial setup, while `install/omarchy-other.packages` contains optional additions. These files are plain text lists consumed by the installation scripts during first-run configuration.

### What happens if I remove a dependency that Omarchy requires?

Removing core dependencies like systemd or bash will break Omarchy's automation scripts and service management. The `bin/omarchy-pkg-drop` wrapper includes safety checks to prevent removal of protected packages, though manual pacman operations bypassing Omarchy could leave the system in an inconsistent state. Always use the Omarchy wrappers (`omarchy pkg drop`) to maintain dependency integrity.

### How does Omarchy handle firmware dependencies?

Firmware updates rely on **fwupd**, which installs automatically when first running `omarchy-update-firmware` or selecting firmware updates from the Omarchy menu. Hardware-specific firmware (such as Intel SOF firmware) installs via dedicated scripts in `install/hardware/` that fetch proprietary blobs using curl and install them to appropriate system paths.