Files
omnixy/modules
theArctesian c79119dfe6 Fix all deprecation warnings and rename issues
- 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
2025-09-29 19:02:15 -07:00
..
2025-09-25 07:50:48 -07:00
2025-09-25 07:50:48 -07:00
2025-09-25 07:50:48 -07:00
2025-09-26 09:09:27 -07:00
2025-09-25 07:50:48 -07:00
2025-09-25 07:50:48 -07:00
2025-09-25 07:50:48 -07:00
2025-09-25 07:50:48 -07:00
2025-09-25 07:50:48 -07:00

Modules Directory

The modules/ directory contains the modular NixOS configuration system that makes up OmniXY. Each module is responsible for a specific aspect of the system and can be enabled, disabled, or configured independently.

Module Architecture

Each module follows the standard NixOS module structure:

{ config, lib, pkgs, ... }:
with lib;
{
  options = {
    # Configuration options for this module
  };

  config = mkIf cfg.enable {
    # Module implementation
  };
}

Core System Modules

core.nix

Purpose: Base system settings and OmniXY-specific options What it configures:

  • Essential system services (NetworkManager, Bluetooth, Audio)
  • Graphics support (OpenGL/Vulkan)
  • Font management
  • Basic security settings
  • OmniXY module system foundations

Key Features:

  • Automatic hardware graphics detection
  • Unified font configuration across the system
  • Essential service enablement
  • Module option definitions

packages.nix

Purpose: System-wide package management with feature categories What it manages:

  • Base system packages (editors, terminals, file managers)
  • Development tools and languages
  • Media and graphics applications
  • Gaming packages (optional)
  • Productivity software

Categories:

  • base: Essential system utilities
  • development: Programming tools and IDEs
  • media: Audio/video applications
  • graphics: Image editing and design tools
  • gaming: Games and gaming platforms
  • productivity: Office and productivity suites

services.nix

Purpose: System service configuration and management What it configures:

  • Display manager (GDM)
  • Audio system (PipeWire)
  • Network services
  • Container services (Docker, Podman)
  • Development services (databases, etc.)

Service Categories:

  • Desktop services (compositor, display manager)
  • Audio/media services
  • Network and connectivity
  • Development and container services

users.nix

Purpose: User account management and configuration What it manages:

  • User account creation and settings
  • Shell configuration defaults
  • User group memberships
  • Home directory setup

Features:

  • Automatic user creation based on configuration
  • Shell preferences (zsh as default)
  • Group membership for hardware access
  • Integration with home-manager

Security and System

security.nix

Purpose: Security settings and authentication methods What it configures:

  • Multi-factor authentication
  • Fingerprint support (fprintd)
  • FIDO2 security keys
  • System hardening options
  • Firewall configuration

Authentication Methods:

  • Password authentication
  • Fingerprint recognition
  • FIDO2/WebAuthn security keys
  • Two-factor authentication

boot.nix

Purpose: Boot system and kernel configuration What it manages:

  • Boot loader configuration (systemd-boot)
  • Kernel parameters and modules
  • Plymouth boot theme
  • Early boot optimizations

Boot Features:

  • Fast boot configuration
  • Kernel optimization
  • Boot splash screen
  • Hardware initialization

User Interface

menus.nix

Purpose: Application menus and launchers What it configures:

  • Application launchers (rofi alternatives)
  • Desktop menu systems
  • Quick access interfaces
  • Search functionality

walker.nix

Purpose: Walker application launcher configuration What it manages:

  • Walker launcher settings
  • Search backends and plugins
  • Keybindings and interface
  • Theme integration

fastfetch.nix

Purpose: System information display tool What it configures:

  • System info formatting
  • Logo and branding display
  • Performance metrics
  • Terminal integration

Development Environment

development.nix

Purpose: Development tools and programming environments What it provides:

  • Multiple language support (Rust, Go, Python, Node.js, C/C++)
  • Language servers and tools
  • Git configuration and tools
  • Development containers and databases

Language Support:

  • Runtime environments
  • Package managers
  • Language-specific tools
  • IDE and editor integration

scripts.nix

Purpose: OmniXY utility script management What it manages:

  • System management scripts
  • Theme switching utilities
  • Development helper scripts
  • Unix philosophy tools

Hardware Support

The hardware/ subdirectory contains hardware-specific modules:

default.nix

Purpose: Hardware detection and automatic configuration What it does:

  • Detects available hardware
  • Enables appropriate drivers
  • Configures hardware-specific settings
  • Imports relevant hardware modules

GPU Support

  • amd.nix: AMD GPU drivers and configuration
  • intel.nix: Intel integrated graphics
  • nvidia.nix: NVIDIA proprietary drivers

Audio and Input

  • audio.nix: Audio system configuration
  • touchpad.nix: Laptop touchpad settings
  • bluetooth.nix: Bluetooth device support

Theme System

The themes/ subdirectory contains complete theme definitions:

Each theme module (e.g., tokyo-night.nix) configures:

  • Color palette definitions
  • Terminal color schemes
  • Editor themes (Neovim, VSCode)
  • Desktop component theming (Waybar, Hyprland)
  • GTK/Qt application themes

Desktop Environment

The desktop/ subdirectory contains desktop-specific configurations:

hyprland.nix

Purpose: Hyprland compositor configuration Sub-modules:

  • bindings.nix: Keyboard shortcuts and bindings
  • autostart.nix: Applications started with the desktop
  • idle.nix: Idle management and screen locking

Utility Modules

lib.nix

Purpose: Shared library functions and utilities What it provides:

  • Helper functions used across modules
  • Common configuration patterns
  • Utility functions for theme and configuration management

colors.nix

Purpose: Color management and palette definitions What it manages:

  • Color space conversions
  • Palette generation utilities
  • Theme color validation

helpers.nix

Purpose: Additional helper functions What it provides:

  • File and directory utilities
  • Configuration templating functions
  • System integration helpers

Module Dependencies

core.nix (foundation)
    ↓
packages.nix + services.nix (system layer)
    ↓
security.nix + boot.nix (system hardening)
    ↓
themes/*.nix (visual layer)
    ↓
desktop/*.nix (user interface)
    ↓
development.nix (developer tools)

Adding New Modules

To add a new module:

  1. Create the module file in the appropriate subdirectory
  2. Follow the standard NixOS module structure
  3. Define clear options with types and descriptions
  4. Import the module in configuration.nix
  5. Document the module's purpose and options
  6. Test the module in isolation and with others

Module Best Practices

  1. Single Responsibility: Each module handles one aspect
  2. Clear Options: Well-defined configuration interface
  3. Documentation: Comments and option descriptions
  4. Dependencies: Explicit module dependencies
  5. Testing: Verify module works in isolation
  6. Performance: Efficient evaluation and build times

This modular architecture makes OmniXY highly customizable while maintaining clean separation of concerns.