Files
omnixy/README.md
theArctesian d45b690a1a Clean repository following Unix philosophy
- Remove deprecated installer scripts (install.sh, boot.sh, install-simple.sh)
- Remove large QCOW2 image files (12MB + 8MB)
- Remove outdated documentation files
- Remove deprecated omnixy scripts from scripts/ directory
- Update README.md with current implementation:
  - Document flake-based installation (recommended approach)
  - Add ISO building instructions
  - Update theme list (11 themes available)
  - Document pure Wayland architecture
  - Update project structure documentation
  - Remove references to deleted scripts
- Update .gitignore for GitHub:
  - Add Nix build outputs and ISO files
  - Add system and editor-specific files
  - Add large media files and archives
  - Add development environment files

This cleanup reduces repository size and focuses on the declarative
Nix flake approach, removing imperative installation scripts in favor
of standard NixOS tooling.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-29 21:23:14 -07:00

322 lines
11 KiB
Markdown

# OmniXY NixOS
Transform your NixOS installation into a fully-configured, beautiful, and modern development system based on Hyprland. OmniXY brings the elegance of declarative configuration to desktop Linux, creating a reproducible and version-controlled development environment.
## ✨ Features
- **🎨 Beautiful Themes**: Ships with 11 carefully crafted themes (Tokyo Night, Catppuccin, Gruvbox, Nord, and more) - all declaratively configured
- **🚀 Modern Stack**: Pure Wayland with Hyprland compositor, Waybar, Alacritty, Ghostty, Neovim with LazyVim
- **📦 Declarative Everything**: Entire system configuration as code - reproducible across machines
- **🛠️ Development Ready**: Pre-configured environments for Rust, Go, Python, Node.js, C/C++, and more via Nix shells
- **🔄 Atomic Updates**: Rollback capability, no broken states, system-wide updates with one command
- **🎯 Modular Design**: Feature flags for Docker, gaming, multimedia - enable only what you need
- **⚡ Flake-based**: Modern Nix flakes for dependency management and reproducible builds
- **🏠 Home Manager**: User environment managed declaratively alongside system configuration
- **💿 ISO Builder**: Build custom live ISOs with your configuration
## 📋 Requirements
- NixOS 24.05 or newer (fresh installation recommended)
- 8GB RAM minimum (16GB+ recommended for development)
- 40GB disk space (for Nix store and development tools)
- UEFI system (for systemd-boot configuration)
## 🚀 Installation
### Direct Flake Installation (Recommended)
On an existing NixOS system:
```bash
# Install directly from GitHub
sudo nixos-rebuild switch --flake github:thearctesian/omnixy#omnixy
# Or clone and install locally
git clone https://github.com/thearctesian/omnixy
cd omnixy
sudo nixos-rebuild switch --flake .#omnixy
```
### Building a Custom ISO
Build a live ISO with the OmniXY configuration:
```bash
# Clone the repository
git clone https://github.com/thearctesian/omnixy
cd omnixy
# Build the ISO (this will take time on first build)
nix build .#iso
# The ISO will be available at:
ls -la result/iso/
```
Write the ISO to a USB drive:
```bash
sudo dd if=result/iso/nixos-*.iso of=/dev/sdX bs=4M status=progress
```
## 🎮 Usage
### System Management
```bash
omnixy help # Show all available commands
omnixy update # Update system and flake inputs
omnixy clean # Clean and optimize Nix store
omnixy info # Show system information
omnixy-rebuild # Rebuild system configuration
omnixy search <package> # Search for packages
```
### Theme Management
```bash
omnixy theme # List available themes
omnixy theme tokyo-night # Switch to Tokyo Night theme
# Available themes:
# - tokyo-night (default)
# - catppuccin
# - catppuccin-latte
# - gruvbox
# - nord
# - everforest
# - rose-pine
# - kanagawa
# - matte-black
# - osaka-jade
# - ristretto
```
### Development Environments
```bash
# Enter development shells
nix develop # Default development shell
nix develop .#rust # Rust development environment
nix develop .#python # Python development environment
nix develop .#node # Node.js development environment
nix develop .#go # Go development environment
nix develop .#c # C/C++ development environment
# Alternative: Use omnixy development shells
omnixy-dev-shell rust # Rust development shell
omnixy-dev-shell python # Python development shell
omnixy-dev-shell go # Go development shell
omnixy-dev-shell js # JavaScript/Node.js shell
omnixy-dev-shell c # C/C++ development shell
```
### Package Management
```bash
omnixy search firefox # Search for packages
nix search nixpkgs python # Alternative package search
# Install packages by editing configuration
# Add to modules/packages.nix, then:
omnixy-rebuild # Apply changes
```
## ⌨️ Key Bindings
| Key Combination | Action |
|-----------------|--------|
| `Super + Return` | Open terminal (Ghostty) |
| `Super + B` | Open browser (Firefox) |
| `Super + E` | Open file manager |
| `Super + D` | Application launcher (Walker) |
| `Super + Q` | Close window |
| `Super + F` | Fullscreen |
| `Super + Space` | Toggle floating |
| `Super + 1-9` | Switch workspace |
| `Super + Shift + 1-9` | Move window to workspace |
| `Print` | Screenshot region |
| `Shift + Print` | Screenshot full screen |
| `Super + L` | Lock screen |
## 📁 Project Structure
```
omnixy/
├── configuration.nix # Main NixOS configuration entry point
├── flake.nix # Flake definition with inputs/outputs
├── home.nix # Home-manager user configuration
├── hardware-configuration.nix # Hardware-specific configuration (generated)
├── iso.nix # ISO image configuration
├── modules/ # Modular NixOS configuration
│ ├── core.nix # Core OmniXY options and settings
│ ├── packages.nix # Categorized package collections
│ ├── development.nix # Development tools and environments
│ ├── services.nix # System services and daemons
│ ├── users.nix # User account management
│ ├── boot.nix # Boot configuration
│ ├── security.nix # Security settings
│ ├── scripts.nix # OmniXY utility scripts
│ ├── menus.nix # Application launchers
│ ├── walker.nix # Walker launcher configuration
│ ├── fastfetch.nix # System info display
│ ├── desktop/
│ │ └── hyprland.nix # Hyprland compositor configuration
│ ├── themes/ # Declarative theme system
│ │ ├── tokyo-night.nix # Tokyo Night theme
│ │ ├── catppuccin.nix # Catppuccin theme
│ │ ├── gruvbox.nix # Gruvbox theme
│ │ └── ... # Additional themes
│ └── hardware/
│ ├── default.nix # Common hardware support
│ ├── nvidia.nix # NVIDIA GPU support
│ ├── amd.nix # AMD GPU/CPU support
│ ├── intel.nix # Intel GPU/CPU support
│ ├── audio.nix # Audio configuration
│ ├── bluetooth.nix # Bluetooth support
│ └── touchpad.nix # Touchpad configuration
└── packages/ # Custom packages
└── scripts.nix # OmniXY utility scripts as Nix packages
```
## 🏗️ Architecture
### Flake-based Configuration
- **Pinned Dependencies**: All inputs locked for reproducibility
- **Multiple Outputs**: NixOS configs, development shells, packages, apps, and ISO
- **Home Manager Integration**: User environment managed alongside system
### Modular Design
- **Feature Flags**: Enable/disable Docker, gaming, development tools, etc.
- **Theme System**: Complete application theming through Nix modules
- **Hardware Support**: Automatic detection and configuration
- **Development Environments**: Language-specific shells with all dependencies
### Pure Wayland
- **No X11 Dependencies**: Full Wayland compositor stack
- **Hyprland**: Dynamic tiling compositor with animations
- **Native Wayland Apps**: Ghostty, Alacritty, Firefox with Wayland support
## 🎨 Themes
OmniXY includes beautiful themes that configure your entire desktop environment:
- **Tokyo Night** (default) - Clean, dark theme inspired by Tokyo's night lights
- **Catppuccin** - Soothing pastel theme (Mocha variant)
- **Catppuccin Latte** - Light variant of Catppuccin
- **Gruvbox** - Retro groove color scheme
- **Nord** - Arctic, north-bluish color palette
- **Everforest** - Comfortable green color scheme
- **Rose Pine** - Natural pine and rose colors
- **Kanagawa** - Inspired by Japanese paintings
- **Matte Black** - Pure black minimalist theme
- **Osaka Jade** - Jade green accents
- **Ristretto** - Coffee-inspired brown theme
Each theme declaratively configures:
- Terminal colors (Ghostty, Alacritty, Kitty)
- Editor themes (Neovim, VS Code)
- Desktop environment (Hyprland, Waybar, Mako)
- Applications (Firefox, BTtop, Lazygit)
- GTK/Qt theming
## 🔧 Customization
### Adding System Packages
Edit `modules/packages.nix` and add packages to the appropriate category, then rebuild:
```bash
omnixy-rebuild
```
### Adding User Packages
Edit `home.nix` for user-specific packages and rebuild.
### Creating Custom Themes
1. Copy an existing theme as a template:
```bash
cp modules/themes/tokyo-night.nix modules/themes/my-theme.nix
```
2. Edit the color palette and application configurations
3. Add to `flake.nix` theme list
4. Rebuild to apply
### Testing Changes
```bash
# Test configuration without switching
nixos-rebuild build --flake .#omnixy
# Test in virtual machine
nixos-rebuild build-vm --flake .#omnixy
./result/bin/run-omnixy-vm
# Check flake evaluation
nix flake check
# Format Nix code
nixpkgs-fmt *.nix modules/*.nix
```
## 🚀 Building ISOs
Build custom live ISOs with your configuration:
```bash
# Build ISO
nix build .#iso
# ISO location
ls result/iso/nixos-*.iso
```
The ISO includes:
- Full OmniXY desktop environment
- Auto-login live session
- Hyprland with selected theme
- Development tools
- Installation utilities
## 🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
1. Fork the repository
2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request
## 📝 License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## 🙏 Acknowledgments
- Inspired by [Omakub](https://omakub.org/) by DHH - the original opinionated desktop setup
- Built on [NixOS](https://nixos.org/) - the declarative Linux distribution
- Using [Hyprland](https://hyprland.org/) compositor - dynamic tiling Wayland compositor
- [Home Manager](https://github.com/nix-community/home-manager) - declarative user environment
- Theme configurations adapted from community themes and color schemes
- [Nix Flakes](https://nixos.wiki/wiki/Flakes) - for reproducible and composable configurations
## 🔗 Links
- [NixOS Manual](https://nixos.org/manual/nixos/stable/) - Official NixOS documentation
- [Home Manager Manual](https://nix-community.github.io/home-manager/) - User environment management
- [Hyprland Wiki](https://wiki.hyprland.org/) - Hyprland configuration reference
- [Nix Package Search](https://search.nixos.org/) - Search available packages
- [GitHub Issues](https://github.com/TheArctesian/omnixy/issues) - Report bugs or request features
## 📚 Learning Resources
- [Nix Pills](https://nixos.org/guides/nix-pills/) - Deep dive into Nix
- [NixOS & Flakes Book](https://nixos-and-flakes.thiscute.world/) - Modern NixOS guide
- [Zero to Nix](https://zero-to-nix.com/) - Gentle introduction to Nix
---
Built with ❤️ using the power of **NixOS** and **declarative configuration**