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
This commit is contained in:
382
BUILD_ISO.md
Normal file
382
BUILD_ISO.md
Normal file
@@ -0,0 +1,382 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user