Files
omnixy/BUILD_ISO.md
theArctesian 53cdf81af8 Fix package conflicts and add ISO configuration
- Fixed nvtop package reference (nvtopPackages.full -> nvtop)
- Fixed display manager conflicts in ISO config
- Fixed SSH settings conflicts with lib.mkForce
- Fixed home-manager username conflicts for ISO
- Added complete ISO build configuration with Wayland-only setup
- Added ISO build documentation and scripts
2025-09-29 18:46:24 -07:00

382 lines
8.2 KiB
Markdown

# Building OmniXY ISO Image
This guide explains how to build a live ISO image of OmniXY NixOS that can be used for installation or testing.
## Prerequisites
1. **NixOS or Nix with Flakes**: You need a system with Nix installed and flakes enabled
2. **Sufficient disk space**: Building an ISO requires several GB of space
3. **Good internet connection**: Initial build will download many packages
## Quick Start
### Method 1: Using the Built-in App (Recommended)
```bash
# Clone the repository
git clone https://github.com/TheArctesian/omnixy.git
cd omnixy
# Build the ISO using the built-in app
nix run .#build-iso
```
The built app will:
- Build the ISO image
- Show progress and final location
- Provide instructions for using the ISO
### Method 2: Direct Nix Build
```bash
# Build the ISO directly
nix build .#iso
# The ISO will be available as a symlink
ls -la ./result/iso/
```
### Method 3: Build Specific Configuration
```bash
# Build the ISO configuration specifically
nix build .#nixosConfigurations.omnixy-iso.config.system.build.isoImage
# Find the ISO file
find ./result -name "*.iso"
```
## ISO Features
The OmniXY ISO includes:
### Pre-installed Software
- **Desktop Environment**: Hyprland with full OmniXY theming
- **Development Tools**: Complete development stack (editors, compilers, etc.)
- **Multimedia**: Video players, image viewers, audio tools
- **Productivity**: Browsers, office suite, communication tools
- **System Tools**: Disk utilities, system monitors, network tools
### Live Session Features
- **Auto-login**: Boots directly to the desktop as `nixos` user
- **No password required**: Passwordless sudo for system administration
- **Network ready**: NetworkManager enabled for easy connection
- **Installation tools**: Graphical installer (Calamares) included
- **Theme showcase**: All OmniXY themes available for testing
### Installation Capabilities
- **Guided installation**: Run `omnixy-installer` for graphical setup
- **Manual installation**: Full NixOS installation tools available
- **Hardware support**: Wide hardware compatibility with latest kernel
## ISO Configuration Details
### Size and Performance
- **Expected size**: 3-5 GB (depending on included packages)
- **RAM requirements**: Minimum 4GB RAM for live session
- **Boot methods**: UEFI and BIOS supported
### Included Themes
All OmniXY themes are included and can be tested:
- tokyo-night (default)
- catppuccin
- gruvbox
- nord
- everforest
- rose-pine
- kanagawa
- catppuccin-latte
- matte-black
- osaka-jade
- ristretto
### Customization Options
#### Building with Different Default Theme
Edit `iso.nix` and change the theme import:
```nix
# Change this line:
./modules/themes/tokyo-night.nix
# To your preferred theme:
./modules/themes/gruvbox.nix
```
#### Excluding Packages
Modify the `omnixy.packages.exclude` section in `iso.nix`:
```nix
omnixy = {
# ... other config
packages = {
exclude = [ "discord" "spotify" "steam" ]; # Add packages to exclude
};
};
```
#### Adding Custom Packages
Add packages to the `environment.systemPackages` in `iso.nix`:
```nix
environment.systemPackages = with pkgs; [
# ... existing packages
your-custom-package
];
```
## Using the ISO
### Creating Bootable Media
#### USB Drive (Linux)
```bash
# Replace /dev/sdX with your USB device
sudo dd if=./result/iso/omnixy-*.iso of=/dev/sdX bs=4M status=progress oflag=sync
```
#### USB Drive (Windows)
Use tools like:
- Rufus
- Balena Etcher
- Windows USB/DVD Download Tool
#### DVD
Use any DVD burning software with the ISO file.
### Testing in Virtual Machine
#### QEMU
```bash
# Basic VM test (4GB RAM)
qemu-system-x86_64 -cdrom ./result/iso/omnixy-*.iso -m 4G -enable-kvm
# VM with more features
qemu-system-x86_64 \
-cdrom ./result/iso/omnixy-*.iso \
-m 8G \
-enable-kvm \
-vga virtio \
-display gtk,gl=on \
-machine q35 \
-cpu host
```
#### VirtualBox
1. Create new VM with Linux/Other Linux (64-bit)
2. Allocate at least 4GB RAM
3. Mount the ISO as CD/DVD
4. Enable hardware acceleration if available
#### VMware
1. Create new VM with Linux/Other Linux 5.x kernel 64-bit
2. Allocate at least 4GB RAM
3. Use ISO as CD/DVD source
4. Enable hardware acceleration
## Installation from ISO
### Using the Graphical Installer
1. Boot from the ISO
2. Wait for auto-login to complete
3. Run the installer:
```bash
omnixy-installer
```
4. Follow the graphical installation wizard
5. Reboot when complete
### Manual Installation
1. Boot from the ISO
2. Partition your disk with `gparted` or command-line tools
3. Mount your root partition:
```bash
sudo mount /dev/sdaX /mnt
```
4. Generate hardware configuration:
```bash
sudo nixos-generate-config --root /mnt
```
5. Download OmniXY:
```bash
cd /mnt/etc/nixos
sudo git clone https://github.com/TheArctesian/omnixy.git .
```
6. Edit configuration:
```bash
sudo nano configuration.nix
# Set your username and preferred theme
```
7. Install:
```bash
sudo nixos-install --flake /mnt/etc/nixos#omnixy
```
8. Set root password when prompted
9. Reboot
## Troubleshooting
### Build Issues
#### "Path does not exist" errors
Ensure all files are present and paths in configuration are correct:
```bash
# Check if all required files exist
ls -la modules/ packages/ assets/
```
#### Out of disk space
Building requires significant space:
```bash
# Clean up nix store
nix-collect-garbage -d
# Check available space
df -h
```
#### Network issues during build
Ensure internet connection and try with cached builds:
```bash
# Use substituters
nix build .#iso --substituters https://cache.nixos.org
```
### Boot Issues
#### ISO doesn't boot
- Verify BIOS/UEFI settings
- Try different USB creation method
- Check USB drive integrity
#### Black screen on boot
- Try different graphics settings in GRUB
- Add `nomodeset` kernel parameter
- Use safe graphics mode
#### Out of memory during live session
- Use system with more RAM (minimum 4GB)
- Close unnecessary applications
- Consider lighter package selection
### Installation Issues
#### Hardware not detected
- Ensure latest kernel is being used
- Check for firmware packages
- Update hardware-configuration.nix manually
#### Network issues during installation
- Test network in live session first
- Configure NetworkManager connections
- Check firewall settings
## Advanced Usage
### Building for Different Architectures
Currently, OmniXY ISO supports x86_64-linux. For other architectures:
```bash
# Check available systems
nix flake show
# Build for specific system (if supported)
nix build .#packages.aarch64-linux.iso
```
### Customizing Boot Parameters
Edit the ISO configuration to add custom kernel parameters:
```nix
# In iso.nix
boot.kernelParams = [
# Add your custom parameters
"custom.parameter=value"
];
```
### Creating Minimal ISO
For a smaller ISO, disable features in `iso.nix`:
```nix
omnixy = {
preset = "minimal"; # Instead of "everything"
packages.exclude = [ /* large packages */ ];
};
```
## CI/CD Integration
### GitHub Actions
Add to `.github/workflows/build-iso.yml`:
```yaml
name: Build ISO
on:
push:
tags: ['v*']
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: cachix/install-nix-action@v20
with:
enable_flakes: true
- name: Build ISO
run: nix build .#iso
- name: Upload ISO
uses: actions/upload-artifact@v3
with:
name: omnixy-iso
path: result/iso/*.iso
```
### GitLab CI
Add to `.gitlab-ci.yml`:
```yaml
build-iso:
image: nixos/nix:latest
script:
- nix build .#iso
- cp result/iso/*.iso ./
artifacts:
paths:
- "*.iso"
expire_in: 1 week
only:
- tags
```
## Contributing
When modifying the ISO configuration:
1. Test builds locally before committing
2. Verify ISO boots in at least one VM
3. Test both UEFI and BIOS boot modes
4. Check that installation process works
5. Update documentation if adding new features
## Support
- **Issues**: Report problems on GitHub Issues
- **Discussions**: Join GitHub Discussions for questions
- **Documentation**: Check the main README.md for general info
- **Matrix/Discord**: Community chat (links in main README)
---
For more information about OmniXY, see the main [README.md](README.md) file.