269 lines
7.0 KiB
Markdown
269 lines
7.0 KiB
Markdown
# 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:
|
|
```nix
|
|
{ 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. |