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:
theArctesian
2025-09-29 18:46:24 -07:00
parent c8777d8d3c
commit 53cdf81af8
11 changed files with 1025 additions and 16 deletions

382
BUILD_ISO.md Normal file
View 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.

View File

@@ -197,6 +197,16 @@ The configuration is split into focused modules:
- Simple installer: `./install-simple.sh` - Unix-philosophy compliant, scriptable installer
- Manual flake install: `sudo nixos-rebuild switch --flake github:TheArctesian/omnixy#omnixy`
### ISO Building
```bash
# Build live ISO image
nix run .#build-iso
nix build .#iso # Direct build
# ISO features: Live desktop, installer, all themes, development tools
# See BUILD_ISO.md for complete documentation
```
### Unix Philosophy Tools (scripts/ directory)
Focused, composable tools following "do one thing well":
- `scripts/omnixy-check-system` - Just check system requirements

5
assets/logo.png Normal file
View File

@@ -0,0 +1,5 @@
# This is a placeholder for the OmniXY logo
# Replace this with an actual PNG file for the ISO splash screen
# For now, we'll create a simple SVG that can be converted to PNG
echo "Creating placeholder logo..."

View File

@@ -85,6 +85,35 @@
}
];
};
# ISO configuration for live USB/DVD
omnixy-iso = nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = { inherit inputs; };
modules = [
./iso.nix
home-manager.nixosModules.home-manager
{
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
extraSpecialArgs = { inherit inputs; };
users = {
nixos = { config, pkgs, lib, inputs, ... }: {
imports = [ ./home.nix ];
# Override the username and home directory for ISO
home.username = lib.mkForce "nixos";
home.homeDirectory = lib.mkForce "/home/nixos";
};
};
sharedModules = [
inputs.nix-colors.homeManagerModules.default
];
};
}
];
};
};
# Development shells
@@ -113,7 +142,7 @@
# Build tools
gnumake
gcc
nodejs_20
nodejs
python3
rustc
cargo
@@ -156,7 +185,7 @@
# Node.js development
node = pkgs.mkShell {
packages = with pkgs; [
nodejs_20
nodejs
nodePackages.npm
nodePackages.pnpm
nodePackages.yarn
@@ -183,8 +212,14 @@
# OmniXY scripts as packages
omnixy-scripts = pkgs.callPackage ./packages/scripts.nix {};
# Plymouth theme (disabled until package exists)
# plymouth-theme-omnixy = pkgs.callPackage ./packages/plymouth-theme.nix {};
# Plymouth theme package
plymouth-theme-omnixy = pkgs.callPackage ./packages/plymouth-theme.nix {};
# ISO image
iso = self.nixosConfigurations.omnixy-iso.config.system.build.isoImage;
# Default package points to ISO
default = self.packages.${system}.iso;
};
# Apps that can be run
@@ -237,6 +272,52 @@
echo "🎉 Welcome to OmniXY!"
''}/bin/omnixy-install";
};
# ISO builder
build-iso = {
type = "app";
program = "${pkgs.writeShellScriptBin "omnixy-build-iso" ''
#!/usr/bin/env bash
set -e
echo "🏗 Building OmniXY ISO Image"
echo "============================"
echo ""
echo "📦 Building ISO image..."
echo " This may take a while depending on your system..."
echo ""
# Build the ISO
nix build .#iso
# Check if build was successful
if [ -L "./result" ]; then
iso_path=$(readlink -f ./result)
iso_file=$(find "$iso_path" -name "*.iso" | head -1)
if [ -n "$iso_file" ]; then
iso_size=$(du -h "$iso_file" | cut -f1)
echo ""
echo " ISO build complete!"
echo "📁 Location: $iso_file"
echo "📏 Size: $iso_size"
echo ""
echo "🚀 You can now:"
echo " Flash to USB: dd if='$iso_file' of=/dev/sdX bs=4M status=progress"
echo " Burn to DVD: Use your favorite burning software"
echo " Test in VM: qemu-system-x86_64 -cdrom '$iso_file' -m 4G -enable-kvm"
echo ""
else
echo " ISO file not found in build result"
exit 1
fi
else
echo " Build failed - result symlink not found"
exit 1
fi
''}/bin/omnixy-build-iso";
};
};
};
}

View File

@@ -38,7 +38,7 @@
# System monitoring
btop
htop
nvtopPackages.full
nvtop
# Media
mpv

416
iso.nix Normal file
View File

@@ -0,0 +1,416 @@
# OmniXY NixOS Live ISO Configuration
# This creates a bootable ISO image with OmniXY pre-installed
{ config, pkgs, lib, modulesPath, ... }:
{
imports = [
# Include the basic ISO image module (without Calamares to avoid conflicts)
"${modulesPath}/installer/cd-dvd/installation-cd-minimal.nix"
# OmniXY modules (lib must be first to provide helpers)
./modules/lib.nix
./modules/core.nix
./modules/colors.nix
./modules/security.nix
./modules/fastfetch.nix
./modules/walker.nix
./modules/scripts.nix
./modules/menus.nix
./modules/desktop/hyprland.nix
./modules/packages.nix
./modules/development.nix
./modules/themes/tokyo-night.nix # Default theme for ISO
./modules/users.nix
./modules/services.nix
./modules/hardware
];
# ISO-specific configuration
isoImage = {
# ISO image settings
isoName = "omnixy-${config.system.nixos.label}-${pkgs.stdenv.hostPlatform.system}.iso";
volumeID = "OMNIXY_${lib.toUpper config.system.nixos.label}";
# Boot configuration
makeEfiBootable = true;
makeUsbBootable = true;
# Include additional files
includeSystemBuildDependencies = false;
# Boot splash (optional)
splashImage = if builtins.pathExists ./assets/logo.png
then ./assets/logo.png
else null;
# Desktop entry for installer
contents = [
{
source = pkgs.writeText "omnixy-install.desktop" ''
[Desktop Entry]
Name=Install OmniXY
Comment=Install OmniXY NixOS to your computer
Exec=gnome-terminal -- sudo omnixy-installer
Icon=system-software-install
Terminal=false
Type=Application
Categories=System;
StartupNotify=true
'';
target = "etc/xdg/autostart/omnixy-install.desktop";
}
];
};
# System configuration for live ISO
system.stateVersion = "24.05";
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
# Enable flakes
nix = {
settings = {
experimental-features = [ "nix-command" "flakes" ];
auto-optimise-store = true;
# Binary caches
substituters = [
"https://cache.nixos.org"
"https://nix-community.cachix.org"
"https://hyprland.cachix.org"
];
trusted-public-keys = [
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
];
};
};
# Networking
networking = {
hostName = "omnixy-live";
networkmanager.enable = true;
wireless.enable = false; # Disable wpa_supplicant, use NetworkManager
# Enable firewall but allow common services for live session
firewall = {
enable = true;
allowedTCPPorts = [ 22 80 443 3000 8080 ];
};
};
# Timezone and locale
time.timeZone = "UTC"; # Will be configured during installation
i18n = {
defaultLocale = "en_US.UTF-8";
extraLocaleSettings = {
LC_ADDRESS = "en_US.UTF-8";
LC_IDENTIFICATION = "en_US.UTF-8";
LC_MEASUREMENT = "en_US.UTF-8";
LC_MONETARY = "en_US.UTF-8";
LC_NAME = "en_US.UTF-8";
LC_NUMERIC = "en_US.UTF-8";
LC_PAPER = "en_US.UTF-8";
LC_TELEPHONE = "en_US.UTF-8";
LC_TIME = "en_US.UTF-8";
};
};
# Sound configuration
services.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
jack.enable = true;
};
# Override display manager configuration for ISO
services = {
# Disable greetd from main config
greetd.enable = lib.mkForce false;
# Enable auto-login for live session
getty.autologinUser = "nixos";
# Keep X11 disabled - pure Wayland
xserver.enable = lib.mkForce false;
};
# Live user configuration is handled by modules/users.nix
# The nixos user will be created automatically since omnixy.user = "nixos"
# We just need to set an empty password for the live session
users.users.nixos.initialPassword = lib.mkForce ""; # Empty password for live session
# Configure the user's environment to auto-start Hyprland
environment.etc."profile.d/auto-hyprland.sh".text = ''
# Auto-start Hyprland for nixos user on tty1
if [[ "$(tty)" == "/dev/tty1" && "$USER" == "nixos" ]]; then
# Set up Wayland environment
export XDG_SESSION_TYPE=wayland
export XDG_SESSION_DESKTOP=Hyprland
export XDG_CURRENT_DESKTOP=Hyprland
# Start Hyprland
exec ${pkgs.hyprland}/bin/Hyprland
fi
'';
# Sudo configuration for live user
security.sudo = {
enable = true;
wheelNeedsPassword = false; # Allow passwordless sudo for live session
};
# Enable SSH for remote access (with empty password warning)
services.openssh = {
enable = true;
settings = {
PermitRootLogin = "no";
PasswordAuthentication = lib.mkForce true; # Override core.nix setting for ISO
PermitEmptyPasswords = lib.mkForce true; # For live session only
};
};
# OmniXY configuration for ISO
omnixy = {
enable = true;
user = "nixos"; # Live session user
theme = "tokyo-night";
displayManager = "gdm"; # Override default for live session
# Use developer preset for maximum features showcase
preset = "everything";
# Security configuration (relaxed for live session)
security = {
enable = true;
fingerprint.enable = false;
fido2.enable = false;
systemHardening = {
enable = false; # Disable hardening for live session compatibility
faillock.enable = false;
};
};
# Package configuration
packages = {
# Don't exclude anything for the live session showcase
exclude = [];
};
};
# Additional ISO packages
environment.systemPackages = with pkgs; [
# Installation tools
gparted
gnome-disk-utility
# Text editors for configuration
nano
vim
# Network tools
wget
curl
# File managers
nautilus
# System information
neofetch
lshw
# Terminal emulators (fallback)
gnome-terminal
# Web browser for documentation
firefox
# OmniXY installer script
(pkgs.writeShellScriptBin "omnixy-installer" ''
#!/usr/bin/env bash
set -e
echo "🚀 OmniXY NixOS Installer"
echo "========================="
echo ""
echo "This will guide you through installing OmniXY NixOS to your computer."
echo ""
echo " WARNING: This will modify your disk partitions!"
echo ""
read -p "Do you want to continue? (y/N): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo "Installation cancelled."
exit 1
fi
# Launch the graphical installer
echo "🖥 Launching graphical installer..."
echo " Follow the on-screen instructions to install OmniXY."
echo ""
# Use Calamares if available, otherwise provide manual instructions
if command -v calamares &> /dev/null; then
sudo calamares
else
echo "📝 Manual Installation Instructions:"
echo ""
echo "1. Partition your disk with gparted or fdisk"
echo "2. Mount your root partition to /mnt"
echo "3. Generate hardware configuration:"
echo " sudo nixos-generate-config --root /mnt"
echo ""
echo "4. Download OmniXY configuration:"
echo " cd /mnt/etc/nixos"
echo " sudo git clone https://github.com/TheArctesian/omnixy.git ."
echo ""
echo "5. Edit configuration.nix to set your username and theme"
echo ""
echo "6. Install NixOS:"
echo " sudo nixos-install --flake /mnt/etc/nixos#omnixy"
echo ""
echo "7. Reboot and enjoy OmniXY!"
read -p "Press Enter to open gparted for disk partitioning..."
sudo gparted
fi
'')
# Demo scripts
(pkgs.writeShellScriptBin "omnixy-demo" ''
#!/usr/bin/env bash
echo "🎨 OmniXY Live Demo"
echo "=================="
echo ""
echo "Welcome to OmniXY NixOS Live Session!"
echo ""
echo "Available commands:"
echo " omnixy-installer - Install OmniXY to your computer"
echo " omnixy-info - Show system information"
echo " omnixy-theme - Change theme (temporary for live session)"
echo " omnixy-demo - Show this demo"
echo ""
echo "Key features to try:"
echo " Hyprland window manager with modern animations"
echo " Multiple themes (tokyo-night, catppuccin, gruvbox, etc.)"
echo " Development tools and environments"
echo " Multimedia and productivity applications"
echo ""
echo "To install OmniXY permanently, run: omnixy-installer"
echo ""
'')
];
# Services for live session
services = {
# Enable printing support
printing.enable = true;
# Enable Bluetooth
blueman.enable = true;
# Enable location services
geoclue2.enable = true;
# Enable automatic time synchronization
timesyncd.enable = true;
};
# Hardware support
hardware = {
# Enable all firmware
enableAllFirmware = true;
# Graphics drivers
graphics = {
enable = true;
enable32Bit = true;
};
# Bluetooth
bluetooth = {
enable = true;
powerOnBoot = true;
};
# Pulseaudio (disabled in favor of PipeWire)
pulseaudio.enable = false;
};
# Boot configuration for ISO
boot = {
# Support for various filesystems
supportedFilesystems = [ "btrfs" "ext4" "xfs" "ntfs" "fat32" "exfat" ];
# Include lots of modules for hardware compatibility
initrd.availableKernelModules = [
# Storage
"ahci" "xhci_pci" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc"
# Graphics
"amdgpu" "radeon" "nouveau" "i915"
# Network
"r8169" "e1000e" "iwlwifi" "ath9k" "ath10k_pci" "rtw88_8822ce"
];
# Kernel parameters for better hardware compatibility
kernelParams = [
"boot.shell_on_fail"
"i915.modeset=1"
"nouveau.modeset=1"
"radeon.modeset=1"
"amdgpu.modeset=1"
];
# Use latest kernel for best hardware support
kernelPackages = pkgs.linuxPackages_latest;
# Plymouth disabled for ISO to avoid potential issues
plymouth.enable = false;
};
# Auto-login is configured above in services.displayManager
# Automatically start OmniXY demo on login
environment.loginShellInit = ''
# Show demo information on first login
if [ -f /home/nixos/.first-login ]; then
omnixy-demo
rm /home/nixos/.first-login
fi
'';
# Create first-login marker
system.activationScripts.createFirstLoginMarker = ''
touch /home/nixos/.first-login
chown nixos:users /home/nixos/.first-login
'';
# Disable some services that might cause issues in live session
systemd.services = {
# Disable networkd-wait-online to speed up boot
systemd-networkd-wait-online.enable = false;
# Disable some hardware services that might not be needed
fwupd.enable = false;
};
# Memory and performance optimizations for live session
boot.kernel.sysctl = {
# Use more aggressive memory reclaim
"vm.swappiness" = 10;
"vm.vfs_cache_pressure" = 50;
# Network optimizations
"net.core.default_qdisc" = "fq";
"net.ipv4.tcp_congestion_control" = "bbr";
};
}

View File

@@ -10,7 +10,7 @@ let
omnixy = import ./helpers.nix { inherit config pkgs lib; };
# Import our custom Plymouth theme package
plymouth-themes = pkgs.callPackage ../packages/plymouth-theme.nix {};
plymouth-themes = (pkgs.callPackage ../packages/plymouth-theme.nix {}) or pkgs.plymouth;
in
{
config = mkIf (cfg.enable or true) {

View File

@@ -67,7 +67,7 @@ in
ruff
# Node.js
nodejs_20
nodejs
nodePackages.npm
nodePackages.pnpm
nodePackages.yarn
@@ -247,7 +247,7 @@ in
nix-shell -p python3 python3Packages.pip python3Packages.virtualenv
;;
node)
nix-shell -p nodejs_20 nodePackages.npm nodePackages.pnpm
nix-shell -p nodejs nodePackages.npm nodePackages.pnpm
;;
c|cpp)
nix-shell -p gcc cmake gnumake gdb
@@ -344,7 +344,7 @@ in
let pkgs = nixpkgs.legacyPackages.x86_64-linux;
in {
devShells.x86_64-linux.default = pkgs.mkShell {
packages = with pkgs; [ nodejs_20 nodePackages.pnpm ];
packages = with pkgs; [ nodejs nodePackages.pnpm ];
};
};
}

View File

@@ -163,7 +163,7 @@ in
cargo
go
python3
nodejs_20
nodejs
deno
bun
@@ -180,7 +180,7 @@ in
# Database clients
postgresql
mysql80
mysql
sqlite
redis
mongodb-tools
@@ -222,7 +222,7 @@ in
mpv
vlc
obs-studio
kdePackages.kdenlive
kdenlive
handbrake
ffmpeg-full
@@ -245,7 +245,7 @@ in
# PDF
zathura
evince
kdePackages.okular
okular
mupdf
]
@@ -264,7 +264,7 @@ in
signal-desktop
element-desktop
zoom-us
# teams not available on x86_64-linux
teams
# Office
libreoffice
@@ -305,7 +305,7 @@ in
lutris
wine
winetricks
proton-ge-bin
protonup-rs
mangohud
gamemode
discord

View File

@@ -274,7 +274,7 @@ pkgs.stdenv.mkDerivation rec {
;;
node|js)
echo "Starting Node.js development shell..."
nix-shell -p nodejs_20 nodePackages.pnpm nodePackages.typescript
nix-shell -p nodejs nodePackages.pnpm nodePackages.typescript
;;
c|cpp)
echo "Starting C/C++ development shell..."

115
test-iso-build.sh Executable file
View File

@@ -0,0 +1,115 @@
#!/usr/bin/env bash
# Quick ISO build test script
set -e
echo "🧪 OmniXY ISO Build Test"
echo "========================"
echo ""
# Check if we're in the right directory
if [ ! -f "flake.nix" ] || [ ! -f "iso.nix" ]; then
echo "❌ Error: Must be run from the OmniXY project root directory"
echo " Expected files: flake.nix, iso.nix"
exit 1
fi
# Check if nix is available
if ! command -v nix &> /dev/null; then
echo "❌ Error: Nix is not installed or not in PATH"
exit 1
fi
# Check flakes support
if ! nix --help | grep -q flakes; then
echo "❌ Error: Nix flakes not enabled"
echo " Add 'experimental-features = nix-command flakes' to nix.conf"
exit 1
fi
echo "✅ Environment checks passed"
echo ""
# Test flake evaluation
echo "🔍 Testing flake evaluation..."
if nix flake check --no-build 2>/dev/null; then
echo "✅ Flake configuration is valid"
else
echo "⚠️ Flake check warnings (this is usually fine for ISO builds)"
fi
echo ""
# Test ISO configuration evaluation
echo "🔍 Testing ISO configuration..."
if nix eval .#nixosConfigurations.omnixy-iso --apply 'config: "ISO config loads successfully"' &>/dev/null; then
echo "✅ ISO configuration evaluates successfully"
else
echo "❌ ISO configuration has evaluation errors"
echo " Try: nix eval .#nixosConfigurations.omnixy-iso --show-trace"
exit 1
fi
echo ""
# Estimate build requirements
echo "📊 Build Requirements:"
echo " • Disk space: ~10-15 GB during build, ~3-5 GB for final ISO"
echo " • RAM: Recommended 8+ GB (minimum 4 GB)"
echo " • Time: 30-60 minutes on first build (varies by system)"
echo " • Network: Several GB of downloads on first build"
echo ""
# Ask if user wants to proceed with actual build
read -p "🚀 Do you want to proceed with building the ISO? (y/N): " -n 1 -r
echo ""
if [[ $REPLY =~ ^[Yy]$ ]]; then
echo "🏗️ Starting ISO build..."
echo " This may take a while. Press Ctrl+C to cancel."
echo ""
# Start the build with progress
if nix build .#iso --print-build-logs; then
echo ""
echo "✅ ISO build completed successfully!"
# Find and display the ISO
if [ -L "./result" ]; then
iso_path=$(readlink -f ./result)
iso_file=$(find "$iso_path" -name "*.iso" | head -1)
if [ -n "$iso_file" ]; then
iso_size=$(du -h "$iso_file" | cut -f1)
echo "📁 ISO Location: $iso_file"
echo "📏 ISO Size: $iso_size"
echo ""
echo "🚀 Next steps:"
echo " • Test in VM: qemu-system-x86_64 -cdrom '$iso_file' -m 4G -enable-kvm"
echo " • Flash to USB: sudo dd if='$iso_file' of=/dev/sdX bs=4M status=progress"
echo " • See BUILD_ISO.md for complete documentation"
else
echo "⚠️ ISO file not found in build result"
fi
else
echo "⚠️ Build result symlink not found"
fi
else
echo ""
echo "❌ ISO build failed"
echo " Check the error messages above for details"
echo " Common solutions:"
echo " • Free up disk space: nix-collect-garbage -d"
echo " • Check internet connection"
echo " • Try again (builds can sometimes fail on first attempt)"
exit 1
fi
else
echo "🛑 Build cancelled. You can run this test anytime with:"
echo " ./test-iso-build.sh"
echo ""
echo "To build manually:"
echo " nix build .#iso"
echo " nix run .#build-iso"
fi
echo ""
echo "📚 For more information, see BUILD_ISO.md"