> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify.com/soriphoono/homelab/llms.txt
> Use this file to discover all available pages before exploring further.

# Home Manager Modules Overview

> Overview of Home Manager modules for desktop and server environments

The Home Manager modules provide a comprehensive set of configuration options for managing user environments across NixOS systems. These modules are organized into two main categories: core functionality and user applications.

## Module Structure

Home Manager modules are located in `modules/home/` and are organized as follows:

```
modules/home/
├── core/          # Essential system configuration
└── userapps/      # User-facing applications
```

## Core Modules

Core modules provide essential functionality that forms the foundation of your home environment:

* **Git Configuration** - User identity, signing keys, and project organization
* **GitOps** - Automated home configuration sync from Git repositories
* **Secrets Management** - SOPS-based secret handling with age encryption
* **Shell Configuration** - Fish shell, Starship prompt, and Fastfetch
* **SSH Management** - Key deployment and SSH agent configuration
* **Health Checks** - Environment validation and warnings

[Learn more about core modules →](/modules/home/core)

## User Applications

User application modules provide opt-in configurations for common software:

* **Browsers** - Firefox, LibreWolf, Chrome, Floorp
* **Communication** - Discord/Vesktop
* **Development Tools** - Neovim, VSCode, AI agents, terminals
* **Data Fortress** - Bitwarden, Nextcloud
* **Office Suite** - Productivity applications

[Learn more about user applications →](/modules/home/userapps)

## Usage Example

Home Manager modules are configured in your user's `homes/<username>/default.nix`:

```nix theme={null}
{pkgs, ...}: {
  # Core configuration
  core = {
    secrets = {
      enable = true;
      defaultSopsFile = ./secrets.yaml;
    };

    git = {
      userName = "soriphoono";
      userEmail = "soriphoono@gmail.com";
    };
  };

  # Optional applications
  userapps.development.editors.neovim.settings = import ./nvim {inherit pkgs;};
}
```

## Key Features

### Modular Design

Each module is self-contained with its own options and configuration logic. Enable only what you need.

### Type-Safe Configuration

All options are strongly typed using NixOS module system types, providing validation and documentation.

### Declarative Management

Your entire home environment is declared in Nix, making it reproducible across machines.

### XDG Integration

Modules follow XDG Base Directory specifications and integrate with system MIME types.

## Common Patterns

### Priority-Based Defaults

Many modules (browsers, editors) support priority values to determine which application becomes the default:

```nix theme={null}
userapps = {
  browsers = {
    librewolf.enable = true;  # priority = 10 (highest)
    firefox.enable = true;     # priority = 20
    chrome.enable = true;      # priority = 100 (fallback)
  };
};
```

Lower priority values win. This allows multiple applications to be installed while controlling which is the default.

### Secrets Integration

Core modules integrate with the secrets system automatically:

```nix theme={null}
core = {
  secrets.enable = true;
  ssh.publicKey = "ssh-ed25519 ...";
};
# SSH private keys are automatically provisioned from secrets
```

### Shell Customization

Shell aliases and environment variables are centralized:

```nix theme={null}
core.shells = {
  shellAliases = {
    g = "git";
    k = "kubectl";
  };
  sessionVariables = {
    EDITOR = "nvim";
  };
};
```

## Next Steps

* [Explore core modules →](/modules/home/core)
* [Browse user applications →](/modules/home/userapps)
* [Configure for Nix-on-Droid →](/modules/droid/overview)
