# mmdos32/simorgh architecture

> Architecture diagram of the GitHub repository mmdos32/simorgh, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mmdos32/simorgh
- Repository: https://github.com/mmdos32/simorgh

## Overview

Simorgh is an Arch Linux desktop distribution delivered either as a bootable installer ISO or as an installer for an existing Arch system. The main workflows begin with the user choosing one of those routes, proceed through installation and configuration, and end at a Hyprland desktop. Its major runtime capabilities include coordinated desktop configuration and themes, application/menu utilities, and system controls. The graph uses README-documented relationships; source excerpts do not cover the installer scripts or desktop configuration wiring, so those internal links are omitted where documentation does not establish them.

Main entry points: [`config/hypr`](https://github.com/mmdos32/simorgh/tree/main/config/hypr) (Hyprland desktop), [`install.sh`](https://github.com/mmdos32/simorgh/blob/main/install.sh) (Arch installer), [`iso/airootfs/etc/calamares`](https://github.com/mmdos32/simorgh/tree/main/iso/airootfs/etc/calamares) (Calamares installer), [`bootstrap.sh`](https://github.com/mmdos32/simorgh/blob/main/bootstrap.sh) (Bootstrap entry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_install["Installation"]
  node_bootstrap["Bootstrap entry<br/>[bootstrap.sh]"]
  node_installer["Arch installer<br/>[install.sh]"]
  node_packages["Package selections"]
  node_iso["Live ISO profile"]
  node_calamares["Calamares installer"]
  node_live["Live setup"]
  node_target["Target installer"]
end

subgraph group_desktop["Desktop"]
  node_hyprland["Hyprland desktop"]
  node_bar["Waybar"]
  node_launcher["Rofi launcher"]
  node_notifications["Notifications"]
  node_login["SDDM login"]
  node_shell["Shell environment"]
end

subgraph group_customize["Themes and settings"]
  node_theme["Theme switcher"]
  node_themefiles["Theme definitions"]
  node_settings["Desktop settings"]
end

subgraph group_utilities["User utilities"]
  node_menu["Simorgh menu"]
  node_power["Power controls"]
  node_updater["Self updater"]
  node_keybinds["Keybind guide"]
  node_recorder["Screen recording"]
end

node_user(("User"))
node_arch["Arch system"]
node_usb["Bootable USB"]

node_user -->|"runs installer"| node_bootstrap
node_bootstrap -->|"starts"| node_installer
node_arch -->|"hosts install"| node_installer
node_installer -->|"installs selections"| node_packages
node_user -->|"boots"| node_usb
node_usb -->|"starts live system"| node_iso
node_iso -->|"opens installer"| node_calamares
node_calamares -->|"installs system"| node_target
node_calamares -.->|"configures live session"| node_live
node_user -->|"chooses install options"| node_calamares
node_installer -->|"deploys desktop"| node_hyprland
node_user -->|"switches theme"| node_theme
node_theme -->|"applies theme"| node_themefiles
node_hyprland -->|"shows top bar"| node_bar
node_hyprland -->|"opens launcher"| node_launcher
node_hyprland -->|"opens notifications"| node_notifications
node_user -->|"opens menu"| node_menu
node_menu -->|"offers updates"| node_updater
node_user -->|"opens power menu"| node_power
node_user -->|"opens guide"| node_keybinds
node_user -->|"starts recording"| node_recorder

click node_bootstrap "https://github.com/mmdos32/simorgh/blob/main/bootstrap.sh"
click node_installer "https://github.com/mmdos32/simorgh/blob/main/install.sh"
click node_packages "https://github.com/mmdos32/simorgh/tree/main/packages"
click node_iso "https://github.com/mmdos32/simorgh/tree/main/iso"
click node_calamares "https://github.com/mmdos32/simorgh/tree/main/iso/airootfs/etc/calamares"
click node_live "https://github.com/mmdos32/simorgh/blob/main/iso/airootfs/usr/local/lib/simorgh-live-setup.sh"
click node_target "https://github.com/mmdos32/simorgh/blob/main/iso/airootfs/usr/local/bin/simorgh-target-install"
click node_hyprland "https://github.com/mmdos32/simorgh/tree/main/config/hypr"
click node_bar "https://github.com/mmdos32/simorgh/tree/main/config/waybar"
click node_launcher "https://github.com/mmdos32/simorgh/tree/main/config/rofi"
click node_notifications "https://github.com/mmdos32/simorgh/tree/main/config/swaync"
click node_login "https://github.com/mmdos32/simorgh/tree/main/config/sddm"
click node_shell "https://github.com/mmdos32/simorgh/tree/main/config/zsh"
click node_theme "https://github.com/mmdos32/simorgh/blob/main/bin/simorgh-theme"
click node_themefiles "https://github.com/mmdos32/simorgh/tree/main/themes"
click node_settings "https://github.com/mmdos32/simorgh/tree/main/config"
click node_menu "https://github.com/mmdos32/simorgh/blob/main/bin/simorgh-menu"
click node_power "https://github.com/mmdos32/simorgh/blob/main/bin/simorgh-power"
click node_updater "https://github.com/mmdos32/simorgh/blob/main/bin/simorgh-update"
click node_keybinds "https://github.com/mmdos32/simorgh/blob/main/bin/simorgh-keybinds"
click node_recorder "https://github.com/mmdos32/simorgh/blob/main/bin/simorgh-record"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_bootstrap,node_installer,node_packages,node_iso,node_calamares,node_live,node_target,node_user toneBlue
class node_hyprland,node_bar,node_launcher,node_notifications,node_login,node_shell toneAmber
class node_theme,node_themefiles,node_settings toneMint
class node_menu,node_power,node_updater,node_keybinds,node_recorder toneRose
class node_arch,node_usb toneIndigo
```

## Components

### Installation

- [Bootstrap entry](https://github.com/mmdos32/simorgh/blob/main/bootstrap.sh): `bootstrap.sh`
- [Arch installer](https://github.com/mmdos32/simorgh/blob/main/install.sh): `install.sh`
- [Package selections](https://github.com/mmdos32/simorgh/tree/main/packages): `packages`
- [Live ISO profile](https://github.com/mmdos32/simorgh/tree/main/iso): `iso`
- [Calamares installer](https://github.com/mmdos32/simorgh/tree/main/iso/airootfs/etc/calamares): `iso/airootfs/etc/calamares`
- [Live setup](https://github.com/mmdos32/simorgh/blob/main/iso/airootfs/usr/local/lib/simorgh-live-setup.sh): `iso/airootfs/usr/local/lib/simorgh-live-setup.sh`
- [Target installer](https://github.com/mmdos32/simorgh/blob/main/iso/airootfs/usr/local/bin/simorgh-target-install): `iso/airootfs/usr/local/bin/simorgh-target-install`

### Desktop

- [Hyprland desktop](https://github.com/mmdos32/simorgh/tree/main/config/hypr): `config/hypr`
- [Waybar](https://github.com/mmdos32/simorgh/tree/main/config/waybar): `config/waybar`
- [Rofi launcher](https://github.com/mmdos32/simorgh/tree/main/config/rofi): `config/rofi`
- [Notifications](https://github.com/mmdos32/simorgh/tree/main/config/swaync): `config/swaync`
- [SDDM login](https://github.com/mmdos32/simorgh/tree/main/config/sddm): `config/sddm`
- [Shell environment](https://github.com/mmdos32/simorgh/tree/main/config/zsh): `config/zsh`

### Themes and settings

- [Theme switcher](https://github.com/mmdos32/simorgh/blob/main/bin/simorgh-theme): `bin/simorgh-theme`
- [Theme definitions](https://github.com/mmdos32/simorgh/tree/main/themes): `themes`
- [Desktop settings](https://github.com/mmdos32/simorgh/tree/main/config): `config`

### User utilities

- [Simorgh menu](https://github.com/mmdos32/simorgh/blob/main/bin/simorgh-menu): `bin/simorgh-menu`
- [Power controls](https://github.com/mmdos32/simorgh/blob/main/bin/simorgh-power): `bin/simorgh-power`
- [Self updater](https://github.com/mmdos32/simorgh/blob/main/bin/simorgh-update): `bin/simorgh-update`
- [Keybind guide](https://github.com/mmdos32/simorgh/blob/main/bin/simorgh-keybinds): `bin/simorgh-keybinds`
- [Screen recording](https://github.com/mmdos32/simorgh/blob/main/bin/simorgh-record): `bin/simorgh-record`

### Other components

- **User**
- **Arch system**
- **Bootable USB**

## Connections

- User → Bootstrap entry: runs installer (evidence: `README.md`)
- Bootstrap entry → Arch installer: starts (evidence: `README.md`)
- Arch system → Arch installer: hosts install (evidence: `README.md`)
- Arch installer → Package selections: installs selections (evidence: `README.md`)
- User → Bootable USB: boots (evidence: `README.md`)
- Bootable USB → Live ISO profile: starts live system (evidence: `README.md`)
- Live ISO profile → Calamares installer: opens installer (evidence: `README.md`)
- Calamares installer → Target installer: installs system (evidence: `README.md`)
- Calamares installer → Live setup: configures live session
- User → Calamares installer: chooses install options (evidence: `README.md`)
- Arch installer → Hyprland desktop: deploys desktop (evidence: `README.md`)
- User → Theme switcher: switches theme (evidence: `README.md`)
- Theme switcher → Theme definitions: applies theme (evidence: `README.md`)
- Hyprland desktop → Waybar: shows top bar (evidence: `README.md`)
- Hyprland desktop → Rofi launcher: opens launcher (evidence: `README.md`)
- Hyprland desktop → Notifications: opens notifications (evidence: `README.md`)
- User → Simorgh menu: opens menu (evidence: `README.md`)
- Simorgh menu → Self updater: offers updates (evidence: `README.md`)
- User → Power controls: opens power menu (evidence: `README.md`)
- User → Keybind guide: opens guide (evidence: `README.md`)
- User → Screen recording: starts recording (evidence: `README.md`)
