- Reverted mysql back to mysql (mariadb was incorrect) - Fixed isoImage.isoName -> image.fileName - Fixed VSCode extensions/userSettings -> profiles.default.* - Fixed Kitty theme -> themeFile - Fixed Mako options -> settings structure - Fixed GPG agent pinentryPackage -> pinentry.package - Fixed hardware.pulseaudio -> services.pulseaudio - Fixed hardware.opengl -> hardware.graphics - Fixed nixos user password conflicts with mkForce
Themes Directory - OmniXY Theme System
The modules/themes/ directory contains complete theme definitions that provide unified styling across all applications and desktop components in OmniXY. Each theme is a self-contained Nix module that configures colors, fonts, and appearance settings system-wide.
Theme Architecture
Each theme module follows this structure:
{ config, lib, pkgs, ... }:
let
# Color palette definitions
colors = {
primary = "#7aa2f7";
background = "#1a1b26";
# ... more colors
};
in {
# Theme configuration for all applications
config = lib.mkIf (config.omnixy.theme == "theme-name") {
# Application configurations
};
}
Available Themes
OmniXY includes 11 carefully crafted themes:
Dark Themes
tokyo-night.nix (Default)
Inspiration: Tokyo's neon-lit nights Palette: Deep blues and vibrant accents Character: Modern, clean, high contrast Best for: Programming, late-night work
Key Colors:
- Background:
#1a1b26(Dark navy) - Primary:
#7aa2f7(Bright blue) - Accent:
#bb9af7(Purple) - Success:
#9ece6a(Green) - Warning:
#e0af68(Orange)
catppuccin.nix
Inspiration: Warm, cozy coffee shop Palette: Soft pastels with warm undertones Character: Soothing, gentle on eyes Best for: Long coding sessions, reading
Key Colors:
- Background:
#1e1e2e(Warm dark) - Primary:
#cba6f7(Soft purple) - Accent:
#f38ba8(Rose) - Success:
#a6e3a1(Mint green)
gruvbox.nix
Inspiration: Retro terminal aesthetics Palette: Warm earth tones Character: Vintage, comfortable, nostalgic Best for: Terminal work, distraction-free coding
nord.nix
Inspiration: Arctic, Scandinavian minimalism Palette: Cool blues and grays Character: Clean, minimal, professional Best for: Focus work, professional environments
everforest.nix
Inspiration: Deep forest, natural greens Palette: Forest greens with earth accents Character: Calm, natural, easy on eyes Best for: Long work sessions, nature lovers
rose-pine.nix
Inspiration: English countryside Palette: Muted roses and soft pinks Character: Elegant, sophisticated, gentle Best for: Creative work, design
kanagawa.nix
Inspiration: Japanese woodblock prints Palette: Traditional Japanese colors Character: Artistic, cultural, balanced Best for: Creative coding, artistic work
matte-black.nix
Inspiration: Minimalist design Palette: True blacks and whites Character: Stark, minimal, high contrast Best for: Focus, minimal distractions
osaka-jade.nix
Inspiration: Japanese jade and bamboo Palette: Jade greens with natural accents Character: Serene, balanced, harmonious Best for: Meditation coding, calm work
ristretto.nix
Inspiration: Dark roasted coffee Palette: Rich browns and warm tones Character: Warm, cozy, comfortable Best for: Coffee shop coding, warm environments
Light Theme
catppuccin-latte.nix
Inspiration: Light coffee, morning work Palette: Soft pastels on light background Character: Bright, energetic, clean Best for: Daytime work, bright environments
Theme Components
Each theme configures these application categories:
Terminal Applications
- Alacritty: Terminal colors and transparency
- Kitty: Color scheme and font rendering
- Shell: Prompt colors and syntax highlighting
Text Editors
- Neovim: Syntax highlighting and UI colors
- VSCode: Editor theme and syntax colors
- Terminal editors: Vim, nano color schemes
Desktop Environment
- Hyprland: Window borders, gaps, animations
- Waybar: Panel colors, module styling
- Rofi/Launchers: Menu and selection colors
System UI
- GTK: System-wide GTK application theming
- Qt: Qt application color schemes
- Icon themes: Matching icon sets
Notification System
- Mako: Notification colors and styling
- System notifications: Alert and info colors
Development Tools
- Git tools: Diff colors, status indicators
- Lazygit: TUI color scheme
- Development containers: Terminal themes
Theme Implementation
Color Management
Each theme defines a comprehensive color palette:
colors = {
# Base colors
bg = "#1a1b26"; # Background
fg = "#c0caf5"; # Foreground text
# Accent colors
blue = "#7aa2f7"; # Primary blue
cyan = "#7dcfff"; # Cyan accents
green = "#9ece6a"; # Success/positive
yellow = "#e0af68"; # Warnings
red = "#f7768e"; # Errors/critical
purple = "#bb9af7"; # Special/accent
# UI colors
border = "#414868"; # Window borders
selection = "#364a82"; # Text selection
comment = "#565f89"; # Comments/inactive
};
Application Configuration
Colors are applied consistently across applications:
# Alacritty terminal configuration
programs.alacritty.settings = {
colors = {
primary = {
background = colors.bg;
foreground = colors.fg;
};
normal = {
black = colors.bg;
blue = colors.blue;
# ... more colors
};
};
};
Dynamic Application
Themes are applied conditionally:
config = lib.mkIf (config.omnixy.theme == "tokyo-night") {
# All theme configurations here
};
Theme Switching
Command Line
# List available themes
omnixy theme list
# Switch theme
omnixy theme set gruvbox
# Get current theme
omnixy theme get
System Integration
Theme switching:
- Updates
configuration.nixwith new theme - Rebuilds system configuration
- All applications automatically use new colors
- No manual restart required for most applications
Scriptable Interface
# Automated theme switching
current=$(omnixy --quiet theme get)
omnixy theme list --quiet | grep -v "$current" | head -1 | xargs omnixy theme set
# JSON output for automation
omnixy --json theme list | jq -r '.available[]'
Creating Custom Themes
1. Copy Existing Theme
cp modules/themes/tokyo-night.nix modules/themes/my-theme.nix
2. Define Color Palette
let
colors = {
bg = "#your-bg-color";
fg = "#your-fg-color";
# Define your complete palette
};
3. Update Theme Condition
config = lib.mkIf (config.omnixy.theme == "my-theme") {
# Theme configurations
};
4. Add to Available Themes
Update theme management scripts to include your new theme.
5. Test and Iterate
# Test your theme
omnixy theme set my-theme
# Make adjustments and rebuild
omnixy-rebuild
Theme Guidelines
Color Accessibility
- Ensure adequate contrast ratios (4.5:1 for normal text)
- Test with color blindness simulators
- Provide clear visual hierarchy
Consistency
- Use semantic color naming (primary, secondary, accent)
- Maintain consistent color relationships
- Apply colors systematically across applications
Performance
- Avoid complex color calculations
- Use static color definitions
- Test theme switching performance
Documentation
- Document color meanings and usage
- Provide theme inspiration and character
- Include screenshots or examples
Theme Validation
Color Contrast Testing
# Test theme accessibility
omnixy theme set my-theme
# Use accessibility tools to check contrast ratios
Visual Testing
- Test all major applications
- Verify readability in different lighting
- Check consistency across different screen types
Integration Testing
- Ensure theme switching works properly
- Verify all applications receive theme updates
- Test with different desktop configurations
This comprehensive theme system ensures a cohesive, beautiful, and customizable visual experience across the entire OmniXY desktop environment.