5.5 KiB
Root Directory Files
This document explains the purpose of each file in the root directory of the OmniXY repository.
Configuration Files
flake.nix
Purpose: Main Nix flake definition
- Defines all external dependencies (inputs)
- Exports system configurations, packages, and development shells
- Contains the core logic for building OmniXY
- Manages reproducible builds through flake.lock
Key Sections:
inputs: External dependencies (nixpkgs, home-manager, hyprland, etc.)outputs: NixOS configuration, packages, development shells, appsnixosConfigurations.omnixy: Main system configurationdevShells: Language-specific development environmentspackages: Custom OmniXY utilities and toolsapps: Executable applications (installer)
configuration.nix
Purpose: Main NixOS system configuration entry point
- Imports all system modules
- Defines the current theme selection
- Sets system-wide options and services
- Configures hardware-specific settings
What it does:
- Enables essential system services
- Imports modular configurations from
modules/ - Sets the active theme (controls entire system appearance)
- Defines system users and permissions
- Configures boot settings and hardware
home.nix
Purpose: Home Manager configuration for user environment
- Manages user-specific packages and settings
- Configures dotfiles and application preferences
- Handles user services and desktop environment
- Integrates with the theme system
What it manages:
- User package installations
- Shell configuration (zsh, bash)
- Git configuration and tools
- Development environment settings
- Application configurations that run as user
flake.lock
Purpose: Lock file for reproducible builds
- Pins exact versions of all dependencies
- Ensures identical builds across different machines
- Generated automatically by Nix
- Should be committed to version control
hardware-configuration.nix
Purpose: Hardware-specific NixOS configuration
- Generated by
nixos-generate-config - Contains machine-specific settings
- Defines boot loader, filesystems, and kernel modules
- Should be customized per installation
Generated content:
- Filesystem mount points
- Boot loader configuration
- Hardware-specific kernel modules
- Network interface settings
Installation Files
install.sh
Purpose: Interactive, styled installer script
- Beautiful terminal UI with colors and animations
- Guides users through complete installation process
- Handles system verification, backup, and configuration
- Includes theme selection and feature configuration
Features:
- System requirements checking
- Automatic configuration backup
- User account setup
- Theme selection interface
- Feature toggles (fingerprint, gaming, etc.)
- System building with progress indication
install-simple.sh
Purpose: Unix philosophy compliant installer
- Command-line arguments instead of interactive prompts
- Scriptable and automatable
- Clean, pipeable output
- Follows "do one thing well" principle
Usage:
./install-simple.sh --user alice --theme gruvbox --quiet
Options:
--user: Set username--theme: Select theme--quiet: Minimal output--dry-run: Test without applying changes
boot.sh
Purpose: Bootstrap script for fresh NixOS installations
- Downloads OmniXY from GitHub
- Minimal dependencies (just bash and basic tools)
- Runs the full installer automatically
- Can be executed via curl pipe
What it does:
- Verifies NixOS installation
- Installs git if needed
- Clones the OmniXY repository
- Executes the main installer
Documentation Files
README.md
Purpose: Main project documentation and introduction
- Project overview and features
- Installation instructions
- Usage examples and configuration
- Contributing guidelines and links
CLAUDE.md
Purpose: Instructions for Claude Code AI assistant
- Development workflow documentation
- Command references and examples
- Architecture explanations
- Best practices and conventions
LICENSE
Purpose: Legal license for the project
- Defines usage rights and restrictions
- Currently MIT License
- Applies to all code in the repository
Asset Files
logo.svg / logo.txt
Purpose: OmniXY project logos
- SVG vector logo for web/documentation
- ASCII art logo for terminal display
- Used in installers and documentation
icon.png / icon.txt
Purpose: Project icons
- PNG icon for applications and desktop
- ASCII icon for terminal contexts
Development Files
*.qcow2 files (if present)
Purpose: Virtual machine disk images
- Pre-built OmniXY system images for testing
- Used for development and demonstration
- Can be run with QEMU/KVM
File Organization Principles
- Configuration First: Core system files at root level
- Clear Naming: Descriptive filenames indicate purpose
- Separation of Concerns: Different aspects in separate files
- Documentation: Every major file documented
- Reproducibility: All build inputs tracked and versioned
Relationship Between Files
flake.nix
↓ (imports)
configuration.nix
↓ (imports)
modules/*.nix
↓ (configures)
System Services & Packages
home.nix
↓ (configures)
User Environment & Dotfiles
install.sh / install-simple.sh
↓ (copies and configures)
All Configuration Files
↓ (builds)
Complete OmniXY System
This structure provides a clear separation between system configuration, user environment, installation tooling, and documentation, making the project maintainable and understandable.