144 lines
4.4 KiB
Markdown
144 lines
4.4 KiB
Markdown
# Omarchy ISO Builder
|
|
|
|
## Overview
|
|
|
|
The ISO build system now integrates local package building for development workflows.
|
|
|
|
## Build Scripts
|
|
|
|
### build-iso.sh
|
|
Main ISO build script that:
|
|
1. Sets up Arch Linux build environment
|
|
2. Builds omarchy-settings package locally (if omarchy-pkgs mounted)
|
|
3. Installs omarchy-settings in the ISO
|
|
4. Downloads remaining packages to offline mirror
|
|
5. Assembles the final ISO image
|
|
|
|
### build-omarchy-packages.sh
|
|
Builds omarchy-settings package locally from source:
|
|
- Runs inside Docker container
|
|
- Builds as `nobody` user (makepkg requirement)
|
|
- Outputs package to `/tmp/omarchy-pkg-build/`
|
|
- Exports `OMARCHY_SETTINGS_PKG` variable for build-iso.sh
|
|
|
|
## Package Integration
|
|
|
|
### omarchy-settings
|
|
**Installed in ISO** - Provides EVERYTHING needed:
|
|
- User skeleton files (`/etc/skel/`)
|
|
- System configurations (`/etc/`)
|
|
- Plymouth boot theme
|
|
- Essential binaries (`omarchy-debug`, `omarchy-upload-log`)
|
|
- Install scripts (`/usr/share/omarchy/install/`)
|
|
- Default configs and migrations
|
|
|
|
**Size**: ~5-10MB
|
|
**Purpose**: Complete self-contained package for ISO - no git clone needed!
|
|
|
|
### omarchy (future)
|
|
**In offline mirror** - Full desktop environment:
|
|
- All omarchy-* binaries
|
|
- Install scripts and migrations
|
|
- Themes and assets
|
|
- Heavy dependencies (Hyprland, Waybar, etc.)
|
|
|
|
**Installed during**: Post-install phase in chroot
|
|
|
|
## Development Workflow
|
|
|
|
### Quick Build
|
|
```bash
|
|
# From omarchy-iso directory (uses default paths)
|
|
omarchy-iso-make-dev
|
|
|
|
# Or with custom paths
|
|
export OMARCHY_PKGS_PATH=/path/to/pkgs
|
|
export OMARCHY_INSTALLER_PATH=/path/to/installer
|
|
omarchy-iso-make-dev
|
|
```
|
|
|
|
This will:
|
|
1. Mount omarchy-pkgs into Docker container
|
|
2. Mount omarchy-installer (if OMARCHY_INSTALLER_PATH set)
|
|
3. Build omarchy-settings from local source
|
|
4. Install it in the ISO
|
|
5. Create bootable ISO with latest changes
|
|
|
|
See [ENV_VARS.md](../ENV_VARS.md) for all configuration options.
|
|
|
|
### Without Package Build
|
|
If `omarchy-pkgs` directory is not mounted:
|
|
- **Build will fail** with helpful error message
|
|
- The ISO build now requires omarchy-settings package
|
|
- No fallback to git clone (removed for simplicity)
|
|
- Set `OMARCHY_PKGS_PATH` to enable builds
|
|
|
|
## Directory Structure
|
|
|
|
```
|
|
omarchy-iso/
|
|
├── bin/
|
|
│ └── omarchy-iso-make # Main entry point (updated to mount omarchy-pkgs)
|
|
├── builder/
|
|
│ ├── build-iso.sh # Main ISO build (updated for package integration)
|
|
│ ├── build-omarchy-packages.sh # New: Local package builder
|
|
│ └── README.md # This file
|
|
├── configs/
|
|
│ ├── profiledef.sh # ISO profile (updated to remove manual file perms)
|
|
│ └── ...
|
|
└── release/
|
|
└── omarchy-*.iso # Built ISOs
|
|
```
|
|
|
|
## How It Works
|
|
|
|
1. **omarchy-iso-make** detects `../omarchy-pkgs` directory
|
|
2. Mounts it read-only into Docker container at `/omarchy-pkgs`
|
|
3. **build-iso.sh** checks for `/omarchy-pkgs` mount (REQUIRED!)
|
|
4. Sources **build-omarchy-packages.sh** to build package
|
|
5. Package is built with makepkg as `nobody` user
|
|
6. Built package added to `packages.x86_64` list
|
|
7. Copied to offline mirror
|
|
8. mkarchiso installs it during ISO assembly
|
|
9. ISO boots with omarchy-settings pre-installed
|
|
10. **Everything works from package** - no git clone, no manual copying!
|
|
|
|
## Benefits
|
|
|
|
### For Development
|
|
- ✅ No need to publish packages for testing
|
|
- ✅ Instant iteration on configs and binaries
|
|
- ✅ Test package integration in real ISO environment
|
|
- ✅ Single command builds everything
|
|
|
|
### For Production
|
|
- ✅ Same workflow works with published packages
|
|
- ✅ Fallback to manual copying if needed
|
|
- ✅ Reproducible builds
|
|
- ✅ Version-locked packages
|
|
|
|
## Troubleshooting
|
|
|
|
### Package build fails
|
|
```bash
|
|
# Check that omarchy-pkgs is mounted
|
|
docker run --rm -v "$PWD/../omarchy-pkgs:/omarchy-pkgs:ro" archlinux ls -la /omarchy-pkgs
|
|
```
|
|
|
|
### Manual file copying used instead of package
|
|
- Ensure omarchy-pkgs directory exists at `../omarchy-pkgs`
|
|
- Check Docker mount in omarchy-iso-make
|
|
- Look for "Mounting omarchy-pkgs" message during build
|
|
|
|
### Permission errors
|
|
- build-omarchy-packages.sh runs makepkg as `nobody` user
|
|
- Temporary sudo access granted for pacman operations
|
|
- Cleaned up after build
|
|
|
|
## Future Enhancements
|
|
|
|
1. Build full `omarchy` package locally
|
|
2. Remove git clone of omarchy-installer entirely
|
|
3. Use only packages for all file installation
|
|
4. Support building other omarchy-* packages
|